From 8f8887f0e496d960b0e71275893b75408a40fdb2 Mon Sep 17 00:00:00 2001 From: Hemna Date: Mon, 9 Dec 2024 16:53:51 -0500 Subject: [PATCH] Remove webchat as a built in command. Webchat will now be an extension that can be installed. the extension is here: https://github.com/hemna/aprsd-webchat-extension Install it from git or pypi. --- aprsd/cmds/webchat.py | 643 -------- aprsd/conf/common.py | 36 - aprsd/log/log.py | 18 +- aprsd/main.py | 2 +- aprsd/web/__init__.py | 0 aprsd/web/admin/__init__.py | 0 aprsd/web/admin/static/css/index.css | 84 -- aprsd/web/admin/static/css/prism.css | 4 - aprsd/web/admin/static/css/tabs.css | 35 - aprsd/web/admin/static/images/Untitled.png | Bin 37797 -> 0 bytes .../admin/static/images/aprs-symbols-16-0.png | Bin 52962 -> 0 bytes .../admin/static/images/aprs-symbols-16-1.png | Bin 48951 -> 0 bytes .../admin/static/images/aprs-symbols-64-0.png | Bin 52962 -> 0 bytes .../admin/static/images/aprs-symbols-64-1.png | Bin 48951 -> 0 bytes .../admin/static/images/aprs-symbols-64-2.png | Bin 40716 -> 0 bytes aprsd/web/admin/static/js/charts.js | 235 --- aprsd/web/admin/static/js/echarts.js | 465 ------ aprsd/web/admin/static/js/logs.js | 26 - aprsd/web/admin/static/js/main.js | 231 --- aprsd/web/admin/static/js/prism.js | 12 - aprsd/web/admin/static/js/send-message.js | 114 -- aprsd/web/admin/static/js/tabs.js | 28 - aprsd/web/admin/templates/index.html | 196 --- aprsd/web/chat/static/css/chat.css | 115 -- aprsd/web/chat/static/css/index.css | 66 - aprsd/web/chat/static/css/style.css.map | 1 - aprsd/web/chat/static/css/tabs.css | 41 - .../static/css/upstream/bootstrap.min.css | 6 - aprsd/web/chat/static/css/upstream/font.woff2 | Bin 883712 -> 0 bytes .../chat/static/css/upstream/google-fonts.css | 23 - .../chat/static/css/upstream/jquery-ui.css | 1311 ----------------- .../chat/static/css/upstream/jquery.toast.css | 28 - .../default/assets/fonts/LatoLatin-Bold.woff | Bin 72376 -> 0 bytes .../default/assets/fonts/LatoLatin-Bold.woff2 | Bin 44380 -> 0 bytes .../assets/fonts/LatoLatin-Regular.woff | Bin 72456 -> 0 bytes .../assets/fonts/LatoLatin-Regular.woff2 | Bin 43760 -> 0 bytes .../themes/default/assets/fonts/icons.woff | Bin 101648 -> 0 bytes .../themes/default/assets/fonts/icons.woff2 | Bin 78268 -> 0 bytes .../default/assets/fonts/outline-icons.woff | Bin 16276 -> 0 bytes .../default/assets/fonts/outline-icons.woff2 | Bin 13224 -> 0 bytes aprsd/web/chat/static/images/Untitled.png | Bin 37797 -> 0 bytes .../chat/static/images/aprs-symbols-16-0.png | Bin 52962 -> 0 bytes .../chat/static/images/aprs-symbols-16-1.png | Bin 48951 -> 0 bytes .../chat/static/images/aprs-symbols-64-0.png | Bin 52962 -> 0 bytes .../chat/static/images/aprs-symbols-64-1.png | Bin 48951 -> 0 bytes .../chat/static/images/aprs-symbols-64-2.png | Bin 40716 -> 0 bytes aprsd/web/chat/static/images/globe.svg | 3 - aprsd/web/chat/static/js/gps.js | 84 -- aprsd/web/chat/static/js/main.js | 45 - aprsd/web/chat/static/js/send-message.js | 612 -------- aprsd/web/chat/static/js/tabs.js | 28 - .../js/upstream/bootstrap.bundle.min.js | 7 - .../static/js/upstream/jquery-3.7.1.min.js | 2 - .../chat/static/js/upstream/jquery-ui.min.js | 13 - .../chat/static/js/upstream/jquery.toast.js | 374 ----- .../chat/static/js/upstream/semantic.min.js | 11 - .../chat/static/js/upstream/socket.io.min.js | 7 - aprsd/web/chat/templates/index.html | 139 -- requirements-dev.txt | 8 +- requirements.in | 8 - requirements.txt | 28 +- tests/cmds/test_send_message.py | 4 +- tests/cmds/test_webchat.py | 90 -- 63 files changed, 11 insertions(+), 5172 deletions(-) delete mode 100644 aprsd/cmds/webchat.py delete mode 100644 aprsd/web/__init__.py delete mode 100644 aprsd/web/admin/__init__.py delete mode 100644 aprsd/web/admin/static/css/index.css delete mode 100644 aprsd/web/admin/static/css/prism.css delete mode 100644 aprsd/web/admin/static/css/tabs.css delete mode 100644 aprsd/web/admin/static/images/Untitled.png delete mode 100644 aprsd/web/admin/static/images/aprs-symbols-16-0.png delete mode 100644 aprsd/web/admin/static/images/aprs-symbols-16-1.png delete mode 100644 aprsd/web/admin/static/images/aprs-symbols-64-0.png delete mode 100644 aprsd/web/admin/static/images/aprs-symbols-64-1.png delete mode 100644 aprsd/web/admin/static/images/aprs-symbols-64-2.png delete mode 100644 aprsd/web/admin/static/js/charts.js delete mode 100644 aprsd/web/admin/static/js/echarts.js delete mode 100644 aprsd/web/admin/static/js/logs.js delete mode 100644 aprsd/web/admin/static/js/main.js delete mode 100644 aprsd/web/admin/static/js/prism.js delete mode 100644 aprsd/web/admin/static/js/send-message.js delete mode 100644 aprsd/web/admin/static/js/tabs.js delete mode 100644 aprsd/web/admin/templates/index.html delete mode 100644 aprsd/web/chat/static/css/chat.css delete mode 100644 aprsd/web/chat/static/css/index.css delete mode 100644 aprsd/web/chat/static/css/style.css.map delete mode 100644 aprsd/web/chat/static/css/tabs.css delete mode 100644 aprsd/web/chat/static/css/upstream/bootstrap.min.css delete mode 100644 aprsd/web/chat/static/css/upstream/font.woff2 delete mode 100644 aprsd/web/chat/static/css/upstream/google-fonts.css delete mode 100644 aprsd/web/chat/static/css/upstream/jquery-ui.css delete mode 100644 aprsd/web/chat/static/css/upstream/jquery.toast.css delete mode 100644 aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Bold.woff delete mode 100644 aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Bold.woff2 delete mode 100644 aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Regular.woff delete mode 100644 aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Regular.woff2 delete mode 100644 aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/icons.woff delete mode 100644 aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/icons.woff2 delete mode 100644 aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/outline-icons.woff delete mode 100644 aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/outline-icons.woff2 delete mode 100644 aprsd/web/chat/static/images/Untitled.png delete mode 100644 aprsd/web/chat/static/images/aprs-symbols-16-0.png delete mode 100644 aprsd/web/chat/static/images/aprs-symbols-16-1.png delete mode 100644 aprsd/web/chat/static/images/aprs-symbols-64-0.png delete mode 100644 aprsd/web/chat/static/images/aprs-symbols-64-1.png delete mode 100644 aprsd/web/chat/static/images/aprs-symbols-64-2.png delete mode 100644 aprsd/web/chat/static/images/globe.svg delete mode 100644 aprsd/web/chat/static/js/gps.js delete mode 100644 aprsd/web/chat/static/js/main.js delete mode 100644 aprsd/web/chat/static/js/send-message.js delete mode 100644 aprsd/web/chat/static/js/tabs.js delete mode 100644 aprsd/web/chat/static/js/upstream/bootstrap.bundle.min.js delete mode 100644 aprsd/web/chat/static/js/upstream/jquery-3.7.1.min.js delete mode 100644 aprsd/web/chat/static/js/upstream/jquery-ui.min.js delete mode 100644 aprsd/web/chat/static/js/upstream/jquery.toast.js delete mode 100644 aprsd/web/chat/static/js/upstream/semantic.min.js delete mode 100644 aprsd/web/chat/static/js/upstream/socket.io.min.js delete mode 100644 aprsd/web/chat/templates/index.html delete mode 100644 tests/cmds/test_webchat.py diff --git a/aprsd/cmds/webchat.py b/aprsd/cmds/webchat.py deleted file mode 100644 index 143d2e2..0000000 --- a/aprsd/cmds/webchat.py +++ /dev/null @@ -1,643 +0,0 @@ -import datetime -import json -import logging -import signal -import sys -import threading -import time - -import click -import flask -from flask import request -from flask_httpauth import HTTPBasicAuth -from flask_socketio import Namespace, SocketIO -from geopy.distance import geodesic -from oslo_config import cfg -import timeago -import wrapt - -import aprsd -from aprsd import cli_helper, client, packets, plugin_utils, stats, threads -from aprsd import utils -from aprsd import utils as aprsd_utils -from aprsd.client import client_factory, kiss -from aprsd.main import cli -from aprsd.threads import aprsd as aprsd_threads -from aprsd.threads import keep_alive, rx -from aprsd.threads import stats as stats_thread -from aprsd.threads import tx -from aprsd.utils import trace - - -CONF = cfg.CONF -LOG = logging.getLogger() -auth = HTTPBasicAuth() -socketio = None - -# List of callsigns that we don't want to track/fetch their location -callsign_no_track = [ - "APDW16", "BLN0", "BLN1", "BLN2", - "BLN3", "BLN4", "BLN5", "BLN6", "BLN7", "BLN8", "BLN9", -] - -# Callsign location information -# callsign: {lat: 0.0, long: 0.0, last_update: datetime} -callsign_locations = {} - -flask_app = flask.Flask( - "aprsd", - static_url_path="/static", - static_folder="web/chat/static", - template_folder="web/chat/templates", -) - - -def signal_handler(sig, frame): - - click.echo("signal_handler: called") - LOG.info( - f"Ctrl+C, Sending all threads({len(threads.APRSDThreadList())}) exit! " - f"Can take up to 10 seconds {datetime.datetime.now()}", - ) - threads.APRSDThreadList().stop_all() - if "subprocess" not in str(frame): - time.sleep(1.5) - stats.stats_collector.collect() - LOG.info("Telling flask to bail.") - signal.signal(signal.SIGTERM, sys.exit(0)) - - -class SentMessages: - - _instance = None - lock = threading.Lock() - - data = {} - - def __new__(cls, *args, **kwargs): - """This magic turns this into a singleton.""" - if cls._instance is None: - cls._instance = super().__new__(cls) - return cls._instance - - def is_initialized(self): - return True - - @wrapt.synchronized(lock) - def add(self, msg): - self.data[msg.msgNo] = msg.__dict__ - - @wrapt.synchronized(lock) - def __len__(self): - return len(self.data.keys()) - - @wrapt.synchronized(lock) - def get(self, id): - if id in self.data: - return self.data[id] - - @wrapt.synchronized(lock) - def get_all(self): - return self.data - - @wrapt.synchronized(lock) - def set_status(self, id, status): - if id in self.data: - self.data[id]["last_update"] = str(datetime.datetime.now()) - self.data[id]["status"] = status - - @wrapt.synchronized(lock) - def ack(self, id): - """The message got an ack!""" - if id in self.data: - self.data[id]["last_update"] = str(datetime.datetime.now()) - self.data[id]["ack"] = True - - @wrapt.synchronized(lock) - def reply(self, id, packet): - """We got a packet back from the sent message.""" - if id in self.data: - self.data[id]["reply"] = packet - - -def _build_location_from_repeat(message): - # This is a location message Format is - # ^ld^callsign:latitude,longitude,altitude,course,speed,timestamp - a = message.split(":") - LOG.warning(a) - if len(a) == 2: - callsign = a[0].replace("^ld^", "") - b = a[1].split(",") - LOG.warning(b) - if len(b) == 6: - lat = float(b[0]) - lon = float(b[1]) - alt = float(b[2]) - course = float(b[3]) - speed = float(b[4]) - time = int(b[5]) - compass_bearing = aprsd_utils.degrees_to_cardinal(course) - data = { - "callsign": callsign, - "lat": lat, - "lon": lon, - "altitude": alt, - "course": course, - "compass_bearing": compass_bearing, - "speed": speed, - "lasttime": time, - "timeago": timeago.format(time), - } - LOG.debug(f"Location data from REPEAT {data}") - return data - - -def _calculate_location_data(location_data): - """Calculate all of the location data from data from aprs.fi or REPEAT.""" - lat = location_data["lat"] - lon = location_data["lon"] - alt = location_data["altitude"] - speed = location_data["speed"] - lasttime = location_data["lasttime"] - timeago_str = location_data.get( - "timeago", - timeago.format(lasttime), - ) - # now calculate distance from our own location - distance = 0 - if CONF.webchat.latitude and CONF.webchat.longitude: - our_lat = float(CONF.webchat.latitude) - our_lon = float(CONF.webchat.longitude) - distance = geodesic((our_lat, our_lon), (lat, lon)).kilometers - bearing = aprsd_utils.calculate_initial_compass_bearing( - (our_lat, our_lon), - (lat, lon), - ) - compass_bearing = aprsd_utils.degrees_to_cardinal(bearing) - return { - "callsign": location_data["callsign"], - "lat": lat, - "lon": lon, - "altitude": alt, - "course": f"{bearing:0.1f}", - "compass_bearing": compass_bearing, - "speed": speed, - "lasttime": lasttime, - "timeago": timeago_str, - "distance": f"{distance:0.1f}", - } - - -def send_location_data_to_browser(location_data): - global socketio - callsign = location_data["callsign"] - LOG.info(f"Got location for {callsign} {callsign_locations[callsign]}") - socketio.emit( - "callsign_location", callsign_locations[callsign], - namespace="/sendmsg", - ) - - -def populate_callsign_location(callsign, data=None): - """Populate the location for the callsign. - - if data is passed in, then we have the location already from - an APRS packet. If data is None, then we need to fetch the - location from aprs.fi or REPEAT. - """ - global socketio - """Fetch the location for the callsign.""" - LOG.debug(f"populate_callsign_location {callsign}") - if data: - location_data = _calculate_location_data(data) - callsign_locations[callsign] = location_data - send_location_data_to_browser(location_data) - return - - # First we are going to try to get the location from aprs.fi - # if there is no internets, then this will fail and we will - # fallback to calling REPEAT for the location for the callsign. - fallback = False - if not CONF.aprs_fi.apiKey: - LOG.warning( - "Config aprs_fi.apiKey is not set. Can't get location from aprs.fi " - " falling back to sending REPEAT to get location.", - ) - fallback = True - else: - try: - aprs_data = plugin_utils.get_aprs_fi(CONF.aprs_fi.apiKey, callsign) - if not len(aprs_data["entries"]): - LOG.error("Didn't get any entries from aprs.fi") - return - lat = float(aprs_data["entries"][0]["lat"]) - lon = float(aprs_data["entries"][0]["lng"]) - try: # altitude not always provided - alt = float(aprs_data["entries"][0]["altitude"]) - except Exception: - alt = 0 - location_data = { - "callsign": callsign, - "lat": lat, - "lon": lon, - "altitude": alt, - "lasttime": int(aprs_data["entries"][0]["lasttime"]), - "course": float(aprs_data["entries"][0].get("course", 0)), - "speed": float(aprs_data["entries"][0].get("speed", 0)), - } - location_data = _calculate_location_data(location_data) - callsign_locations[callsign] = location_data - send_location_data_to_browser(location_data) - return - except Exception as ex: - LOG.error(f"Failed to fetch aprs.fi '{ex}'") - LOG.error(ex) - fallback = True - - if fallback: - # We don't have the location data - # and we can't get it from aprs.fi - # Send a special message to REPEAT to get the location data - LOG.info(f"Sending REPEAT to get location for callsign {callsign}.") - tx.send( - packets.MessagePacket( - from_call=CONF.callsign, - to_call="REPEAT", - message_text=f"ld {callsign}", - ), - ) - - -class WebChatProcessPacketThread(rx.APRSDProcessPacketThread): - """Class that handles packets being sent to us.""" - - def __init__(self, packet_queue, socketio): - self.socketio = socketio - self.connected = False - super().__init__(packet_queue) - - def process_ack_packet(self, packet: packets.AckPacket): - super().process_ack_packet(packet) - ack_num = packet.get("msgNo") - SentMessages().ack(ack_num) - msg = SentMessages().get(ack_num) - if msg: - self.socketio.emit( - "ack", msg, - namespace="/sendmsg", - ) - self.got_ack = True - - def process_our_message_packet(self, packet: packets.MessagePacket): - global callsign_locations - # ok lets see if we have the location for the - # person we just sent a message to. - from_call = packet.get("from_call").upper() - if from_call == "REPEAT": - # We got a message from REPEAT. Is this a location message? - message = packet.get("message_text") - if message.startswith("^ld^"): - location_data = _build_location_from_repeat(message) - callsign = location_data["callsign"] - location_data = _calculate_location_data(location_data) - callsign_locations[callsign] = location_data - send_location_data_to_browser(location_data) - return - elif ( - from_call not in callsign_locations - and from_call not in callsign_no_track - and client_factory.create().transport() in [client.TRANSPORT_APRSIS, client.TRANSPORT_FAKE] - ): - # We have to ask aprs for the location for the callsign - # We send a message packet to wb4bor-11 asking for location. - populate_callsign_location(from_call) - # Send the packet to the browser. - self.socketio.emit( - "new", packet.__dict__, - namespace="/sendmsg", - ) - - -class LocationProcessingThread(aprsd_threads.APRSDThread): - """Class to handle the location processing.""" - def __init__(self): - super().__init__("LocationProcessingThread") - - def loop(self): - pass - - -def _get_transport(stats): - if CONF.aprs_network.enabled: - transport = "aprs-is" - aprs_connection = ( - "APRS-IS Server: " - "{}".format(stats["APRSClientStats"]["server_string"]) - ) - elif kiss.KISSClient.is_enabled(): - transport = kiss.KISSClient.transport() - if transport == client.TRANSPORT_TCPKISS: - aprs_connection = ( - "TCPKISS://{}:{}".format( - CONF.kiss_tcp.host, - CONF.kiss_tcp.port, - ) - ) - elif transport == client.TRANSPORT_SERIALKISS: - # for pep8 violation - aprs_connection = ( - "SerialKISS://{}@{} baud".format( - CONF.kiss_serial.device, - CONF.kiss_serial.baudrate, - ), - ) - elif CONF.fake_client.enabled: - transport = client.TRANSPORT_FAKE - aprs_connection = "Fake Client" - - return transport, aprs_connection - - -@flask_app.route("/location/", methods=["POST"]) -def location(callsign): - LOG.debug(f"Fetch location for callsign {callsign}") - if not callsign in callsign_no_track: - populate_callsign_location(callsign) - - -@auth.login_required -@flask_app.route("/") -def index(): - stats = _stats() - - # For development - html_template = "index.html" - LOG.debug(f"Template {html_template}") - - transport, aprs_connection = _get_transport(stats["stats"]) - LOG.debug(f"transport {transport} aprs_connection {aprs_connection}") - - stats["transport"] = transport - stats["aprs_connection"] = aprs_connection - LOG.debug(f"initial stats = {stats}") - latitude = CONF.webchat.latitude - if latitude: - latitude = float(CONF.webchat.latitude) - - longitude = CONF.webchat.longitude - if longitude: - longitude = float(longitude) - - return flask.render_template( - html_template, - initial_stats=stats, - aprs_connection=aprs_connection, - callsign=CONF.callsign, - version=aprsd.__version__, - latitude=latitude, - longitude=longitude, - ) - - -@auth.login_required -@flask_app.route("/send-message-status") -def send_message_status(): - LOG.debug(request) - msgs = SentMessages() - info = msgs.get_all() - return json.dumps(info) - - -def _stats(): - now = datetime.datetime.now() - - time_format = "%m-%d-%Y %H:%M:%S" - stats_dict = stats.stats_collector.collect(serializable=True) - # Webchat doesnt need these - if "WatchList" in stats_dict: - del stats_dict["WatchList"] - if "SeenList" in stats_dict: - del stats_dict["SeenList"] - if "APRSDThreadList" in stats_dict: - del stats_dict["APRSDThreadList"] - if "PacketList" in stats_dict: - del stats_dict["PacketList"] - if "EmailStats" in stats_dict: - del stats_dict["EmailStats"] - if "PluginManager" in stats_dict: - del stats_dict["PluginManager"] - - result = { - "time": now.strftime(time_format), - "stats": stats_dict, - } - return result - - -@flask_app.route("/stats") -def get_stats(): - return json.dumps(_stats()) - - -class SendMessageNamespace(Namespace): - """Class to handle the socketio interactions.""" - got_ack = False - reply_sent = False - msg = None - request = None - - def __init__(self, namespace=None, config=None): - super().__init__(namespace) - - def on_connect(self): - global socketio - LOG.debug("Web socket connected") - socketio.emit( - "connected", {"data": "/sendmsg Connected"}, - namespace="/sendmsg", - ) - - def on_disconnect(self): - LOG.debug("WS Disconnected") - - def on_send(self, data): - global socketio - LOG.debug(f"WS: on_send {data}") - self.request = data - data["from"] = CONF.callsign - path = data.get("path", None) - if not path: - path = [] - elif "," in path: - path_opts = path.split(",") - path = [x.strip() for x in path_opts] - else: - path = [path] - - pkt = packets.MessagePacket( - from_call=data["from"], - to_call=data["to"].upper(), - message_text=data["message"], - path=path, - ) - pkt.prepare() - self.msg = pkt - msgs = SentMessages() - tx.send(pkt) - msgs.add(pkt) - msgs.set_status(pkt.msgNo, "Sending") - obj = msgs.get(pkt.msgNo) - socketio.emit( - "sent", obj, - namespace="/sendmsg", - ) - - def on_gps(self, data): - LOG.debug(f"WS on_GPS: {data}") - lat = data["latitude"] - long = data["longitude"] - LOG.debug(f"Lat {lat}") - LOG.debug(f"Long {long}") - path = data.get("path", None) - if not path: - path = [] - elif "," in path: - path_opts = path.split(",") - path = [x.strip() for x in path_opts] - else: - path = [path] - - tx.send( - packets.BeaconPacket( - from_call=CONF.callsign, - to_call="APDW16", - latitude=lat, - longitude=long, - comment="APRSD WebChat Beacon", - path=path, - ), - direct=True, - ) - - def handle_message(self, data): - LOG.debug(f"WS Data {data}") - - def handle_json(self, data): - LOG.debug(f"WS json {data}") - - def on_get_callsign_location(self, data): - LOG.debug(f"on_callsign_location {data}") - if data["callsign"] not in callsign_no_track: - populate_callsign_location(data["callsign"]) - - -@trace.trace -def init_flask(loglevel, quiet): - global socketio, flask_app - - socketio = SocketIO( - flask_app, logger=False, engineio_logger=False, - async_mode="threading", - ) - - socketio.on_namespace( - SendMessageNamespace( - "/sendmsg", - ), - ) - return socketio - - -# main() ### -@cli.command() -@cli_helper.add_options(cli_helper.common_options) -@click.option( - "-f", - "--flush", - "flush", - is_flag=True, - show_default=True, - default=False, - help="Flush out all old aged messages on disk.", -) -@click.option( - "-p", - "--port", - "port", - show_default=True, - default=None, - help="Port to listen to web requests. This overrides the config.webchat.web_port setting.", -) -@click.pass_context -@cli_helper.process_standard_options -def webchat(ctx, flush, port): - """Web based HAM Radio chat program!""" - loglevel = ctx.obj["loglevel"] - quiet = ctx.obj["quiet"] - - signal.signal(signal.SIGINT, signal_handler) - signal.signal(signal.SIGTERM, signal_handler) - - level, msg = utils._check_version() - if level: - LOG.warning(msg) - else: - LOG.info(msg) - LOG.info(f"APRSD Started version: {aprsd.__version__}") - - CONF.log_opt_values(logging.getLogger(), logging.DEBUG) - if not port: - port = CONF.webchat.web_port - - # Initialize the client factory and create - # The correct client object ready for use - # Make sure we have 1 client transport enabled - if not client_factory.is_client_enabled(): - LOG.error("No Clients are enabled in config.") - sys.exit(-1) - - if not client_factory.is_client_configured(): - LOG.error("APRS client is not properly configured in config file.") - sys.exit(-1) - - # Creates the client object - LOG.info("Creating client connection") - aprs_client = client_factory.create() - LOG.info(aprs_client) - if not aprs_client.login_success: - # We failed to login, will just quit! - msg = f"Login Failure: {aprs_client.login_failure}" - LOG.error(msg) - print(msg) - sys.exit(-1) - - keepalive = keep_alive.KeepAliveThread() - LOG.info("Start KeepAliveThread") - keepalive.start() - - stats_store_thread = stats_thread.APRSDStatsStoreThread() - stats_store_thread.start() - - socketio = init_flask(loglevel, quiet) - rx_thread = rx.APRSDPluginRXThread( - packet_queue=threads.packet_queue, - ) - rx_thread.start() - process_thread = WebChatProcessPacketThread( - packet_queue=threads.packet_queue, - socketio=socketio, - ) - process_thread.start() - - LOG.info("Start socketio.run()") - socketio.run( - flask_app, - # This is broken for now after removing cryptography - # and pyopenssl - # ssl_context="adhoc", - host=CONF.webchat.web_ip, - port=port, - allow_unsafe_werkzeug=True, - ) - - LOG.info("WebChat exiting!!!! Bye.") diff --git a/aprsd/conf/common.py b/aprsd/conf/common.py index c713fd8..2ff0991 100644 --- a/aprsd/conf/common.py +++ b/aprsd/conf/common.py @@ -11,17 +11,12 @@ watch_list_group = cfg.OptGroup( name="watch_list", title="Watch List settings", ) -webchat_group = cfg.OptGroup( - name="webchat", - title="Settings specific to the webchat command", -) registry_group = cfg.OptGroup( name="aprs_registry", title="APRS Registry settings", ) - aprsd_opts = [ cfg.StrOpt( "callsign", @@ -194,34 +189,6 @@ enabled_plugins_opts = [ ), ] -webchat_opts = [ - cfg.StrOpt( - "web_ip", - default="0.0.0.0", - help="The ip address to listen on", - ), - cfg.PortOpt( - "web_port", - default=8001, - help="The port to listen on", - ), - cfg.StrOpt( - "latitude", - default=None, - help="Latitude for the GPS Beacon button. If not set, the button will not be enabled.", - ), - cfg.StrOpt( - "longitude", - default=None, - help="Longitude for the GPS Beacon button. If not set, the button will not be enabled.", - ), - cfg.BoolOpt( - "disable_url_request_logging", - default=False, - help="Disable the logging of url requests in the webchat command.", - ), -] - registry_opts = [ cfg.BoolOpt( "enabled", @@ -261,8 +228,6 @@ def register_opts(config): config.register_opts(enabled_plugins_opts) config.register_group(watch_list_group) config.register_opts(watch_list_opts, group=watch_list_group) - config.register_group(webchat_group) - config.register_opts(webchat_opts, group=webchat_group) config.register_group(registry_group) config.register_opts(registry_opts, group=registry_group) @@ -271,6 +236,5 @@ def list_opts(): return { "DEFAULT": (aprsd_opts + enabled_plugins_opts), watch_list_group.name: watch_list_opts, - webchat_group.name: webchat_opts, registry_group.name: registry_opts, } diff --git a/aprsd/log/log.py b/aprsd/log/log.py index e50a38f..8204106 100644 --- a/aprsd/log/log.py +++ b/aprsd/log/log.py @@ -68,19 +68,9 @@ def setup_logging(loglevel=None, quiet=False): "aprslib.parsing", "aprslib.exceptions", ] - webserver_list = [ - "werkzeug", - "werkzeug._internal", - "socketio", - "urllib3.connectionpool", - "chardet", - "chardet.charsetgroupprober", - "chardet.eucjpprober", - "chardet.mbcharsetprober", - ] # We don't really want to see the aprslib parsing debug output. - disable_list = imap_list + aprslib_list + webserver_list + disable_list = imap_list + aprslib_list # remove every other logger's handlers # and propagate to root logger @@ -91,12 +81,6 @@ def setup_logging(loglevel=None, quiet=False): else: logging.getLogger(name).propagate = True - if CONF.webchat.disable_url_request_logging: - for name in webserver_list: - logging.getLogger(name).handlers = [] - logging.getLogger(name).propagate = True - logging.getLogger(name).setLevel(logging.ERROR) - handlers = [ { "sink": sys.stdout, diff --git a/aprsd/main.py b/aprsd/main.py index 669f254..eb409f3 100644 --- a/aprsd/main.py +++ b/aprsd/main.py @@ -55,7 +55,7 @@ def cli(ctx): def load_commands(): from .cmds import ( # noqa completion, dev, fetch_stats, healthcheck, list_plugins, listen, - send_message, server, webchat, + send_message, server, ) diff --git a/aprsd/web/__init__.py b/aprsd/web/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/aprsd/web/admin/__init__.py b/aprsd/web/admin/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/aprsd/web/admin/static/css/index.css b/aprsd/web/admin/static/css/index.css deleted file mode 100644 index 0fe80e1..0000000 --- a/aprsd/web/admin/static/css/index.css +++ /dev/null @@ -1,84 +0,0 @@ -body { - background: #eeeeee; - margin: 2em; - text-align: center; - font-family: system-ui, sans-serif; -} - -footer { - padding: 2em; - text-align: center; - height: 10vh; -} - -.ui.segment { - background: #eeeeee; -} - -#graphs { - display: grid; - width: 100%; - height: 300px; - grid-template-columns: 1fr 1fr; -} -#graphs_center { - display: block; - margin-top: 10px; - margin-bottom: 10px; - width: 100%; - height: 300px; -} -#left { - margin-right: 2px; - height: 300px; -} -#right { - height: 300px; -} -#center { - height: 300px; -} -#packetsChart, #messageChart, #emailChart, #memChart { - border: 1px solid #ccc; - background: #ddd; -} -#stats { - margin: auto; - width: 80%; -} -#jsonstats { - display: none; -} -#title { - font-size: 4em; -} -#version{ - font-size: .5em; -} -#uptime, #aprsis { - font-size: 1em; -} -#callsign { - font-size: 1.4em; - color: #00F; - padding-top: 8px; - margin:10px; -} - -#title_rx { - background-color: darkseagreen; - text-align: left; -} - -#title_tx { - background-color: lightcoral; - text-align: left; -} - -.aprsd_1 { - background-image: url(/static/images/aprs-symbols-16-0.png); - background-repeat: no-repeat; - background-position: -160px -48px; - width: 16px; - height: 16px; -} diff --git a/aprsd/web/admin/static/css/prism.css b/aprsd/web/admin/static/css/prism.css deleted file mode 100644 index e088b7f..0000000 --- a/aprsd/web/admin/static/css/prism.css +++ /dev/null @@ -1,4 +0,0 @@ -/* PrismJS 1.29.0 -https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+json+json5+log&plugins=show-language+toolbar */ -code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green} -div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;z-index:10;top:.3em;right:.2em;transition:opacity .3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,.2);box-shadow:0 2px 0 0 rgba(0,0,0,.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover{color:inherit;text-decoration:none} diff --git a/aprsd/web/admin/static/css/tabs.css b/aprsd/web/admin/static/css/tabs.css deleted file mode 100644 index b3a67a5..0000000 --- a/aprsd/web/admin/static/css/tabs.css +++ /dev/null @@ -1,35 +0,0 @@ -/* Style the tab */ -.tab { - overflow: hidden; - border: 1px solid #ccc; - background-color: #f1f1f1; -} - -/* Style the buttons that are used to open the tab content */ -.tab button { - background-color: inherit; - float: left; - border: none; - outline: none; - cursor: pointer; - padding: 14px 16px; - transition: 0.3s; -} - -/* Change background color of buttons on hover */ -.tab button:hover { - background-color: #ddd; -} - -/* Create an active/current tablink class */ -.tab button.active { - background-color: #ccc; -} - -/* Style the tab content */ -.tabcontent { - display: none; - padding: 6px 12px; - border: 1px solid #ccc; - border-top: none; -} diff --git a/aprsd/web/admin/static/images/Untitled.png b/aprsd/web/admin/static/images/Untitled.png deleted file mode 100644 index 666fbc4bfedf447da0139a03297f12c34f362867..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37797 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 Vw?{v%#MS@+002ovPDHLkV1oN<>N)@b diff --git a/aprsd/web/admin/static/images/aprs-symbols-64-0.png b/aprsd/web/admin/static/images/aprs-symbols-64-0.png deleted file mode 100644 index 81eec3d42edcab4b257bf7bd220661bdc1386fe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52962 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 Vw?{v%#MS@+002ovPDHLkV1oN<>N)@b diff --git a/aprsd/web/admin/static/images/aprs-symbols-64-2.png b/aprsd/web/admin/static/images/aprs-symbols-64-2.png deleted file mode 100644 index 1f940d4356107f648d260997921f5f6c398f90ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40716 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 P`Gwz}!Z}x;{4VW(H?$oS diff --git a/aprsd/web/admin/static/js/charts.js b/aprsd/web/admin/static/js/charts.js deleted file mode 100644 index 237641a..0000000 --- a/aprsd/web/admin/static/js/charts.js +++ /dev/null @@ -1,235 +0,0 @@ -var packet_list = {}; - -window.chartColors = { - red: 'rgb(255, 99, 132)', - orange: 'rgb(255, 159, 64)', - yellow: 'rgb(255, 205, 86)', - green: 'rgb(26, 181, 77)', - blue: 'rgb(54, 162, 235)', - purple: 'rgb(153, 102, 255)', - grey: 'rgb(201, 203, 207)', - black: 'rgb(0, 0, 0)', - lightcoral: 'rgb(240,128,128)', - darkseagreen: 'rgb(143, 188,143)' - -}; - -function size_dict(d){c=0; for (i in d) ++c; return c} - -function start_charts() { - Chart.scaleService.updateScaleDefaults('linear', { - ticks: { - min: 0 - } - }); - - packets_chart = new Chart($("#packetsChart"), { - label: 'APRS Packets', - type: 'line', - data: { - labels: [], - datasets: [{ - label: 'Packets Sent', - borderColor: window.chartColors.lightcoral, - data: [], - }, - { - label: 'Packets Recieved', - borderColor: window.chartColors.darkseagreen, - data: [], - }] - }, - options: { - responsive: true, - maintainAspectRatio: false, - title: { - display: true, - text: 'APRS Packets', - }, - scales: { - x: { - type: 'timeseries', - offset: true, - ticks: { - major: { enabled: true }, - fontStyle: context => context.tick.major ? 'bold' : undefined, - source: 'data', - maxRotation: 0, - autoSkip: true, - autoSkipPadding: 75, - } - } - } - } - }); - - message_chart = new Chart($("#messageChart"), { - label: 'Messages', - type: 'line', - data: { - labels: [], - datasets: [{ - label: 'Messages Sent', - borderColor: window.chartColors.lightcoral, - data: [], - }, - { - label: 'Messages Recieved', - borderColor: window.chartColors.darkseagreen, - data: [], - }, - { - label: 'Ack Sent', - borderColor: window.chartColors.purple, - data: [], - }, - { - label: 'Ack Recieved', - borderColor: window.chartColors.black, - data: [], - }], - }, - options: { - responsive: true, - maintainAspectRatio: false, - title: { - display: true, - text: 'APRS Messages', - }, - scales: { - x: { - type: 'timeseries', - offset: true, - ticks: { - major: { enabled: true }, - fontStyle: context => context.tick.major ? 'bold' : undefined, - source: 'data', - maxRotation: 0, - autoSkip: true, - autoSkipPadding: 75, - } - } - } - } - }); - - email_chart = new Chart($("#emailChart"), { - label: 'Email Messages', - type: 'line', - data: { - labels: [], - datasets: [{ - label: 'Sent', - borderColor: window.chartColors.lightcoral, - data: [], - }, - { - label: 'Recieved', - borderColor: window.chartColors.darkseagreen, - data: [], - }], - }, - options: { - responsive: true, - maintainAspectRatio: false, - title: { - display: true, - text: 'Email Messages', - }, - scales: { - x: { - type: 'timeseries', - offset: true, - ticks: { - major: { enabled: true }, - fontStyle: context => context.tick.major ? 'bold' : undefined, - source: 'data', - maxRotation: 0, - autoSkip: true, - autoSkipPadding: 75, - } - } - } - } - }); - - memory_chart = new Chart($("#memChart"), { - label: 'Memory Usage', - type: 'line', - data: { - labels: [], - datasets: [{ - label: 'Peak Ram usage', - borderColor: window.chartColors.red, - data: [], - }, - { - label: 'Current Ram usage', - borderColor: window.chartColors.blue, - data: [], - }], - }, - options: { - responsive: true, - maintainAspectRatio: false, - title: { - display: true, - text: 'Memory Usage', - }, - scales: { - x: { - type: 'timeseries', - offset: true, - ticks: { - major: { enabled: true }, - fontStyle: context => context.tick.major ? 'bold' : undefined, - source: 'data', - maxRotation: 0, - autoSkip: true, - autoSkipPadding: 75, - } - } - } - } - }); -} - - -function addData(chart, label, newdata) { - chart.data.labels.push(label); - chart.data.datasets.forEach((dataset) => { - dataset.data.push(newdata); - }); - chart.update(); -} - -function updateDualData(chart, label, first, second) { - chart.data.labels.push(label); - chart.data.datasets[0].data.push(first); - chart.data.datasets[1].data.push(second); - chart.update(); -} -function updateQuadData(chart, label, first, second, third, fourth) { - chart.data.labels.push(label); - chart.data.datasets[0].data.push(first); - chart.data.datasets[1].data.push(second); - chart.data.datasets[2].data.push(third); - chart.data.datasets[3].data.push(fourth); - chart.update(); -} - -function update_stats( data ) { - our_callsign = data["APRSDStats"]["callsign"]; - $("#version").text( data["APRSDStats"]["version"] ); - $("#aprs_connection").html( data["aprs_connection"] ); - $("#uptime").text( "uptime: " + data["APRSDStats"]["uptime"] ); - const html_pretty = Prism.highlight(JSON.stringify(data, null, '\t'), Prism.languages.json, 'json'); - $("#jsonstats").html(html_pretty); - short_time = data["time"].split(/\s(.+)/)[1]; - packet_list = data["PacketList"]["packets"]; - updateDualData(packets_chart, short_time, data["PacketList"]["sent"], data["PacketList"]["received"]); - updateQuadData(message_chart, short_time, packet_list["MessagePacket"]["tx"], packet_list["MessagePacket"]["rx"], - packet_list["AckPacket"]["tx"], packet_list["AckPacket"]["rx"]); - updateDualData(email_chart, short_time, data["EmailStats"]["sent"], data["EmailStats"]["recieved"]); - updateDualData(memory_chart, short_time, data["APRSDStats"]["memory_peak"], data["APRSDStats"]["memory_current"]); -} diff --git a/aprsd/web/admin/static/js/echarts.js b/aprsd/web/admin/static/js/echarts.js deleted file mode 100644 index 9edcb65..0000000 --- a/aprsd/web/admin/static/js/echarts.js +++ /dev/null @@ -1,465 +0,0 @@ -var packet_list = {}; - -var tx_data = []; -var rx_data = []; - -var packet_types_data = {}; - -var mem_current = [] -var mem_peak = [] - -var thread_current = [] - - -function start_charts() { - console.log("start_charts() called"); - // Initialize the echarts instance based on the prepared dom - create_packets_chart(); - create_packets_types_chart(); - create_messages_chart(); - create_ack_chart(); - create_memory_chart(); - create_thread_chart(); -} - - -function create_packets_chart() { - // The packets totals TX/RX chart. - pkt_c_canvas = document.getElementById('packetsChart'); - packets_chart = echarts.init(pkt_c_canvas); - - // Specify the configuration items and data for the chart - var option = { - title: { - text: 'APRS Packet totals' - }, - legend: {}, - tooltip : { - trigger: 'axis' - }, - toolbox: { - show : true, - feature : { - mark : {show: true}, - dataView : {show: true, readOnly: true}, - magicType : {show: true, type: ['line', 'bar']}, - restore : {show: true}, - saveAsImage : {show: true} - } - }, - calculable : true, - xAxis: { type: 'time' }, - yAxis: { }, - series: [ - { - name: 'tx', - type: 'line', - smooth: true, - color: 'red', - encode: { - x: 'timestamp', - y: 'tx' // refer sensor 1 value - } - },{ - name: 'rx', - type: 'line', - smooth: true, - encode: { - x: 'timestamp', - y: 'rx' - } - }] - }; - - // Display the chart using the configuration items and data just specified. - packets_chart.setOption(option); -} - - -function create_packets_types_chart() { - // The packets types chart - pkt_types_canvas = document.getElementById('packetTypesChart'); - packet_types_chart = echarts.init(pkt_types_canvas); - - // The series and data are built and updated on the fly - // as packets come in. - var option = { - title: { - text: 'Packet Types' - }, - legend: {}, - tooltip : { - trigger: 'axis' - }, - toolbox: { - show : true, - feature : { - mark : {show: true}, - dataView : {show: true, readOnly: true}, - magicType : {show: true, type: ['line', 'bar']}, - restore : {show: true}, - saveAsImage : {show: true} - } - }, - calculable : true, - xAxis: { type: 'time' }, - yAxis: { }, - } - - packet_types_chart.setOption(option); -} - - -function create_messages_chart() { - msg_c_canvas = document.getElementById('messagesChart'); - message_chart = echarts.init(msg_c_canvas); - - // Specify the configuration items and data for the chart - var option = { - title: { - text: 'Message Packets' - }, - legend: {}, - tooltip: { - trigger: 'axis' - }, - toolbox: { - show: true, - feature: { - mark : {show: true}, - dataView : {show: true, readOnly: true}, - magicType : {show: true, type: ['line', 'bar']}, - restore : {show: true}, - saveAsImage : {show: true} - } - }, - calculable: true, - xAxis: { type: 'time' }, - yAxis: { }, - series: [ - { - name: 'tx', - type: 'line', - smooth: true, - color: 'red', - encode: { - x: 'timestamp', - y: 'tx' // refer sensor 1 value - } - },{ - name: 'rx', - type: 'line', - smooth: true, - encode: { - x: 'timestamp', - y: 'rx' - } - }] - }; - - // Display the chart using the configuration items and data just specified. - message_chart.setOption(option); -} - -function create_ack_chart() { - ack_canvas = document.getElementById('acksChart'); - ack_chart = echarts.init(ack_canvas); - - // Specify the configuration items and data for the chart - var option = { - title: { - text: 'Ack Packets' - }, - legend: {}, - tooltip: { - trigger: 'axis' - }, - toolbox: { - show: true, - feature: { - mark : {show: true}, - dataView : {show: true, readOnly: false}, - magicType : {show: true, type: ['line', 'bar']}, - restore : {show: true}, - saveAsImage : {show: true} - } - }, - calculable: true, - xAxis: { type: 'time' }, - yAxis: { }, - series: [ - { - name: 'tx', - type: 'line', - smooth: true, - color: 'red', - encode: { - x: 'timestamp', - y: 'tx' // refer sensor 1 value - } - },{ - name: 'rx', - type: 'line', - smooth: true, - encode: { - x: 'timestamp', - y: 'rx' - } - }] - }; - - ack_chart.setOption(option); -} - -function create_memory_chart() { - ack_canvas = document.getElementById('memChart'); - memory_chart = echarts.init(ack_canvas); - - // Specify the configuration items and data for the chart - var option = { - title: { - text: 'Memory Usage' - }, - legend: {}, - tooltip: { - trigger: 'axis' - }, - toolbox: { - show: true, - feature: { - mark : {show: true}, - dataView : {show: true, readOnly: false}, - magicType : {show: true, type: ['line', 'bar']}, - restore : {show: true}, - saveAsImage : {show: true} - } - }, - calculable: true, - xAxis: { type: 'time' }, - yAxis: { }, - series: [ - { - name: 'current', - type: 'line', - smooth: true, - color: 'red', - encode: { - x: 'timestamp', - y: 'current' // refer sensor 1 value - } - },{ - name: 'peak', - type: 'line', - smooth: true, - encode: { - x: 'timestamp', - y: 'peak' - } - }] - }; - - memory_chart.setOption(option); -} - -function create_thread_chart() { - thread_canvas = document.getElementById('threadChart'); - thread_chart = echarts.init(thread_canvas); - - // Specify the configuration items and data for the chart - var option = { - title: { - text: 'Active Threads' - }, - legend: {}, - tooltip: { - trigger: 'axis' - }, - toolbox: { - show: true, - feature: { - mark : {show: true}, - dataView : {show: true, readOnly: false}, - magicType : {show: true, type: ['line', 'bar']}, - restore : {show: true}, - saveAsImage : {show: true} - } - }, - calculable: true, - xAxis: { type: 'time' }, - yAxis: { }, - series: [ - { - name: 'current', - type: 'line', - smooth: true, - color: 'red', - encode: { - x: 'timestamp', - y: 'current' // refer sensor 1 value - } - } - ] - }; - - thread_chart.setOption(option); -} - - - - -function updatePacketData(chart, time, first, second) { - tx_data.push([time, first]); - rx_data.push([time, second]); - option = { - series: [ - { - name: 'tx', - data: tx_data, - }, - { - name: 'rx', - data: rx_data, - } - ] - } - chart.setOption(option); -} - -function updatePacketTypesData(time, typesdata) { - //The options series is created on the fly each time based on - //the packet types we have in the data - var series = [] - - for (const k in typesdata) { - tx = [time, typesdata[k]["tx"]] - rx = [time, typesdata[k]["rx"]] - - if (packet_types_data.hasOwnProperty(k)) { - packet_types_data[k]["tx"].push(tx) - packet_types_data[k]["rx"].push(rx) - } else { - packet_types_data[k] = {'tx': [tx], 'rx': [rx]} - } - } -} - -function updatePacketTypesChart() { - series = [] - for (const k in packet_types_data) { - entry = { - name: k+"tx", - data: packet_types_data[k]["tx"], - type: 'line', - smooth: true, - encode: { - x: 'timestamp', - y: k+'tx' // refer sensor 1 value - } - } - series.push(entry) - entry = { - name: k+"rx", - data: packet_types_data[k]["rx"], - type: 'line', - smooth: true, - encode: { - x: 'timestamp', - y: k+'rx' // refer sensor 1 value - } - } - series.push(entry) - } - - option = { - series: series - } - packet_types_chart.setOption(option); -} - -function updateTypeChart(chart, key) { - //Generic function to update a packet type chart - if (! packet_types_data.hasOwnProperty(key)) { - return; - } - - if (! packet_types_data[key].hasOwnProperty('tx')) { - return; - } - var option = { - series: [{ - name: "tx", - data: packet_types_data[key]["tx"], - }, - { - name: "rx", - data: packet_types_data[key]["rx"] - }] - } - - chart.setOption(option); -} - -function updateMemChart(time, current, peak) { - mem_current.push([time, current]); - mem_peak.push([time, peak]); - option = { - series: [ - { - name: 'current', - data: mem_current, - }, - { - name: 'peak', - data: mem_peak, - } - ] - } - memory_chart.setOption(option); -} - -function updateThreadChart(time, threads) { - keys = Object.keys(threads); - thread_count = keys.length; - thread_current.push([time, thread_count]); - option = { - series: [ - { - name: 'current', - data: thread_current, - } - ] - } - thread_chart.setOption(option); -} - -function updateMessagesChart() { - updateTypeChart(message_chart, "MessagePacket") -} - -function updateAcksChart() { - updateTypeChart(ack_chart, "AckPacket") -} - -function update_stats( data ) { - console.log("update_stats() echarts.js called") - stats = data["stats"]; - our_callsign = stats["APRSDStats"]["callsign"]; - $("#version").text( stats["APRSDStats"]["version"] ); - $("#aprs_connection").html( stats["aprs_connection"] ); - $("#uptime").text( "uptime: " + stats["APRSDStats"]["uptime"] ); - const html_pretty = Prism.highlight(JSON.stringify(data, null, '\t'), Prism.languages.json, 'json'); - $("#jsonstats").html(html_pretty); - - t = Date.parse(data["time"]); - ts = new Date(t); - updatePacketData(packets_chart, ts, stats["PacketList"]["tx"], stats["PacketList"]["rx"]); - updatePacketTypesData(ts, stats["PacketList"]["types"]); - updatePacketTypesChart(); - updateMessagesChart(); - updateAcksChart(); - updateMemChart(ts, stats["APRSDStats"]["memory_current"], stats["APRSDStats"]["memory_peak"]); - updateThreadChart(ts, stats["APRSDThreadList"]); - //updateQuadData(message_chart, short_time, data["stats"]["messages"]["sent"], data["stats"]["messages"]["received"], data["stats"]["messages"]["ack_sent"], data["stats"]["messages"]["ack_recieved"]); - //updateDualData(email_chart, short_time, data["stats"]["email"]["sent"], data["stats"]["email"]["recieved"]); - //updateDualData(memory_chart, short_time, data["stats"]["aprsd"]["memory_peak"], data["stats"]["aprsd"]["memory_current"]); -} diff --git a/aprsd/web/admin/static/js/logs.js b/aprsd/web/admin/static/js/logs.js deleted file mode 100644 index f85d292..0000000 --- a/aprsd/web/admin/static/js/logs.js +++ /dev/null @@ -1,26 +0,0 @@ -function init_logs() { - const socket = io("/logs"); - socket.on('connect', function () { - console.log("Connected to logs socketio"); - }); - - socket.on('connected', function(msg) { - console.log("Connected to /logs"); - console.log(msg); - }); - - socket.on('log_entry', function(data) { - update_logs(data); - }); - -}; - - -function update_logs(data) { - var code_block = $('#logtext') - entry = data["message"] - const html_pretty = Prism.highlight(entry, Prism.languages.log, 'log'); - code_block.append(html_pretty + "
"); - var div = document.getElementById('logContainer'); - div.scrollTop = div.scrollHeight; -} diff --git a/aprsd/web/admin/static/js/main.js b/aprsd/web/admin/static/js/main.js deleted file mode 100644 index 5eba2e0..0000000 --- a/aprsd/web/admin/static/js/main.js +++ /dev/null @@ -1,231 +0,0 @@ -// watchlist is a dict of ham callsign => symbol, packets -var watchlist = {}; -var our_callsign = ""; - -function aprs_img(item, x_offset, y_offset) { - var x = x_offset * -16; - if (y_offset > 5) { - y_offset = 5; - } - var y = y_offset * -16; - var loc = x + 'px '+ y + 'px' - item.css('background-position', loc); -} - -function show_aprs_icon(item, symbol) { - var offset = ord(symbol) - 33; - var col = Math.floor(offset / 16); - var row = offset % 16; - //console.log("'" + symbol+"' off: "+offset+" row: "+ row + " col: " + col) - aprs_img(item, row, col); -} - -function ord(str){return str.charCodeAt(0);} - - -function update_watchlist( data ) { - // Update the watch list - stats = data["stats"]; - if (stats.hasOwnProperty("WatchList") == false) { - return - } - var watchdiv = $("#watchDiv"); - var html_str = '' - watchdiv.html('') - jQuery.each(stats["WatchList"], function(i, val) { - html_str += '' - }); - html_str += "
HAM CallsignAge since last seen by APRSD
' + i + '' + val["last"] + '
"; - watchdiv.append(html_str); - - jQuery.each(watchlist, function(i, val) { - //update the symbol - var call_img = $('#callsign_'+i); - show_aprs_icon(call_img, val['symbol']) - }); -} - -function update_watchlist_from_packet(callsign, val) { - if (!watchlist.hasOwnProperty(callsign)) { - watchlist[callsign] = { - "symbol": '[', - "packets": {}, - } - } else { - if (val.hasOwnProperty('symbol')) { - //console.log("Updating symbol for "+callsign + " to "+val["symbol"]) - watchlist[callsign]["symbol"] = val["symbol"] - } - } - if (watchlist[callsign]["packets"].hasOwnProperty(val['ts']) == false) { - watchlist[callsign]["packets"][val['ts']]= val; - } - //console.log(watchlist) -} - -function update_seenlist( data ) { - stats = data["stats"]; - if (stats.hasOwnProperty("SeenList") == false) { - return - } - var seendiv = $("#seenDiv"); - var html_str = '' - html_str += '' - html_str += '' - seendiv.html('') - var seen_list = stats["SeenList"] - var len = Object.keys(seen_list).length - $('#seen_count').html(len) - jQuery.each(seen_list, function(i, val) { - html_str += '' - html_str += '' - html_str += '' - }); - html_str += "
HAM CallsignAge since last seen by APRSDNumber of packets RX
' - html_str += '' + i + '' + val["last"] + '' + val["count"] + '
"; - seendiv.append(html_str); -} - -function update_plugins( data ) { - stats = data["stats"]; - if (stats.hasOwnProperty("PluginManager") == false) { - return - } - var plugindiv = $("#pluginDiv"); - var html_str = '' - html_str += '' - html_str += '' - html_str += '' - html_str += '' - plugindiv.html('') - - var plugins = stats["PluginManager"]; - var keys = Object.keys(plugins); - keys.sort(); - for (var i=0; i'; - html_str += ''; - html_str += ''; - } - html_str += "
Plugin NamePlugin Enabled?Processed PacketsSent PacketsVersion
' + val["enabled"] + '' + val["rx"] + '' + val["tx"] + '' + val["version"] +'
"; - plugindiv.append(html_str); -} - -function update_threads( data ) { - stats = data["stats"]; - if (stats.hasOwnProperty("APRSDThreadList") == false) { - return - } - var threadsdiv = $("#threadsDiv"); - var countdiv = $("#thread_count"); - var html_str = '' - html_str += '' - html_str += '' - html_str += '' - threadsdiv.html('') - - var threads = stats["APRSDThreadList"]; - var keys = Object.keys(threads); - countdiv.html(keys.length); - keys.sort(); - for (var i=0; i'; - html_str += ''; - html_str += ''; - } - html_str += "
Thread NameAlive?AgeLoop Count
' + val["alive"] + '' + val["age"] + '' + val["loop_count"] + '
"; - threadsdiv.append(html_str); -} - -function update_packets( data ) { - var packetsdiv = $("#packetsDiv"); - //nuke the contents first, then add to it. - if (size_dict(packet_list) == 0 && size_dict(data) > 0) { - packetsdiv.html('') - } - jQuery.each(data.packets, function(i, val) { - pkt = val; - - update_watchlist_from_packet(pkt['from_call'], pkt); - if ( packet_list.hasOwnProperty(pkt['timestamp']) == false ) { - // Store the packet - packet_list[pkt['timestamp']] = pkt; - //ts_str = val["timestamp"].toString(); - //ts = ts_str.split(".")[0]*1000; - ts = pkt['timestamp'] * 1000; - var d = new Date(ts).toLocaleDateString(); - var t = new Date(ts).toLocaleTimeString(); - var from_call = pkt.from_call; - if (from_call == our_callsign) { - title_id = 'title_tx'; - } else { - title_id = 'title_rx'; - } - var from_to = d + " " + t + "    " + from_call + " > " - - if (val.hasOwnProperty('addresse')) { - from_to = from_to + pkt['addresse'] - } else if (pkt.hasOwnProperty('to_call')) { - from_to = from_to + pkt['to_call'] - } else if (pkt.hasOwnProperty('format') && pkt['format'] == 'mic-e') { - from_to = from_to + "Mic-E" - } - - from_to = from_to + "  -  " + pkt['raw'] - - json_pretty = Prism.highlight(JSON.stringify(pkt, null, '\t'), Prism.languages.json, 'json'); - pkt_html = '

