diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 5140a0743b..e5cbc2ece9 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -34,10 +34,9 @@ body: label: Python Version description: What version of Python are you currently running? options: - - "3.8" - - "3.9" - "3.10" - "3.11" + - "3.12" validations: required: true - type: textarea diff --git a/contrib/uwsgi.ini b/contrib/uwsgi.ini index d648031585..a8bedc1d75 100644 --- a/contrib/uwsgi.ini +++ b/contrib/uwsgi.ini @@ -11,8 +11,24 @@ master = true ; clear environment on exit vacuum = true +; make SIGTERM stop the app (instead of reload) +die-on-term = true + ; exit if no app can be loaded need-app = true ; do not use multiple interpreters single-interpreter = true + +; change to the project directory +chdir = netbox + +; specify the WSGI module to load +module = netbox.wsgi + +; workaround to make uWSGI reloads work with pyuwsgi (not to be used if using uwsgi package instead) +binary-path = venv/bin/python + +; only log internal messages and errors (reverse proxy already logs the requests) +disable-logging = true +log-5xx = true diff --git a/docs/development/adding-models.md b/docs/development/adding-models.md index 7de897a973..823789641a 100644 --- a/docs/development/adding-models.md +++ b/docs/development/adding-models.md @@ -77,7 +77,7 @@ Create the following for each model: ## 13. GraphQL API components -Create a Graphene object type for the model in `graphql/types.py` by subclassing the appropriate class from `netbox.graphql.types`. +Create a GraphQL object type for the model in `graphql/types.py` by subclassing the appropriate class from `netbox.graphql.types`. Also extend the schema class defined in `graphql/schema.py` with the individual object and object list fields per the established convention. diff --git a/docs/installation/4b-uwsgi.md b/docs/installation/4b-uwsgi.md index 3b7b5f76cd..c8d1437a0a 100644 --- a/docs/installation/4b-uwsgi.md +++ b/docs/installation/4b-uwsgi.md @@ -17,7 +17,7 @@ pip3 install pyuwsgi Once installed, add the package to `local_requirements.txt` to ensure it is re-installed during future rebuilds of the virtual environment: ```no-highlight -sudo sh -c "echo 'pyuwgsi' >> /opt/netbox/local_requirements.txt" +sudo sh -c "echo 'pyuwsgi' >> /opt/netbox/local_requirements.txt" ``` ## Configuration diff --git a/docs/integrations/graphql-api.md b/docs/integrations/graphql-api.md index 724e4e73d9..3ccb4d4a19 100644 --- a/docs/integrations/graphql-api.md +++ b/docs/integrations/graphql-api.md @@ -1,6 +1,6 @@ # GraphQL API Overview -NetBox provides a read-only [GraphQL](https://graphql.org/) API to complement its REST API. This API is powered by the [Graphene](https://graphene-python.org/) library and [Graphene-Django](https://docs.graphene-python.org/projects/django/en/latest/). +NetBox provides a read-only [GraphQL](https://graphql.org/) API to complement its REST API. This API is powered by [Strawberry Django](https://strawberry-graphql.github.io/strawberry-django/). ## Queries @@ -47,7 +47,7 @@ NetBox provides both a singular and plural query field for each object type: For example, query `device(id:123)` to fetch a specific device (identified by its unique ID), and query `device_list` (with an optional set of filters) to fetch all devices. -For more detail on constructing GraphQL queries, see the [Graphene documentation](https://docs.graphene-python.org/en/latest/) as well as the [GraphQL queries documentation](https://graphql.org/learn/queries/). +For more detail on constructing GraphQL queries, see the [GraphQL queries documentation](https://graphql.org/learn/queries/). For filtering and lookup syntax, please refer to the [Strawberry Django documentation](https://strawberry-graphql.github.io/strawberry-django/guide/filters/). ## Filtering diff --git a/docs/plugins/development/graphql-api.md b/docs/plugins/development/graphql-api.md index 05f11704c3..603b0ceadf 100644 --- a/docs/plugins/development/graphql-api.md +++ b/docs/plugins/development/graphql-api.md @@ -2,7 +2,7 @@ ## Defining the Schema Class -A plugin can extend NetBox's GraphQL API by registering its own schema class. By default, NetBox will attempt to import `graphql.schema` from the plugin, if it exists. This path can be overridden by defining `graphql_schema` on the PluginConfig instance as the dotted path to the desired Python class. This class must be a subclass of `graphene.ObjectType`. +A plugin can extend NetBox's GraphQL API by registering its own schema class. By default, NetBox will attempt to import `graphql.schema` from the plugin, if it exists. This path can be overridden by defining `graphql_schema` on the PluginConfig instance as the dotted path to the desired Python class. ### Example diff --git a/netbox/circuits/api/serializers_/circuits.py b/netbox/circuits/api/serializers_/circuits.py index b59c73f09c..a0d0e5e134 100644 --- a/netbox/circuits/api/serializers_/circuits.py +++ b/netbox/circuits/api/serializers_/circuits.py @@ -48,7 +48,7 @@ class Meta: class CircuitSerializer(NetBoxModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuit-detail') provider = ProviderSerializer(nested=True) - provider_account = ProviderAccountSerializer(nested=True, required=False, allow_null=True) + provider_account = ProviderAccountSerializer(nested=True, required=False, allow_null=True, default=None) status = ChoiceField(choices=CircuitStatusChoices, required=False) type = CircuitTypeSerializer(nested=True) tenant = TenantSerializer(nested=True, required=False, allow_null=True) diff --git a/netbox/circuits/api/serializers_/providers.py b/netbox/circuits/api/serializers_/providers.py index 302c2da5a8..fa44897877 100644 --- a/netbox/circuits/api/serializers_/providers.py +++ b/netbox/circuits/api/serializers_/providers.py @@ -45,6 +45,7 @@ class Meta: class ProviderAccountSerializer(NetBoxModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='circuits-api:provideraccount-detail') provider = ProviderSerializer(nested=True) + name = serializers.CharField(allow_blank=True, max_length=100, required=False, default='') class Meta: model = ProviderAccount diff --git a/netbox/circuits/tests/test_api.py b/netbox/circuits/tests/test_api.py index c8ec08943f..d3745f2b15 100644 --- a/netbox/circuits/tests/test_api.py +++ b/netbox/circuits/tests/test_api.py @@ -141,7 +141,7 @@ def setUpTestData(cls): { 'cid': 'Circuit 6', 'provider': providers[1].pk, - 'provider_account': provider_accounts[1].pk, + # Omit provider account to test uniqueness constraint 'type': circuit_types[1].pk, }, ] @@ -237,7 +237,7 @@ def setUpTestData(cls): 'account': '5678', }, { - 'name': 'Provider Account 6', + # Omit name to test uniqueness constraint 'provider': providers[0].pk, 'account': '6789', }, diff --git a/netbox/dcim/api/serializers_/devices.py b/netbox/dcim/api/serializers_/devices.py index 7d16018824..edfac3072d 100644 --- a/netbox/dcim/api/serializers_/devices.py +++ b/netbox/dcim/api/serializers_/devices.py @@ -122,6 +122,7 @@ def get_config_context(self, obj): class VirtualDeviceContextSerializer(NetBoxModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:virtualdevicecontext-detail') device = DeviceSerializer(nested=True) + identifier = serializers.IntegerField(allow_null=True, max_value=32767, min_value=0, required=False, default=None) tenant = TenantSerializer(nested=True, required=False, allow_null=True, default=None) primary_ip = IPAddressSerializer(nested=True, read_only=True, allow_null=True) primary_ip4 = IPAddressSerializer(nested=True, required=False, allow_null=True) diff --git a/netbox/dcim/api/serializers_/sites.py b/netbox/dcim/api/serializers_/sites.py index 8063278a7f..1e5e410695 100644 --- a/netbox/dcim/api/serializers_/sites.py +++ b/netbox/dcim/api/serializers_/sites.py @@ -51,7 +51,7 @@ class SiteSerializer(NetBoxModelSerializer): status = ChoiceField(choices=SiteStatusChoices, required=False) region = RegionSerializer(nested=True, required=False, allow_null=True) group = SiteGroupSerializer(nested=True, required=False, allow_null=True) - tenant = TenantSerializer(required=False, allow_null=True) + tenant = TenantSerializer(nested=True, required=False, allow_null=True) time_zone = TimeZoneSerializerField(required=False, allow_null=True) asns = SerializedPKRelatedField( queryset=ASN.objects.all(), @@ -83,7 +83,7 @@ class Meta: class LocationSerializer(NestedGroupModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:location-detail') site = SiteSerializer(nested=True) - parent = NestedLocationSerializer(required=False, allow_null=True) + parent = NestedLocationSerializer(required=False, allow_null=True, default=None) status = ChoiceField(choices=LocationStatusChoices, required=False) tenant = TenantSerializer(nested=True, required=False, allow_null=True) rack_count = serializers.IntegerField(read_only=True) diff --git a/netbox/dcim/tests/test_api.py b/netbox/dcim/tests/test_api.py index 0a3931696f..52b850b244 100644 --- a/netbox/dcim/tests/test_api.py +++ b/netbox/dcim/tests/test_api.py @@ -10,6 +10,7 @@ from extras.models import ConfigTemplate from ipam.models import ASN, RIR, VLAN, VRF from netbox.api.serializers import GenericObjectSerializer +from tenancy.models import Tenant from utilities.testing import APITestCase, APIViewTestCases, create_test_device from virtualization.models import Cluster, ClusterType from wireless.choices import WirelessChannelChoices @@ -152,6 +153,7 @@ def setUpTestData(cls): Site.objects.bulk_create(sites) rir = RIR.objects.create(name='RFC 6996', is_private=True) + tenant = Tenant.objects.create(name='Tenant 1', slug='tenant-1') asns = [ ASN(asn=65000 + i, rir=rir) for i in range(8) @@ -166,6 +168,7 @@ def setUpTestData(cls): 'group': groups[1].pk, 'status': SiteStatusChoices.STATUS_ACTIVE, 'asns': [asns[0].pk, asns[1].pk], + 'tenant': tenant.pk, }, { 'name': 'Site 5', @@ -230,7 +233,7 @@ def setUpTestData(cls): 'name': 'Test Location 6', 'slug': 'test-location-6', 'site': sites[1].pk, - 'parent': parent_locations[1].pk, + # Omit parent to test uniqueness constraint 'status': LocationStatusChoices.STATUS_PLANNED, }, ] @@ -2307,6 +2310,6 @@ def setUpTestData(cls): 'device': devices[1].pk, 'status': 'active', 'name': 'VDC 3', - 'identifier': 3, + # Omit identifier to test uniqueness constraint }, ] diff --git a/netbox/extras/management/commands/runscript.py b/netbox/extras/management/commands/runscript.py index 160e8813f4..ef1bd51419 100644 --- a/netbox/extras/management/commands/runscript.py +++ b/netbox/extras/management/commands/runscript.py @@ -85,6 +85,7 @@ def _run_script(): module_name, script_name = script.split('.', 1) module, script = get_module_and_script(module_name, script_name) + script = script.python_class # Take user from command line if provided and exists, other if options['user']: diff --git a/netbox/extras/migrations/0109_script_model.py b/netbox/extras/migrations/0109_script_model.py index 7570077a77..6bfd2c14c8 100644 --- a/netbox/extras/migrations/0109_script_model.py +++ b/netbox/extras/migrations/0109_script_model.py @@ -60,7 +60,10 @@ def get_name(cls): return cls.full_name.split(".", maxsplit=1)[1] loader = SourceFileLoader(get_python_name(scriptmodule), get_full_path(scriptmodule)) - module = loader.load_module() + try: + module = loader.load_module() + except FileNotFoundError: + return {} scripts = {} ordered = getattr(module, 'script_order', []) diff --git a/netbox/extras/tables/tables.py b/netbox/extras/tables/tables.py index 8da3ea93a7..3738f31028 100644 --- a/netbox/extras/tables/tables.py +++ b/netbox/extras/tables/tables.py @@ -545,7 +545,7 @@ class ScriptResultsTable(BaseTable): template_code="""{% load log_levels %}{% log_level record.status %}""", verbose_name=_('Level') ) - message = tables.Column( + message = columns.MarkdownColumn( verbose_name=_('Message') ) @@ -566,22 +566,17 @@ class ReportResultsTable(BaseTable): time = tables.Column( verbose_name=_('Time') ) - status = tables.Column( - empty_values=(), - verbose_name=_('Level') - ) status = tables.TemplateColumn( template_code="""{% load log_levels %}{% log_level record.status %}""", verbose_name=_('Level') ) - object = tables.Column( verbose_name=_('Object') ) url = tables.Column( verbose_name=_('URL') ) - message = tables.Column( + message = columns.MarkdownColumn( verbose_name=_('Message') ) diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index fb1c123c38..2ae380d638 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -574,7 +574,7 @@ def clean(self): if not self.end_address > self.start_address: raise ValidationError({ 'end_address': _( - "Ending address must be lower than the starting address ({start_address})" + "Ending address must be greater than the starting address ({start_address})" ).format(start_address=self.start_address) }) diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 24d82d1868..044474ec4e 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -781,6 +781,7 @@ def get_extra_context(self, request, instance): class IPAddressEditView(generic.ObjectEditView): queryset = IPAddress.objects.all() form = forms.IPAddressForm + template_name = 'ipam/ipaddress_edit.html' def alter_object(self, obj, request, url_args, url_kwargs): diff --git a/netbox/netbox/navigation/__init__.py b/netbox/netbox/navigation/__init__.py index d13282f7ec..b4f7dbd9f5 100644 --- a/netbox/netbox/navigation/__init__.py +++ b/netbox/netbox/navigation/__init__.py @@ -32,6 +32,7 @@ class MenuItem: link: str link_text: str permissions: Optional[Sequence[str]] = () + auth_required: Optional[bool] = False staff_only: Optional[bool] = False buttons: Optional[Sequence[MenuItemButton]] = () diff --git a/netbox/netbox/navigation/menu.py b/netbox/netbox/navigation/menu.py index 1e7a9d2cb9..7088273bff 100644 --- a/netbox/netbox/navigation/menu.py +++ b/netbox/netbox/navigation/menu.py @@ -372,6 +372,7 @@ MenuItem( link=f'users:user_list', link_text=_('Users'), + auth_required=True, permissions=[f'auth.view_user'], buttons=( MenuItemButton( @@ -391,6 +392,7 @@ MenuItem( link=f'users:group_list', link_text=_('Groups'), + auth_required=True, permissions=[f'auth.view_group'], buttons=( MenuItemButton( @@ -410,12 +412,14 @@ MenuItem( link=f'users:token_list', link_text=_('API Tokens'), + auth_required=True, permissions=[f'users.view_token'], buttons=get_model_buttons('users', 'token') ), MenuItem( link=f'users:objectpermission_list', link_text=_('Permissions'), + auth_required=True, permissions=[f'users.view_objectpermission'], buttons=get_model_buttons('users', 'objectpermission', actions=['add']) ), @@ -426,16 +430,19 @@ items=( MenuItem( link='core:system', - link_text=_('System') + link_text=_('System'), + auth_required=True ), MenuItem( link='core:configrevision_list', link_text=_('Configuration History'), + auth_required=True, permissions=['core.view_configrevision'] ), MenuItem( link='core:background_queue_list', - link_text=_('Background Tasks') + link_text=_('Background Tasks'), + auth_required=True ), ), ), diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 53eaffed51..f2b01041f9 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -372,7 +372,6 @@ def _setting(name, default=None): # Middleware MIDDLEWARE = [ "strawberry_django.middlewares.debug_toolbar.DebugToolbarMiddleware", - 'django_prometheus.middleware.PrometheusBeforeMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', @@ -386,8 +385,14 @@ def _setting(name, default=None): 'netbox.middleware.RemoteUserMiddleware', 'netbox.middleware.CoreMiddleware', 'netbox.middleware.MaintenanceModeMiddleware', - 'django_prometheus.middleware.PrometheusAfterMiddleware', ] +if METRICS_ENABLED: + # If metrics are enabled, add the before & after Prometheus middleware + MIDDLEWARE = [ + 'django_prometheus.middleware.PrometheusBeforeMiddleware', + *MIDDLEWARE, + 'django_prometheus.middleware.PrometheusAfterMiddleware', + ] # URLs ROOT_URLCONF = 'netbox.urls' @@ -522,7 +527,6 @@ def _setting(name, default=None): sentry_sdk.init( dsn=SENTRY_DSN, release=VERSION, - integrations=[sentry_sdk.integrations.django.DjangoIntegration()], sample_rate=SENTRY_SAMPLE_RATE, traces_sample_rate=SENTRY_TRACES_SAMPLE_RATE, send_default_pii=True, diff --git a/netbox/netbox/tables/tables.py b/netbox/netbox/tables/tables.py index d8db511a28..38f7248e64 100644 --- a/netbox/netbox/tables/tables.py +++ b/netbox/netbox/tables/tables.py @@ -52,7 +52,7 @@ def __init__(self, *args, user=None, **kwargs): # Set default empty_text if none was provided if self.empty_text is None: - self.empty_text = f"No {self._meta.model._meta.verbose_name_plural} found" + self.empty_text = _("No {model_name} found").format(model_name=self._meta.model._meta.verbose_name_plural) # Determine the table columns to display by checking the following: # 1. User's configuration for the table diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index 6c0d46b534..58c419b3d4 100644 --- a/netbox/project-static/dist/netbox.js +++ b/netbox/project-static/dist/netbox.js @@ -1,6 +1,6 @@ (()=>{var lh=Object.create;var _a=Object.defineProperty,ch=Object.defineProperties,uh=Object.getOwnPropertyDescriptor,dh=Object.getOwnPropertyDescriptors,fh=Object.getOwnPropertyNames,cu=Object.getOwnPropertySymbols,hh=Object.getPrototypeOf,uu=Object.prototype.hasOwnProperty,ph=Object.prototype.propertyIsEnumerable;var Gl=(ii,ti,ei)=>ti in ii?_a(ii,ti,{enumerable:!0,configurable:!0,writable:!0,value:ei}):ii[ti]=ei,Ui=(ii,ti)=>{for(var ei in ti||(ti={}))uu.call(ti,ei)&&Gl(ii,ei,ti[ei]);if(cu)for(var ei of cu(ti))ph.call(ti,ei)&&Gl(ii,ei,ti[ei]);return ii},Fn=(ii,ti)=>ch(ii,dh(ti)),du=ii=>_a(ii,"__esModule",{value:!0});var Ga=(ii,ti)=>()=>(ti||ii((ti={exports:{}}).exports,ti),ti.exports),fu=(ii,ti)=>{du(ii);for(var ei in ti)_a(ii,ei,{get:ti[ei],enumerable:!0})},mh=(ii,ti,ei)=>{if(ti&&typeof ti=="object"||typeof ti=="function")for(let ni of fh(ti))!uu.call(ii,ni)&&ni!=="default"&&_a(ii,ni,{get:()=>ti[ni],enumerable:!(ei=uh(ti,ni))||ei.enumerable});return ii},zo=ii=>mh(du(_a(ii!=null?lh(hh(ii)):{},"default",ii&&ii.__esModule&&"default"in ii?{get:()=>ii.default,enumerable:!0}:{value:ii,enumerable:!0})),ii);var Pn=(ii,ti,ei)=>(Gl(ii,typeof ti!="symbol"?ti+"":ti,ei),ei);var $s=(ii,ti,ei)=>new Promise((ni,ri)=>{var si=di=>{try{li(ei.next(di))}catch(yi){ri(yi)}},ai=di=>{try{li(ei.throw(di))}catch(yi){ri(yi)}},li=di=>di.done?ni(di.value):Promise.resolve(di.value).then(si,ai);li((ei=ei.apply(ii,ti)).next())});var Id=Ga((exports,module)=>{(function(ii,ti){typeof define=="function"&&define.amd?define([],ti):typeof module=="object"&&module.exports?module.exports=ti():ii.htmx=ii.htmx||ti()})(typeof self!="undefined"?self:exports,function(){return function(){"use strict";var Q={onLoad:F,process:zt,on:de,off:ge,trigger:ce,ajax:Nr,find:C,findAll:f,closest:v,values:function(ii,ti){var ei=dr(ii,ti||"post");return ei.values},remove:_,addClass:z,removeClass:n,toggleClass:$,takeClass:W,defineExtension:Ur,removeExtension:Br,logAll:V,logNone:j,logger:null,config:{historyEnabled:!0,historyCacheSize:10,refreshOnHistoryMiss:!1,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:!0,indicatorClass:"htmx-indicator",requestClass:"htmx-request",addedClass:"htmx-added",settlingClass:"htmx-settling",swappingClass:"htmx-swapping",allowEval:!0,allowScriptTags:!0,inlineScriptNonce:"",attributesToSettle:["class","style","width","height"],withCredentials:!1,timeout:0,wsReconnectDelay:"full-jitter",wsBinaryType:"blob",disableSelector:"[hx-disable], [data-hx-disable]",useTemplateFragments:!1,scrollBehavior:"smooth",defaultFocusScroll:!1,getCacheBusterParam:!1,globalViewTransitions:!1,methodsThatUseUrlParams:["get"],selfRequestsOnly:!1,ignoreTitle:!1,scrollIntoViewOnBoost:!0,triggerSpecsCache:null},parseInterval:d,_:t,createEventSource:function(ii){return new EventSource(ii,{withCredentials:!0})},createWebSocket:function(ii){var ti=new WebSocket(ii,[]);return ti.binaryType=Q.config.wsBinaryType,ti},version:"1.9.12"},r={addTriggerHandler:Lt,bodyContains:se,canAccessLocalStorage:U,findThisElement:xe,filterValues:yr,hasAttribute:o,getAttributeValue:te,getClosestAttributeValue:ne,getClosestMatch:c,getExpressionVars:Hr,getHeaders:xr,getInputValues:dr,getInternalData:ae,getSwapSpecification:wr,getTriggerSpecs:it,getTarget:ye,makeFragment:l,mergeObjects:le,makeSettleInfo:T,oobSwap:Ee,querySelectorExt:ue,selectAndSwap:je,settleImmediately:nr,shouldCancel:ut,triggerEvent:ce,triggerErrorEvent:fe,withExtensions:R},w=["get","post","put","delete","patch"],i=w.map(function(ii){return"[hx-"+ii+"], [data-hx-"+ii+"]"}).join(", "),S=e("head"),q=e("title"),H=e("svg",!0);function e(ii,ti){return new RegExp("<"+ii+"(\\s[^>]*>|>)([\\s\\S]*?)<\\/"+ii+">",ti?"gim":"im")}function d(ii){if(ii==null)return;let ti=NaN;return ii.slice(-2)=="ms"?ti=parseFloat(ii.slice(0,-2)):ii.slice(-1)=="s"?ti=parseFloat(ii.slice(0,-1))*1e3:ii.slice(-1)=="m"?ti=parseFloat(ii.slice(0,-1))*1e3*60:ti=parseFloat(ii),isNaN(ti)?void 0:ti}function ee(ii,ti){return ii.getAttribute&&ii.getAttribute(ti)}function o(ii,ti){return ii.hasAttribute&&(ii.hasAttribute(ti)||ii.hasAttribute("data-"+ti))}function te(ii,ti){return ee(ii,ti)||ee(ii,"data-"+ti)}function u(ii){return ii.parentElement}function re(){return document}function c(ii,ti){for(;ii&&!ti(ii);)ii=u(ii);return ii||null}function L(ii,ti,ei){var ni=te(ti,ei),ri=te(ti,"hx-disinherit");return ii!==ti&&ri&&(ri==="*"||ri.split(" ").indexOf(ei)>=0)?"unset":ni}function ne(ii,ti){var ei=null;if(c(ii,function(ni){return ei=L(ii,ni,ti)}),ei!=="unset")return ei}function h(ii,ti){var ei=ii.matches||ii.matchesSelector||ii.msMatchesSelector||ii.mozMatchesSelector||ii.webkitMatchesSelector||ii.oMatchesSelector;return ei&&ei.call(ii,ti)}function A(ii){var ti=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,ei=ti.exec(ii);return ei?ei[1].toLowerCase():""}function s(ii,ti){for(var ei=new DOMParser,ni=ei.parseFromString(ii,"text/html"),ri=ni.body;ti>0;)ti--,ri=ri.firstChild;return ri==null&&(ri=re().createDocumentFragment()),ri}function N(ii){return/",0),si=ri.querySelector("template").content;return Q.config.allowScriptTags?oe(si.querySelectorAll("script"),function(ai){Q.config.inlineScriptNonce&&(ai.nonce=Q.config.inlineScriptNonce),ai.htmxExecuted=navigator.userAgent.indexOf("Firefox")===-1}):oe(si.querySelectorAll("script"),function(ai){_(ai)}),si}switch(ei){case"thead":case"tbody":case"tfoot":case"colgroup":case"caption":return s(""+ni+"
",1);case"col":return s(""+ni+"
",2);case"tr":return s(""+ni+"
",2);case"td":case"th":return s(""+ni+"
",3);case"script":case"style":return s("
"+ni+"
",1);default:return s(ni,0)}}function ie(ii){ii&&ii()}function I(ii,ti){return Object.prototype.toString.call(ii)==="[object "+ti+"]"}function k(ii){return I(ii,"Function")}function P(ii){return I(ii,"Object")}function ae(ii){var ti="htmx-internal-data",ei=ii[ti];return ei||(ei=ii[ti]={}),ei}function M(ii){var ti=[];if(ii)for(var ei=0;ei=0}function se(ii){return ii.getRootNode&&ii.getRootNode()instanceof window.ShadowRoot?re().body.contains(ii.getRootNode().host):re().body.contains(ii)}function D(ii){return ii.trim().split(/\s+/)}function le(ii,ti){for(var ei in ti)ti.hasOwnProperty(ei)&&(ii[ei]=ti[ei]);return ii}function E(ii){try{return JSON.parse(ii)}catch(ti){return b(ti),null}}function U(){var ii="htmx:localStorageTest";try{return localStorage.setItem(ii,ii),localStorage.removeItem(ii),!0}catch(ti){return!1}}function B(ii){try{var ti=new URL(ii);return ti&&(ii=ti.pathname+ti.search),/^\/$/.test(ii)||(ii=ii.replace(/\/+$/,"")),ii}catch(ei){return ii}}function t(e){return Tr(re().body,function(){return eval(e)})}function F(ii){var ti=Q.on("htmx:load",function(ei){ii(ei.detail.elt)});return ti}function V(){Q.logger=function(ii,ti,ei){console&&console.log(ti,ii,ei)}}function j(){Q.logger=null}function C(ii,ti){return ti?ii.querySelector(ti):C(re(),ii)}function f(ii,ti){return ti?ii.querySelectorAll(ti):f(re(),ii)}function _(ii,ti){ii=p(ii),ti?setTimeout(function(){_(ii),ii=null},ti):ii.parentElement.removeChild(ii)}function z(ii,ti,ei){ii=p(ii),ei?setTimeout(function(){z(ii,ti),ii=null},ei):ii.classList&&ii.classList.add(ti)}function n(ii,ti,ei){ii=p(ii),ei?setTimeout(function(){n(ii,ti),ii=null},ei):ii.classList&&(ii.classList.remove(ti),ii.classList.length===0&&ii.removeAttribute("class"))}function $(ii,ti){ii=p(ii),ii.classList.toggle(ti)}function W(ii,ti){ii=p(ii),oe(ii.parentElement.children,function(ei){n(ei,ti)}),z(ii,ti)}function v(ii,ti){if(ii=p(ii),ii.closest)return ii.closest(ti);do if(ii==null||h(ii,ti))return ii;while(ii=ii&&u(ii));return null}function g(ii,ti){return ii.substring(0,ti.length)===ti}function G(ii,ti){return ii.substring(ii.length-ti.length)===ti}function J(ii){var ti=ii.trim();return g(ti,"<")&&G(ti,"/>")?ti.substring(1,ti.length-2):ti}function Z(ii,ti){return ti.indexOf("closest ")===0?[v(ii,J(ti.substr(8)))]:ti.indexOf("find ")===0?[C(ii,J(ti.substr(5)))]:ti==="next"?[ii.nextElementSibling]:ti.indexOf("next ")===0?[K(ii,J(ti.substr(5)))]:ti==="previous"?[ii.previousElementSibling]:ti.indexOf("previous ")===0?[Y(ii,J(ti.substr(9)))]:ti==="document"?[document]:ti==="window"?[window]:ti==="body"?[document.body]:re().querySelectorAll(J(ti))}var K=function(ii,ti){for(var ei=re().querySelectorAll(ti),ni=0;ni=0;ni--){var ri=ei[ni];if(ri.compareDocumentPosition(ii)===Node.DOCUMENT_POSITION_FOLLOWING)return ri}};function ue(ii,ti){return ti?Z(ii,ti)[0]:Z(re().body,ii)[0]}function p(ii){return I(ii,"String")?C(ii):ii}function ve(ii,ti,ei){return k(ti)?{target:re().body,event:ii,listener:ti}:{target:p(ii),event:ti,listener:ei}}function de(ii,ti,ei){jr(function(){var ri=ve(ii,ti,ei);ri.target.addEventListener(ri.event,ri.listener)});var ni=k(ti);return ni?ti:ei}function ge(ii,ti,ei){return jr(function(){var ni=ve(ii,ti,ei);ni.target.removeEventListener(ni.event,ni.listener)}),k(ti)?ti:ei}var pe=re().createElement("output");function me(ii,ti){var ei=ne(ii,ti);if(ei){if(ei==="this")return[xe(ii,ti)];var ni=Z(ii,ei);return ni.length===0?(b('The selector "'+ei+'" on '+ti+" returned no matches!"),[pe]):ni}}function xe(ii,ti){return c(ii,function(ei){return te(ei,ti)!=null})}function ye(ii){var ti=ne(ii,"hx-target");if(ti)return ti==="this"?xe(ii,"hx-target"):ue(ii,ti);var ei=ae(ii);return ei.boosted?re().body:ii}function be(ii){for(var ti=Q.config.attributesToSettle,ei=0;ei0?(ri=ii.substr(0,ii.indexOf(":")),ni=ii.substr(ii.indexOf(":")+1,ii.length)):ri=ii);var si=re().querySelectorAll(ni);return si?(oe(si,function(ai){var li,di=ti.cloneNode(!0);li=re().createDocumentFragment(),li.appendChild(di),Se(ri,ai)||(li=di);var yi={shouldSwap:!0,target:ai,fragment:li};!ce(ai,"htmx:oobBeforeSwap",yi)||(ai=yi.target,yi.shouldSwap&&Fe(ri,ai,ai,li,ei),oe(ei.elts,function(pi){ce(pi,"htmx:oobAfterSwap",yi)}))}),ti.parentNode.removeChild(ti)):(ti.parentNode.removeChild(ti),fe(re().body,"htmx:oobErrorNoTarget",{content:ti})),ii}function Ce(ii,ti,ei){var ni=ne(ii,"hx-select-oob");if(ni)for(var ri=ni.split(","),si=0;si0){var si=ri.replace("'","\\'"),ai=ni.tagName.replace(":","\\:"),li=ii.querySelector(ai+"[id='"+si+"']");if(li&&li!==ii){var di=ni.cloneNode();we(ni,li),ei.tasks.push(function(){we(ni,di)})}}})}function Oe(ii){return function(){n(ii,Q.config.addedClass),zt(ii),Nt(ii),qe(ii),ce(ii,"htmx:load")}}function qe(ii){var ti="[autofocus]",ei=h(ii,ti)?ii:ii.querySelector(ti);ei!=null&&ei.focus()}function a(ii,ti,ei,ni){for(Te(ii,ei,ni);ei.childNodes.length>0;){var ri=ei.firstChild;z(ri,Q.config.addedClass),ii.insertBefore(ri,ti),ri.nodeType!==Node.TEXT_NODE&&ri.nodeType!==Node.COMMENT_NODE&&ni.tasks.push(Oe(ri))}}function He(ii,ti){for(var ei=0;ei-1){var ti=ii.replace(H,""),ei=ti.match(q);if(ei)return ei[2]}}function je(ii,ti,ei,ni,ri,si){ri.title=Ve(ni);var ai=l(ni);if(ai)return Ce(ei,ai,ri),ai=Be(ei,ai,si),Re(ai),Fe(ii,ei,ti,ai,ri)}function _e(ii,ti,ei){var ni=ii.getResponseHeader(ti);if(ni.indexOf("{")===0){var ri=E(ni);for(var si in ri)if(ri.hasOwnProperty(si)){var ai=ri[si];P(ai)||(ai={value:ai}),ce(ei,si,ai)}}else for(var li=ni.split(","),di=0;di0;){var ai=ti[0];if(ai==="]"){if(ni--,ni===0){si===null&&(ri=ri+"true"),ti.shift(),ri+=")})";try{var li=Tr(ii,function(){return Function(ri)()},function(){return!0});return li.source=ri,li}catch(di){return fe(re().body,"htmx:syntax:error",{error:di,source:ri}),null}}}else ai==="["&&ni++;Qe(ai,si,ei)?ri+="(("+ei+"."+ai+") ? ("+ei+"."+ai+") : (window."+ai+"))":ri=ri+ai,si=ti.shift()}}}function y(ii,ti){for(var ei="";ii.length>0&&!ti.test(ii[0]);)ei+=ii.shift();return ei}function tt(ii){var ti;return ii.length>0&&Ze.test(ii[0])?(ii.shift(),ti=y(ii,Ke).trim(),ii.shift()):ti=y(ii,x),ti}var rt="input, textarea, select";function nt(ii,ti,ei){var ni=[],ri=Ye(ti);do{y(ri,Je);var si=ri.length,ai=y(ri,/[,\[\s]/);if(ai!=="")if(ai==="every"){var li={trigger:"every"};y(ri,Je),li.pollInterval=d(y(ri,/[,\[\s]/)),y(ri,Je);var di=et(ii,ri,"event");di&&(li.eventFilter=di),ni.push(li)}else if(ai.indexOf("sse:")===0)ni.push({trigger:"sse",sseEvent:ai.substr(4)});else{var yi={trigger:ai},di=et(ii,ri,"event");for(di&&(yi.eventFilter=di);ri.length>0&&ri[0]!==",";){y(ri,Je);var pi=ri.shift();if(pi==="changed")yi.changed=!0;else if(pi==="once")yi.once=!0;else if(pi==="consume")yi.consume=!0;else if(pi==="delay"&&ri[0]===":")ri.shift(),yi.delay=d(y(ri,x));else if(pi==="from"&&ri[0]===":"){if(ri.shift(),Ze.test(ri[0]))var vi=tt(ri);else{var vi=y(ri,x);if(vi==="closest"||vi==="find"||vi==="next"||vi==="previous"){ri.shift();var Ei=tt(ri);Ei.length>0&&(vi+=" "+Ei)}}yi.from=vi}else pi==="target"&&ri[0]===":"?(ri.shift(),yi.target=tt(ri)):pi==="throttle"&&ri[0]===":"?(ri.shift(),yi.throttle=d(y(ri,x))):pi==="queue"&&ri[0]===":"?(ri.shift(),yi.queue=y(ri,x)):pi==="root"&&ri[0]===":"?(ri.shift(),yi[pi]=tt(ri)):pi==="threshold"&&ri[0]===":"?(ri.shift(),yi[pi]=y(ri,x)):fe(ii,"htmx:syntax:error",{token:ri.shift()})}ni.push(yi)}ri.length===si&&fe(ii,"htmx:syntax:error",{token:ri.shift()}),y(ri,Je)}while(ri[0]===","&&ri.shift());return ei&&(ei[ti]=ni),ni}function it(ii){var ti=te(ii,"hx-trigger"),ei=[];if(ti){var ni=Q.config.triggerSpecsCache;ei=ni&&ni[ti]||nt(ii,ti,ni)}return ei.length>0?ei:h(ii,"form")?[{trigger:"submit"}]:h(ii,'input[type="button"], input[type="submit"]')?[{trigger:"click"}]:h(ii,rt)?[{trigger:"change"}]:[{trigger:"click"}]}function at(ii){ae(ii).cancelled=!0}function ot(ii,ti,ei){var ni=ae(ii);ni.timeout=setTimeout(function(){se(ii)&&ni.cancelled!==!0&&(ct(ei,ii,Wt("hx:poll:trigger",{triggerSpec:ei,target:ii}))||ti(ii),ot(ii,ti,ei))},ei.pollInterval)}function st(ii){return location.hostname===ii.hostname&&ee(ii,"href")&&ee(ii,"href").indexOf("#")!==0}function lt(ii,ti,ei){if(ii.tagName==="A"&&st(ii)&&(ii.target===""||ii.target==="_self")||ii.tagName==="FORM"){ti.boosted=!0;var ni,ri;if(ii.tagName==="A")ni="get",ri=ee(ii,"href");else{var si=ee(ii,"method");ni=si?si.toLowerCase():"get",ri=ee(ii,"action")}ei.forEach(function(ai){ht(ii,function(li,di){if(v(li,Q.config.disableSelector)){m(li);return}he(ni,ri,li,di)},ti,ai,!0)})}}function ut(ii,ti){return!!((ii.type==="submit"||ii.type==="click")&&(ti.tagName==="FORM"||h(ti,'input[type="submit"], button')&&v(ti,"form")!==null||ti.tagName==="A"&&ti.href&&(ti.getAttribute("href")==="#"||ti.getAttribute("href").indexOf("#")!==0)))}function ft(ii,ti){return ae(ii).boosted&&ii.tagName==="A"&&ti.type==="click"&&(ti.ctrlKey||ti.metaKey)}function ct(ii,ti,ei){var ni=ii.eventFilter;if(ni)try{return ni.call(ti,ei)!==!0}catch(ri){return fe(re().body,"htmx:eventFilter:error",{error:ri,source:ni.source}),!0}return!1}function ht(ii,ti,ei,ni,ri){var si=ae(ii),ai;ni.from?ai=Z(ii,ni.from):ai=[ii],ni.changed&&ai.forEach(function(li){var di=ae(li);di.lastValue=li.value}),oe(ai,function(li){var di=function(yi){if(!se(ii)){li.removeEventListener(ni.trigger,di);return}if(!ft(ii,yi)&&((ri||ut(yi,ii))&&yi.preventDefault(),!ct(ni,ii,yi))){var pi=ae(yi);if(pi.triggerSpec=ni,pi.handledFor==null&&(pi.handledFor=[]),pi.handledFor.indexOf(ii)<0){if(pi.handledFor.push(ii),ni.consume&&yi.stopPropagation(),ni.target&&yi.target&&!h(yi.target,ni.target))return;if(ni.once){if(si.triggeredOnce)return;si.triggeredOnce=!0}if(ni.changed){var vi=ae(li);if(vi.lastValue===li.value)return;vi.lastValue=li.value}if(si.delayed&&clearTimeout(si.delayed),si.throttle)return;ni.throttle>0?si.throttle||(ti(ii,yi),si.throttle=setTimeout(function(){si.throttle=null},ni.throttle)):ni.delay>0?si.delayed=setTimeout(function(){ti(ii,yi)},ni.delay):(ce(ii,"htmx:trigger"),ti(ii,yi))}}};ei.listenerInfos==null&&(ei.listenerInfos=[]),ei.listenerInfos.push({trigger:ni.trigger,listener:di,on:li}),li.addEventListener(ni.trigger,di)})}var vt=!1,dt=null;function gt(){dt||(dt=function(){vt=!0},window.addEventListener("scroll",dt),setInterval(function(){vt&&(vt=!1,oe(re().querySelectorAll("[hx-trigger='revealed'],[data-hx-trigger='revealed']"),function(ii){pt(ii)}))},200))}function pt(ii){if(!o(ii,"data-hx-revealed")&&X(ii)){ii.setAttribute("data-hx-revealed","true");var ti=ae(ii);ti.initHash?ce(ii,"revealed"):ii.addEventListener("htmx:afterProcessNode",function(ei){ce(ii,"revealed")},{once:!0})}}function mt(ii,ti,ei){for(var ni=D(ei),ri=0;ri=0){var ai=wt(ei);setTimeout(function(){xt(ii,ti,ei+1)},ai)}},ri.onopen=function(si){ei=0},ae(ii).webSocket=ri,ri.addEventListener("message",function(si){if(!yt(ii)){var ai=si.data;R(ii,function(Ei){ai=Ei.transformResponse(ai,null,ii)});for(var li=T(ii),di=l(ai),yi=M(di.children),pi=0;pi0){ce(ii,"htmx:validation:halted",ai);return}ni.send(JSON.stringify(pi)),ut(ei,ii)&&ei.preventDefault()}):fe(ii,"htmx:noWebSocketSourceError")}function wt(ii){var ti=Q.config.wsReconnectDelay;if(typeof ti=="function")return ti(ii);if(ti==="full-jitter"){var ei=Math.min(ii,6),ni=1e3*Math.pow(2,ei);return ni*Math.random()}b('htmx.config.wsReconnectDelay must either be a function or the string "full-jitter"')}function St(ii,ti,ei){for(var ni=D(ei),ri=0;ri0?setTimeout(ri,ni):ri()}function Ht(ii,ti,ei){var ni=!1;return oe(w,function(ri){if(o(ii,"hx-"+ri)){var si=te(ii,"hx-"+ri);ni=!0,ti.path=si,ti.verb=ri,ei.forEach(function(ai){Lt(ii,ai,ti,function(li,di){if(v(li,Q.config.disableSelector)){m(li);return}he(ri,si,li,di)})})}}),ni}function Lt(ii,ti,ei,ni){if(ti.sseEvent)Rt(ii,ni,ti.sseEvent);else if(ti.trigger==="revealed")gt(),ht(ii,ni,ei,ti),pt(ii);else if(ti.trigger==="intersect"){var ri={};ti.root&&(ri.root=ue(ii,ti.root)),ti.threshold&&(ri.threshold=parseFloat(ti.threshold));var si=new IntersectionObserver(function(ai){for(var li=0;li0?(ei.polling=!0,ot(ii,ni,ti)):ht(ii,ni,ei,ti)}function At(ii){if(!ii.htmxExecuted&&Q.config.allowScriptTags&&(ii.type==="text/javascript"||ii.type==="module"||ii.type==="")){var ti=re().createElement("script");oe(ii.attributes,function(ni){ti.setAttribute(ni.name,ni.value)}),ti.textContent=ii.textContent,ti.async=!1,Q.config.inlineScriptNonce&&(ti.nonce=Q.config.inlineScriptNonce);var ei=ii.parentElement;try{ei.insertBefore(ti,ii)}catch(ni){b(ni)}finally{ii.parentElement&&ii.parentElement.removeChild(ii)}}}function Nt(ii){h(ii,"script")&&At(ii),oe(f(ii,"script"),function(ti){At(ti)})}function It(ii){var ti=ii.attributes;if(!ti)return!1;for(var ei=0;ei0;){var ai=ni.shift(),li=ai.match(/^\s*([a-zA-Z:\-\.]+:)(.*)/);si===0&&li?(ai.split(":"),ri=li[1].slice(0,-1),ei[ri]=li[2]):ei[ri]+=ai,si+=Bt(ai)}for(var di in ei)Ft(ii,di,ei[di])}}function jt(ii){Ae(ii);for(var ti=0;tiQ.config.historyCacheSize;)ri.shift();for(;ri.length>0;)try{localStorage.setItem("htmx-history-cache",JSON.stringify(ri));break}catch(li){fe(re().body,"htmx:historyCacheError",{cause:li,cache:ri}),ri.shift()}}}function Yt(ii){if(!U())return null;ii=B(ii);for(var ti=E(localStorage.getItem("htmx-history-cache"))||[],ei=0;ei=200&&this.status<400){ce(re().body,"htmx:historyCacheMissLoad",ei);var ni=l(this.response);ni=ni.querySelector("[hx-history-elt],[data-hx-history-elt]")||ni;var ri=Zt(),si=T(ri),ai=Ve(this.response);if(ai){var li=C("title");li?li.innerHTML=ai:window.document.title=ai}Ue(ri,ni,si),nr(si.tasks),Jt=ii,ce(re().body,"htmx:historyRestore",{path:ii,cacheMiss:!0,serverResponse:this.response})}else fe(re().body,"htmx:historyCacheMissLoadError",ei)},ti.send()}function ar(ii){er(),ii=ii||location.pathname+location.search;var ti=Yt(ii);if(ti){var ei=l(ti.content),ni=Zt(),ri=T(ni);Ue(ni,ei,ri),nr(ri.tasks),document.title=ti.title,setTimeout(function(){window.scrollTo(0,ti.scroll)},0),Jt=ii,ce(re().body,"htmx:historyRestore",{path:ii,item:ti})}else Q.config.refreshOnHistoryMiss?window.location.reload(!0):ir(ii)}function or(ii){var ti=me(ii,"hx-indicator");return ti==null&&(ti=[ii]),oe(ti,function(ei){var ni=ae(ei);ni.requestCount=(ni.requestCount||0)+1,ei.classList.add.call(ei.classList,Q.config.requestClass)}),ti}function sr(ii){var ti=me(ii,"hx-disabled-elt");return ti==null&&(ti=[]),oe(ti,function(ei){var ni=ae(ei);ni.requestCount=(ni.requestCount||0)+1,ei.setAttribute("disabled","")}),ti}function lr(ii,ti){oe(ii,function(ei){var ni=ae(ei);ni.requestCount=(ni.requestCount||0)-1,ni.requestCount===0&&ei.classList.remove.call(ei.classList,Q.config.requestClass)}),oe(ti,function(ei){var ni=ae(ei);ni.requestCount=(ni.requestCount||0)-1,ni.requestCount===0&&ei.removeAttribute("disabled")})}function ur(ii,ti){for(var ei=0;ei=0}function wr(ii,ti){var ei=ti||ne(ii,"hx-swap"),ni={swapStyle:ae(ii).boosted?"innerHTML":Q.config.defaultSwapStyle,swapDelay:Q.config.defaultSwapDelay,settleDelay:Q.config.defaultSettleDelay};if(Q.config.scrollIntoViewOnBoost&&ae(ii).boosted&&!br(ii)&&(ni.show="top"),ei){var ri=D(ei);if(ri.length>0)for(var si=0;si0?di.join(":"):null;ni.scroll=yi,ni.scrollTarget=pi}else if(ai.indexOf("show:")===0){var vi=ai.substr(5),di=vi.split(":"),Ei=di.pop(),pi=di.length>0?di.join(":"):null;ni.show=Ei,ni.showTarget=pi}else if(ai.indexOf("focus-scroll:")===0){var Si=ai.substr("focus-scroll:".length);ni.focusScroll=Si=="true"}else si==0?ni.swapStyle=ai:b("Unknown modifier in hx-swap: "+ai)}}return ni}function Sr(ii){return ne(ii,"hx-encoding")==="multipart/form-data"||h(ii,"form")&&ee(ii,"enctype")==="multipart/form-data"}function Er(ii,ti,ei){var ni=null;return R(ti,function(ri){ni==null&&(ni=ri.encodeParameters(ii,ei,ti))}),ni!=null?ni:Sr(ti)?mr(ei):pr(ei)}function T(ii){return{tasks:[],elts:[ii]}}function Cr(ii,ti){var ei=ii[0],ni=ii[ii.length-1];if(ti.scroll){var ri=null;ti.scrollTarget&&(ri=ue(ei,ti.scrollTarget)),ti.scroll==="top"&&(ei||ri)&&(ri=ri||ei,ri.scrollTop=0),ti.scroll==="bottom"&&(ni||ri)&&(ri=ri||ni,ri.scrollTop=ri.scrollHeight)}if(ti.show){var ri=null;if(ti.showTarget){var si=ti.showTarget;ti.showTarget==="window"&&(si="body"),ri=ue(ei,si)}ti.show==="top"&&(ei||ri)&&(ri=ri||ei,ri.scrollIntoView({block:"start",behavior:Q.config.scrollBehavior})),ti.show==="bottom"&&(ni||ri)&&(ri=ri||ni,ri.scrollIntoView({block:"end",behavior:Q.config.scrollBehavior}))}}function Rr(ii,ti,ei,ni){if(ni==null&&(ni={}),ii==null)return ni;var ri=te(ii,ti);if(ri){var si=ri.trim(),ai=ei;if(si==="unset")return null;si.indexOf("javascript:")===0?(si=si.substr(11),ai=!0):si.indexOf("js:")===0&&(si=si.substr(3),ai=!0),si.indexOf("{")!==0&&(si="{"+si+"}");var li;ai?li=Tr(ii,function(){return Function("return ("+si+")")()},{}):li=E(si);for(var di in li)li.hasOwnProperty(di)&&ni[di]==null&&(ni[di]=li[di])}return Rr(u(ii),ti,ei,ni)}function Tr(ii,ti,ei){return Q.config.allowEval?ti():(fe(ii,"htmx:evalDisallowedError"),ei)}function Or(ii,ti){return Rr(ii,"hx-vars",!0,ti)}function qr(ii,ti){return Rr(ii,"hx-vals",!1,ti)}function Hr(ii){return le(Or(ii),qr(ii))}function Lr(ii,ti,ei){if(ei!==null)try{ii.setRequestHeader(ti,ei)}catch(ni){ii.setRequestHeader(ti,encodeURIComponent(ei)),ii.setRequestHeader(ti+"-URI-AutoEncoded","true")}}function Ar(ii){if(ii.responseURL&&typeof URL!="undefined")try{var ti=new URL(ii.responseURL);return ti.pathname+ti.search}catch(ei){fe(re().body,"htmx:badResponseUrl",{url:ii.responseURL})}}function O(ii,ti){return ti.test(ii.getAllResponseHeaders())}function Nr(ii,ti,ei){return ii=ii.toLowerCase(),ei?ei instanceof Element||I(ei,"String")?he(ii,ti,null,null,{targetOverride:p(ei),returnPromise:!0}):he(ii,ti,p(ei.source),ei.event,{handler:ei.handler,headers:ei.headers,values:ei.values,targetOverride:p(ei.target),swapOverride:ei.swap,select:ei.select,returnPromise:!0}):he(ii,ti,null,null,{returnPromise:!0})}function Ir(ii){for(var ti=[];ii;)ti.push(ii),ii=ii.parentElement;return ti}function kr(ii,ti,ei){var ni,ri;if(typeof URL=="function"){ri=new URL(ti,document.location.href);var si=document.location.origin;ni=si===ri.origin}else ri=ti,ni=g(ti,document.location.origin);return Q.config.selfRequestsOnly&&!ni?!1:ce(ii,"htmx:validateUrl",le({url:ri,sameHost:ni},ei))}function he(ii,ti,ei,ni,ri,si){var ai=null,li=null;if(ri=ri!=null?ri:{},ri.returnPromise&&typeof Promise!="undefined")var di=new Promise(function(Wn,_n){ai=Wn,li=_n});ei==null&&(ei=re().body);var yi=ri.handler||Mr,pi=ri.select||null;if(!se(ei))return ie(ai),di;var vi=ri.targetOverride||ye(ei);if(vi==null||vi==pe)return fe(ei,"htmx:targetError",{target:te(ei,"hx-target")}),ie(li),di;var Ei=ae(ei),Si=Ei.lastButtonClicked;if(Si){var Li=ee(Si,"formaction");Li!=null&&(ti=Li);var Ai=ee(Si,"formmethod");Ai!=null&&Ai.toLowerCase()!=="dialog"&&(ii=Ai)}var Fi=ne(ei,"hx-confirm");if(si===void 0){var en=function(Wn){return he(ii,ti,ei,ni,ri,!!Wn)},rn={target:vi,elt:ei,path:ti,verb:ii,triggeringEvent:ni,etc:ri,issueRequest:en,question:Fi};if(ce(ei,"htmx:confirm",rn)===!1)return ie(ai),di}var ln=ei,Yi=ne(ei,"hx-sync"),sn=null,on=!1;if(Yi){var En=Yi.split(":"),pn=En[0].trim();if(pn==="this"?ln=xe(ei,"hx-sync"):ln=ue(ei,pn),Yi=(En[1]||"drop").trim(),Ei=ae(ln),Yi==="drop"&&Ei.xhr&&Ei.abortable!==!0)return ie(ai),di;if(Yi==="abort"){if(Ei.xhr)return ie(ai),di;on=!0}else if(Yi==="replace")ce(ln,"htmx:abort");else if(Yi.indexOf("queue")===0){var mn=Yi.split(" ");sn=(mn[1]||"last").trim()}}if(Ei.xhr)if(Ei.abortable)ce(ln,"htmx:abort");else{if(sn==null){if(ni){var vn=ae(ni);vn&&vn.triggerSpec&&vn.triggerSpec.queue&&(sn=vn.triggerSpec.queue)}sn==null&&(sn="last")}return Ei.queuedRequests==null&&(Ei.queuedRequests=[]),sn==="first"&&Ei.queuedRequests.length===0?Ei.queuedRequests.push(function(){he(ii,ti,ei,ni,ri)}):sn==="all"?Ei.queuedRequests.push(function(){he(ii,ti,ei,ni,ri)}):sn==="last"&&(Ei.queuedRequests=[],Ei.queuedRequests.push(function(){he(ii,ti,ei,ni,ri)})),ie(ai),di}var un=new XMLHttpRequest;Ei.xhr=un,Ei.abortable=on;var yn=function(){if(Ei.xhr=null,Ei.abortable=!1,Ei.queuedRequests!=null&&Ei.queuedRequests.length>0){var Wn=Ei.queuedRequests.shift();Wn()}},Cn=ne(ei,"hx-prompt");if(Cn){var Ni=prompt(Cn);if(Ni===null||!ce(ei,"htmx:prompt",{prompt:Ni,target:vi}))return ie(ai),yn(),di}if(Fi&&!si&&!confirm(Fi))return ie(ai),yn(),di;var Hi=xr(ei,vi,Ni);ii!=="get"&&!Sr(ei)&&(Hi["Content-Type"]="application/x-www-form-urlencoded"),ri.headers&&(Hi=le(Hi,ri.headers));var Pi=dr(ei,ii),$i=Pi.errors,gn=Pi.values;ri.values&&(gn=le(gn,ri.values));var tn=Hr(ei),Bi=le(gn,tn),Mi=yr(Bi,ei);Q.config.getCacheBusterParam&&ii==="get"&&(Mi["org.htmx.cache-buster"]=ee(vi,"id")||"true"),(ti==null||ti==="")&&(ti=re().location.href);var zi=Rr(ei,"hx-request"),Ji=ae(ei).boosted,Vi=Q.config.methodsThatUseUrlParams.indexOf(ii)>=0,Ii={boosted:Ji,useUrlParams:Vi,parameters:Mi,unfilteredParameters:Bi,headers:Hi,target:vi,verb:ii,errors:$i,withCredentials:ri.credentials||zi.credentials||Q.config.withCredentials,timeout:ri.timeout||zi.timeout||Q.config.timeout,path:ti,triggeringEvent:ni};if(!ce(ei,"htmx:configRequest",Ii))return ie(ai),yn(),di;if(ti=Ii.path,ii=Ii.verb,Hi=Ii.headers,Mi=Ii.parameters,$i=Ii.errors,Vi=Ii.useUrlParams,$i&&$i.length>0)return ce(ei,"htmx:validation:halted",Ii),ie(ai),yn(),di;var Sn=ti.split("#"),Yn=Sn[0],$n=Sn[1],Bn=ti;if(Vi){Bn=Yn;var Kn=Object.keys(Mi).length!==0;Kn&&(Bn.indexOf("?")<0?Bn+="?":Bn+="&",Bn+=pr(Mi),$n&&(Bn+="#"+$n))}if(!kr(ei,Bn,Ii))return fe(ei,"htmx:invalidPath",Ii),ie(li),di;if(un.open(ii.toUpperCase(),Bn,!0),un.overrideMimeType("text/html"),un.withCredentials=Ii.withCredentials,un.timeout=Ii.timeout,!zi.noHeaders){for(var Qn in Hi)if(Hi.hasOwnProperty(Qn)){var Cs=Hi[Qn];Lr(un,Qn,Cs)}}var zn={xhr:un,target:vi,requestConfig:Ii,etc:ri,boosted:Ji,select:pi,pathInfo:{requestPath:ti,finalRequestPath:Bn,anchor:$n}};if(un.onload=function(){try{var Wn=Ir(ei);if(zn.pathInfo.responsePath=Ar(un),yi(ei,zn),lr(ps,ms),ce(ei,"htmx:afterRequest",zn),ce(ei,"htmx:afterOnLoad",zn),!se(ei)){for(var _n=null;Wn.length>0&&_n==null;){var Qr=Wn.shift();se(Qr)&&(_n=Qr)}_n&&(ce(_n,"htmx:afterRequest",zn),ce(_n,"htmx:afterOnLoad",zn))}ie(ai),yn()}catch(ls){throw fe(ei,"htmx:onLoadError",le({error:ls},zn)),ls}},un.onerror=function(){lr(ps,ms),fe(ei,"htmx:afterRequest",zn),fe(ei,"htmx:sendError",zn),ie(li),yn()},un.onabort=function(){lr(ps,ms),fe(ei,"htmx:afterRequest",zn),fe(ei,"htmx:sendAbort",zn),ie(li),yn()},un.ontimeout=function(){lr(ps,ms),fe(ei,"htmx:afterRequest",zn),fe(ei,"htmx:timeout",zn),ie(li),yn()},!ce(ei,"htmx:beforeRequest",zn))return ie(ai),yn(),di;var ps=or(ei),ms=sr(ei);oe(["loadstart","loadend","progress","abort"],function(Wn){oe([un,un.upload],function(_n){_n.addEventListener(Wn,function(Qr){ce(ei,"htmx:xhr:"+Wn,{lengthComputable:Qr.lengthComputable,loaded:Qr.loaded,total:Qr.total})})})}),ce(ei,"htmx:beforeSend",zn);var Qs=Vi?null:Er(un,ei,Mi);return un.send(Qs),di}function Pr(ii,ti){var ei=ti.xhr,ni=null,ri=null;if(O(ei,/HX-Push:/i)?(ni=ei.getResponseHeader("HX-Push"),ri="push"):O(ei,/HX-Push-Url:/i)?(ni=ei.getResponseHeader("HX-Push-Url"),ri="push"):O(ei,/HX-Replace-Url:/i)&&(ni=ei.getResponseHeader("HX-Replace-Url"),ri="replace"),ni)return ni==="false"?{}:{type:ri,path:ni};var si=ti.pathInfo.finalRequestPath,ai=ti.pathInfo.responsePath,li=ne(ii,"hx-push-url"),di=ne(ii,"hx-replace-url"),yi=ae(ii).boosted,pi=null,vi=null;return li?(pi="push",vi=li):di?(pi="replace",vi=di):yi&&(pi="push",vi=ai||si),vi?vi==="false"?{}:(vi==="true"&&(vi=ai||si),ti.pathInfo.anchor&&vi.indexOf("#")===-1&&(vi=vi+"#"+ti.pathInfo.anchor),{type:pi,path:vi}):{}}function Mr(ii,ti){var ei=ti.xhr,ni=ti.target,ri=ti.etc,si=ti.requestConfig,ai=ti.select;if(!!ce(ii,"htmx:beforeOnLoad",ti)){if(O(ei,/HX-Trigger:/i)&&_e(ei,"HX-Trigger",ii),O(ei,/HX-Location:/i)){er();var li=ei.getResponseHeader("HX-Location"),di;li.indexOf("{")===0&&(di=E(li),li=di.path,delete di.path),Nr("GET",li,di).then(function(){tr(li)});return}var yi=O(ei,/HX-Refresh:/i)&&ei.getResponseHeader("HX-Refresh")==="true";if(O(ei,/HX-Redirect:/i)){location.href=ei.getResponseHeader("HX-Redirect"),yi&&location.reload();return}if(yi){location.reload();return}O(ei,/HX-Retarget:/i)&&(ei.getResponseHeader("HX-Retarget")==="this"?ti.target=ii:ti.target=ue(ii,ei.getResponseHeader("HX-Retarget")));var pi=Pr(ii,ti),vi=ei.status>=200&&ei.status<400&&ei.status!==204,Ei=ei.response,Si=ei.status>=400,Li=Q.config.ignoreTitle,Ai=le({shouldSwap:vi,serverResponse:Ei,isError:Si,ignoreTitle:Li},ti);if(!!ce(ni,"htmx:beforeSwap",Ai)){if(ni=Ai.target,Ei=Ai.serverResponse,Si=Ai.isError,Li=Ai.ignoreTitle,ti.target=ni,ti.failed=Si,ti.successful=!Si,Ai.shouldSwap){ei.status===286&&at(ii),R(ii,function(pn){Ei=pn.transformResponse(Ei,ei,ii)}),pi.type&&er();var Fi=ri.swapOverride;O(ei,/HX-Reswap:/i)&&(Fi=ei.getResponseHeader("HX-Reswap"));var di=wr(ii,Fi);di.hasOwnProperty("ignoreTitle")&&(Li=di.ignoreTitle),ni.classList.add(Q.config.swappingClass);var en=null,rn=null,ln=function(){try{var pn=document.activeElement,mn={};try{mn={elt:pn,start:pn?pn.selectionStart:null,end:pn?pn.selectionEnd:null}}catch(Pi){}var vn;ai&&(vn=ai),O(ei,/HX-Reselect:/i)&&(vn=ei.getResponseHeader("HX-Reselect")),pi.type&&(ce(re().body,"htmx:beforeHistoryUpdate",le({history:pi},ti)),pi.type==="push"?(tr(pi.path),ce(re().body,"htmx:pushedIntoHistory",{path:pi.path})):(rr(pi.path),ce(re().body,"htmx:replacedInHistory",{path:pi.path})));var un=T(ni);if(je(di.swapStyle,ni,ii,Ei,un,vn),mn.elt&&!se(mn.elt)&&ee(mn.elt,"id")){var yn=document.getElementById(ee(mn.elt,"id")),Cn={preventScroll:di.focusScroll!==void 0?!di.focusScroll:!Q.config.defaultFocusScroll};if(yn){if(mn.start&&yn.setSelectionRange)try{yn.setSelectionRange(mn.start,mn.end)}catch(Pi){}yn.focus(Cn)}}if(ni.classList.remove(Q.config.swappingClass),oe(un.elts,function(Pi){Pi.classList&&Pi.classList.add(Q.config.settlingClass),ce(Pi,"htmx:afterSwap",ti)}),O(ei,/HX-Trigger-After-Swap:/i)){var Ni=ii;se(ii)||(Ni=re().body),_e(ei,"HX-Trigger-After-Swap",Ni)}var Hi=function(){if(oe(un.tasks,function(tn){tn.call()}),oe(un.elts,function(tn){tn.classList&&tn.classList.remove(Q.config.settlingClass),ce(tn,"htmx:afterSettle",ti)}),ti.pathInfo.anchor){var Pi=re().getElementById(ti.pathInfo.anchor);Pi&&Pi.scrollIntoView({block:"start",behavior:"auto"})}if(un.title&&!Li){var $i=C("title");$i?$i.innerHTML=un.title:window.document.title=un.title}if(Cr(un.elts,di),O(ei,/HX-Trigger-After-Settle:/i)){var gn=ii;se(ii)||(gn=re().body),_e(ei,"HX-Trigger-After-Settle",gn)}ie(en)};di.settleDelay>0?setTimeout(Hi,di.settleDelay):Hi()}catch(Pi){throw fe(ii,"htmx:swapError",ti),ie(rn),Pi}},Yi=Q.config.globalViewTransitions;if(di.hasOwnProperty("transition")&&(Yi=di.transition),Yi&&ce(ii,"htmx:beforeTransition",ti)&&typeof Promise!="undefined"&&document.startViewTransition){var sn=new Promise(function(pn,mn){en=pn,rn=mn}),on=ln;ln=function(){document.startViewTransition(function(){return on(),sn})}}di.swapDelay>0?setTimeout(ln,di.swapDelay):ln()}Si&&fe(ii,"htmx:responseError",le({error:"Response Status Error Code "+ei.status+" from "+ti.pathInfo.requestPath},ti))}}}var Xr={};function Dr(){return{init:function(ii){return null},onEvent:function(ii,ti){return!0},transformResponse:function(ii,ti,ei){return ii},isInlineSwap:function(ii){return!1},handleSwap:function(ii,ti,ei,ni){return!1},encodeParameters:function(ii,ti,ei){return null}}}function Ur(ii,ti){ti.init&&ti.init(r),Xr[ii]=le(Dr(),ti)}function Br(ii){delete Xr[ii]}function Fr(ii,ti,ei){if(ii==null)return ti;ti==null&&(ti=[]),ei==null&&(ei=[]);var ni=te(ii,"hx-ext");return ni&&oe(ni.split(","),function(ri){if(ri=ri.replace(/ /g,""),ri.slice(0,7)=="ignore:"){ei.push(ri.slice(7));return}if(ei.indexOf(ri)<0){var si=Xr[ri];si&&ti.indexOf(si)<0&&ti.push(si)}}),Fr(u(ii),ti,ei)}var Vr=!1;re().addEventListener("DOMContentLoaded",function(){Vr=!0});function jr(ii){Vr||re().readyState==="complete"?ii():re().addEventListener("DOMContentLoaded",ii)}function _r(){Q.config.includeIndicatorStyles!==!1&&re().head.insertAdjacentHTML("beforeend","")}function zr(){var ii=re().querySelector('meta[name="htmx-config"]');return ii?E(ii.content):null}function $r(){var ii=zr();ii&&(Q.config=le(Q.config,ii))}return jr(function(){$r(),_r();var ii=re().body;zt(ii);var ti=re().querySelectorAll("[hx-trigger='restored'],[data-hx-trigger='restored']");ii.addEventListener("htmx:abort",function(ni){var ri=ni.target,si=ae(ri);si&&si.xhr&&si.xhr.abort()});let ei=window.onpopstate?window.onpopstate.bind(window):null;window.onpopstate=function(ni){ni.state&&ni.state.htmx?(ar(),oe(ti,function(ri){ce(ri,"htmx:restored",{document:re(),triggerEvent:ce})})):ei&&ei(ni)},setTimeout(function(){ce(ii,"htmx:load",{}),ii=null},0)}),Q}()})});var _l=Ga((Rc,Pc)=>{(function(ii,ti){typeof Rc=="object"&&typeof Pc!="undefined"?Pc.exports=ti():typeof define=="function"&&define.amd?define(ti):(ii=typeof globalThis!="undefined"?globalThis:ii||self,ii.TomSelect=ti())})(Rc,function(){"use strict";function ii(fi,oi){fi.split(/\s+/).forEach(ci=>{oi(ci)})}class ti{constructor(){this._events=void 0,this._events={}}on(oi,ci){ii(oi,ui=>{let mi=this._events[ui]||[];mi.push(ci),this._events[ui]=mi})}off(oi,ci){var ui=arguments.length;if(ui===0){this._events={};return}ii(oi,mi=>{if(ui===1){delete this._events[mi];return}let bi=this._events[mi];bi!==void 0&&(bi.splice(bi.indexOf(ci),1),this._events[mi]=bi)})}trigger(oi,...ci){var ui=this;ii(oi,mi=>{let bi=ui._events[mi];bi!==void 0&&bi.forEach(_i=>{_i.apply(ui,ci)})})}}function ei(fi){return fi.plugins={},class extends fi{constructor(...oi){super(...oi);this.plugins={names:[],settings:{},requested:{},loaded:{}}}static define(oi,ci){fi.plugins[oi]={name:oi,fn:ci}}initializePlugins(oi){var ci,ui;let mi=this,bi=[];if(Array.isArray(oi))oi.forEach(_i=>{typeof _i=="string"?bi.push(_i):(mi.plugins.settings[_i.name]=_i.options,bi.push(_i.name))});else if(oi)for(ci in oi)oi.hasOwnProperty(ci)&&(mi.plugins.settings[ci]=oi[ci],bi.push(ci));for(;ui=bi.shift();)mi.require(ui)}loadPlugin(oi){var ci=this,ui=ci.plugins,mi=fi.plugins[oi];if(!fi.plugins.hasOwnProperty(oi))throw new Error('Unable to find "'+oi+'" plugin');ui.requested[oi]=!0,ui.loaded[oi]=mi.fn.apply(ci,[ci.plugins.settings[oi]||{}]),ui.names.push(oi)}require(oi){var ci=this,ui=ci.plugins;if(!ci.plugins.loaded.hasOwnProperty(oi)){if(ui.requested[oi])throw new Error('Plugin has circular dependency ("'+oi+'")');ci.loadPlugin(oi)}return ui.loaded[oi]}}}let ni=fi=>(fi=fi.filter(Boolean),fi.length<2?fi[0]||"":di(fi)==1?"["+fi.join("")+"]":"(?:"+fi.join("|")+")"),ri=fi=>{if(!ai(fi))return fi.join("");let oi="",ci=0,ui=()=>{ci>1&&(oi+="{"+ci+"}")};return fi.forEach((mi,bi)=>{if(mi===fi[bi-1]){ci++;return}ui(),oi+=mi,ci=1}),ui(),oi},si=fi=>{let oi=pi(fi);return ni(oi)},ai=fi=>new Set(fi).size!==fi.length,li=fi=>(fi+"").replace(/([\$\(\)\*\+\.\?\[\]\^\{\|\}\\])/gu,"\\$1"),di=fi=>fi.reduce((oi,ci)=>Math.max(oi,yi(ci)),0),yi=fi=>pi(fi).length,pi=fi=>Array.from(fi);let vi=fi=>{if(fi.length===1)return[[fi]];let oi=[],ci=fi.substring(1);return vi(ci).forEach(function(mi){let bi=mi.slice(0);bi[0]=fi.charAt(0)+bi[0],oi.push(bi),bi=mi.slice(0),bi.unshift(fi.charAt(0)),oi.push(bi)}),oi};let Ei=[[0,65535]],Si="[\u0300-\u036F\xB7\u02BE\u02BC]",Li,Ai,Fi=3,en={},rn={"/":"\u2044\u2215","0":"\u07C0",a:"\u2C65\u0250\u0251",aa:"\uA733",ae:"\xE6\u01FD\u01E3",ao:"\uA735",au:"\uA737",av:"\uA739\uA73B",ay:"\uA73D",b:"\u0180\u0253\u0183",c:"\uA73F\u0188\u023C\u2184",d:"\u0111\u0257\u0256\u1D05\u018C\uABB7\u0501\u0266",e:"\u025B\u01DD\u1D07\u0247",f:"\uA77C\u0192",g:"\u01E5\u0260\uA7A1\u1D79\uA77F\u0262",h:"\u0127\u2C68\u2C76\u0265",i:"\u0268\u0131",j:"\u0249\u0237",k:"\u0199\u2C6A\uA741\uA743\uA745\uA7A3",l:"\u0142\u019A\u026B\u2C61\uA749\uA747\uA781\u026D",m:"\u0271\u026F\u03FB",n:"\uA7A5\u019E\u0272\uA791\u1D0E\u043B\u0509",o:"\xF8\u01FF\u0254\u0275\uA74B\uA74D\u1D11",oe:"\u0153",oi:"\u01A3",oo:"\uA74F",ou:"\u0223",p:"\u01A5\u1D7D\uA751\uA753\uA755\u03C1",q:"\uA757\uA759\u024B",r:"\u024D\u027D\uA75B\uA7A7\uA783",s:"\xDF\u023F\uA7A9\uA785\u0282",t:"\u0167\u01AD\u0288\u2C66\uA787",th:"\xFE",tz:"\uA729",u:"\u0289",v:"\u028B\uA75F\u028C",vy:"\uA761",w:"\u2C73",y:"\u01B4\u024F\u1EFF",z:"\u01B6\u0225\u0240\u2C6C\uA763",hv:"\u0195"};for(let fi in rn){let oi=rn[fi]||"";for(let ci=0;ci{Li===void 0&&(Li=vn(fi||Ei))},sn=(fi,oi="NFKD")=>fi.normalize(oi),on=fi=>pi(fi).reduce((oi,ci)=>oi+En(ci),""),En=fi=>(fi=sn(fi).toLowerCase().replace(ln,oi=>en[oi]||""),sn(fi,"NFC"));function*pn(fi){for(let[oi,ci]of fi)for(let ui=oi;ui<=ci;ui++){let mi=String.fromCharCode(ui),bi=on(mi);bi!=mi.toLowerCase()&&(bi.length>Fi||bi.length!=0&&(yield{folded:bi,composed:mi,code_point:ui}))}}let mn=fi=>{let oi={},ci=(ui,mi)=>{let bi=oi[ui]||new Set,_i=new RegExp("^"+si(bi)+"$","iu");mi.match(_i)||(bi.add(li(mi)),oi[ui]=bi)};for(let ui of pn(fi))ci(ui.folded,ui.folded),ci(ui.folded,ui.composed);return oi},vn=fi=>{let oi=mn(fi),ci={},ui=[];for(let bi in oi){let _i=oi[bi];_i&&(ci[bi]=si(_i)),bi.length>1&&ui.push(li(bi))}ui.sort((bi,_i)=>_i.length-bi.length);let mi=ni(ui);return Ai=new RegExp("^"+mi,"u"),ci},un=(fi,oi=1)=>{let ci=0;return fi=fi.map(ui=>(Li[ui]&&(ci+=ui.length),Li[ui]||ui)),ci>=oi?ri(fi):""},yn=(fi,oi=1)=>(oi=Math.max(oi,fi.length-1),ni(vi(fi).map(ci=>un(ci,oi)))),Cn=(fi,oi=!0)=>{let ci=fi.length>1?1:0;return ni(fi.map(ui=>{let mi=[],bi=oi?ui.length():ui.length()-1;for(let _i=0;_i{for(let ci of oi){if(ci.start!=fi.start||ci.end!=fi.end||ci.substrs.join("")!==fi.substrs.join(""))continue;let ui=fi.parts,mi=_i=>{for(let Ci of ui){if(Ci.start===_i.start&&Ci.substr===_i.substr)return!1;if(!(_i.length==1||Ci.length==1)&&(_i.startCi.start||Ci.start<_i.start&&Ci.end>_i.start))return!0}return!1};if(!(ci.parts.filter(mi).length>0))return!0}return!1};class Hi{constructor(){this.parts=[],this.substrs=[],this.start=0,this.end=0}add(oi){oi&&(this.parts.push(oi),this.substrs.push(oi.substr),this.start=Math.min(oi.start,this.start),this.end=Math.max(oi.end,this.end))}last(){return this.parts[this.parts.length-1]}length(){return this.parts.length}clone(oi,ci){let ui=new Hi,mi=JSON.parse(JSON.stringify(this.parts)),bi=mi.pop();for(let Di of mi)ui.add(Di);let _i=ci.substr.substring(0,oi-bi.start),Ci=_i.length;return ui.add({start:bi.start,end:bi.start+Ci,length:Ci,substr:_i}),ui}}let Pi=fi=>{Yi(),fi=on(fi);let oi="",ci=[new Hi];for(let ui=0;ui0){Di=Di.sort((Wi,ji)=>Wi.length()-ji.length());for(let Wi of Di)Ni(Wi,ci)||ci.push(Wi);continue}if(ui>0&&Oi.size==1&&!Oi.has("3")){oi+=Cn(ci,!1);let Wi=new Hi,ji=ci[0];ji&&Wi.add(ji.last()),ci=[Wi]}}return oi+=Cn(ci,!0),oi};let $i=(fi,oi)=>{if(!!fi)return fi[oi]},gn=(fi,oi)=>{if(!!fi){for(var ci,ui=oi.split(".");(ci=ui.shift())&&(fi=fi[ci]););return fi}},tn=(fi,oi,ci)=>{var ui,mi;return!fi||(fi=fi+"",oi.regex==null)||(mi=fi.search(oi.regex),mi===-1)?0:(ui=oi.string.length/fi.length,mi===0&&(ui+=.5),ui*ci)},Bi=(fi,oi)=>{var ci=fi[oi];if(typeof ci=="function")return ci;ci&&!Array.isArray(ci)&&(fi[oi]=[ci])},Mi=(fi,oi)=>{if(Array.isArray(fi))fi.forEach(oi);else for(var ci in fi)fi.hasOwnProperty(ci)&&oi(fi[ci],ci)},zi=(fi,oi)=>typeof fi=="number"&&typeof oi=="number"?fi>oi?1:fioi?1:oi>fi?-1:0);class Ji{constructor(oi,ci){this.items=void 0,this.settings=void 0,this.items=oi,this.settings=ci||{diacritics:!0}}tokenize(oi,ci,ui){if(!oi||!oi.length)return[];let mi=[],bi=oi.split(/\s+/);var _i;return ui&&(_i=new RegExp("^("+Object.keys(ui).map(li).join("|")+"):(.*)$")),bi.forEach(Ci=>{let Di,Oi=null,Wi=null;_i&&(Di=Ci.match(_i))&&(Oi=Di[1],Ci=Di[2]),Ci.length>0&&(this.settings.diacritics?Wi=Pi(Ci)||null:Wi=li(Ci),Wi&&ci&&(Wi="\\b"+Wi)),mi.push({string:Ci,regex:Wi?new RegExp(Wi,"iu"):null,field:Oi})}),mi}getScoreFunction(oi,ci){var ui=this.prepareSearch(oi,ci);return this._getScoreFunction(ui)}_getScoreFunction(oi){let ci=oi.tokens,ui=ci.length;if(!ui)return function(){return 0};let mi=oi.options.fields,bi=oi.weights,_i=mi.length,Ci=oi.getAttrFn;if(!_i)return function(){return 1};let Di=function(){return _i===1?function(Oi,Wi){let ji=mi[0].field;return tn(Ci(Wi,ji),Oi,bi[ji]||1)}:function(Oi,Wi){var ji=0;if(Oi.field){let Zi=Ci(Wi,Oi.field);!Oi.regex&&Zi?ji+=1/_i:ji+=tn(Zi,Oi,1)}else Mi(bi,(Zi,Rn)=>{ji+=tn(Ci(Wi,Rn),Oi,Zi)});return ji/_i}}();return ui===1?function(Oi){return Di(ci[0],Oi)}:oi.options.conjunction==="and"?function(Oi){var Wi,ji=0;for(let Zi of ci){if(Wi=Di(Zi,Oi),Wi<=0)return 0;ji+=Wi}return ji/ui}:function(Oi){var Wi=0;return Mi(ci,ji=>{Wi+=Di(ji,Oi)}),Wi/ui}}getSortFunction(oi,ci){var ui=this.prepareSearch(oi,ci);return this._getSortFunction(ui)}_getSortFunction(oi){var ci,ui=[];let mi=this,bi=oi.options,_i=!oi.query&&bi.sort_empty?bi.sort_empty:bi.sort;if(typeof _i=="function")return _i.bind(this);let Ci=function(Wi,ji){return Wi==="$score"?ji.score:oi.getAttrFn(mi.items[ji.id],Wi)};if(_i)for(let Oi of _i)(oi.query||Oi.field!=="$score")&&ui.push(Oi);if(oi.query){ci=!0;for(let Oi of ui)if(Oi.field==="$score"){ci=!1;break}ci&&ui.unshift({field:"$score",direction:"desc"})}else ui=ui.filter(Oi=>Oi.field!=="$score");return ui.length?function(Oi,Wi){var ji,Zi;for(let Rn of ui)if(Zi=Rn.field,ji=(Rn.direction==="desc"?-1:1)*zi(Ci(Zi,Oi),Ci(Zi,Wi)),ji)return ji;return 0}:null}prepareSearch(oi,ci){let ui={};var mi=Object.assign({},ci);if(Bi(mi,"sort"),Bi(mi,"sort_empty"),mi.fields){Bi(mi,"fields");let bi=[];mi.fields.forEach(_i=>{typeof _i=="string"&&(_i={field:_i,weight:1}),bi.push(_i),ui[_i.field]="weight"in _i?_i.weight:1}),mi.fields=bi}return{options:mi,query:oi.toLowerCase().trim(),tokens:this.tokenize(oi,mi.respect_word_boundaries,ui),total:0,items:[],weights:ui,getAttrFn:mi.nesting?gn:$i}}search(oi,ci){var ui=this,mi,bi;bi=this.prepareSearch(oi,ci),ci=bi.options,oi=bi.query;let _i=ci.score||ui._getScoreFunction(bi);oi.length?Mi(ui.items,(Di,Oi)=>{mi=_i(Di),(ci.filter===!1||mi>0)&&bi.items.push({score:mi,id:Oi})}):Mi(ui.items,(Di,Oi)=>{bi.items.push({score:1,id:Oi})});let Ci=ui._getSortFunction(bi);return Ci&&bi.items.sort(Ci),bi.total=bi.items.length,typeof ci.limit=="number"&&(bi.items=bi.items.slice(0,ci.limit)),bi}}let Vi=(fi,oi)=>{if(Array.isArray(fi))fi.forEach(oi);else for(var ci in fi)fi.hasOwnProperty(ci)&&oi(fi[ci],ci)},Ii=fi=>{if(fi.jquery)return fi[0];if(fi instanceof HTMLElement)return fi;if(Sn(fi)){var oi=document.createElement("template");return oi.innerHTML=fi.trim(),oi.content.firstChild}return document.querySelector(fi)},Sn=fi=>typeof fi=="string"&&fi.indexOf("<")>-1,Yn=fi=>fi.replace(/['"\\]/g,"\\$&"),$n=(fi,oi)=>{var ci=document.createEvent("HTMLEvents");ci.initEvent(oi,!0,!1),fi.dispatchEvent(ci)},Bn=(fi,oi)=>{Object.assign(fi.style,oi)},Kn=(fi,...oi)=>{var ci=Cs(oi);fi=zn(fi),fi.map(ui=>{ci.map(mi=>{ui.classList.add(mi)})})},Qn=(fi,...oi)=>{var ci=Cs(oi);fi=zn(fi),fi.map(ui=>{ci.map(mi=>{ui.classList.remove(mi)})})},Cs=fi=>{var oi=[];return Vi(fi,ci=>{typeof ci=="string"&&(ci=ci.trim().split(/[\11\12\14\15\40]/)),Array.isArray(ci)&&(oi=oi.concat(ci))}),oi.filter(Boolean)},zn=fi=>(Array.isArray(fi)||(fi=[fi]),fi),ps=(fi,oi,ci)=>{if(!(ci&&!ci.contains(fi)))for(;fi&&fi.matches;){if(fi.matches(oi))return fi;fi=fi.parentNode}},ms=(fi,oi=0)=>oi>0?fi[fi.length-1]:fi[0],Qs=fi=>Object.keys(fi).length===0,Wn=(fi,oi)=>{if(!fi)return-1;oi=oi||fi.nodeName;for(var ci=0;fi=fi.previousElementSibling;)fi.matches(oi)&&ci++;return ci},_n=(fi,oi)=>{Vi(oi,(ci,ui)=>{ci==null?fi.removeAttribute(ui):fi.setAttribute(ui,""+ci)})},Qr=(fi,oi)=>{fi.parentNode&&fi.parentNode.replaceChild(oi,fi)},ls=(fi,oi)=>{if(oi===null)return;if(typeof oi=="string"){if(!oi.length)return;oi=new RegExp(oi,"i")}let ci=bi=>{var _i=bi.data.match(oi);if(_i&&bi.data.length>0){var Ci=document.createElement("span");Ci.className="highlight";var Di=bi.splitText(_i.index);Di.splitText(_i[0].length);var Oi=Di.cloneNode(!0);return Ci.appendChild(Oi),Qr(Di,Ci),1}return 0},ui=bi=>{bi.nodeType===1&&bi.childNodes&&!/(script|style)/i.test(bi.tagName)&&(bi.className!=="highlight"||bi.tagName!=="SPAN")&&Array.from(bi.childNodes).forEach(_i=>{mi(_i)})},mi=bi=>bi.nodeType===3?ci(bi):(ui(bi),0);mi(fi)},Xs=fi=>{var oi=fi.querySelectorAll("span.highlight");Array.prototype.forEach.call(oi,function(ci){var ui=ci.parentNode;ui.replaceChild(ci.firstChild,ci),ui.normalize()})},mo=65,Js=13,Fs=27,Ss=37,Po=38,Zs=39,Ho=40,ga=8,$l=46,va=9,Fo=(typeof navigator=="undefined"?!1:/Mac/.test(navigator.userAgent))?"metaKey":"ctrlKey";var Wa={options:[],optgroups:[],plugins:[],delimiter:",",splitOn:null,persist:!0,diacritics:!0,create:null,createOnBlur:!1,createFilter:null,highlight:!0,openOnFocus:!0,shouldOpen:null,maxOptions:50,maxItems:null,hideSelected:null,duplicates:!1,addPrecedence:!1,selectOnTab:!1,preload:null,allowEmptyOption:!1,refreshThrottle:300,loadThrottle:300,loadingClass:"loading",dataAttr:null,optgroupField:"optgroup",valueField:"value",labelField:"text",disabledField:"disabled",optgroupLabelField:"label",optgroupValueField:"value",lockOptgroupOrder:!1,sortField:"$order",searchField:["text"],searchConjunction:"and",mode:null,wrapperClass:"ts-wrapper",controlClass:"ts-control",dropdownClass:"ts-dropdown",dropdownContentClass:"ts-dropdown-content",itemClass:"item",optionClass:"option",dropdownParent:null,controlInput:'',copyClassesToDropdown:!1,placeholder:null,hidePlaceholder:null,shouldLoad:function(fi){return fi.length>0},render:{}};let xn=fi=>typeof fi=="undefined"||fi===null?null:eo(fi),eo=fi=>typeof fi=="boolean"?fi?"1":"0":fi+"",to=fi=>(fi+"").replace(/&/g,"&").replace(//g,">").replace(/"/g,"""),Bl=(fi,oi)=>oi>0?setTimeout(fi,oi):(fi.call(null),null),$o=(fi,oi)=>{var ci;return function(ui,mi){var bi=this;ci&&(bi.loading=Math.max(bi.loading-1,0),clearTimeout(ci)),ci=setTimeout(function(){ci=null,bi.loadedSearches[ui]=!0,fi.call(bi,ui,mi)},oi)}},jo=(fi,oi,ci)=>{var ui,mi=fi.trigger,bi={};fi.trigger=function(){var _i=arguments[0];if(oi.indexOf(_i)!==-1)bi[_i]=arguments;else return mi.apply(fi,arguments)},ci.apply(fi,[]),fi.trigger=mi;for(ui of oi)ui in bi&&mi.apply(fi,bi[ui])},As=fi=>({start:fi.selectionStart||0,length:(fi.selectionEnd||0)-(fi.selectionStart||0)}),Dn=(fi,oi=!1)=>{fi&&(fi.preventDefault(),oi&&fi.stopPropagation())},Ln=(fi,oi,ci,ui)=>{fi.addEventListener(oi,ci,ui)},hi=(fi,oi)=>{if(!oi||!oi[fi])return!1;var ci=(oi.altKey?1:0)+(oi.ctrlKey?1:0)+(oi.shiftKey?1:0)+(oi.metaKey?1:0);return ci===1},gi=(fi,oi)=>{let ci=fi.getAttribute("id");return ci||(fi.setAttribute("id",oi),oi)},wi=fi=>fi.replace(/[\\"']/g,"\\$&"),Ti=(fi,oi)=>{oi&&fi.append(oi)};function Ri(fi,oi){var ci=Object.assign({},Wa,oi),ui=ci.dataAttr,mi=ci.labelField,bi=ci.valueField,_i=ci.disabledField,Ci=ci.optgroupField,Di=ci.optgroupLabelField,Oi=ci.optgroupValueField,Wi=fi.tagName.toLowerCase(),ji=fi.getAttribute("placeholder")||fi.getAttribute("data-placeholder");if(!ji&&!ci.allowEmptyOption){let An=fi.querySelector('option[value=""]');An&&(ji=An.textContent)}var Zi={placeholder:ji,options:[],optgroups:[],items:[],maxItems:null},Rn=()=>{var An,Hn=Zi.options,Nn={},dn=1;let Vn=0;var ks=Tn=>{var Mn=Object.assign({},Tn.dataset),wn=ui&&Mn[ui];return typeof wn=="string"&&wn.length&&(Mn=Object.assign(Mn,JSON.parse(wn))),Mn},Ua=(Tn,Mn)=>{var wn=xn(Tn.value);if(wn!=null&&!(!wn&&!ci.allowEmptyOption)){if(Nn.hasOwnProperty(wn)){if(Mn){var es=Nn[wn][Ci];es?Array.isArray(es)?es.push(Mn):Nn[wn][Ci]=[es,Mn]:Nn[wn][Ci]=Mn}}else{var In=ks(Tn);In[mi]=In[mi]||Tn.textContent,In[bi]=In[bi]||wn,In[_i]=In[_i]||Tn.disabled,In[Ci]=In[Ci]||Mn,In.$option=Tn,In.$order=In.$order||++Vn,Nn[wn]=In,Hn.push(In)}Tn.selected&&Zi.items.push(wn)}},Bo=Tn=>{var Mn,wn;wn=ks(Tn),wn[Di]=wn[Di]||Tn.getAttribute("label")||"",wn[Oi]=wn[Oi]||dn++,wn[_i]=wn[_i]||Tn.disabled,wn.$order=wn.$order||++Vn,Zi.optgroups.push(wn),Mn=wn[Oi],Vi(Tn.children,es=>{Ua(es,Mn)})};Zi.maxItems=fi.hasAttribute("multiple")?null:1,Vi(fi.children,Tn=>{An=Tn.tagName.toLowerCase(),An==="optgroup"?Bo(Tn):An==="option"&&Ua(Tn)})},Qi=()=>{let An=fi.getAttribute(ui);if(An)Zi.options=JSON.parse(An),Vi(Zi.options,Nn=>{Zi.items.push(Nn[bi])});else{var Hn=fi.value.trim()||"";if(!ci.allowEmptyOption&&!Hn.length)return;let Nn=Hn.split(ci.delimiter);Vi(Nn,dn=>{let Vn={};Vn[mi]=dn,Vn[bi]=dn,Zi.options.push(Vn)}),Zi.items=Nn}};return Wi==="select"?Rn():Qi(),Object.assign({},Wa,Zi,oi)}var qi=0;class nn extends ei(ti){constructor(oi,ci){super();this.control_input=void 0,this.wrapper=void 0,this.dropdown=void 0,this.control=void 0,this.dropdown_content=void 0,this.focus_node=void 0,this.order=0,this.settings=void 0,this.input=void 0,this.tabIndex=void 0,this.is_select_tag=void 0,this.rtl=void 0,this.inputId=void 0,this._destroy=void 0,this.sifter=void 0,this.isOpen=!1,this.isDisabled=!1,this.isReadOnly=!1,this.isRequired=void 0,this.isInvalid=!1,this.isValid=!0,this.isLocked=!1,this.isFocused=!1,this.isInputHidden=!1,this.isSetup=!1,this.ignoreFocus=!1,this.ignoreHover=!1,this.hasOptions=!1,this.currentResults=void 0,this.lastValue="",this.caretPos=0,this.loading=0,this.loadedSearches={},this.activeOption=null,this.activeItems=[],this.optgroups={},this.options={},this.userOptions={},this.items=[],this.refreshTimeout=null,qi++;var ui,mi=Ii(oi);if(mi.tomselect)throw new Error("Tom Select already initialized on this element");mi.tomselect=this;var bi=window.getComputedStyle&&window.getComputedStyle(mi,null);ui=bi.getPropertyValue("direction");let _i=Ri(mi,ci);this.settings=_i,this.input=mi,this.tabIndex=mi.tabIndex||0,this.is_select_tag=mi.tagName.toLowerCase()==="select",this.rtl=/rtl/i.test(ui),this.inputId=gi(mi,"tomselect-"+qi),this.isRequired=mi.required,this.sifter=new Ji(this.options,{diacritics:_i.diacritics}),_i.mode=_i.mode||(_i.maxItems===1?"single":"multi"),typeof _i.hideSelected!="boolean"&&(_i.hideSelected=_i.mode==="multi"),typeof _i.hidePlaceholder!="boolean"&&(_i.hidePlaceholder=_i.mode!=="multi");var Ci=_i.createFilter;typeof Ci!="function"&&(typeof Ci=="string"&&(Ci=new RegExp(Ci)),Ci instanceof RegExp?_i.createFilter=Hn=>Ci.test(Hn):_i.createFilter=Hn=>this.settings.duplicates||!this.options[Hn]),this.initializePlugins(_i.plugins),this.setupCallbacks(),this.setupTemplates();let Di=Ii("
"),Oi=Ii("
"),Wi=this._render("dropdown"),ji=Ii('
'),Zi=this.input.getAttribute("class")||"",Rn=_i.mode;var Qi;if(Kn(Di,_i.wrapperClass,Zi,Rn),Kn(Oi,_i.controlClass),Ti(Di,Oi),Kn(Wi,_i.dropdownClass,Rn),_i.copyClassesToDropdown&&Kn(Wi,Zi),Kn(ji,_i.dropdownContentClass),Ti(Wi,ji),Ii(_i.dropdownParent||Di).appendChild(Wi),Sn(_i.controlInput)){Qi=Ii(_i.controlInput);var An=["autocorrect","autocapitalize","autocomplete","spellcheck"];Mi(An,Hn=>{mi.getAttribute(Hn)&&_n(Qi,{[Hn]:mi.getAttribute(Hn)})}),Qi.tabIndex=-1,Oi.appendChild(Qi),this.focus_node=Qi}else _i.controlInput?(Qi=Ii(_i.controlInput),this.focus_node=Qi):(Qi=Ii(""),this.focus_node=Oi);this.wrapper=Di,this.dropdown=Wi,this.dropdown_content=ji,this.control=Oi,this.control_input=Qi,this.setup()}setup(){let oi=this,ci=oi.settings,ui=oi.control_input,mi=oi.dropdown,bi=oi.dropdown_content,_i=oi.wrapper,Ci=oi.control,Di=oi.input,Oi=oi.focus_node,Wi={passive:!0},ji=oi.inputId+"-ts-dropdown";_n(bi,{id:ji}),_n(Oi,{role:"combobox","aria-haspopup":"listbox","aria-expanded":"false","aria-controls":ji});let Zi=gi(Oi,oi.inputId+"-ts-control"),Rn="label[for='"+Yn(oi.inputId)+"']",Qi=document.querySelector(Rn),An=oi.focus.bind(oi);if(Qi){Ln(Qi,"click",An),_n(Qi,{for:Zi});let dn=gi(Qi,oi.inputId+"-ts-label");_n(Oi,{"aria-labelledby":dn}),_n(bi,{"aria-labelledby":dn})}if(_i.style.width=Di.style.width,oi.plugins.names.length){let dn="plugin-"+oi.plugins.names.join(" plugin-");Kn([_i,mi],dn)}(ci.maxItems===null||ci.maxItems>1)&&oi.is_select_tag&&_n(Di,{multiple:"multiple"}),ci.placeholder&&_n(ui,{placeholder:ci.placeholder}),!ci.splitOn&&ci.delimiter&&(ci.splitOn=new RegExp("\\s*"+li(ci.delimiter)+"+\\s*")),ci.load&&ci.loadThrottle&&(ci.load=$o(ci.load,ci.loadThrottle)),Ln(mi,"mousemove",()=>{oi.ignoreHover=!1}),Ln(mi,"mouseenter",dn=>{var Vn=ps(dn.target,"[data-selectable]",mi);Vn&&oi.onOptionHover(dn,Vn)},{capture:!0}),Ln(mi,"click",dn=>{let Vn=ps(dn.target,"[data-selectable]");Vn&&(oi.onOptionSelect(dn,Vn),Dn(dn,!0))}),Ln(Ci,"click",dn=>{var Vn=ps(dn.target,"[data-ts-item]",Ci);if(Vn&&oi.onItemSelect(dn,Vn)){Dn(dn,!0);return}ui.value==""&&(oi.onClick(),Dn(dn,!0))}),Ln(Oi,"keydown",dn=>oi.onKeyDown(dn)),Ln(ui,"keypress",dn=>oi.onKeyPress(dn)),Ln(ui,"input",dn=>oi.onInput(dn)),Ln(Oi,"blur",dn=>oi.onBlur(dn)),Ln(Oi,"focus",dn=>oi.onFocus(dn)),Ln(ui,"paste",dn=>oi.onPaste(dn));let Hn=dn=>{let Vn=dn.composedPath()[0];if(!_i.contains(Vn)&&!mi.contains(Vn)){oi.isFocused&&oi.blur(),oi.inputState();return}Vn==ui&&oi.isOpen?dn.stopPropagation():Dn(dn,!0)},Nn=()=>{oi.isOpen&&oi.positionDropdown()};Ln(document,"mousedown",Hn),Ln(window,"scroll",Nn,Wi),Ln(window,"resize",Nn,Wi),this._destroy=()=>{document.removeEventListener("mousedown",Hn),window.removeEventListener("scroll",Nn),window.removeEventListener("resize",Nn),Qi&&Qi.removeEventListener("click",An)},this.revertSettings={innerHTML:Di.innerHTML,tabIndex:Di.tabIndex},Di.tabIndex=-1,Di.insertAdjacentElement("afterend",oi.wrapper),oi.sync(!1),ci.items=[],delete ci.optgroups,delete ci.options,Ln(Di,"invalid",()=>{oi.isValid&&(oi.isValid=!1,oi.isInvalid=!0,oi.refreshState())}),oi.updateOriginalInput(),oi.refreshItems(),oi.close(!1),oi.inputState(),oi.isSetup=!0,Di.disabled?oi.disable():Di.readOnly?oi.setReadOnly(!0):oi.enable(),oi.on("change",this.onChange),Kn(Di,"tomselected","ts-hidden-accessible"),oi.trigger("initialize"),ci.preload===!0&&oi.preload()}setupOptions(oi=[],ci=[]){this.addOptions(oi),Mi(ci,ui=>{this.registerOptionGroup(ui)})}setupTemplates(){var oi=this,ci=oi.settings.labelField,ui=oi.settings.optgroupLabelField,mi={optgroup:bi=>{let _i=document.createElement("div");return _i.className="optgroup",_i.appendChild(bi.options),_i},optgroup_header:(bi,_i)=>'
'+_i(bi[ui])+"
",option:(bi,_i)=>"
"+_i(bi[ci])+"
",item:(bi,_i)=>"
"+_i(bi[ci])+"
",option_create:(bi,_i)=>'
Add '+_i(bi.input)+"
",no_results:()=>'
No results found
',loading:()=>'
',not_loading:()=>{},dropdown:()=>"
"};oi.settings.render=Object.assign({},mi,oi.settings.render)}setupCallbacks(){var oi,ci,ui={initialize:"onInitialize",change:"onChange",item_add:"onItemAdd",item_remove:"onItemRemove",item_select:"onItemSelect",clear:"onClear",option_add:"onOptionAdd",option_remove:"onOptionRemove",option_clear:"onOptionClear",optgroup_add:"onOptionGroupAdd",optgroup_remove:"onOptionGroupRemove",optgroup_clear:"onOptionGroupClear",dropdown_open:"onDropdownOpen",dropdown_close:"onDropdownClose",type:"onType",load:"onLoad",focus:"onFocus",blur:"onBlur"};for(oi in ui)ci=this.settings[ui[oi]],ci&&this.on(oi,ci)}sync(oi=!0){let ci=this,ui=oi?Ri(ci.input,{delimiter:ci.settings.delimiter}):ci.settings;ci.setupOptions(ui.options,ui.optgroups),ci.setValue(ui.items||[],!0),ci.lastQuery=null}onClick(){var oi=this;if(oi.activeItems.length>0){oi.clearActiveItems(),oi.focus();return}oi.isFocused&&oi.isOpen?oi.blur():oi.focus()}onMouseDown(){}onChange(){$n(this.input,"input"),$n(this.input,"change")}onPaste(oi){var ci=this;if(ci.isInputHidden||ci.isLocked){Dn(oi);return}!ci.settings.splitOn||setTimeout(()=>{var ui=ci.inputValue();if(!!ui.match(ci.settings.splitOn)){var mi=ui.trim().split(ci.settings.splitOn);Mi(mi,bi=>{xn(bi)&&(this.options[bi]?ci.addItem(bi):ci.createItem(bi))})}},0)}onKeyPress(oi){var ci=this;if(ci.isLocked){Dn(oi);return}var ui=String.fromCharCode(oi.keyCode||oi.which);if(ci.settings.create&&ci.settings.mode==="multi"&&ui===ci.settings.delimiter){ci.createItem(),Dn(oi);return}}onKeyDown(oi){var ci=this;if(ci.ignoreHover=!0,ci.isLocked){oi.keyCode!==va&&Dn(oi);return}switch(oi.keyCode){case mo:if(hi(Fo,oi)&&ci.control_input.value==""){Dn(oi),ci.selectAll();return}break;case Fs:ci.isOpen&&(Dn(oi,!0),ci.close()),ci.clearActiveItems();return;case Ho:if(!ci.isOpen&&ci.hasOptions)ci.open();else if(ci.activeOption){let ui=ci.getAdjacent(ci.activeOption,1);ui&&ci.setActiveOption(ui)}Dn(oi);return;case Po:if(ci.activeOption){let ui=ci.getAdjacent(ci.activeOption,-1);ui&&ci.setActiveOption(ui)}Dn(oi);return;case Js:ci.canSelect(ci.activeOption)?(ci.onOptionSelect(oi,ci.activeOption),Dn(oi)):(ci.settings.create&&ci.createItem()||document.activeElement==ci.control_input&&ci.isOpen)&&Dn(oi);return;case Ss:ci.advanceSelection(-1,oi);return;case Zs:ci.advanceSelection(1,oi);return;case va:ci.settings.selectOnTab&&(ci.canSelect(ci.activeOption)&&(ci.onOptionSelect(oi,ci.activeOption),Dn(oi)),ci.settings.create&&ci.createItem()&&Dn(oi));return;case ga:case $l:ci.deleteSelection(oi);return}ci.isInputHidden&&!hi(Fo,oi)&&Dn(oi)}onInput(oi){if(this.isLocked)return;let ci=this.inputValue();if(this.lastValue!==ci){if(this.lastValue=ci,ci==""){this._onInput();return}this.refreshTimeout&&clearTimeout(this.refreshTimeout),this.refreshTimeout=Bl(()=>{this.refreshTimeout=null,this._onInput()},this.settings.refreshThrottle)}}_onInput(){let oi=this.lastValue;this.settings.shouldLoad.call(this,oi)&&this.load(oi),this.refreshOptions(),this.trigger("type",oi)}onOptionHover(oi,ci){this.ignoreHover||this.setActiveOption(ci,!1)}onFocus(oi){var ci=this,ui=ci.isFocused;if(ci.isDisabled||ci.isReadOnly){ci.blur(),Dn(oi);return}ci.ignoreFocus||(ci.isFocused=!0,ci.settings.preload==="focus"&&ci.preload(),ui||ci.trigger("focus"),ci.activeItems.length||(ci.inputState(),ci.refreshOptions(!!ci.settings.openOnFocus)),ci.refreshState())}onBlur(oi){if(document.hasFocus()!==!1){var ci=this;if(!!ci.isFocused){ci.isFocused=!1,ci.ignoreFocus=!1;var ui=()=>{ci.close(),ci.setActiveItem(),ci.setCaret(ci.items.length),ci.trigger("blur")};ci.settings.create&&ci.settings.createOnBlur?ci.createItem(null,ui):ui()}}}onOptionSelect(oi,ci){var ui,mi=this;ci.parentElement&&ci.parentElement.matches("[data-disabled]")||(ci.classList.contains("create")?mi.createItem(null,()=>{mi.settings.closeAfterSelect&&mi.close()}):(ui=ci.dataset.value,typeof ui!="undefined"&&(mi.lastQuery=null,mi.addItem(ui),mi.settings.closeAfterSelect&&mi.close(),!mi.settings.hideSelected&&oi.type&&/click/.test(oi.type)&&mi.setActiveOption(ci))))}canSelect(oi){return!!(this.isOpen&&oi&&this.dropdown_content.contains(oi))}onItemSelect(oi,ci){var ui=this;return!ui.isLocked&&ui.settings.mode==="multi"?(Dn(oi),ui.setActiveItem(ci,oi),!0):!1}canLoad(oi){return!(!this.settings.load||this.loadedSearches.hasOwnProperty(oi))}load(oi){let ci=this;if(!ci.canLoad(oi))return;Kn(ci.wrapper,ci.settings.loadingClass),ci.loading++;let ui=ci.loadCallback.bind(ci);ci.settings.load.call(ci,oi,ui)}loadCallback(oi,ci){let ui=this;ui.loading=Math.max(ui.loading-1,0),ui.lastQuery=null,ui.clearActiveOption(),ui.setupOptions(oi,ci),ui.refreshOptions(ui.isFocused&&!ui.isInputHidden),ui.loading||Qn(ui.wrapper,ui.settings.loadingClass),ui.trigger("load",oi,ci)}preload(){var oi=this.wrapper.classList;oi.contains("preloaded")||(oi.add("preloaded"),this.load(""))}setTextboxValue(oi=""){var ci=this.control_input,ui=ci.value!==oi;ui&&(ci.value=oi,$n(ci,"update"),this.lastValue=oi)}getValue(){return this.is_select_tag&&this.input.hasAttribute("multiple")?this.items:this.items.join(this.settings.delimiter)}setValue(oi,ci){var ui=ci?[]:["change"];jo(this,ui,()=>{this.clear(ci),this.addItems(oi,ci)})}setMaxItems(oi){oi===0&&(oi=null),this.settings.maxItems=oi,this.refreshState()}setActiveItem(oi,ci){var ui=this,mi,bi,_i,Ci,Di,Oi;if(ui.settings.mode!=="single"){if(!oi){ui.clearActiveItems(),ui.isFocused&&ui.inputState();return}if(mi=ci&&ci.type.toLowerCase(),mi==="click"&&hi("shiftKey",ci)&&ui.activeItems.length){for(Oi=ui.getLastActive(),_i=Array.prototype.indexOf.call(ui.control.children,Oi),Ci=Array.prototype.indexOf.call(ui.control.children,oi),_i>Ci&&(Di=_i,_i=Ci,Ci=Di),bi=_i;bi<=Ci;bi++)oi=ui.control.children[bi],ui.activeItems.indexOf(oi)===-1&&ui.setActiveItemClass(oi);Dn(ci)}else mi==="click"&&hi(Fo,ci)||mi==="keydown"&&hi("shiftKey",ci)?oi.classList.contains("active")?ui.removeActiveItem(oi):ui.setActiveItemClass(oi):(ui.clearActiveItems(),ui.setActiveItemClass(oi));ui.inputState(),ui.isFocused||ui.focus()}}setActiveItemClass(oi){let ci=this,ui=ci.control.querySelector(".last-active");ui&&Qn(ui,"last-active"),Kn(oi,"active last-active"),ci.trigger("item_select",oi),ci.activeItems.indexOf(oi)==-1&&ci.activeItems.push(oi)}removeActiveItem(oi){var ci=this.activeItems.indexOf(oi);this.activeItems.splice(ci,1),Qn(oi,"active")}clearActiveItems(){Qn(this.activeItems,"active"),this.activeItems=[]}setActiveOption(oi,ci=!0){oi!==this.activeOption&&(this.clearActiveOption(),!!oi&&(this.activeOption=oi,_n(this.focus_node,{"aria-activedescendant":oi.getAttribute("id")}),_n(oi,{"aria-selected":"true"}),Kn(oi,"active"),ci&&this.scrollToOption(oi)))}scrollToOption(oi,ci){if(!oi)return;let ui=this.dropdown_content,mi=ui.clientHeight,bi=ui.scrollTop||0,_i=oi.offsetHeight,Ci=oi.getBoundingClientRect().top-ui.getBoundingClientRect().top+bi;Ci+_i>mi+bi?this.scroll(Ci-mi+_i,ci):Ci{oi.setActiveItemClass(ui)}))}inputState(){var oi=this;!oi.control.contains(oi.control_input)||(_n(oi.control_input,{placeholder:oi.settings.placeholder}),oi.activeItems.length>0||!oi.isFocused&&oi.settings.hidePlaceholder&&oi.items.length>0?(oi.setTextboxValue(),oi.isInputHidden=!0):(oi.settings.hidePlaceholder&&oi.items.length>0&&_n(oi.control_input,{placeholder:""}),oi.isInputHidden=!1),oi.wrapper.classList.toggle("input-hidden",oi.isInputHidden))}inputValue(){return this.control_input.value.trim()}focus(){var oi=this;oi.isDisabled||oi.isReadOnly||(oi.ignoreFocus=!0,oi.control_input.offsetWidth?oi.control_input.focus():oi.focus_node.focus(),setTimeout(()=>{oi.ignoreFocus=!1,oi.onFocus()},0))}blur(){this.focus_node.blur(),this.onBlur()}getScoreFunction(oi){return this.sifter.getScoreFunction(oi,this.getSearchOptions())}getSearchOptions(){var oi=this.settings,ci=oi.sortField;return typeof oi.sortField=="string"&&(ci=[{field:oi.sortField}]),{fields:oi.searchField,conjunction:oi.searchConjunction,sort:ci,nesting:oi.nesting}}search(oi){var ci,ui,mi=this,bi=this.getSearchOptions();if(mi.settings.score&&(ui=mi.settings.score.call(mi,oi),typeof ui!="function"))throw new Error('Tom Select "score" setting must be a function that returns a function');return oi!==mi.lastQuery?(mi.lastQuery=oi,ci=mi.sifter.search(oi,Object.assign(bi,{score:ui})),mi.currentResults=ci):ci=Object.assign({},mi.currentResults),mi.settings.hideSelected&&(ci.items=ci.items.filter(_i=>{let Ci=xn(_i.id);return!(Ci&&mi.items.indexOf(Ci)!==-1)})),ci}refreshOptions(oi=!0){var ci,ui,mi,bi,_i,Ci,Di,Oi,Wi,ji;let Zi={},Rn=[];var Qi=this,An=Qi.inputValue();let Hn=An===Qi.lastQuery||An==""&&Qi.lastQuery==null;var Nn=Qi.search(An),dn=null,Vn=Qi.settings.shouldOpen||!1,ks=Qi.dropdown_content;Hn&&(dn=Qi.activeOption,dn&&(Wi=dn.closest("[data-group]"))),bi=Nn.items.length,typeof Qi.settings.maxOptions=="number"&&(bi=Math.min(bi,Qi.settings.maxOptions)),bi>0&&(Vn=!0);let Ua=(Tn,Mn)=>{let wn=Zi[Tn];if(wn!==void 0){let In=Rn[wn];if(In!==void 0)return[wn,In.fragment]}let es=document.createDocumentFragment();return wn=Rn.length,Rn.push({fragment:es,order:Mn,optgroup:Tn}),[wn,es]};for(ci=0;ci0&&(In=In.cloneNode(!0),_n(In,{id:wn.$id+"-clone-"+ui,"aria-selected":null}),In.classList.add("ts-cloned"),Qn(In,"active"),Qi.activeOption&&Qi.activeOption.dataset.value==Mn&&Wi&&Wi.dataset.group===_i.toString()&&(dn=In)),ah.appendChild(In),_i!=""&&(Zi[_i]=oh)}}Qi.settings.lockOptgroupOrder&&Rn.sort((Tn,Mn)=>Tn.order-Mn.order),Di=document.createDocumentFragment(),Mi(Rn,Tn=>{let Mn=Tn.fragment,wn=Tn.optgroup;if(!Mn||!Mn.children.length)return;let es=Qi.optgroups[wn];if(es!==void 0){let In=document.createDocumentFragment(),Ya=Qi.render("optgroup_header",es);Ti(In,Ya),Ti(In,Mn);let Ka=Qi.render("optgroup",{group:es,options:In});Ti(Di,Ka)}else Ti(Di,Mn)}),ks.innerHTML="",Ti(ks,Di),Qi.settings.highlight&&(Xs(ks),Nn.query.length&&Nn.tokens.length&&Mi(Nn.tokens,Tn=>{ls(ks,Tn.regex)}));var Bo=Tn=>{let Mn=Qi.render(Tn,{input:An});return Mn&&(Vn=!0,ks.insertBefore(Mn,ks.firstChild)),Mn};if(Qi.loading?Bo("loading"):Qi.settings.shouldLoad.call(Qi,An)?Nn.items.length===0&&Bo("no_results"):Bo("not_loading"),Oi=Qi.canCreate(An),Oi&&(ji=Bo("option_create")),Qi.hasOptions=Nn.items.length>0||Oi,Vn){if(Nn.items.length>0){if(!dn&&Qi.settings.mode==="single"&&Qi.items[0]!=null&&(dn=Qi.getOption(Qi.items[0])),!ks.contains(dn)){let Tn=0;ji&&!Qi.settings.addPrecedence&&(Tn=1),dn=Qi.selectable()[Tn]}}else ji&&(dn=ji);oi&&!Qi.isOpen&&(Qi.open(),Qi.scrollToOption(dn,"auto")),Qi.setActiveOption(dn)}else Qi.clearActiveOption(),oi&&Qi.isOpen&&Qi.close(!1)}selectable(){return this.dropdown_content.querySelectorAll("[data-selectable]")}addOption(oi,ci=!1){let ui=this;if(Array.isArray(oi))return ui.addOptions(oi,ci),!1;let mi=xn(oi[ui.settings.valueField]);return mi===null||ui.options.hasOwnProperty(mi)?!1:(oi.$order=oi.$order||++ui.order,oi.$id=ui.inputId+"-opt-"+oi.$order,ui.options[mi]=oi,ui.lastQuery=null,ci&&(ui.userOptions[mi]=ci,ui.trigger("option_add",mi,oi)),mi)}addOptions(oi,ci=!1){Mi(oi,ui=>{this.addOption(ui,ci)})}registerOption(oi){return this.addOption(oi)}registerOptionGroup(oi){var ci=xn(oi[this.settings.optgroupValueField]);return ci===null?!1:(oi.$order=oi.$order||++this.order,this.optgroups[ci]=oi,ci)}addOptionGroup(oi,ci){var ui;ci[this.settings.optgroupValueField]=oi,(ui=this.registerOptionGroup(ci))&&this.trigger("optgroup_add",ui,ci)}removeOptionGroup(oi){this.optgroups.hasOwnProperty(oi)&&(delete this.optgroups[oi],this.clearCache(),this.trigger("optgroup_remove",oi))}clearOptionGroups(){this.optgroups={},this.clearCache(),this.trigger("optgroup_clear")}updateOption(oi,ci){let ui=this;var mi,bi;let _i=xn(oi),Ci=xn(ci[ui.settings.valueField]);if(_i===null)return;let Di=ui.options[_i];if(Di==null)return;if(typeof Ci!="string")throw new Error("Value must be set in option data");let Oi=ui.getOption(_i),Wi=ui.getItem(_i);if(ci.$order=ci.$order||Di.$order,delete ui.options[_i],ui.uncacheValue(Ci),ui.options[Ci]=ci,Oi){if(ui.dropdown_content.contains(Oi)){let ji=ui._render("option",ci);Qr(Oi,ji),ui.activeOption===Oi&&ui.setActiveOption(ji)}Oi.remove()}Wi&&(bi=ui.items.indexOf(_i),bi!==-1&&ui.items.splice(bi,1,Ci),mi=ui._render("item",ci),Wi.classList.contains("active")&&Kn(mi,"active"),Qr(Wi,mi)),ui.lastQuery=null}removeOption(oi,ci){let ui=this;oi=eo(oi),ui.uncacheValue(oi),delete ui.userOptions[oi],delete ui.options[oi],ui.lastQuery=null,ui.trigger("option_remove",oi),ui.removeItem(oi,ci)}clearOptions(oi){let ci=(oi||this.clearFilter).bind(this);this.loadedSearches={},this.userOptions={},this.clearCache();let ui={};Mi(this.options,(mi,bi)=>{ci(mi,bi)&&(ui[bi]=mi)}),this.options=this.sifter.items=ui,this.lastQuery=null,this.trigger("option_clear")}clearFilter(oi,ci){return this.items.indexOf(ci)>=0}getOption(oi,ci=!1){let ui=xn(oi);if(ui===null)return null;let mi=this.options[ui];if(mi!=null){if(mi.$div)return mi.$div;if(ci)return this._render("option",mi)}return null}getAdjacent(oi,ci,ui="option"){var mi=this,bi;if(!oi)return null;ui=="item"?bi=mi.controlChildren():bi=mi.dropdown_content.querySelectorAll("[data-selectable]");for(let _i=0;_i0?bi[_i+1]:bi[_i-1];return null}getItem(oi){if(typeof oi=="object")return oi;var ci=xn(oi);return ci!==null?this.control.querySelector(`[data-value="${wi(ci)}"]`):null}addItems(oi,ci){var ui=this,mi=Array.isArray(oi)?oi:[oi];mi=mi.filter(_i=>ui.items.indexOf(_i)===-1);let bi=mi[mi.length-1];mi.forEach(_i=>{ui.isPending=_i!==bi,ui.addItem(_i,ci)})}addItem(oi,ci){var ui=ci?[]:["change","dropdown_close"];jo(this,ui,()=>{var mi,bi;let _i=this,Ci=_i.settings.mode,Di=xn(oi);if(!(Di&&_i.items.indexOf(Di)!==-1&&(Ci==="single"&&_i.close(),Ci==="single"||!_i.settings.duplicates))&&!(Di===null||!_i.options.hasOwnProperty(Di))&&(Ci==="single"&&_i.clear(ci),!(Ci==="multi"&&_i.isFull()))){if(mi=_i._render("item",_i.options[Di]),_i.control.contains(mi)&&(mi=mi.cloneNode(!0)),bi=_i.isFull(),_i.items.splice(_i.caretPos,0,Di),_i.insertAtCaret(mi),_i.isSetup){if(!_i.isPending&&_i.settings.hideSelected){let Oi=_i.getOption(Di),Wi=_i.getAdjacent(Oi,1);Wi&&_i.setActiveOption(Wi)}!_i.isPending&&!_i.settings.closeAfterSelect&&_i.refreshOptions(_i.isFocused&&Ci!=="single"),_i.settings.closeAfterSelect!=!1&&_i.isFull()?_i.close():_i.isPending||_i.positionDropdown(),_i.trigger("item_add",Di,mi),_i.isPending||_i.updateOriginalInput({silent:ci})}(!_i.isPending||!bi&&_i.isFull())&&(_i.inputState(),_i.refreshState())}})}removeItem(oi=null,ci){let ui=this;if(oi=ui.getItem(oi),!oi)return;var mi,bi;let _i=oi.dataset.value;mi=Wn(oi),oi.remove(),oi.classList.contains("active")&&(bi=ui.activeItems.indexOf(oi),ui.activeItems.splice(bi,1),Qn(oi,"active")),ui.items.splice(mi,1),ui.lastQuery=null,!ui.settings.persist&&ui.userOptions.hasOwnProperty(_i)&&ui.removeOption(_i,ci),mi{}){arguments.length===3&&(ci=arguments[2]),typeof ci!="function"&&(ci=()=>{});var ui=this,mi=ui.caretPos,bi;if(oi=oi||ui.inputValue(),!ui.canCreate(oi))return ci(),!1;ui.lock();var _i=!1,Ci=Di=>{if(ui.unlock(),!Di||typeof Di!="object")return ci();var Oi=xn(Di[ui.settings.valueField]);if(typeof Oi!="string")return ci();ui.setTextboxValue(),ui.addOption(Di,!0),ui.setCaret(mi),ui.addItem(Oi),ci(Di),_i=!0};return typeof ui.settings.create=="function"?bi=ui.settings.create.call(this,oi,Ci):bi={[ui.settings.labelField]:oi,[ui.settings.valueField]:oi},_i||Ci(bi),!0}refreshItems(){var oi=this;oi.lastQuery=null,oi.isSetup&&oi.addItems(oi.items),oi.updateOriginalInput(),oi.refreshState()}refreshState(){let oi=this;oi.refreshValidityState();let ci=oi.isFull(),ui=oi.isLocked;oi.wrapper.classList.toggle("rtl",oi.rtl);let mi=oi.wrapper.classList;mi.toggle("focus",oi.isFocused),mi.toggle("disabled",oi.isDisabled),mi.toggle("readonly",oi.isReadOnly),mi.toggle("required",oi.isRequired),mi.toggle("invalid",!oi.isValid),mi.toggle("locked",ui),mi.toggle("full",ci),mi.toggle("input-active",oi.isFocused&&!oi.isInputHidden),mi.toggle("dropdown-active",oi.isOpen),mi.toggle("has-options",Qs(oi.options)),mi.toggle("has-items",oi.items.length>0)}refreshValidityState(){var oi=this;!oi.input.validity||(oi.isValid=oi.input.validity.valid,oi.isInvalid=!oi.isValid)}isFull(){return this.settings.maxItems!==null&&this.items.length>=this.settings.maxItems}updateOriginalInput(oi={}){let ci=this;var ui,mi;let bi=ci.input.querySelector('option[value=""]');if(ci.is_select_tag){let Di=function(Oi,Wi,ji){return Oi||(Oi=Ii('")),Oi!=bi&&ci.input.append(Oi),_i.push(Oi),(Oi!=bi||Ci>0)&&(Oi.selected=!0),Oi},_i=[],Ci=ci.input.querySelectorAll("option:checked").length;ci.input.querySelectorAll("option:checked").forEach(Oi=>{Oi.selected=!1}),ci.items.length==0&&ci.settings.mode=="single"?Di(bi,"",""):ci.items.forEach(Oi=>{if(ui=ci.options[Oi],mi=ui[ci.settings.labelField]||"",_i.includes(ui.$option)){let Wi=ci.input.querySelector(`option[value="${wi(Oi)}"]:not(:checked)`);Di(Wi,Oi,mi)}else ui.$option=Di(ui.$option,Oi,mi)})}else ci.input.value=ci.getValue();ci.isSetup&&(oi.silent||ci.trigger("change",ci.getValue()))}open(){var oi=this;oi.isLocked||oi.isOpen||oi.settings.mode==="multi"&&oi.isFull()||(oi.isOpen=!0,_n(oi.focus_node,{"aria-expanded":"true"}),oi.refreshState(),Bn(oi.dropdown,{visibility:"hidden",display:"block"}),oi.positionDropdown(),Bn(oi.dropdown,{visibility:"visible",display:"block"}),oi.focus(),oi.trigger("dropdown_open",oi.dropdown))}close(oi=!0){var ci=this,ui=ci.isOpen;oi&&(ci.setTextboxValue(),ci.settings.mode==="single"&&ci.items.length&&ci.inputState()),ci.isOpen=!1,_n(ci.focus_node,{"aria-expanded":"false"}),Bn(ci.dropdown,{display:"none"}),ci.settings.hideSelected&&ci.clearActiveOption(),ci.refreshState(),ui&&ci.trigger("dropdown_close",ci.dropdown)}positionDropdown(){if(this.settings.dropdownParent==="body"){var oi=this.control,ci=oi.getBoundingClientRect(),ui=oi.offsetHeight+ci.top+window.scrollY,mi=ci.left+window.scrollX;Bn(this.dropdown,{width:ci.width+"px",top:ui+"px",left:mi+"px"})}}clear(oi){var ci=this;if(!!ci.items.length){var ui=ci.controlChildren();Mi(ui,mi=>{ci.removeItem(mi,!0)}),ci.inputState(),oi||ci.updateOriginalInput(),ci.trigger("clear")}}insertAtCaret(oi){let ci=this,ui=ci.caretPos,mi=ci.control;mi.insertBefore(oi,mi.children[ui]||null),ci.setCaret(ui+1)}deleteSelection(oi){var ci,ui,mi,bi,_i=this;ci=oi&&oi.keyCode===ga?-1:1,ui=As(_i.control_input);let Ci=[];if(_i.activeItems.length)bi=ms(_i.activeItems,ci),mi=Wn(bi),ci>0&&mi++,Mi(_i.activeItems,Di=>Ci.push(Di));else if((_i.isFocused||_i.settings.mode==="single")&&_i.items.length){let Di=_i.controlChildren(),Oi;ci<0&&ui.start===0&&ui.length===0?Oi=Di[_i.caretPos-1]:ci>0&&ui.start===_i.inputValue().length&&(Oi=Di[_i.caretPos]),Oi!==void 0&&Ci.push(Oi)}if(!_i.shouldDelete(Ci,oi))return!1;for(Dn(oi,!0),typeof mi!="undefined"&&_i.setCaret(mi);Ci.length;)_i.removeItem(Ci.pop());return _i.inputState(),_i.positionDropdown(),_i.refreshOptions(!1),!0}shouldDelete(oi,ci){let ui=oi.map(mi=>mi.dataset.value);return!(!ui.length||typeof this.settings.onDelete=="function"&&this.settings.onDelete(ui,ci)===!1)}advanceSelection(oi,ci){var ui,mi,bi=this;bi.rtl&&(oi*=-1),!bi.inputValue().length&&(hi(Fo,ci)||hi("shiftKey",ci)?(ui=bi.getLastActive(oi),ui?ui.classList.contains("active")?mi=bi.getAdjacent(ui,oi,"item"):mi=ui:oi>0?mi=bi.control_input.nextElementSibling:mi=bi.control_input.previousElementSibling,mi&&(mi.classList.contains("active")&&bi.removeActiveItem(ui),bi.setActiveItemClass(mi))):bi.moveCaret(oi))}moveCaret(oi){}getLastActive(oi){let ci=this.control.querySelector(".last-active");if(ci)return ci;var ui=this.control.querySelectorAll(".active");if(ui)return ms(ui,oi)}setCaret(oi){this.caretPos=this.items.length}controlChildren(){return Array.from(this.control.querySelectorAll("[data-ts-item]"))}lock(){this.setLocked(!0)}unlock(){this.setLocked(!1)}setLocked(oi=this.isReadOnly||this.isDisabled){this.isLocked=oi,this.refreshState()}disable(){this.setDisabled(!0),this.close()}enable(){this.setDisabled(!1)}setDisabled(oi){this.focus_node.tabIndex=oi?-1:this.tabIndex,this.isDisabled=oi,this.input.disabled=oi,this.control_input.disabled=oi,this.setLocked()}setReadOnly(oi){this.isReadOnly=oi,this.input.readOnly=oi,this.control_input.readOnly=oi,this.setLocked()}destroy(){var oi=this,ci=oi.revertSettings;oi.trigger("destroy"),oi.off(),oi.wrapper.remove(),oi.dropdown.remove(),oi.input.innerHTML=ci.innerHTML,oi.input.tabIndex=ci.tabIndex,Qn(oi.input,"tomselected","ts-hidden-accessible"),oi._destroy(),delete oi.input.tomselect}render(oi,ci){var ui,mi;let bi=this;if(typeof this.settings.render[oi]!="function"||(mi=bi.settings.render[oi].call(this,ci,to),!mi))return null;if(mi=Ii(mi),oi==="option"||oi==="option_create"?ci[bi.settings.disabledField]?_n(mi,{"aria-disabled":"true"}):_n(mi,{"data-selectable":""}):oi==="optgroup"&&(ui=ci.group[bi.settings.optgroupValueField],_n(mi,{"data-group":ui}),ci.group[bi.settings.disabledField]&&_n(mi,{"data-disabled":""})),oi==="option"||oi==="item"){let _i=eo(ci[bi.settings.valueField]);_n(mi,{"data-value":_i}),oi==="item"?(Kn(mi,bi.settings.itemClass),_n(mi,{"data-ts-item":""})):(Kn(mi,bi.settings.optionClass),_n(mi,{role:"option",id:ci.$id}),ci.$div=mi,bi.options[_i]=ci)}return mi}_render(oi,ci){let ui=this.render(oi,ci);if(ui==null)throw"HTMLElement expected";return ui}clearCache(){Mi(this.options,oi=>{oi.$div&&(oi.$div.remove(),delete oi.$div)})}uncacheValue(oi){let ci=this.getOption(oi);ci&&ci.remove()}canCreate(oi){return this.settings.create&&oi.length>0&&this.settings.createFilter.call(this,oi)}hook(oi,ci,ui){var mi=this,bi=mi[ci];mi[ci]=function(){var _i,Ci;return oi==="after"&&(_i=bi.apply(mi,arguments)),Ci=ui.apply(mi,arguments),oi==="instead"?Ci:(oi==="before"&&(_i=bi.apply(mi,arguments)),_i)}}}function Xi(){Ln(this.input,"change",()=>{this.sync()})}function bn(fi){var oi=this,ci=oi.onOptionSelect;oi.settings.hideSelected=!1;let ui=Object.assign({className:"tomselect-checkbox",checkedClassNames:void 0,uncheckedClassNames:void 0},fi);var mi=function(Ci,Di){Di?(Ci.checked=!0,ui.uncheckedClassNames&&Ci.classList.remove(...ui.uncheckedClassNames),ui.checkedClassNames&&Ci.classList.add(...ui.checkedClassNames)):(Ci.checked=!1,ui.checkedClassNames&&Ci.classList.remove(...ui.checkedClassNames),ui.uncheckedClassNames&&Ci.classList.add(...ui.uncheckedClassNames))},bi=function(Ci){setTimeout(()=>{var Di=Ci.querySelector("input."+ui.className);Di instanceof HTMLInputElement&&mi(Di,Ci.classList.contains("selected"))},1)};oi.hook("after","setupTemplates",()=>{var _i=oi.settings.render.option;oi.settings.render.option=(Ci,Di)=>{var Oi=Ii(_i.call(oi,Ci,Di)),Wi=document.createElement("input");ui.className&&Wi.classList.add(ui.className),Wi.addEventListener("click",function(Zi){Dn(Zi)}),Wi.type="checkbox";let ji=xn(Ci[oi.settings.valueField]);return mi(Wi,!!(ji&&oi.items.indexOf(ji)>-1)),Oi.prepend(Wi),Oi}}),oi.on("item_remove",_i=>{var Ci=oi.getOption(_i);Ci&&(Ci.classList.remove("selected"),bi(Ci))}),oi.on("item_add",_i=>{var Ci=oi.getOption(_i);Ci&&bi(Ci)}),oi.hook("instead","onOptionSelect",(_i,Ci)=>{if(Ci.classList.contains("selected")){Ci.classList.remove("selected"),oi.removeItem(Ci.dataset.value),oi.refreshOptions(),Dn(_i,!0);return}ci.call(oi,_i,Ci),bi(Ci)})}function Gi(fi){let oi=this,ci=Object.assign({className:"clear-button",title:"Clear All",html:ui=>`
`},fi);oi.on("initialize",()=>{var ui=Ii(ci.html(ci));ui.addEventListener("click",mi=>{oi.isLocked||(oi.clear(),oi.settings.mode==="single"&&oi.settings.allowEmptyOption&&oi.addItem(""),mi.preventDefault(),mi.stopPropagation())}),oi.control.appendChild(ui)})}let fn=(fi,oi)=>{var ci;(ci=fi.parentNode)==null||ci.insertBefore(oi,fi.nextSibling)},kn=(fi,oi)=>{var ci;(ci=fi.parentNode)==null||ci.insertBefore(oi,fi)},gs=(fi,oi)=>{do{var ci;if(oi=(ci=oi)==null?void 0:ci.previousElementSibling,fi==oi)return!0}while(oi&&oi.previousElementSibling);return!1};function rs(){var fi=this;if(fi.settings.mode!=="multi")return;var oi=fi.lock,ci=fi.unlock;let ui=!0,mi;fi.hook("after","setupTemplates",()=>{var bi=fi.settings.render.item;fi.settings.render.item=(_i,Ci)=>{let Di=Ii(bi.call(fi,_i,Ci));_n(Di,{draggable:"true"});let Oi=An=>{ui||Dn(An),An.stopPropagation()},Wi=An=>{mi=Di,setTimeout(()=>{Di.classList.add("ts-dragging")},0)},ji=An=>{An.preventDefault(),Di.classList.add("ts-drag-over"),Rn(Di,mi)},Zi=()=>{Di.classList.remove("ts-drag-over")},Rn=(An,Hn)=>{Hn!==void 0&&(gs(Hn,Di)?fn(An,Hn):kn(An,Hn))},Qi=()=>{var An;document.querySelectorAll(".ts-drag-over").forEach(Nn=>Nn.classList.remove("ts-drag-over")),(An=mi)==null||An.classList.remove("ts-dragging"),mi=void 0;var Hn=[];fi.control.querySelectorAll("[data-value]").forEach(Nn=>{if(Nn.dataset.value){let dn=Nn.dataset.value;dn&&Hn.push(dn)}}),fi.setValue(Hn)};return Ln(Di,"mousedown",Oi),Ln(Di,"dragstart",Wi),Ln(Di,"dragenter",ji),Ln(Di,"dragover",ji),Ln(Di,"dragleave",Zi),Ln(Di,"dragend",Qi),Di}}),fi.hook("instead","lock",()=>(ui=!1,oi.call(fi))),fi.hook("instead","unlock",()=>(ui=!0,ci.call(fi)))}function go(fi){let oi=this,ci=Object.assign({title:"Untitled",headerClass:"dropdown-header",titleRowClass:"dropdown-header-title",labelClass:"dropdown-header-label",closeClass:"dropdown-header-close",html:ui=>'
'+ui.title+'×
'},fi);oi.on("initialize",()=>{var ui=Ii(ci.html(ci)),mi=ui.querySelector("."+ci.closeClass);mi&&mi.addEventListener("click",bi=>{Dn(bi,!0),oi.close()}),oi.dropdown.insertBefore(ui,oi.dropdown.firstChild)})}function io(){var fi=this;fi.hook("instead","setCaret",oi=>{fi.settings.mode==="single"||!fi.control.contains(fi.control_input)?oi=fi.items.length:(oi=Math.max(0,Math.min(fi.items.length,oi)),oi!=fi.caretPos&&!fi.isPending&&fi.controlChildren().forEach((ci,ui)=>{ui{if(!fi.isFocused)return;let ci=fi.getLastActive(oi);if(ci){let ui=Wn(ci);fi.setCaret(oi>0?ui+1:ui),fi.setActiveItem(),Qn(ci,"last-active")}else fi.setCaret(fi.caretPos+oi)})}function zl(){let fi=this;fi.settings.shouldOpen=!0,fi.hook("before","setup",()=>{fi.focus_node=fi.control,Kn(fi.control_input,"dropdown-input");let oi=Ii('