' + from_to + '
' + json_pretty + '

' - packetsdiv.prepend(pkt_html); - } - }); - - $('.ui.accordion').accordion('refresh'); - - // Update the count of messages shown - cnt = size_dict(packet_list); - //console.log("packets list " + cnt) - $('#packets_count').html(cnt); - - const html_pretty = Prism.highlight(JSON.stringify(data, null, '\t'), Prism.languages.json, 'json'); - $("#packetsjson").html(html_pretty); -} - - -function start_update() { - - (function statsworker() { - $.ajax({ - url: "/stats", - type: 'GET', - dataType: 'json', - success: function(data) { - update_stats(data); - update_watchlist(data); - update_seenlist(data); - update_plugins(data); - update_threads(data); - }, - complete: function() { - setTimeout(statsworker, 10000); - } - }); - })(); - - (function packetsworker() { - $.ajax({ - url: "/packets", - type: 'GET', - dataType: 'json', - success: function(data) { - update_packets(data); - }, - complete: function() { - setTimeout(packetsworker, 10000); - } - }); - })(); -} diff --git a/aprsd/web/admin/static/js/prism.js b/aprsd/web/admin/static/js/prism.js deleted file mode 100644 index 2b957cb..0000000 --- a/aprsd/web/admin/static/js/prism.js +++ /dev/null @@ -1,12 +0,0 @@ -/* PrismJS 1.29.0 -https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+json+json5+log&plugins=show-language+toolbar */ -var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=g.reach);A+=w.value.length,w=w.next){var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){var P,L=1;if(y){if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(jg.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){var I={cause:f+","+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function u(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function c(e,n,t){for(var r=n.next,a=0;a"+i.content+""},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener("message",(function(n){var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close()}),!1),a):a;var g=a.util.currentScript();function f(){a.manual||a.highlightAll()}if(g&&(a.filename=g.src,g.hasAttribute("data-manual")&&(a.manual=!0)),!a.manual){var h=document.readyState;"loading"===h||"interactive"===h&&g&&g.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return a}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); -Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",(function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))})),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,(function(){return a})),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; -!function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:[^;{\\s\"']|\\s+(?!\\s)|"+e.source+")*?(?:;|(?=\\s*\\{))"),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism); -Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; -Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp("((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|/\\*(?:[^*]|\\*(?!/))*\\*/)*(?:$|[\r\n,.;:})\\]]|//))"),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript; -Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json; -!function(n){var e=/("|')(?:\\(?:\r\n?|\n|.)|(?!\1)[^\\\r\n])*\1/;n.languages.json5=n.languages.extend("json",{property:[{pattern:RegExp(e.source+"(?=\\s*:)"),greedy:!0},{pattern:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/,alias:"unquoted"}],string:{pattern:e,greedy:!0},number:/[+-]?\b(?:NaN|Infinity|0x[a-fA-F\d]+)\b|[+-]?(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[eE][+-]?\d+\b)?/})}(Prism); -Prism.languages.log={string:{pattern:/"(?:[^"\\\r\n]|\\.)*"|'(?![st] | \w)(?:[^'\\\r\n]|\\.)*'/,greedy:!0},exception:{pattern:/(^|[^\w.])[a-z][\w.]*(?:Error|Exception):.*(?:(?:\r\n?|\n)[ \t]*(?:at[ \t].+|\.{3}.*|Caused by:.*))+(?:(?:\r\n?|\n)[ \t]*\.\.\. .*)?/,lookbehind:!0,greedy:!0,alias:["javastacktrace","language-javastacktrace"],inside:Prism.languages.javastacktrace||{keyword:/\bat\b/,function:/[a-z_][\w$]*(?=\()/,punctuation:/[.:()]/}},level:[{pattern:/\b(?:ALERT|CRIT|CRITICAL|EMERG|EMERGENCY|ERR|ERROR|FAILURE|FATAL|SEVERE)\b/,alias:["error","important"]},{pattern:/\b(?:WARN|WARNING|WRN)\b/,alias:["warning","important"]},{pattern:/\b(?:DISPLAY|INF|INFO|NOTICE|STATUS)\b/,alias:["info","keyword"]},{pattern:/\b(?:DBG|DEBUG|FINE)\b/,alias:["debug","keyword"]},{pattern:/\b(?:FINER|FINEST|TRACE|TRC|VERBOSE|VRB)\b/,alias:["trace","comment"]}],property:{pattern:/((?:^|[\]|])[ \t]*)[a-z_](?:[\w-]|\b\/\b)*(?:[. ]\(?\w(?:[\w-]|\b\/\b)*\)?)*:(?=\s)/im,lookbehind:!0},separator:{pattern:/(^|[^-+])-{3,}|={3,}|\*{3,}|- - /m,lookbehind:!0,alias:"comment"},url:/\b(?:file|ftp|https?):\/\/[^\s|,;'"]*[^\s|,;'">.]/,email:{pattern:/(^|\s)[-\w+.]+@[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)+(?=\s)/,lookbehind:!0,alias:"url"},"ip-address":{pattern:/\b(?:\d{1,3}(?:\.\d{1,3}){3})\b/,alias:"constant"},"mac-address":{pattern:/\b[a-f0-9]{2}(?::[a-f0-9]{2}){5}\b/i,alias:"constant"},domain:{pattern:/(^|\s)[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)*\.[a-z][a-z0-9-]+(?=\s)/,lookbehind:!0,alias:"constant"},uuid:{pattern:/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/i,alias:"constant"},hash:{pattern:/\b(?:[a-f0-9]{32}){1,2}\b/i,alias:"constant"},"file-path":{pattern:/\b[a-z]:[\\/][^\s|,;:(){}\[\]"']+|(^|[\s:\[\](>|])\.{0,2}\/\w[^\s|,;:(){}\[\]"']*/i,lookbehind:!0,greedy:!0,alias:"string"},date:{pattern:RegExp("\\b\\d{4}[-/]\\d{2}[-/]\\d{2}(?:T(?=\\d{1,2}:)|(?=\\s\\d{1,2}:))|\\b\\d{1,4}[-/ ](?:\\d{1,2}|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)[-/ ]\\d{2,4}T?\\b|\\b(?:(?:Fri|Mon|Sat|Sun|Thu|Tue|Wed)(?:\\s{1,2}(?:Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep))?|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)\\s{1,2}\\d{1,2}\\b","i"),alias:"number"},time:{pattern:/\b\d{1,2}:\d{1,2}:\d{1,2}(?:[.,:]\d+)?(?:\s?[+-]\d{2}:?\d{2}|Z)?\b/,alias:"number"},boolean:/\b(?:false|null|true)\b/i,number:{pattern:/(^|[^.\w])(?:0x[a-f0-9]+|0o[0-7]+|0b[01]+|v?\d[\da-f]*(?:\.\d+)*(?:e[+-]?\d+)?[a-z]{0,3}\b)\b(?!\.\w)/i,lookbehind:!0},operator:/[;:?<=>~/@!$%&+\-|^(){}*#]/,punctuation:/[\[\].,]/}; -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e=[],t={},n=function(){};Prism.plugins.toolbar={};var a=Prism.plugins.toolbar.registerButton=function(n,a){var r;r="function"==typeof a?a:function(e){var t;return"function"==typeof a.onClick?((t=document.createElement("button")).type="button",t.addEventListener("click",(function(){a.onClick.call(this,e)}))):"string"==typeof a.url?(t=document.createElement("a")).href=a.url:t=document.createElement("span"),a.className&&t.classList.add(a.className),t.textContent=a.text,t},n in t?console.warn('There is a button with the key "'+n+'" registered already.'):e.push(t[n]=r)},r=Prism.plugins.toolbar.hook=function(a){var r=a.element.parentNode;if(r&&/pre/i.test(r.nodeName)&&!r.parentNode.classList.contains("code-toolbar")){var o=document.createElement("div");o.classList.add("code-toolbar"),r.parentNode.insertBefore(o,r),o.appendChild(r);var i=document.createElement("div");i.classList.add("toolbar");var l=e,d=function(e){for(;e;){var t=e.getAttribute("data-toolbar-order");if(null!=t)return(t=t.trim()).length?t.split(/\s*,\s*/g):[];e=e.parentElement}}(a.element);d&&(l=d.map((function(e){return t[e]||n}))),l.forEach((function(e){var t=e(a);if(t){var n=document.createElement("div");n.classList.add("toolbar-item"),n.appendChild(t),i.appendChild(n)}})),o.appendChild(i)}};a("label",(function(e){var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute("data-label")){var n,a,r=t.getAttribute("data-label");try{a=document.querySelector("template#"+r)}catch(e){}return a?n=a.content:(t.hasAttribute("data-url")?(n=document.createElement("a")).href=t.getAttribute("data-url"):n=document.createElement("span"),n.textContent=r),n}})),Prism.hooks.add("complete",r)}}(); -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document)if(Prism.plugins.toolbar){var e={none:"Plain text",plain:"Plain text",plaintext:"Plain text",text:"Plain text",txt:"Plain text",html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",rss:"RSS",css:"CSS",clike:"C-like",js:"JavaScript",abap:"ABAP",abnf:"ABNF",al:"AL",antlr4:"ANTLR4",g4:"ANTLR4",apacheconf:"Apache Configuration",apl:"APL",aql:"AQL",ino:"Arduino",arff:"ARFF",armasm:"ARM Assembly","arm-asm":"ARM Assembly",art:"Arturo",asciidoc:"AsciiDoc",adoc:"AsciiDoc",aspnet:"ASP.NET (C#)",asm6502:"6502 Assembly",asmatmel:"Atmel AVR Assembly",autohotkey:"AutoHotkey",autoit:"AutoIt",avisynth:"AviSynth",avs:"AviSynth","avro-idl":"Avro IDL",avdl:"Avro IDL",awk:"AWK",gawk:"GAWK",sh:"Shell",basic:"BASIC",bbcode:"BBcode",bbj:"BBj",bnf:"BNF",rbnf:"RBNF",bqn:"BQN",bsl:"BSL (1C:Enterprise)",oscript:"OneScript",csharp:"C#",cs:"C#",dotnet:"C#",cpp:"C++",cfscript:"CFScript",cfc:"CFScript",cil:"CIL",cilkc:"Cilk/C","cilk-c":"Cilk/C",cilkcpp:"Cilk/C++","cilk-cpp":"Cilk/C++",cilk:"Cilk/C++",cmake:"CMake",cobol:"COBOL",coffee:"CoffeeScript",conc:"Concurnas",csp:"Content-Security-Policy","css-extras":"CSS Extras",csv:"CSV",cue:"CUE",dataweave:"DataWeave",dax:"DAX",django:"Django/Jinja2",jinja2:"Django/Jinja2","dns-zone-file":"DNS zone file","dns-zone":"DNS zone file",dockerfile:"Docker",dot:"DOT (Graphviz)",gv:"DOT (Graphviz)",ebnf:"EBNF",editorconfig:"EditorConfig",ejs:"EJS",etlua:"Embedded Lua templating",erb:"ERB","excel-formula":"Excel Formula",xlsx:"Excel Formula",xls:"Excel Formula",fsharp:"F#","firestore-security-rules":"Firestore security rules",ftl:"FreeMarker Template Language",gml:"GameMaker Language",gamemakerlanguage:"GameMaker Language",gap:"GAP (CAS)",gcode:"G-code",gdscript:"GDScript",gedcom:"GEDCOM",gettext:"gettext",po:"gettext",glsl:"GLSL",gn:"GN",gni:"GN","linker-script":"GNU Linker Script",ld:"GNU Linker Script","go-module":"Go module","go-mod":"Go module",graphql:"GraphQL",hbs:"Handlebars",hs:"Haskell",hcl:"HCL",hlsl:"HLSL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam","icu-message-format":"ICU Message Format",idr:"Idris",ignore:".ignore",gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore",inform7:"Inform 7",javadoc:"JavaDoc",javadoclike:"JavaDoc-like",javastacktrace:"Java stack trace",jq:"JQ",jsdoc:"JSDoc","js-extras":"JS Extras",json:"JSON",webmanifest:"Web App Manifest",json5:"JSON5",jsonp:"JSONP",jsstacktrace:"JS stack trace","js-templates":"JS Templates",keepalived:"Keepalived Configure",kts:"Kotlin Script",kt:"Kotlin",kumir:"KuMir (КуМир)",kum:"KuMir (КуМир)",latex:"LaTeX",tex:"TeX",context:"ConTeXt",lilypond:"LilyPond",ly:"LilyPond",emacs:"Lisp",elisp:"Lisp","emacs-lisp":"Lisp",llvm:"LLVM IR",log:"Log file",lolcode:"LOLCODE",magma:"Magma (CAS)",md:"Markdown","markup-templating":"Markup templating",matlab:"MATLAB",maxscript:"MAXScript",mel:"MEL",metafont:"METAFONT",mongodb:"MongoDB",moon:"MoonScript",n1ql:"N1QL",n4js:"N4JS",n4jsd:"N4JS","nand2tetris-hdl":"Nand To Tetris HDL",naniscript:"Naninovel Script",nani:"Naninovel Script",nasm:"NASM",neon:"NEON",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",objc:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",openqasm:"OpenQasm",qasm:"OpenQasm",parigp:"PARI/GP",objectpascal:"Object Pascal",psl:"PATROL Scripting Language",pcaxis:"PC-Axis",px:"PC-Axis",peoplecode:"PeopleCode",pcode:"PeopleCode",php:"PHP",phpdoc:"PHPDoc","php-extras":"PHP Extras","plant-uml":"PlantUML",plantuml:"PlantUML",plsql:"PL/SQL",powerquery:"PowerQuery",pq:"PowerQuery",mscript:"PowerQuery",powershell:"PowerShell",promql:"PromQL",properties:".properties",protobuf:"Protocol Buffers",purebasic:"PureBasic",pbfasm:"PureBasic",purs:"PureScript",py:"Python",qsharp:"Q#",qs:"Q#",q:"Q (kdb+ database)",qml:"QML",rkt:"Racket",cshtml:"Razor C#",razor:"Razor C#",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rpy:"Ren'py",res:"ReScript",rest:"reST (reStructuredText)",robotframework:"Robot Framework",robot:"Robot Framework",rb:"Ruby",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (SCSS)","shell-session":"Shell session","sh-session":"Shell session",shellsession:"Shell session",sml:"SML",smlnj:"SML/NJ",solidity:"Solidity (Ethereum)",sol:"Solidity (Ethereum)","solution-file":"Solution file",sln:"Solution file",soy:"Soy (Closure Template)",sparql:"SPARQL",rq:"SPARQL","splunk-spl":"Splunk SPL",sqf:"SQF: Status Quo Function (Arma 3)",sql:"SQL",stata:"Stata Ado",iecst:"Structured Text (IEC 61131-3)",supercollider:"SuperCollider",sclang:"SuperCollider",systemd:"Systemd configuration file","t4-templating":"T4 templating","t4-cs":"T4 Text Templates (C#)",t4:"T4 Text Templates (C#)","t4-vb":"T4 Text Templates (VB)",tap:"TAP",tt2:"Template Toolkit 2",toml:"TOML",trickle:"trickle",troy:"troy",trig:"TriG",ts:"TypeScript",tsconfig:"TSConfig",uscript:"UnrealScript",uc:"UnrealScript",uorazor:"UO Razor Script",uri:"URI",url:"URL",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",vba:"VBA",vb:"Visual Basic",wasm:"WebAssembly","web-idl":"Web IDL",webidl:"Web IDL",wgsl:"WGSL",wiki:"Wiki markup",wolfram:"Wolfram language",nb:"Mathematica Notebook",wl:"Wolfram language",xeoracube:"XeoraCube","xml-doc":"XML doc (.net)",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML",yml:"YAML",yang:"YANG"};Prism.plugins.toolbar.registerButton("show-language",(function(a){var t=a.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var o,i=t.getAttribute("data-language")||e[a.language]||((o=a.language)?(o.substring(0,1).toUpperCase()+o.substring(1)).replace(/s(?=cript)/,"S"):o);if(i){var s=document.createElement("span");return s.textContent=i,s}}}))}else console.warn("Show Languages plugin loaded before Toolbar plugin.")}(); diff --git a/aprsd/web/admin/static/js/send-message.js b/aprsd/web/admin/static/js/send-message.js deleted file mode 100644 index 9bcb470..0000000 --- a/aprsd/web/admin/static/js/send-message.js +++ /dev/null @@ -1,114 +0,0 @@ -var cleared = false; - -function size_dict(d){c=0; for (i in d) ++c; return c} - -function init_messages() { - const socket = io("/sendmsg"); - socket.on('connect', function () { - console.log("Connected to socketio"); - }); - socket.on('connected', function(msg) { - console.log("Connected!"); - console.log(msg); - }); - - socket.on("sent", function(msg) { - if (cleared == false) { - var msgsdiv = $("#msgsDiv"); - msgsdiv.html('') - cleared = true - } - add_msg(msg); - }); - - socket.on("ack", function(msg) { - update_msg(msg); - }); - socket.on("reply", function(msg) { - update_msg(msg); - }); - -} - -function add_msg(msg) { - var msgsdiv = $("#sendMsgsDiv"); - - ts_str = msg["ts"].toString(); - ts = ts_str.split(".")[0]*1000; - var d = new Date(ts).toLocaleDateString("en-US") - var t = new Date(ts).toLocaleTimeString("en-US") - - from = msg['from'] - title_id = 'title_tx' - var from_to = d + " " + t + "    " + from + " > " - - if (msg.hasOwnProperty('to')) { - from_to = from_to + msg['to'] - } - from_to = from_to + "  -  " + msg['message'] - - id = ts_str.split('.')[0] - pretty_id = "pretty_" + id - loader_id = "loader_" + id - ack_id = "ack_" + id - reply_id = "reply_" + id - span_id = "span_" + id - json_pretty = Prism.highlight(JSON.stringify(msg, null, '\t'), Prism.languages.json, 'json'); - msg_html = '
'; - msg_html += '
 '; - msg_html += ' '; - msg_html += ' '; - msg_html += '' + from_to +'
'; - msg_html += '
' + json_pretty + '

' - msgsdiv.prepend(msg_html); - $('.ui.accordion').accordion('refresh'); -} - -function update_msg(msg) { - var msgsdiv = $("#sendMsgsDiv"); - // We have an existing entry - ts_str = msg["ts"].toString(); - id = ts_str.split('.')[0] - pretty_id = "pretty_" + id - loader_id = "loader_" + id - reply_id = "reply_" + id - ack_id = "ack_" + id - span_id = "span_" + id - - - - if (msg['ack'] == true) { - var loader_div = $('#' + loader_id); - var ack_div = $('#' + ack_id); - loader_div.removeClass('ui active inline loader'); - loader_div.addClass('ui disabled loader'); - ack_div.removeClass('thumbs up outline icon'); - ack_div.addClass('thumbs up outline icon'); - } - - if (msg['reply'] !== null) { - var reply_div = $('#' + reply_id); - reply_div.removeClass("thumbs down outline icon"); - reply_div.addClass('reply icon'); - reply_div.attr('data-content', 'Got Reply'); - - var d = new Date(ts).toLocaleDateString("en-US") - var t = new Date(ts).toLocaleTimeString("en-US") - var from_to = d + " " + t + "    " + from + " > " - - if (msg.hasOwnProperty('to')) { - from_to = from_to + msg['to'] - } - from_to = from_to + "  -  " + msg['message'] - from_to += "   ===> " + msg["reply"]["message_text"] - - var span_div = $('#' + span_id); - span_div.html(from_to); - } - - var pretty_pre = $("#" + pretty_id); - pretty_pre.html(''); - json_pretty = Prism.highlight(JSON.stringify(msg, null, '\t'), Prism.languages.json, 'json'); - pretty_pre.html(json_pretty); - $('.ui.accordion').accordion('refresh'); -} diff --git a/aprsd/web/admin/static/js/tabs.js b/aprsd/web/admin/static/js/tabs.js deleted file mode 100644 index 97cd2f8..0000000 --- a/aprsd/web/admin/static/js/tabs.js +++ /dev/null @@ -1,28 +0,0 @@ -function openTab(evt, tabName) { - // Declare all variables - var i, tabcontent, tablinks; - - if (typeof tabName == 'undefined') { - return - } - - // Get all elements with class="tabcontent" and hide them - tabcontent = document.getElementsByClassName("tabcontent"); - for (i = 0; i < tabcontent.length; i++) { - tabcontent[i].style.display = "none"; - } - - // Get all elements with class="tablinks" and remove the class "active" - tablinks = document.getElementsByClassName("tablinks"); - for (i = 0; i < tablinks.length; i++) { - tablinks[i].className = tablinks[i].className.replace(" active", ""); - } - - // Show the current tab, and add an "active" class to the button that opened the tab - document.getElementById(tabName).style.display = "block"; - if (typeof evt.currentTarget == 'undefined') { - return - } else { - evt.currentTarget.className += " active"; - } -} diff --git a/aprsd/web/admin/templates/index.html b/aprsd/web/admin/templates/index.html deleted file mode 100644 index e8058e3..0000000 --- a/aprsd/web/admin/templates/index.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

APRSD {{ version }}

-
- -
-
- {{ callsign }} - connected to - {{ aprs_connection|safe }} -
- -
- NONE -
-
- - - - - -
-

Charts

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
- - - -
-

Messages (0)

-
-
Loading
-
-
- -
-

- Callsign Seen List ({{ seen_count }}) -

-
Loading
-
- -
-

- Callsign Watch List ({{ watch_count }}) -     - Notification age - {{ watch_age }} -

-
Loading
-
- -
-

- Plugins Loaded ({{ plugin_count }}) -

-
Loading
-
- -
-

- Threads Loaded ({{ thread_count }}) -

-
Loading
-
- -
-

Config

-
{{ config_json|safe }}
-
- -
-

LOGFILE

-
-
- - - -
-

Raw JSON

-
{{ initial_stats|safe }}
-
- -
- PyPI version - -
- - diff --git a/aprsd/web/chat/static/css/chat.css b/aprsd/web/chat/static/css/chat.css deleted file mode 100644 index 7971f01..0000000 --- a/aprsd/web/chat/static/css/chat.css +++ /dev/null @@ -1,115 +0,0 @@ -input[type=search]::-webkit-search-cancel-button { - -webkit-appearance: searchfield-cancel-button; -} - -.speech-wrapper { - padding-top: 0px; - padding: 5px 30px; - background-color: #CCCCCC; -} - -.bubble-row { - display: flex; - width: 100%; - justify-content: flex-start; -} - -.bubble-row.alt { - justify-content: flex-end; -} - -.bubble { - /*width: 350px; */ - height: auto; - display: block; - background: #f5f5f5; - border-radius: 4px; - box-shadow: 2px 8px 5px #555; - position: relative; - margin: 0 0 15px; -} - -.bubble.alt { - margin: 0 0 15px; -} - -.bubble-text { - padding: 5px 5px 0px 8px; -} - -.bubble-name { - width: 280px; - font-weight: 600; - font-size: 12px; - margin: 0 0 0px; - color: #3498db; - display: flex; - align-items: center; - .material-symbols-rounded { - margin-left: auto; - font-weight: normal; - color: #808080; - } -} -.bubble-name.alt { - color: #2ecc71; -} - -.bubble-timestamp { - margin-right: auto; - font-size: 11px; - text-transform: uppercase; - color: #bbb -} - -.bubble-message { - font-size: 16px; - margin: 0px; - padding: 0px 0px 0px 0px; - color: #2b2b2b; - text-align: left; -} - -.bubble-arrow { - position: absolute; - width: 0; - bottom:30px; - left: -16px; - height: 0px; -} - -.bubble-arrow.alt { - right: -2px; - bottom: 30px; - left: auto; -} - -.bubble-arrow:after { - content: ""; - position: absolute; - border: 0 solid transparent; - border-top: 9px solid #f5f5f5; - border-radius: 0 20px 0; - width: 15px; - height: 30px; - transform: rotate(145deg); -} -.bubble-arrow.alt:after { - transform: rotate(45deg) scaleY(-1); -} - -.popover { - max-width: 400px; -} -.popover-header { - font-size: 8pt; - max-width: 400px; - padding: 5px; - background-color: #ee; -} - -.popover-body { - white-space: pre-line; - max-width: 400px; - padding: 5px; -} diff --git a/aprsd/web/chat/static/css/index.css b/aprsd/web/chat/static/css/index.css deleted file mode 100644 index e876335..0000000 --- a/aprsd/web/chat/static/css/index.css +++ /dev/null @@ -1,66 +0,0 @@ -body { - background: #eeeeee; - /*margin: 1em;*/ - text-align: center; - font-family: system-ui, sans-serif; - height: 100%; -} - -#title { - font-size: 4em; -} -#version{ - font-size: .5em; -} - -#uptime, #aprsis { - font-size: 1em; -} -#callsign { - font-size: 1.4em; - color: #00F; - padding-top: 8px; - margin:10px; -} - -#title_rx { - background-color: darkseagreen; - text-align: left; -} - -#title_tx { - background-color: lightcoral; - text-align: left; -} - -.aprsd_1 { - background-image: url(/static/images/aprs-symbols-16-0.png); - background-repeat: no-repeat; - background-position: -160px -48px; - width: 16px; - height: 16px; -} - -.wc-container { - display: flex; - flex-flow: column; - height: 100%; -} -.wc-container .wc-row { - /*border: 1px dotted #0313fc;*/ - padding: 2px; -} -.wc-container .wc-row.header { - flex: 0 1 auto; -} -.wc-container .wc-row.content { - flex: 1 1 auto; - overflow-y: auto; -} -.wc-container .wc-row.footer { - flex: 0 1 0px; -} - -.material-symbols-rounded.md-10 { - font-size: 18px !important; -} diff --git a/aprsd/web/chat/static/css/style.css.map b/aprsd/web/chat/static/css/style.css.map deleted file mode 100644 index 299ffa9..0000000 --- a/aprsd/web/chat/static/css/style.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"css/style.css","mappings":"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AC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,UAAa,CACzB,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,UAAa,CACzB,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,aAAgB,CAC5B,UAAY,UAAa,CACzB,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,wBAA2B,CACvC,UAAY,o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","sources":["webpack://thelounge/./node_modules/normalize.css/normalize.css","webpack://thelounge/./client/css/fontawesome.css","webpack://thelounge/./node_modules/primer-tooltips/build/build.css","webpack://thelounge/./client/css/style.css","webpack://thelounge/./client/components/NetworkList.vue","webpack://thelounge/./client/components/ConfirmDialog.vue","webpack://thelounge/./client/components/Mentions.vue","webpack://thelounge/./client/components/NetworkForm.vue","webpack://thelounge/./client/components/Session.vue","webpack://thelounge/./client/components/Windows/Settings.vue","webpack://thelounge/./client/components/MessageSearchForm.vue","webpack://thelounge/./client/components/Windows/SearchResults.vue"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","@font-face {\n\t/* We use free solid icons - https://fontawesome.com/icons?s=solid&m=free */\n\tfont-family: FontAwesome;\n\tfont-weight: normal;\n\tfont-style: normal;\n\tsrc:\n\t\turl(\"../fonts/fa-solid-900.woff2\") format(\"woff2\"),\n\t\turl(\"../fonts/fa-solid-900.woff\") format(\"woff\");\n}\n",".tooltipped{position:relative}.tooltipped::after{position:absolute;z-index:1000000;display:none;padding:.5em .75em;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,\"Segoe UI\",Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";-webkit-font-smoothing:subpixel-antialiased;color:#fff;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:#1b1f23;border-radius:3px;opacity:0}.tooltipped::before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:#1b1f23;pointer-events:none;content:\"\";border:6px solid transparent;opacity:0}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.tooltipped:hover::before,.tooltipped:hover::after,.tooltipped:active::before,.tooltipped:active::after,.tooltipped:focus::before,.tooltipped:focus::after{display:inline-block;text-decoration:none;animation-name:tooltip-appear;animation-duration:.1s;animation-fill-mode:forwards;animation-timing-function:ease-in;animation-delay:.4s}.tooltipped-no-delay:hover::before,.tooltipped-no-delay:hover::after,.tooltipped-no-delay:active::before,.tooltipped-no-delay:active::after,.tooltipped-no-delay:focus::before,.tooltipped-no-delay:focus::after{animation-delay:0s}.tooltipped-multiline:hover::after,.tooltipped-multiline:active::after,.tooltipped-multiline:focus::after{display:table-cell}.tooltipped-s::after,.tooltipped-se::after,.tooltipped-sw::after{top:100%;right:50%;margin-top:6px}.tooltipped-s::before,.tooltipped-se::before,.tooltipped-sw::before{top:auto;right:50%;bottom:-7px;margin-right:-6px;border-bottom-color:#1b1f23}.tooltipped-se::after{right:auto;left:50%;margin-left:-16px}.tooltipped-sw::after{margin-right:-16px}.tooltipped-n::after,.tooltipped-ne::after,.tooltipped-nw::after{right:50%;bottom:100%;margin-bottom:6px}.tooltipped-n::before,.tooltipped-ne::before,.tooltipped-nw::before{top:-7px;right:50%;bottom:auto;margin-right:-6px;border-top-color:#1b1f23}.tooltipped-ne::after{right:auto;left:50%;margin-left:-16px}.tooltipped-nw::after{margin-right:-16px}.tooltipped-s::after,.tooltipped-n::after{transform:translateX(50%)}.tooltipped-w::after{right:100%;bottom:50%;margin-right:6px;transform:translateY(50%)}.tooltipped-w::before{top:50%;bottom:50%;left:-7px;margin-top:-6px;border-left-color:#1b1f23}.tooltipped-e::after{bottom:50%;left:100%;margin-left:6px;transform:translateY(50%)}.tooltipped-e::before{top:50%;right:-7px;bottom:50%;margin-top:-6px;border-right-color:#1b1f23}.tooltipped-align-right-1::after,.tooltipped-align-right-2::after{right:0;margin-right:0}.tooltipped-align-right-1::before{right:10px}.tooltipped-align-right-2::before{right:15px}.tooltipped-align-left-1::after,.tooltipped-align-left-2::after{left:0;margin-left:0}.tooltipped-align-left-1::before{left:5px}.tooltipped-align-left-2::before{left:10px}.tooltipped-multiline::after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-wrap:break-word;white-space:pre-line;border-collapse:separate}.tooltipped-multiline.tooltipped-s::after,.tooltipped-multiline.tooltipped-n::after{right:auto;left:50%;transform:translateX(-50%)}.tooltipped-multiline.tooltipped-w::after,.tooltipped-multiline.tooltipped-e::after{right:100%}@media screen and (min-width: 0\\0){.tooltipped-multiline::after{width:250px}}.tooltipped-sticky::before,.tooltipped-sticky::after{display:inline-block}.tooltipped-sticky.tooltipped-multiline::after{display:table-cell}\n","@import \"../../node_modules/normalize.css/normalize.css\";\n@import \"fontawesome.css\";\n@import \"../../node_modules/primer-tooltips/build/build.css\";\n\n:root {\n\t/* Main text color */\n\t--body-color: #222;\n\n\t/* Secondary text color, dimmed. Make sure to keep contrast WCAG 2.0 AA compliant on var(--window-bg-color) */\n\t--body-color-muted: #767676;\n\n\t/* Background color of the whole page */\n\t--body-bg-color: #415364;\n\n\t/* Main button color. Applies to border, text, and background on hover */\n\t--button-color: #84ce88;\n\t--button-text-color-hover: #fff;\n\n\t/* Color for sidebar overlay and other things that dim the viewport when something else is on top */\n\t--overlay-bg-color: rgb(0 0 0 / 50%);\n\n\t/* Links and link-looking buttons */\n\t--link-color: #50a656;\n\n\t/* Background color of the main window */\n\t--window-bg-color: #fff;\n\n\t/* Text color for

and

headings in windows */\n\t--window-heading-color: #6c797a;\n\n\t/* Color of the date marker, text and separator */\n\t--date-marker-color: rgb(0 107 59 / 50%);\n\n\t/* Color of the unread message marker, text and separator */\n\t--unread-marker-color: rgb(231 76 60 / 50%);\n\n\t/* Background and left-border color of highlight messages */\n\t--highlight-bg-color: #efe8dc;\n\t--highlight-border-color: #b08c4f;\n\n\t/* Color of the progress bar that appears as a file is being uploaded to the server. Defaults to button color */\n\t--upload-progressbar-color: var(--button-color);\n}\n\n::placeholder {\n\tcolor: rgb(0 0 0 / 35%);\n\topacity: 1; /* fix opacity in Firefox */\n}\n\nhtml {\n\tbox-sizing: border-box;\n\t-webkit-tap-highlight-color: transparent; /* remove tap highlight on touch devices */\n}\n\n*,\n*::before,\n*::after {\n\tbox-sizing: inherit;\n}\n\ninput,\nbutton,\nselect,\ntextarea {\n\tfont: inherit;\n\tcolor: inherit;\n}\n\nimg {\n\tvertical-align: middle;\n}\n\n.sr-only {\n\tposition: absolute;\n\twidth: 1px;\n\theight: 1px;\n\tmargin: -1px;\n\tpadding: 0;\n\toverflow: hidden;\n\tclip: rect(0, 0, 0, 0);\n\tborder: 0;\n}\n\nabbr[title] {\n\tcursor: help;\n}\n\nhtml,\nbody {\n\theight: 100%;\n\toverscroll-behavior: none; /* prevent overscroll navigation actions */\n}\n\nbody {\n\tbackground: var(--body-bg-color);\n\tcolor: var(--body-color);\n\tfont: 16px -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n\tmargin: 0;\n\tuser-select: none;\n\tcursor: default;\n\ttouch-action: none;\n\n\t/**\n\t * Disable pull-to-refresh on mobile that conflicts with scrolling the message list.\n\t * See http://stackoverflow.com/a/29313685/1935861\n\t */\n\toverflow: hidden; /* iOS Safari requires overflow rather than overflow-y */\n}\n\nbody.force-no-select * {\n\tuser-select: none !important;\n}\n\na,\na:hover,\na:focus {\n\tcolor: var(--link-color);\n\ttext-decoration: none;\n}\n\na:hover {\n\ttext-decoration: underline;\n}\n\na:focus {\n\toutline: thin dotted;\n\toutline: 5px auto -webkit-focus-ring-color;\n\toutline-offset: -2px;\n}\n\nh1,\nh2,\nh3 {\n\tfont: inherit;\n\tline-height: inherit;\n\tmargin: 0;\n}\n\nbutton {\n\tborder: none;\n\tbackground: none;\n\tmargin: 0;\n\toutline: none;\n\tpadding: 0;\n\tuser-select: inherit;\n\tcursor: pointer;\n}\n\ncode,\npre,\n#chat .msg[data-type=\"monospace_block\"] .text,\n.irc-monospace,\ntextarea#user-specified-css-input {\n\tfont-family: Consolas, Menlo, Monaco, \"Lucida Console\", \"DejaVu Sans Mono\", \"Courier New\", monospace;\n}\n\ncode,\n.irc-monospace {\n\tfont-size: 13px;\n\tpadding: 2px 4px;\n\tcolor: #e74c3c;\n\tbackground-color: #f9f2f4;\n\tborder-radius: 2px;\n}\n\npre {\n\tdisplay: block;\n\tpadding: 9.5px;\n\tmargin: 0 0 10px;\n\tfont-size: 13px;\n\tline-height: 1.4286;\n\tcolor: #333;\n\tword-break: break-all;\n\tword-wrap: break-word;\n\tbackground-color: #f5f5f5;\n\tborder-radius: 4px;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tfont-family: inherit;\n\tline-height: 1em;\n\tmin-width: 28px; /* Ensure 1-char keys have the same width */\n\tmargin: 0 1px;\n\tpadding: 4px 6px;\n\tcolor: #444;\n\ttext-align: center;\n\ttext-shadow: 0 1px 0 #fff;\n\tbackground-color: white;\n\tbackground-image: linear-gradient(180deg, rgb(0 0 0 / 5%), transparent);\n\tborder: 1px solid #bbb;\n\tborder-radius: 4px;\n\tbox-shadow: 0 2px 0 #bbb, inset 0 1px 1px #fff, inset 0 -1px 3px #ccc;\n}\n\np {\n\tmargin: 0 0 10px;\n}\n\n.btn {\n\tborder: 2px solid var(--button-color);\n\tborder-radius: 3px;\n\tcolor: var(--button-color);\n\tdisplay: inline-block;\n\tfont-size: 12px;\n\tfont-weight: bold;\n\tletter-spacing: 1px;\n\tmargin-bottom: 10px;\n\tpadding: 9px 17px;\n\ttext-transform: uppercase;\n\ttransition: background 0.2s, border-color 0.2s, color 0.2s, box-shadow 0.2s;\n\tword-spacing: 3px;\n\tcursor: pointer; /* This is useful for `' - - callsignTabs.append(item_html); - create_callsign_tab_content(callsign, active); -} - -function create_callsign_tab_content(callsign, active=false) { - var callsignTabsContent = $("#msgsTabContent"); - tab_id = tab_string(callsign); - tab_content = tab_content_name(callsign); - wrapper_id = tab_content_speech_wrapper(callsign); - if (active) { - active_str = "show active"; - } else { - active_str = ''; - } - - location_str = "Unknown Location" - if (callsign in callsign_location) { - location_str = build_location_string_small(callsign_location[callsign]); - location_class = ''; - } - - location_id = callsign_location_content(callsign); - - item_html = '
'; - item_html += '
'; - item_html += '
'; - item_html += '
'; - item_html += ''; - item_html += ' '+location_str+'
'; - item_html += '
'; - item_html += '
'; - item_html += '
'; - callsignTabsContent.append(item_html); -} - -function delete_tab(callsign) { - // User asked to delete the tab and the conversation - tab_id = tab_string(callsign, true); - tab_id_li = tab_li_string(callsign, true); - tab_content = tab_content_name(callsign, true); - $(tab_id_li).remove(); - $(tab_content).remove(); - delete callsign_list[callsign]; - delete message_list[callsign]; - delete callsign_location[callsign]; - - // Now select the first tab - first_tab = $("#msgsTabList").children().first().children().first(); - console.log(first_tab); - $(first_tab).click(); - save_data(); -} - -function add_callsign(callsign, msg) { - /* Ensure a callsign exists in the left hand nav */ - if (callsign in callsign_list) { - return false - } - len = Object.keys(callsign_list).length; - if (len == 0) { - active = true; - } else { - active = false; - } - create_callsign_tab(callsign, active); - callsign_list[callsign] = ''; - return true; -} - -function update_callsign_path(callsign, msg) { - //Get the selected path to save for this callsign - path = msg['path'] - $('#pkt_path').val(path); - callsign_list[callsign] = path; - -} - -function append_message(callsign, msg, msg_html) { - new_callsign = false - if (!message_list.hasOwnProperty(callsign)) { - message_list[callsign] = {}; - } - ts_id = message_ts_id(msg); - id = ts_id['id'] - message_list[callsign][id] = msg; - if (selected_tab_callsign != callsign) { - // We need to update the notification for the tab - tab_notify_id = tab_notification_id(callsign, true); - // get the current count of notifications - count = parseInt($(tab_notify_id).text()); - if (isNaN(count)) { - count = 0; - } - count += 1; - $(tab_notify_id).text(count); - $(tab_notify_id).removeClass('visually-hidden'); - } - - // Find the right div to place the html - new_callsign = add_callsign(callsign, msg); - //update_callsign_path(callsign, msg); - append_message_html(callsign, msg_html, new_callsign); - len = Object.keys(callsign_list).length; - if (new_callsign) { - //Now click the tab if and only if there is only one tab - callsign_tab_id = callsign_tab(callsign); - $(callsign_tab_id).click(); - callsign_select(callsign); - } -} - - -function append_message_html(callsign, msg_html, new_callsign) { - var msgsTabs = $('#msgsTabsDiv'); - divname_str = tab_content_name(callsign); - divname = content_divname(callsign); - tab_content = tab_content_name(callsign); - wrapper_id = tab_content_speech_wrapper_id(callsign); - - $(wrapper_id).append(msg_html); - - if ($(wrapper_id).children().length > 0) { - $(wrapper_id).animate({scrollTop: $(wrapper_id)[0].scrollHeight}, "fast"); - } -} - -function create_message_html(date, time, from, to, message, ack_id, msg, acked=false) { - div_id = from + "_" + msg.msgNo; - if (ack_id) { - alt = " alt" - } else { - alt = "" - } - - bubble_class = "bubble" + alt + " text-nowrap" - bubble_name_class = "bubble-name" + alt - bubble_msgid = bubble_msg_id(msg); - date_str = date + " " + time; - sane_date_str = date_str.replace(/ /g,"").replaceAll("/","").replaceAll(":",""); - - bubble_msg_class = "bubble-message"; - if (ack_id) { - bubble_arrow_class = "bubble-arrow alt"; - popover_placement = "left"; - } else { - bubble_arrow_class = "bubble-arrow"; - popover_placement = "right"; - } - - msg_html = '
'; - msg_html += '
'; - msg_html += '
'; - msg_html += '

'+from+'  '; - msg_html += ''+date_str+''; - - if (ack_id) { - if (acked) { - msg_html += 'thumb_up'; - } else { - msg_html += 'thumb_down'; - } - } - msg_html += "

"; - msg_html += '

'+message+'

'; - msg_html += '
'; - msg_html += "
"; - - return msg_html -} - -function flash_message(msg) { - // Callback function to bring a hidden box back - msg_id = bubble_msg_id(msg, true); - $(msg_id).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100); -} - -function sent_msg(msg) { - info = time_ack_from_msg(msg); - t = info['time']; - d = info['date']; - ack_id = info['ack_id']; - - msg_html = create_message_html(d, t, msg['from_call'], msg['to_call'], msg['message_text'], ack_id, msg, false); - append_message(msg['to_call'], msg, msg_html); - save_data(); - scroll_main_content(msg['to_call']); - reload_popovers(); -} - -function str_to_int(my_string) { - total = 0 - for (let i = 0; i < my_string.length; i++) { - total += my_string.charCodeAt(i); - } - return total -} - -function from_msg(msg) { - if (!from_msg_list.hasOwnProperty(msg["from_call"])) { - from_msg_list[msg["from_call"]] = new Array(); - } - - // Try to account for messages that have no msgNo - console.log(msg) - if (msg["msgNo"] == null) { - console.log("Need to add msgNO!!") - // create an artificial msgNo - total = str_to_int(msg["from_call"]) - total += str_to_int(msg["addresse"]) - total += str_to_int(msg["message_text"]) - msg["msgNo"] = total - } - - if (msg["msgNo"] in from_msg_list[msg["from_call"]]) { - // We already have this message - //console.log("We already have this message msgNo=" + msg["msgNo"]); - // Do some flashy thing? - flash_message(msg); - return false - } else { - from_msg_list[msg["from_call"]][msg["msgNo"]] = msg - } - info = time_ack_from_msg(msg); - t = info['time']; - d = info['date']; - ack_id = info['ack_id']; - - from = msg['from_call'] - msg_html = create_message_html(d, t, from, false, msg['message_text'], false, msg, false); - append_message(from, msg, msg_html); - save_data(); - scroll_main_content(from); - reload_popovers(); -} - -function ack_msg(msg) { - // Acknowledge a message - // We have an existing entry - ts_id = message_ts_id(msg); - id = ts_id['id']; - //Mark the message as acked - callsign = msg['to_call']; - // Ensure the message_list has this callsign - if (!message_list.hasOwnProperty(callsign)) { - return false - } - // Ensure the message_list has this id - if (!message_list[callsign].hasOwnProperty(id)) { - return false - } - if (message_list[callsign][id]['ack'] == true) { - return false; - } - message_list[callsign][id]['ack'] = true; - ack_id = "ack_" + id - - if (msg['ack'] == true) { - var ack_div = $('#' + ack_id); - ack_div.html('thumb_up'); - } - - //$('.ui.accordion').accordion('refresh'); - save_data(); - scroll_main_content(); -} - -function activate_callsign_tab(callsign) { - tab_content = tab_string(callsign, id=true); - $(tab_content).click(); -} - -function callsign_select(callsign) { - var tocall = $("#to_call"); - tocall.val(callsign.toUpperCase()); - scroll_main_content(callsign); - selected_tab_callsign = callsign; - tab_notify_id = tab_notification_id(callsign, true); - $(tab_notify_id).addClass('visually-hidden'); - $(tab_notify_id).text(0); - // Now update the path - // $('#pkt_path').val(callsign_list[callsign]); -} - -function call_callsign_location(callsign) { - msg = {'callsign': callsign}; - socket.emit("get_callsign_location", msg); - location_id = callsign_location_content(callsign, true)+"Spinner"; - $(location_id).removeClass('d-none'); -} diff --git a/aprsd/web/chat/static/js/tabs.js b/aprsd/web/chat/static/js/tabs.js deleted file mode 100644 index 97cd2f8..0000000 --- a/aprsd/web/chat/static/js/tabs.js +++ /dev/null @@ -1,28 +0,0 @@ -function openTab(evt, tabName) { - // Declare all variables - var i, tabcontent, tablinks; - - if (typeof tabName == 'undefined') { - return - } - - // Get all elements with class="tabcontent" and hide them - tabcontent = document.getElementsByClassName("tabcontent"); - for (i = 0; i < tabcontent.length; i++) { - tabcontent[i].style.display = "none"; - } - - // Get all elements with class="tablinks" and remove the class "active" - tablinks = document.getElementsByClassName("tablinks"); - for (i = 0; i < tablinks.length; i++) { - tablinks[i].className = tablinks[i].className.replace(" active", ""); - } - - // Show the current tab, and add an "active" class to the button that opened the tab - document.getElementById(tabName).style.display = "block"; - if (typeof evt.currentTarget == 'undefined') { - return - } else { - evt.currentTarget.className += " active"; - } -} diff --git a/aprsd/web/chat/static/js/upstream/bootstrap.bundle.min.js b/aprsd/web/chat/static/js/upstream/bootstrap.bundle.min.js deleted file mode 100644 index 61d9d6b..0000000 --- a/aprsd/web/chat/static/js/upstream/bootstrap.bundle.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v5.3.2 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function M(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function j(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${j(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${j(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=M(t.dataset[n])}return e},getDataAttribute:(t,e)=>M(t.getAttribute(`data-bs-${j(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?n(i.trim()):null}return e},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",Mt="collapsing",jt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(Mt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(Mt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(jt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Me(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const je={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Me(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:Me(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==P(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],M=f?-T[$]/2:0,j=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-M-q-z-O.mainAxis:j-q-z-O.mainAxis,K=v?-E[$]/2+M+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Ws="show",Bs=".dropdown-toggle",zs=`:not(${Bs})`,Rs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}, ${Rs}`,Vs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Ks extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Ks.getOrCreateInstance(i).show())}_getChildren(){return z.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(Bs,Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(qs)?t:z.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Ks.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,Rs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Ks.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(Vs))Ks.getOrCreateInstance(t)})),m(Ks);const Qs=".bs.toast",Xs=`mouseover${Qs}`,Ys=`mouseout${Qs}`,Us=`focusin${Qs}`,Gs=`focusout${Qs}`,Js=`hide${Qs}`,Zs=`hidden${Qs}`,to=`show${Qs}`,eo=`shown${Qs}`,io="hide",no="show",so="showing",oo={animation:"boolean",autohide:"boolean",delay:"number"},ro={animation:!0,autohide:!0,delay:5e3};class ao extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ro}static get DefaultType(){return oo}static get NAME(){return"toast"}show(){N.trigger(this._element,to).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(io),d(this._element),this._element.classList.add(no,so),this._queueCallback((()=>{this._element.classList.remove(so),N.trigger(this._element,eo),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Js).defaultPrevented||(this._element.classList.add(so),this._queueCallback((()=>{this._element.classList.add(io),this._element.classList.remove(so,no),N.trigger(this._element,Zs)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(no),super.dispose()}isShown(){return this._element.classList.contains(no)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Xs,(t=>this._onInteraction(t,!0))),N.on(this._element,Ys,(t=>this._onInteraction(t,!1))),N.on(this._element,Us,(t=>this._onInteraction(t,!0))),N.on(this._element,Gs,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ao.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ao),m(ao),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Ks,Toast:ao,Tooltip:cs}})); -//# sourceMappingURL=bootstrap.bundle.min.js.map diff --git a/aprsd/web/chat/static/js/upstream/jquery-3.7.1.min.js b/aprsd/web/chat/static/js/upstream/jquery-3.7.1.min.js deleted file mode 100644 index 7f37b5d..0000000 --- a/aprsd/web/chat/static/js/upstream/jquery-3.7.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="
",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0
"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var c="ui-effects-",u="ui-effects-style",d="ui-effects-animated",p=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("

")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(c+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("

").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(c+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n) -}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("
").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("
").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t(""),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n; -this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t(""},prompt:function(e){if(1===e.length)return e[0];var n='
    ';return R.each(e,function(e,t){n+="
  • "+t+"
  • "}),n+="
"}},formatter:{date:function(e){return Intl.DateTimeFormat("en-GB").format(e)},datetime:function(e){return Intl.DateTimeFormat("en-GB",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(e)},time:function(e){return Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(e)},month:function(e){return Intl.DateTimeFormat("en-GB",{month:"2-digit",year:"numeric"}).format(e)},year:function(e){return Intl.DateTimeFormat("en-GB",{year:"numeric"}).format(e)}},rules:{empty:function(e){return!(e===j||""===e||Array.isArray(e)&&0===e.length)},checked:function(){return 0=t},exactLength:function(e,t){return e!==j&&e.length==t},maxLength:function(e,t){return e!==j&&e.length<=t},match:function(e,t,n){var i,o;return 0<(o=n.find('[data-validate="'+t+'"]')).length||0<(o=n.find("#"+t)).length||0<(o=n.find('[name="'+t+'"]')).length?i=o.val():0<(o=n.find('[name="'+t+'[]"]')).length&&(i=o),i!==j&&e.toString()==i.toString()},different:function(e,t,n){var i,o;return 0<(o=n.find('[data-validate="'+t+'"]')).length||0<(o=n.find("#"+t)).length||0<(o=n.find('[name="'+t+'"]')).length?i=o.val():0<(o=n.find('[name="'+t+'[]"]')).length&&(i=o),i!==j&&e.toString()!==i.toString()},creditCard:function(n,e){var i,o={visa:{pattern:/^4/,length:[16]},amex:{pattern:/^3[47]/,length:[15]},mastercard:{pattern:/^5[1-5]/,length:[16]},discover:{pattern:/^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/,length:[16]},unionPay:{pattern:/^(62|88)/,length:[16,17,18,19]},jcb:{pattern:/^35(2[89]|[3-8][0-9])/,length:[16]},maestro:{pattern:/^(5018|5020|5038|6304|6759|676[1-3])/,length:[12,13,14,15,16,17,18,19]},dinersClub:{pattern:/^(30[0-5]|^36)/,length:[14]},laser:{pattern:/^(6304|670[69]|6771)/,length:[16,17,18,19]},visaElectron:{pattern:/^(4026|417500|4508|4844|491(3|7))/,length:[16]}},a=!1,e="string"==typeof e&&e.split(",");if("string"==typeof n&&0!==n.length){if(n=n.replace(/[\s\-]/g,""),e&&(R.each(e,function(e,t){(i=o[t])&&(i={length:-1!==R.inArray(n.length,i.length),pattern:-1!==n.search(i.pattern)}).length&&i.pattern&&(a=!0)}),!a))return!1;if((e={number:-1!==R.inArray(n.length,o.unionPay.length),pattern:-1!==n.search(o.unionPay.pattern)}).number&&e.pattern)return!0;for(var t=n.length,r=0,s=[[0,1,2,3,4,5,6,7,8,9],[0,2,4,6,8,1,3,5,7,9]],l=0;t--;)l+=s[r][parseInt(n.charAt(t),10)],r^=1;return l%10==0&&0=t)},exactCount:function(e,t){return 0==t?""===e:1==t?""!==e&&-1===e.search(","):e.split(",").length==t},maxCount:function(e,t){return 0!=t&&(1==t?-1===e.search(","):e.split(",").length<=t)}}}}(jQuery,window,document),function(k,T,S){"use strict";k.isFunction=k.isFunction||function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},T=void 0!==T&&T.Math==Math?T:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),k.fn.accordion=function(p){var h,v=k(this),b=(new Date).getTime(),y=[],x=p,C="string"==typeof x,w=[].slice.call(arguments,1);return v.each(function(){var e,a=k.isPlainObject(p)?k.extend(!0,{},k.fn.accordion.settings,p):k.extend({},k.fn.accordion.settings),r=a.className,t=a.namespace,s=a.selector,l=a.error,n="."+t,i="module-"+t,o=v.selector||"",c=k(this),u=c.find(s.title),d=c.find(s.content),f=this,m=c.data(i),g={initialize:function(){g.debug("Initializing",c),g.bind.events(),a.observeChanges&&g.observeChanges(),g.instantiate()},instantiate:function(){m=g,c.data(i,g)},destroy:function(){g.debug("Destroying previous instance",c),c.off(n).removeData(i)},refresh:function(){u=c.find(s.title),d=c.find(s.content)},observeChanges:function(){"MutationObserver"in T&&((e=new MutationObserver(function(e){g.debug("DOM tree modified, updating selector cache"),g.refresh()})).observe(f,{childList:!0,subtree:!0}),g.debug("Setting up mutation observer",e))},bind:{events:function(){g.debug("Binding delegated events"),c.on(a.on+n,s.trigger,g.event.click)}},event:{click:function(e){0===k(e.target).closest(s.ignore).length&&g.toggle.call(this)}},toggle:function(e){var e=e!==S?"number"==typeof e?u.eq(e):k(e).closest(s.title):k(this).closest(s.title),t=e.next(d),n=t.hasClass(r.animating),t=t.hasClass(r.active),i=t&&!n,t=!t&&n;g.debug("Toggling visibility of content",e),i||t?a.collapsible?g.close.call(e):g.debug("Cannot close accordion content collapsing is disabled"):g.open.call(e)},open:function(e){var e=e!==S?"number"==typeof e?u.eq(e):k(e).closest(s.title):k(this).closest(s.title),t=e.next(d),n=t.hasClass(r.animating);t.hasClass(r.active)||n?g.debug("Accordion already open, skipping",t):(g.debug("Opening accordion content",e),a.onOpening.call(t),a.onChanging.call(t),a.exclusive&&g.closeOthers.call(e),e.addClass(r.active),t.stop(!0,!0).addClass(r.animating),a.animateChildren&&(k.fn.transition!==S&&c.transition("is supported")?t.children().transition({animation:"fade in",queue:!1,useFailSafe:!0,debug:a.debug,verbose:a.verbose,silent:a.silent,duration:a.duration,skipInlineHidden:!0,onComplete:function(){t.children().removeClass(r.transition)}}):t.children().stop(!0,!0).animate({opacity:1},a.duration,g.resetOpacity)),t.slideDown(a.duration,a.easing,function(){t.removeClass(r.animating).addClass(r.active),g.reset.display.call(this),a.onOpen.call(this),a.onChange.call(this)}))},close:function(e){var e=e!==S?"number"==typeof e?u.eq(e):k(e).closest(s.title):k(this).closest(s.title),t=e.next(d),n=t.hasClass(r.animating),i=t.hasClass(r.active);!i&&!(!i&&n)||i&&n||(g.debug("Closing accordion content",t),a.onClosing.call(t),a.onChanging.call(t),e.removeClass(r.active),t.stop(!0,!0).addClass(r.animating),a.animateChildren&&(k.fn.transition!==S&&c.transition("is supported")?t.children().transition({animation:"fade out",queue:!1,useFailSafe:!0,debug:a.debug,verbose:a.verbose,silent:a.silent,duration:a.duration,skipInlineHidden:!0}):t.children().stop(!0,!0).animate({opacity:0},a.duration,g.resetOpacity)),t.slideUp(a.duration,a.easing,function(){t.removeClass(r.animating).removeClass(r.active),g.reset.display.call(this),a.onClose.call(this),a.onChange.call(this)}))},closeOthers:function(e){var t,e=e!==S?u.eq(e):k(this).closest(s.title),n=e.parents(s.content).prev(s.title),e=e.closest(s.accordion),i=s.title+"."+r.active+":visible",o=s.content+"."+r.active+":visible",o=a.closeNested?(t=e.find(i).not(n)).next(d):(t=e.find(i).not(n),e=e.find(o).find(i).not(n),(t=t.not(e)).next(d));0").addClass(G.popup)[e](t)),ee.addClass(G.calendar),te&&ee.addClass(G.inverted),e=function(){return ne.refreshTooltips(),$.onVisible.apply(ee,arguments)},l.length||(ee.attr("tabindex","0"),e=function(){return ne.refreshTooltips(),ne.focus(),$.onVisible.apply(ee,arguments)}),t=ne.setting("on"),t=oe.extend({},$.popupOptions,{popup:ee,on:t,hoverable:"hover"===t,closable:"click"===t,onShow:function(){return ne.set.focusDate(ne.get.date()),ne.set.mode(ne.get.validatedMode($.startMode)),$.onShow.apply(ee,arguments)},onVisible:e,onHide:$.onHide,onHidden:function(){return ne.blur(),$.onHidden.apply(ee,arguments)}}),ne.popup(t)))},inline:function(){c.length&&!$.inline||($.inline=!0,ee=oe("
").addClass(G.calendar).appendTo(r),l.length||ee.attr("tabindex","0"))},input:function(){$.touchReadonly&&l.length&&d&&l.prop("readonly",!0),ne.check.disabled()},date:function(){var e;$.initialDate?e=i.date($.initialDate,$):r.data(_.date)!==ae?e=i.date(r.data(_.date),$):l.length&&(e=i.date(l.val(),$)),ne.set.date(e,$.formatInput,!1),ne.set.mode(ne.get.mode(),!1)}},trigger:{change:function(){var e,t=l[0];t&&(e=D.createEvent("HTMLEvents"),ne.verbose("Triggering native change event"),e.initEvent("change",!0,!1),t.dispatchEvent(e))}},create:{calendar:function(){var e,t,j,n=ne.get.mode(),i=new Date,V=ne.get.date(),o=ne.get.focusDate(),a=ne.helper.dateInRange(o||V||$.initialDate||i),r=(o||ne.set.focusDate(o=a,!1,!1),"year"===n),s="month"===n,l="day"===n,c="hour"===n,u="minute"===n,q="time"===$.type,z=Math.max($.multiMonth,1),N=l?ne.get.monthOffset():0,d=a.getMinutes(),f=a.getHours(),m=a.getDate(),H=a.getMonth()+N,g=a.getFullYear(),p=l?$.showWeekNumbers?8:7:c?4:Z.column,U=l||c?6:Z.row,h=l?z:1,v=(b=ee).hasClass("left")?"right center":"left center";for(b.empty(),1").addClass(G.grid).appendTo(b)),t=0;t").addClass(G.column).appendTo(j));var b,y=H+t,B=(new Date(g,y,1).getDay()-$.firstDayOfWeek%7+7)%7,x=(!$.constantHeight&&l&&(x=new Date(g,y+1,0).getDate()+B,U=Math.ceil(x/7)),r?10:s?1:0),C=l?1:0,w=c||u?1:0,k=c||u?m:1,T=new Date(g-x,y-C,k-w,f),C=new Date(g+x,y+C,k+w,f),k=r?new Date(10*Math.ceil(g/10)-9,0,0):s?new Date(g,0,0):l?new Date(g,y,0):new Date(g,y,m,-1),w=r?new Date(10*Math.ceil(g/10)+1,0,1):s?new Date(g+1,0,1):l?new Date(g,y+1,1):new Date(g,y,m+1),S=n,S=(l&&$.showWeekNumbers&&(S+=" andweek"),oe("").addClass(G.table).addClass(S).addClass(ie[p]+" column").appendTo(b)),W=(te&&S.addClass(G.inverted),p);if(!q){var Y=oe("").appendTo(S),D=oe("").appendTo(Y),A=oe("").appendTo(Y),$.showWeekNumbers&&((A=oe("").appendTo(S),O=r?10*Math.ceil(g/10)-9:l?1-B:0,K=0;K").appendTo(Q),l&&$.showWeekNumbers&&((A=oe("").appendTo(Q),(k=oe("
").attr("colspan",""+p).appendTo(D),E=r||s?new Date(g,0,1):l?new Date(g,y,1):new Date(g,y,m,f,d),F=oe("").addClass(G.link).appendTo(A),E=(F.text(ne.helper.dateFormat(J[n+"Header"],E)),s?$.disableYear?"day":"year":l?$.disableMonth?"year":"month":"day");if(F.data(_.mode,E),0===t&&((F=oe("").addClass(G.prev).appendTo(A)).data(_.focusDate,T),F.toggleClass(G.disabledCell,!ne.helper.isDateInRange(k,n)),oe("").addClass(G.prevIcon).appendTo(F)),t===h-1&&((E=oe("").addClass(G.next).appendTo(A)).data(_.focusDate,C),E.toggleClass(G.disabledCell,!ne.helper.isDateInRange(w,n)),oe("").addClass(G.nextIcon).appendTo(E)),l)for(D=oe("
").appendTo(D)).text($.text.weekNo),A.addClass(G.weekCell),W--),O=0;O").appendTo(D)).text(J.dayColumnHeader((O+$.firstDayOfWeek)%7,$))}for(var Q=oe("
").appendTo(D)).text(ne.get.weekOfYear(g,y,O+1-$.firstDayOfWeek)),A.addClass(G.weekCell)),e=0;e").addClass(G.cell).appendTo(D)).text(R),A.data(_.date,M),l&&M.getMonth()!==(y+12)%12),I=!$.selectAdjacentDays&&R||!ne.helper.isDateInRange(M,n)||$.isDisabled(M,n)||ne.helper.isDisabled(M,n)||!ne.helper.isEnabled(M,n),L=(I?(null!==(L=ne.helper.findDayAsObject(M,n,$.disabledDates))&&L[_.message]&&(A.attr("data-tooltip",L[_.message]),A.attr("data-position",L[_.position]||v),(L[_.inverted]||te&&L[_.inverted]===ae)&&A.attr("data-inverted",""),L[_.variation]&&A.attr("data-variation",L[_.variation])),"hour"===n&&null!==(L=ne.helper.findHourAsObject(M,n,$.disabledHours))&&L[_.message]&&(A.attr("data-tooltip",L[_.message]),A.attr("data-position",L[_.position]||v),(L[_.inverted]||te&&L[_.inverted]===ae)&&A.attr("data-inverted",""),L[_.variation]&&A.attr("data-variation",L[_.variation]))):null!==(P=ne.helper.findDayAsObject(M,n,$.eventDates))&&(A.addClass(P[_.class]||$.eventClass),P[_.message]&&(A.attr("data-tooltip",P[_.message]),A.attr("data-position",P[_.position]||v),(P[_.inverted]||te&&P[_.inverted]===ae)&&A.attr("data-inverted",""),P[_.variation]&&A.attr("data-variation",P[_.variation]))),ne.helper.dateEqual(M,V,n)),X=ne.helper.dateEqual(M,i,n),R=(A.toggleClass(G.adjacentCell,R&&!P),A.toggleClass(G.disabledCell,I),A.toggleClass(G.activeCell,L&&!(R&&I)),c||u||A.toggleClass(G.todayCell,!R&&X),{mode:n,adjacent:R,disabled:I,active:L,today:X});J.cell(A,M,R),ne.helper.dateEqual(M,o,n)&&ne.set.focusDate(M,!1,!1)}$.today&&(T=oe("
").attr("colspan",""+p).addClass(G.today).appendTo(T)).text(J.today($)),k.data(_.date,i)),ne.update.focus(!1,S),$.inline&&ne.refreshTooltips()}}},update:{focus:function(e,t){t=t||ee;var r=ne.get.mode(),n=ne.get.date(),s=ne.get.focusDate(),l=ne.get.startDate(),c=ne.get.endDate(),u=(e?s:null)||n||(d?null:s);t.find("td").each(function(){var e,t,n,i,o=oe(this),a=o.data(_.date);a&&(e=o.hasClass(G.disabledCell),t=o.hasClass(G.activeCell),n=o.hasClass(G.adjacentCell),i=ne.helper.dateEqual(a,s,r),a=!!u&&(!!l&&ne.helper.isDateInRange(a,r,l,u)||!!c&&ne.helper.isDateInRange(a,r,u,c)),o.toggleClass(G.focusCell,i&&(!d||m)&&(!n||$.selectAdjacentDays&&n)&&!e),ne.helper.isTodayButton(o)||o.toggleClass(G.rangeCell,a&&!t&&!e))})}},refresh:function(){ne.create.calendar()},refreshTooltips:function(){var i=oe(S).width();ee.find("td[data-position]").each(function(){var e=oe(this),t=S.getComputedStyle(e[0],"::after").width.replace(/[^0-9\.]/g,""),n=e.attr("data-position"),t=i-e.width()-(parseInt(t,10)||250)>e.offset().left?"right":"left";-1===n.indexOf(t)&&e.attr("data-position",n.replace(/(left|right)/,t))})},bind:{events:function(){ne.debug("Binding events"),ee.on("mousedown"+o,ne.event.mousedown),ee.on("touchstart"+o,ne.event.mousedown),ee.on("mouseup"+o,ne.event.mouseup),ee.on("touchend"+o,ne.event.mouseup),ee.on("mouseover"+o,ne.event.mouseover),l.length?(l.on("input"+o,ne.event.inputChange),l.on("focus"+o,ne.event.inputFocus),l.on("blur"+o,ne.event.inputBlur),l.on("keydown"+o,ne.event.keydown)):ee.on("keydown"+o,ne.event.keydown)}},unbind:{events:function(){ne.debug("Unbinding events"),ee.off(o),l.length&&l.off(o)}},event:{mouseover:function(e){var t=oe(e.target).data(_.date),e=1===e.buttons;t&&ne.set.focusDate(t,!1,!0,e)},mousedown:function(e){l.length&&e.preventDefault(),m=0<=e.type.indexOf("touch");e=oe(e.target).data(_.date);e&&ne.set.focusDate(e,!1,!0,!0)},mouseup:function(e){ne.focus(),e.preventDefault(),e.stopPropagation(),m=!1;var t,n,i,e=oe(e.target);e.hasClass("disabled")||(t=(e=(t=e.parent()).data(_.date)||t.data(_.focusDate)||t.data(_.mode)?t:e).data(_.date),n=e.data(_.focusDate),i=e.data(_.mode),t&&!1!==$.onSelect.call(u,t,ne.get.mode())?(e=e.hasClass(G.today),ne.selectDate(t,e)):n?ne.set.focusDate(n):i&&ne.set.mode(i))},keydown:function(e){var t,n,i,o,a,r,s,l=e.which;9===l&&ne.popup("hide"),ne.popup("is visible")&&(t=ne.get.mode(),37===l||38===l||39===l||40===l?(a="day"===t?7:"hour"===t?4:"minute"===t?Z.column:3,a=37===l?-1:38===l?-a:39==l?1:a,a*="minute"===t?$.minTimeGap:1,r=(n=ne.get.focusDate()||ne.get.date()||new Date).getFullYear()+("year"===t?a:0),s=n.getMonth()+("month"===t?a:0),i=n.getDate()+("day"===t?a:0),o=n.getHours()+("hour"===t?a:0),a=n.getMinutes()+("minute"===t?a:0),r=new Date(r,s,i,o,a),"time"===$.type&&(r=ne.helper.mergeDateTime(n,r)),ne.helper.isDateInRange(r,t)&&ne.set.focusDate(r)):13===l?((s=ne.get.focusDate())&&!$.isDisabled(s,t)&&!ne.helper.isDisabled(s,t)&&ne.helper.isEnabled(s,t)&&!1!==$.onSelect.call(u,s,ne.get.mode())&&ne.selectDate(s),e.preventDefault(),e.stopPropagation()):27===l&&(ne.popup("hide"),e.stopPropagation())),38!==l&&40!==l||(e.preventDefault(),ne.popup("show"))},inputChange:function(){var e=l.val(),e=i.date(e,$);ne.set.date(e,!1)},inputFocus:function(){ee.addClass(G.active)},inputBlur:function(){var e;ee.removeClass(G.active),$.formatInput&&(e=ne.get.date(),e=ne.helper.dateFormat(J[$.type],e),l.val(e)),p&&(ne.trigger.change(),p=!1)},class:{mutation:function(e){e.forEach(function(e){"class"===e.attributeName&&ne.check.disabled()})}}},observeChanges:function(){"MutationObserver"in S&&(e=new MutationObserver(ne.event.class.mutation),ne.debug("Setting up mutation observer",e),ne.observe.class())},disconnect:{classObserver:function(){l.length&&e&&e.disconnect()}},observe:{class:function(){l.length&&e&&e.observe(r[0],{attributes:!0})}},is:{disabled:function(){return r.hasClass(G.disabled)}},check:{disabled:function(){l.attr("tabindex",ne.is.disabled()?-1:0)}},get:{weekOfYear:function(e,t,n){return e=Date.UTC(e,t,n+3)/864e5,e=Math.floor(e/7),t=new Date(6048e5*e).getUTCFullYear(),e-Math.floor(Date.UTC(t,0,7)/6048e5)+1},formattedDate:function(e,t){return ne.helper.dateFormat(e||J[$.type],t||ne.get.date())},date:function(){return ne.helper.sanitiseDate(r.data(_.date))||null},inputDate:function(){return l.val()},focusDate:function(){return r.data(_.focusDate)||null},startDate:function(){var e=ne.get.calendarModule($.startCalendar);return(e?e.get.date():r.data(_.startDate))||null},endDate:function(){var e=ne.get.calendarModule($.endCalendar);return(e?e.get.date():r.data(_.endDate))||null},minDate:function(){return r.data(_.minDate)||null},maxDate:function(){return r.data(_.maxDate)||null},monthOffset:function(){return r.data(_.monthOffset)||$.monthOffset||0},mode:function(){var e=r.data(_.mode)||$.startMode;return ne.get.validatedMode(e)},validatedMode:function(e){var t=ne.get.validModes();return 0<=oe.inArray(e,t)?e:"time"===$.type?"hour":"month"===$.type?"month":"year"===$.type?"year":"day"},type:function(){return r.data(_.type)||$.type},validModes:function(){var e=[];return"time"!==$.type&&($.disableYear&&"year"!==$.type||e.push("year"),($.disableMonth||"year"===$.type)&&"month"!==$.type||e.push("month"),0<=$.type.indexOf("date")&&e.push("day")),0<=$.type.indexOf("time")&&(e.push("hour"),$.disableMinute||e.push("minute")),e},isTouch:function(){try{return D.createEvent("TouchEvent"),!0}catch(e){return!1}},calendarModule:function(e){return e?(e=e instanceof oe?e:oe(D).find(e).first()).data(a):null}},set:{date:function(e,t,n){t=!1!==t,n=!1!==n,e=ne.helper.sanitiseDate(e),e=ne.helper.dateInRange(e);var i=ne.get.mode(),o=ne.helper.dateFormat(J[$.type],e);if(n&&!1===$.onBeforeChange.call(u,e,o,i))return!1;if(ne.set.focusDate(e),$.isDisabled(e,i))return!1;var a=ne.get.endDate();a&&e&&a=e?ne.verbose("Unable to set maxDate variable lower that minDate variable",e,$.minDate):(ne.setting("maxDate",e),ne.set.dataKeyValue(_.maxDate,e))},monthOffset:function(e,t){var n=Math.max($.multiMonth,1);e=Math.max(1-n,Math.min(0,e)),ne.set.dataKeyValue(_.monthOffset,e,t)},mode:function(e,t){ne.set.dataKeyValue(_.mode,e,t)},dataKeyValue:function(e,t,n){var i=r.data(e),i=i===t||i<=t&&t<=i;return t?r.data(e,t):r.removeData(e),(n=!1!==n&&!i)&&ne.refresh(),!i}},selectDate:function(e,t){ne.verbose("New date selection",e);var n=ne.get.mode();t||"minute"===n||$.disableMinute&&"hour"===n||"date"===$.type&&"day"===n||"month"===$.type&&"month"===n||"year"===$.type&&"year"===n?!1!==ne.set.date(e)&&(p=!0,$.closable&&(ne.popup("hide"),(t=ne.get.calendarModule($.endCalendar))&&(t.refresh(),"focus"!==t.setting("on")&&t.popup("show"),t.focus()))):(t="year"===n?$.disableMonth?"day":"month":"month"===n?"day":"day"===n?"hour":"minute",ne.set.mode(t),"hour"===n||"day"===n&&ne.get.date()?ne.set.date(e,!0,!1):ne.set.focusDate(e))},changeDate:function(e){ne.set.date(e)},clear:function(){ne.set.date(ae)},popup:function(){return c.popup.apply(c,arguments)},focus:function(){(l.length?l:ee).focus()},blur:function(){(l.length?l:ee).blur()},helper:{dateFormat:function(e,t){if(!(t instanceof Date))return"";if("function"==typeof e)return e.call(ne,t,$);var n=t.getDate(),i=t.getMonth(),o=t.getFullYear(),a=t.getDay(),r=t.getHours(),s=t.getMinutes(),t=t.getSeconds(),l=ne.get.weekOfYear(o,i,n+1-$.firstDayOfWeek),c=r%12||12,u=(r<12?$.text.am:$.text.pm).toLowerCase(),d={D:n,DD:("0"+n).slice(-2),M:i+1,MM:("0"+(i+1)).slice(-2),MMM:$.text.monthsShort[i],MMMM:$.text.months[i],Y:o,YY:String(o).slice(2),YYYY:o,d:a,dd:$.text.dayNamesShort[a].slice(0,2),ddd:$.text.dayNamesShort[a],dddd:$.text.dayNames[a],h:c,hh:("0"+c).slice(-2),H:r,HH:("0"+r).slice(-2),m:s,mm:("0"+s).slice(-2),s:t,ss:("0"+t).slice(-2),a:u,A:u.toUpperCase(),S:["th","st","nd","rd"][3=t.centuryBreak&&n===v.length-1){i<=99&&(i+=t.currentCentury-100),m=i,v.splice(n,1);break}if(f<0)for(n=0;n adjusting invoked element"),p=p.closest(g.checkbox),y.refresh())}},setup:function(){y.set.initialLoad(),y.is.indeterminate()?(y.debug("Initial value is indeterminate"),y.indeterminate()):y.is.checked()?(y.debug("Initial value is checked"),y.check()):(y.debug("Initial value is unchecked"),y.uncheck()),y.remove.initialLoad()},refresh:function(){a=p.children(g.label),h=p.children(g.input),v=h[0]},hide:{input:function(){y.verbose("Modifying z-index to be unselectable"),h.addClass(t.hidden)}},show:{input:function(){y.verbose("Modifying z-index to be selectable"),h.removeClass(t.hidden)}},observeChanges:function(){"MutationObserver"in D&&((e=new MutationObserver(function(e){y.debug("DOM tree modified, updating selector cache"),y.refresh()})).observe(c,{childList:!0,subtree:!0}),y.debug("Setting up mutation observer",e))},attachEvents:function(e,t){var n=S(e);t=S.isFunction(y[t])?y[t]:y.toggle,0").insertAfter(h),y.debug("Creating label",a))}},has:{label:function(){return 0 .ui.dimmer",content:".ui.dimmer > .content, .ui.dimmer > .content > .center"},template:{dimmer:function(e){var t,n=k("
").addClass("ui dimmer");return e.displayLoader&&(t=k("
").addClass(e.className.loader).addClass(e.loaderVariation),e.loaderText&&(t.text(e.loaderText),t.addClass("text")),n.append(t)),n}}}}(jQuery,window,document),function(Z,ee,te,ne){"use strict";Z.isFunction=Z.isFunction||function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},ee=void 0!==ee&&ee.Math==Math?ee:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),Z.fn.dropdown=function(B){var W,Y=Z(this),Q=Z(te),K=Y.selector||"",X=(new Date).getTime(),$=[],G=B,J="string"==typeof G,_=[].slice.call(arguments,1);return Y.each(function(j){var f,e,t,n,i,o,a,r,s,m=Z.isPlainObject(B)?Z.extend(!0,{},Z.fn.dropdown.settings,B):Z.extend({},Z.fn.dropdown.settings),g=m.className,p=m.message,l=m.fields,h=m.keys,v=m.metadata,V=m.namespace,c=m.regExp,b=m.selector,u=m.error,q=m.templates,d="."+V,y="module-"+V,x=Z(this),C=[ee,te].indexOf(m.context)<0?Q.find(m.context):Z(m.context),w=x.find(b.text),k=x.find(b.search),T=x.find(b.sizer),S=x.find(b.input),z=x.find(b.icon),N=x.find(b.clearIcon),D=0").html(i).attr("data-"+v.value,t).attr("data-"+v.text,t).addClass(g.addition).addClass(g.item),m.hideAdditions&&i.addClass(g.hidden),n=n===ne?i:n.add(i),L.verbose("Creating user choices for value",t,i))}),n)},userLabels:function(e){var t=L.get.userValues();t&&(L.debug("Adding user labels",t),Z.each(t,function(e,t){L.verbose("Adding custom user value"),L.add.label(t,t)}))},menu:function(){A=Z("
").addClass(g.menu).appendTo(x)},sizer:function(){T=Z("").addClass(g.sizer).insertAfter(k)}},search:function(e){e=e!==ne?e:L.get.query(),L.verbose("Searching for query",e),!1===m.fireOnInit&&L.is.initialLoad()?L.verbose("Skipping callback on initial load",m.onSearch):L.has.minCharacters(e)&&!1!==m.onSearch.call(M,e)?L.filter(e):L.hide(null,!0)},select:{firstUnfiltered:function(){L.verbose("Selecting first non-filtered element"),L.remove.selectedItem(),E.not(b.unselectable).not(b.addition+b.hidden).eq(0).addClass(g.selected)},nextAvailable:function(e){var t=(e=e.eq(0)).nextAll(b.item).not(b.unselectable).eq(0),e=e.prevAll(b.item).not(b.unselectable).eq(0);0").addClass("remove icon").insertBefore(w)),L.is.search()&&!L.has.search()&&(L.verbose("Adding search input"),e=x.prev("label"),k=Z("").addClass(g.search).prop("autocomplete",L.is.chrome()?"fomantic-search":"off"),e.length&&(e.attr("id")||e.attr("id","_"+L.get.id()+"_formLabel"),k.attr("aria-labelledby",e.attr("id"))),k.insertBefore(w)),L.is.multiple()&&L.is.searchSelection()&&!L.has.sizer()&&L.create.sizer(),m.allowTab&&L.set.tabbable()},select:function(){var e=L.get.selectValues();L.debug("Dropdown initialized on a select",e),0<(S=x.is("select")?x:S).parent(b.dropdown).length?(L.debug("UI dropdown already exists. Creating dropdown menu only"),x=S.closest(b.dropdown),L.has.menu()||L.create.menu(),A=x.children(b.menu),L.setup.menu(e)):(L.debug("Creating entire dropdown from select"),x=Z("
").attr("class",S.attr("class")).addClass(g.selection).addClass(g.dropdown).html(q.dropdown(e,l,m.preserveHTML,m.className)).insertBefore(S),S.hasClass(g.multiple)&&!1===S.prop("multiple")&&(L.error(u.missingMultiple),S.prop("multiple",!0)),S.is("[multiple]")&&L.set.multiple(),S.prop("disabled")&&(L.debug("Disabling dropdown"),x.addClass(g.disabled)),S.is("[required]")&&(m.forceSelection=!0),S.removeAttr("required").removeAttr("class").detach().prependTo(x)),L.refresh()},menu:function(e){A.html(q.menu(e,l,m.preserveHTML,m.className)),E=A.find(b.item),F=m.hideDividers?E.parent().children(b.divider):Z()},reference:function(){L.debug("Dropdown behavior was called on select, replacing with closest dropdown"),x=x.parent(b.dropdown),I=x.data(y),M=x[0],L.refresh(),L.setup.returnedObject()},returnedObject:function(){var e=Y.slice(0,j),t=Y.slice(j+1);Y=e.add(x).add(t)}},refresh:function(){L.refreshSelectors(),L.refreshData()},refreshItems:function(){E=A.find(b.item),F=m.hideDividers?E.parent().children(b.divider):Z()},refreshSelectors:function(){L.verbose("Refreshing selector cache"),w=x.find(b.text),k=x.find(b.search),S=x.find(b.input),z=x.find(b.icon),D=0"),Z.each(e,function(e,t){var n=m.templates.deQuote(t[l.value]),i=m.templates.escape(t[l.name]||"",m.preserveHTML);S.append('")}),L.observe.select())}},event:{paste:function(e){(e.originalEvent.clipboardData||ee.clipboardData).getData("text").split(m.delimiter).forEach(function(e){L.set.selected(L.escape.htmlEntities(e.trim()),null,!0,!0)}),e.preventDefault()},change:function(){U||(L.debug("Input changed, updating selection"),L.set.selected())},focus:function(){m.showOnFocus&&!O&&L.is.hidden()&&!t&&(R=!0,L.show())},blur:function(e){t=te.activeElement===this,O||t||(L.remove.activeLabel(),L.hide())},mousedown:function(){L.is.searchSelection(!0)?n=!0:O=!0},mouseup:function(){L.is.searchSelection(!0)?n=!1:O=!1},click:function(e){Z(e.target).is(x)&&(L.is.focusedOnSearch()?L.show():L.focusSearch())},search:{focus:function(e){O=!0,L.is.multiple()&&L.remove.activeLabel(),R||L.is.active()||!(m.showOnFocus||"focus"!==e.type&&"focusin"!==e.type)||"touchstart"===e.type||(R=!0,L.search())},blur:function(e){t=te.activeElement===this,!L.is.searchSelection(!0)||n||H||t||(m.forceSelection?L.forceSelection():m.allowAdditions||L.remove.searchTerm(),L.hide()),n=!1}},clearIcon:{click:function(e){L.clear(),L.is.searchSelection()&&L.remove.searchTerm(),L.hide(),e.stopPropagation()}},icon:{click:function(e){P=!0,L.has.search()?L.is.active()?L.blurSearch():m.showOnFocus?L.focusSearch():L.toggle():L.toggle(),e.stopPropagation()}},text:{focus:function(e){O=!0,L.focusSearch()}},input:function(e){(L.is.multiple()||L.is.searchSelection())&&L.set.filtered(),clearTimeout(L.timer),L.timer=setTimeout(L.search,m.delay.search)},label:{click:function(e){var t=Z(this),n=x.find(b.label),i=n.filter("."+g.active),o=t.nextAll("."+g.active),a=t.prevAll("."+g.active),o=(0 modified, recreating menu"),L.disconnect.selectObserver(),L.refresh(),L.setup.select(),L.set.selected(),L.observe.select())}},menu:{mutation:function(e){var e=e[0],t=e.addedNodes?Z(e.addedNodes[0]):Z(!1),e=e.removedNodes?Z(e.removedNodes[0]):Z(!1),t=t.add(e),e=t.is(b.addition)||0=m.maxSelections?(L.debug("Maximum selection count reached"),m.useLabels&&(E.addClass(g.filtered),L.add.message(p.maxSelections)),!0):(L.verbose("No longer at maximum selection count"),L.remove.message(),L.remove.filteredItem(),L.is.searchSelection()&&L.filterItems(),!1))},disabled:function(){k.attr("tabindex",L.is.disabled()?-1:0)}},restore:{defaults:function(e){L.clear(e),L.restore.defaultText(),L.restore.defaultValue()},defaultText:function(){var e=L.get.defaultText();e===L.get.placeholderText?(L.debug("Restoring default placeholder text",e),L.set.placeholderText(e)):(L.debug("Restoring default text",e),L.set.text(e))},placeholderText:function(){L.set.placeholderText()},defaultValue:function(){var e=L.get.defaultValue();e!==ne&&(L.debug("Restoring default value",e),""!==e?(L.set.value(e),L.set.selected()):(L.remove.activeItem(),L.remove.selectedItem()))},labels:function(){m.allowAdditions&&(m.useLabels||(L.error(u.labels),m.useLabels=!0),L.debug("Restoring selected values"),L.create.userLabels()),L.check.maxSelections()},selected:function(){L.restore.values(),L.is.multiple()?(L.debug("Restoring previously selected values and labels"),L.restore.labels()):L.debug("Restoring previously selected values")},values:function(){L.set.initialLoad(),m.apiSettings&&m.saveRemoteData&&L.get.remoteValues()?L.restore.remoteValues():L.set.selected();var e=L.get.value();!e||""===e||Array.isArray(e)&&0===e.length?S.addClass(g.noselection):S.removeClass(g.noselection),L.remove.initialLoad()},remoteValues:function(){var e=L.get.remoteValues();L.debug("Recreating selected from session data",e),e&&(L.is.single()?Z.each(e,function(e,t){L.set.text(t)}):Z.each(e,function(e,t){L.add.label(e,t)}))}},read:{remoteData:function(e){if(ee.Storage!==ne)return(e=sessionStorage.getItem(e+i))!==ne&&e;L.error(u.noStorage)}},save:{defaults:function(){L.save.defaultText(),L.save.placeholderText(),L.save.defaultValue()},defaultValue:function(){var e=L.get.value();L.verbose("Saving default value as",e),x.data(v.defaultValue,e)},defaultText:function(){var e=L.get.text();L.verbose("Saving default text as",e),x.data(v.defaultText,e)},placeholderText:function(){var e;!1!==m.placeholder&&w.hasClass(g.placeholder)&&(e=L.get.text(),L.verbose("Saving placeholder text as",e),x.data(v.placeholderText,e))},remoteData:function(e,t){ee.Storage===ne?L.error(u.noStorage):(L.verbose("Saving remote data to session storage",t,e),sessionStorage.setItem(t+i,e))}},clear:function(e){L.is.multiple()&&m.useLabels?L.remove.labels(x.find(b.label),e):(L.remove.activeItem(),L.remove.selectedItem(),L.remove.filteredItem()),L.set.placeholderText(),L.clearValue(e)},clearValue:function(e){L.set.value("",null,null,e)},scrollPage:function(e,t){var t=t||L.get.selectedItem(),n=t.closest(b.menu),i=n.outerHeight(),o=n.scrollTop(),a=E.eq(0).outerHeight(),i=Math.floor(i/a),o="up"==e?o-a*i:o+a*i,a=E.not(b.unselectable),i="up"==e?a.index(t)-i:a.index(t)+i,i=("up"==e?0<=i:i").addClass(g.label).attr("data-"+v.value,a).html(q.label(a,t,m.preserveHTML,m.className)),i=m.onLabelCreate.call(i,a,t),L.has.label(e)?L.debug("User selection already exists, skipping",a):(m.label.variation&&i.addClass(m.label.variation),!0===n?(L.debug("Animating in label",i),i.addClass(g.hidden).insertBefore(o).transition({animation:m.label.transition,debug:m.debug,verbose:m.verbose,silent:m.silent,duration:m.label.duration})):(L.debug("Adding selection label",i),i.insertBefore(o)))},message:function(e){var t=A.children(b.message),e=m.templates.message(L.add.variables(e));0").html(e).addClass(g.message).appendTo(A)},optionValue:function(e){var t=L.escape.value(e);0").prop("value",t).addClass(g.addition).text(e).appendTo(S),L.verbose("Adding user addition as an
-
- -
-
-
-
-
-
-
-
- -
- - diff --git a/requirements-dev.txt b/requirements-dev.txt index 93c3948..b8d95c3 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.10 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # pip-compile --annotation-style=line requirements-dev.in @@ -20,10 +20,9 @@ click==8.1.7 # via black, fixit, moreorless, pip-tools colorama==0.4.6 # via tox commonmark==0.9.1 # via rich configargparse==1.7 # via gray -coverage[toml]==7.6.8 # via pytest-cov +coverage[toml]==7.6.9 # via pytest-cov distlib==0.3.9 # via virtualenv docutils==0.21.2 # via m2r, sphinx -exceptiongroup==1.2.2 # via pytest filelock==3.16.1 # via tox, virtualenv fixit==2.1.0 # via gray flake8==7.1.1 # via -r requirements-dev.in, pep8-naming @@ -71,10 +70,9 @@ sphinxcontrib-qthelp==2.0.0 # via sphinx sphinxcontrib-serializinghtml==2.0.0 # via sphinx tokenize-rt==6.1.0 # via add-trailing-comma, pyupgrade toml==0.10.2 # via autoflake -tomli==2.2.1 # via black, build, check-manifest, coverage, fixit, mypy, pip-tools, pyproject-api, pytest, sphinx, tox tox==4.23.2 # via -r requirements-dev.in trailrunner==1.4.0 # via fixit -typing-extensions==4.12.2 # via black, mypy, tox +typing-extensions==4.12.2 # via mypy unify==0.5 # via gray untokenize==0.1.1 # via unify urllib3==2.2.3 # via requests diff --git a/requirements.in b/requirements.in index 4686c2a..520ccc9 100644 --- a/requirements.in +++ b/requirements.in @@ -2,25 +2,17 @@ aprslib>=0.7.0 # For the list-plugins pypi.org search scraping beautifulsoup4 click -click-params dataclasses-json -flask -flask-httpauth -flask-socketio geopy imapclient kiss3 loguru oslo.config pluggy -python-socketio requests # Pinned due to gray needing 12.6.0 rich~=12.6.0 rush -shellingham -six -tabulate thesmuggler tzlocal update_checker diff --git a/requirements.txt b/requirements.txt index f0194fc..87051ce 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.10 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # pip-compile --annotation-style=line requirements.in @@ -8,31 +8,20 @@ aprslib==0.7.2 # via -r requirements.in attrs==24.2.0 # via ax253, kiss3, rush ax253==0.1.5.post1 # via kiss3 beautifulsoup4==4.12.3 # via -r requirements.in -bidict==0.23.1 # via python-socketio bitarray==3.0.0 # via ax253, kiss3 -blinker==1.9.0 # via flask certifi==2024.8.30 # via requests charset-normalizer==3.4.0 # via requests -click==8.1.7 # via -r requirements.in, click-params, flask -click-params==0.5.0 # via -r requirements.in +click==8.1.7 # via -r requirements.in commonmark==0.9.1 # via rich dataclasses-json==0.6.7 # via -r requirements.in debtcollector==3.0.0 # via oslo-config -deprecated==1.2.15 # via click-params -flask==3.1.0 # via -r requirements.in, flask-httpauth, flask-socketio -flask-httpauth==4.8.0 # via -r requirements.in -flask-socketio==5.4.1 # via -r requirements.in geographiclib==2.0 # via geopy geopy==2.4.1 # via -r requirements.in -h11==0.14.0 # via wsproto idna==3.10 # via requests imapclient==3.0.1 # via -r requirements.in importlib-metadata==8.5.0 # via ax253, kiss3 -itsdangerous==2.2.0 # via flask -jinja2==3.1.4 # via flask kiss3==8.0.0 # via -r requirements.in -loguru==0.7.2 # via -r requirements.in -markupsafe==3.0.2 # via jinja2, werkzeug +loguru==0.7.3 # via -r requirements.in marshmallow==3.23.1 # via dataclasses-json mypy-extensions==1.0.0 # via typing-inspect netaddr==1.3.0 # via oslo-config @@ -44,20 +33,14 @@ pluggy==1.5.0 # via -r requirements.in pygments==2.18.0 # via rich pyserial==3.5 # via pyserial-asyncio pyserial-asyncio==0.6 # via kiss3 -python-engineio==4.10.1 # via python-socketio -python-socketio==5.11.4 # via -r requirements.in, flask-socketio pytz==2024.2 # via -r requirements.in pyyaml==6.0.2 # via oslo-config requests==2.32.3 # via -r requirements.in, oslo-config, update-checker rfc3986==2.0.0 # via oslo-config rich==12.6.0 # via -r requirements.in rush==2021.4.0 # via -r requirements.in -shellingham==1.5.4 # via -r requirements.in -simple-websocket==1.1.0 # via python-engineio -six==1.16.0 # via -r requirements.in soupsieve==2.6 # via beautifulsoup4 stevedore==5.4.0 # via oslo-config -tabulate==0.9.0 # via -r requirements.in thesmuggler==1.0.1 # via -r requirements.in timeago==1.0.16 # via -r requirements.in typing-extensions==4.12.2 # via typing-inspect @@ -65,8 +48,5 @@ typing-inspect==0.9.0 # via dataclasses-json tzlocal==5.2 # via -r requirements.in update-checker==0.18.0 # via -r requirements.in urllib3==2.2.3 # via requests -validators==0.22.0 # via click-params -werkzeug==3.1.3 # via flask -wrapt==1.17.0 # via -r requirements.in, debtcollector, deprecated -wsproto==1.2.0 # via simple-websocket +wrapt==1.17.0 # via -r requirements.in, debtcollector zipp==3.21.0 # via importlib-metadata diff --git a/tests/cmds/test_send_message.py b/tests/cmds/test_send_message.py index 701a83d..b91f36b 100644 --- a/tests/cmds/test_send_message.py +++ b/tests/cmds/test_send_message.py @@ -27,8 +27,8 @@ class TestSendMessageCommand(unittest.TestCase): if password: CONF.aprs_network.password = password - CONF.admin.user = "admin" - CONF.admin.password = "password" + # CONF.aprsd_admin_extension.user = "admin" + # CONF.aprsd_admin_extension.password = "password" @mock.patch("aprsd.log.log.setup_logging") def test_no_tocallsign(self, mock_logging): diff --git a/tests/cmds/test_webchat.py b/tests/cmds/test_webchat.py deleted file mode 100644 index d9db09b..0000000 --- a/tests/cmds/test_webchat.py +++ /dev/null @@ -1,90 +0,0 @@ -import typing as t -import unittest -from unittest import mock - -from click.testing import CliRunner -import flask -import flask_socketio -from oslo_config import cfg - -from aprsd import conf # noqa: F401 -from aprsd.client import fake as fake_client -from aprsd.cmds import webchat # noqa -from aprsd.packets import core - -from .. import fake - - -CONF = cfg.CONF -F = t.TypeVar("F", bound=t.Callable[..., t.Any]) - - -class TestSendMessageCommand(unittest.TestCase): - - def config_and_init(self, login=None, password=None): - CONF.callsign = fake.FAKE_TO_CALLSIGN - CONF.trace_enabled = False - CONF.watch_list.packet_keep_count = 1 - if login: - CONF.aprs_network.login = login - if password: - CONF.aprs_network.password = password - - CONF.admin.user = "admin" - CONF.admin.password = "password" - - @mock.patch("aprsd.log.log.setup_logging") - def test_init_flask(self, mock_logging): - """Make sure we get an error if there is no login and config.""" - - CliRunner() - self.config_and_init() - - socketio = webchat.init_flask("DEBUG", False) - self.assertIsInstance(socketio, flask_socketio.SocketIO) - self.assertIsInstance(webchat.flask_app, flask.Flask) - - @mock.patch("aprsd.packets.tracker.PacketTrack.remove") - @mock.patch("aprsd.cmds.webchat.socketio") - def test_process_ack_packet( - self, - mock_remove, mock_socketio, - ): - self.config_and_init() - mock_socketio.emit = mock.MagicMock() - # Create an ACK packet - packet = fake.fake_ack_packet() - mock_queue = mock.MagicMock() - socketio = mock.MagicMock() - wcp = webchat.WebChatProcessPacketThread(mock_queue, socketio) - - wcp.process_ack_packet(packet) - mock_remove.called_once() - mock_socketio.called_once() - - @mock.patch("aprsd.threads.tx.send") - @mock.patch("aprsd.packets.PacketList.rx") - @mock.patch("aprsd.cmds.webchat.socketio") - @mock.patch("aprsd.client.factory.ClientFactory.create") - def test_process_our_message_packet( - self, - mock_tx_send, - mock_packet_add, - mock_socketio, - mock_factory, - ): - self.config_and_init() - mock_socketio.emit = mock.MagicMock() - packet = fake.fake_packet( - message="blah", - msg_number=1, - message_format=core.PACKET_TYPE_MESSAGE, - ) - mock_factory.return_value = fake_client.APRSDFakeClient() - mock_queue = mock.MagicMock() - socketio = mock.MagicMock() - wcp = webchat.WebChatProcessPacketThread(mock_queue, socketio) - - wcp.process_our_message_packet(packet) - mock_packet_add.called_once() - mock_socketio.called_once()