diff --git a/apps/authentication/fixtures/defaultuser.json b/apps/authentication/fixtures/user.json similarity index 100% rename from apps/authentication/fixtures/defaultuser.json rename to apps/authentication/fixtures/user.json diff --git a/apps/home/fixtures/defaulttickets.json b/apps/home/fixtures/defaulttickets.json deleted file mode 100644 index 6cae925..0000000 --- a/apps/home/fixtures/defaulttickets.json +++ /dev/null @@ -1,204 +0,0 @@ -[ -{ - "model": "home.ticket", - "pk": "0725deef-d48c-4e38-814a-ae35fcbad152", - "fields": { - "title": "Software Compatibility Challenge", - "description": "Attempting to integrate a new software tool into our existing workflow, but facing compatibility challenges with other applications. Providing a detailed overview of the software stack and the specific issues encountered during integration attempts. Seeking expert guidance to resolve compatibility issues and ensure smooth workflow integration.", - "author": "4965745e-b82a-4496-80e1-055217a780b0", - "priority": "a680328f-0680-456c-8e26-f594e05989ad", - "create_timestamp": "2024-01-09T00:11:40Z", - "edit_timestamp": "2024-01-09T00:11:40Z", - "tags": [ - "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b", - "72fb255c-132f-4124-802d-f4c051620540", - "cc473838-acaf-43f9-a601-dc4ab1f9026c" - ] - } -}, -{ - "model": "home.ticket", - "pk": "1e648e67-ddf6-4007-bb68-4a863961a827", - "fields": { - "title": "Security Patch Installation", - "description": "There's a critical security patch that needs to be installed on all workstations to address recent vulnerabilities. Attempted to deploy the patch, but facing challenges on certain machines. Need high-priority assistance to ensure all systems are promptly updated for enhanced security measures.", - "author": "4965745e-b82a-4496-80e1-055217a780b0", - "priority": "a680328f-0680-456c-8e26-f594e05989ad", - "create_timestamp": "2024-01-09T00:09:20Z", - "edit_timestamp": "2024-01-09T00:09:20Z", - "tags": [ - "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b", - "72fb255c-132f-4124-802d-f4c051620540", - "cc473838-acaf-43f9-a601-dc4ab1f9026c" - ] - } -}, -{ - "model": "home.ticket", - "pk": "433200a2-3a62-4e81-86cc-cd5e31fecd8b", - "fields": { - "title": "Network Connectivity Issue", - "description": "Experiencing intermittent connection drops in the office. Several users affected. Need urgent assistance to resolve the issue.", - "author": "4965745e-b82a-4496-80e1-055217a780b0", - "priority": "d140a5be-cf24-4250-8b38-31338e69dffd", - "create_timestamp": "2024-01-09T00:05:54Z", - "edit_timestamp": "2024-01-09T00:05:54Z", - "tags": [ - "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b", - "28b160b5-5c8b-43a5-84d1-4179bde87e6f", - "72fb255c-132f-4124-802d-f4c051620540" - ] - } -}, -{ - "model": "home.ticket", - "pk": "4b893b70-8fce-49a1-b546-d1960ef97f9c", - "fields": { - "title": "New Software Request", - "description": "Requesting the installation of a new software tool for project management. Providing specific details on the software requirements and its relevance to project workflows. Seeking guidance on the installation process and any potential compatibility issues. Your assistance in this matter is highly appreciated.", - "author": "4965745e-b82a-4496-80e1-055217a780b0", - "priority": "0ebc194c-b856-4e4f-9def-cd190d1e8d43", - "create_timestamp": "2024-01-09T00:09:59Z", - "edit_timestamp": "2024-01-09T17:38:15Z", - "tags": [ - "72fb255c-132f-4124-802d-f4c051620540", - "cc473838-acaf-43f9-a601-dc4ab1f9026c", - "dc4dc2d5-2784-4726-8a4e-99df35a143d2" - ] - } -}, -{ - "model": "home.ticket", - "pk": "587b35a3-1b47-4716-99bf-ebe22da283a1", - "fields": { - "title": "Database Query Performance", - "description": "Users are reporting slow response times when querying the database. This issue is impacting productivity across multiple teams. Detailed logs and steps taken to troubleshoot are provided within the description. Urgently seeking assistance to optimize database performance and resolve the slowdown.", - "author": "4965745e-b82a-4496-80e1-055217a780b0", - "priority": "d140a5be-cf24-4250-8b38-31338e69dffd", - "create_timestamp": "2024-01-09T00:08:32Z", - "edit_timestamp": "2024-01-09T00:08:32Z", - "tags": [ - "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b", - "28b160b5-5c8b-43a5-84d1-4179bde87e6f", - "72fb255c-132f-4124-802d-f4c051620540", - "cc473838-acaf-43f9-a601-dc4ab1f9026c", - "e8c7e801-57c3-4699-a4f4-4308fb489f60" - ] - } -}, -{ - "model": "home.ticket", - "pk": "5f39644f-0356-4818-aa07-ee6f07f36553", - "fields": { - "title": "Hardware Malfunction", - "description": "The printer on the third floor is not responding. Checked cables and power source, but issue persists. Need assistance to fix the hardware problem.", - "author": "4965745e-b82a-4496-80e1-055217a780b0", - "priority": "e79687c6-9054-4706-b9a2-34afccfaa7c8", - "create_timestamp": "2024-01-09T00:06:58Z", - "edit_timestamp": "2024-01-09T00:44:49Z", - "tags": [ - "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b", - "72fb255c-132f-4124-802d-f4c051620540", - "e8c7e801-57c3-4699-a4f4-4308fb489f60" - ] - } -}, -{ - "model": "home.ticket", - "pk": "68fa33a7-9ac0-4612-8d92-71201c1dd5d5", - "fields": { - "title": "Printer Configuration Error", - "description": "Encountering issues with configuring a new printer for the design team. Detailed steps taken to set up the printer and the specific error messages received are provided. Urgently seeking assistance to ensure the printer is operational and meets the team's printing requirements.", - "author": "4965745e-b82a-4496-80e1-055217a780b0", - "priority": "d140a5be-cf24-4250-8b38-31338e69dffd", - "create_timestamp": "2024-01-09T00:10:25Z", - "edit_timestamp": "2024-01-09T00:10:25Z", - "tags": [ - "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b", - "72fb255c-132f-4124-802d-f4c051620540", - "e8c7e801-57c3-4699-a4f4-4308fb489f60" - ] - } -}, -{ - "model": "home.ticket", - "pk": "9f72bd78-2d1f-4fd6-89fc-d9ecf8c69b3c", - "fields": { - "title": "VPN Connection Issue", - "description": "Remote team members are encountering difficulties establishing a VPN connection. This is hindering their ability to access essential resources. Providing detailed information on the error messages received and troubleshooting steps taken so far. Requesting immediate attention to restore seamless VPN functionality.", - "author": "4965745e-b82a-4496-80e1-055217a780b0", - "priority": "e79687c6-9054-4706-b9a2-34afccfaa7c8", - "create_timestamp": "2024-01-09T00:09:39Z", - "edit_timestamp": "2024-01-09T00:13:27Z", - "tags": [ - "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b", - "28b160b5-5c8b-43a5-84d1-4179bde87e6f", - "72fb255c-132f-4124-802d-f4c051620540" - ] - } -}, -{ - "model": "home.ticket", - "pk": "b0142315-b5c4-46a9-b02e-bdfdd6dffc37", - "fields": { - "title": "IT Training Request", - "description": "Requesting IT training sessions for the marketing team to enhance their proficiency in utilizing specific software tools. Providing a detailed outline of the desired training topics and the anticipated benefits for the team. Seeking assistance in scheduling and conducting the training sessions.", - "author": "4965745e-b82a-4496-80e1-055217a780b0", - "priority": "0ebc194c-b856-4e4f-9def-cd190d1e8d43", - "create_timestamp": "2024-01-09T00:12:17Z", - "edit_timestamp": "2024-01-09T00:12:17Z", - "tags": [ - "72fb255c-132f-4124-802d-f4c051620540", - "cc473838-acaf-43f9-a601-dc4ab1f9026c" - ] - } -}, -{ - "model": "home.ticket", - "pk": "c470a8b3-ca54-4324-abdf-1cfa4cdf70d6", - "fields": { - "title": "Email Configuration Assistance", - "description": "Need assistance in configuring email settings for a new team member. Providing the email client details and steps taken so far. Urgently seeking guidance to ensure the seamless setup of email accounts and communication channels for the new team member.", - "author": "4965745e-b82a-4496-80e1-055217a780b0", - "priority": "e79687c6-9054-4706-b9a2-34afccfaa7c8", - "create_timestamp": "2024-01-09T00:11:57Z", - "edit_timestamp": "2024-01-09T00:12:57Z", - "tags": [ - "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b", - "72fb255c-132f-4124-802d-f4c051620540" - ] - } -}, -{ - "model": "home.ticket", - "pk": "dd5764ad-e765-4f9b-9a9b-a3a27e60c6dd", - "fields": { - "title": "General Inquiry", - "description": "Have a question regarding the new IT policies. Need clarification on specific guidelines. Please provide assistance at your earliest convenience.", - "author": "4965745e-b82a-4496-80e1-055217a780b0", - "priority": "0ebc194c-b856-4e4f-9def-cd190d1e8d43", - "create_timestamp": "2024-01-09T00:07:26Z", - "edit_timestamp": "2024-01-09T00:07:26Z", - "tags": [ - "dc4dc2d5-2784-4726-8a4e-99df35a143d2" - ] - } -}, -{ - "model": "home.ticket", - "pk": "fd8a4ad9-04fb-4a0c-beac-e60e0739e881", - "fields": { - "title": "Software Update Problem", - "description": "Unable to install the latest software update on my workstation. Getting error code XYZ. Detailed steps attempted are listed in the description.", - "author": "4965745e-b82a-4496-80e1-055217a780b0", - "priority": "a680328f-0680-456c-8e26-f594e05989ad", - "create_timestamp": "2024-01-09T00:06:32Z", - "edit_timestamp": "2024-01-09T00:06:32Z", - "tags": [ - "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b", - "72fb255c-132f-4124-802d-f4c051620540", - "cc473838-acaf-43f9-a601-dc4ab1f9026c" - ] - } -} -] diff --git a/apps/home/fixtures/newtickets.json b/apps/home/fixtures/ticket.json similarity index 100% rename from apps/home/fixtures/newtickets.json rename to apps/home/fixtures/ticket.json diff --git a/apps/home/models.py b/apps/home/models.py index 0467a3d..a7504c4 100644 --- a/apps/home/models.py +++ b/apps/home/models.py @@ -55,8 +55,6 @@ class Ticket(models.Model): max_length=650, ) - # Dirty Foreigers - author = models.ForeignKey( settings.AUTH_USER_MODEL, verbose_name=_("author"), diff --git a/apps/static/bootstrap.min.js b/apps/static/bootstrap.min.js deleted file mode 100644 index c35e1da..0000000 --- a/apps/static/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v5.3.2 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){"use strict";function e(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t)for(const i in t)if("default"!==i){const s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:()=>t[i]})}return e.default=t,Object.freeze(e)}const i=e(t),s=new Map,n={set(t,e,i){s.has(t)||s.set(t,new Map);const n=s.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>s.has(t)&&s.get(t).get(e)||null,remove(t,e){if(!s.has(t))return;const i=s.get(t);i.delete(e),0===i.size&&s.delete(t)}},o="transitionend",r=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),a=t=>{t.dispatchEvent(new Event(o))},l=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),c=t=>l(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(r(t)):null,h=t=>{if(!l(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},d=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),u=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?u(t.parentNode):null},_=()=>{},g=t=>{t.offsetHeight},f=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,m=[],p=()=>"rtl"===document.documentElement.dir,b=t=>{var e;e=()=>{const e=f();if(e){const i=t.NAME,s=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=s,t.jQueryInterface)}},"loading"===document.readyState?(m.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of m)t()})),m.push(e)):e()},v=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,y=(t,e,i=!0)=>{if(!i)return void v(t);const s=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const s=Number.parseFloat(e),n=Number.parseFloat(i);return s||n?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let n=!1;const r=({target:i})=>{i===e&&(n=!0,e.removeEventListener(o,r),v(t))};e.addEventListener(o,r),setTimeout((()=>{n||a(e)}),s)},w=(t,e,i,s)=>{const n=t.length;let o=t.indexOf(e);return-1===o?!i&&s?t[n-1]:t[0]:(o+=i?1:-1,s&&(o=(o+n)%n),t[Math.max(0,Math.min(o,n-1))])},A=/[^.]*(?=\..*)\.|.*/,E=/\..*/,C=/::\d+$/,T={};let k=1;const $={mouseenter:"mouseover",mouseleave:"mouseout"},S=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function L(t,e){return e&&`${e}::${k++}`||t.uidEvent||k++}function O(t){const e=L(t);return t.uidEvent=e,T[e]=T[e]||{},T[e]}function I(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function D(t,e,i){const s="string"==typeof e,n=s?i:e||i;let o=M(t);return S.has(o)||(o=t),[s,n,o]}function N(t,e,i,s,n){if("string"!=typeof e||!t)return;let[o,r,a]=D(e,i,s);if(e in $){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=O(t),c=l[a]||(l[a]={}),h=I(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&n);const d=L(r,e.replace(A,"")),u=o?function(t,e,i){return function s(n){const o=t.querySelectorAll(e);for(let{target:r}=n;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return F(n,{delegateTarget:r}),s.oneOff&&j.off(t,n.type,e,i),i.apply(r,[n])}}(t,i,r):function(t,e){return function i(s){return F(s,{delegateTarget:t}),i.oneOff&&j.off(t,s.type,e),e.apply(t,[s])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=n,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function P(t,e,i,s,n){const o=I(e[i],s,n);o&&(t.removeEventListener(i,o,Boolean(n)),delete e[i][o.uidEvent])}function x(t,e,i,s){const n=e[i]||{};for(const[o,r]of Object.entries(n))o.includes(s)&&P(t,e,i,r.callable,r.delegationSelector)}function M(t){return t=t.replace(E,""),$[t]||t}const j={on(t,e,i,s){N(t,e,i,s,!1)},one(t,e,i,s){N(t,e,i,s,!0)},off(t,e,i,s){if("string"!=typeof e||!t)return;const[n,o,r]=D(e,i,s),a=r!==e,l=O(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))x(t,l,i,e.slice(1));for(const[i,s]of Object.entries(c)){const n=i.replace(C,"");a&&!e.includes(n)||P(t,l,r,s.callable,s.delegationSelector)}}else{if(!Object.keys(c).length)return;P(t,l,r,o,n?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const s=f();let n=null,o=!0,r=!0,a=!1;e!==M(e)&&s&&(n=s.Event(e,i),s(t).trigger(n),o=!n.isPropagationStopped(),r=!n.isImmediatePropagationStopped(),a=n.isDefaultPrevented());const l=F(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&n&&n.preventDefault(),l}};function F(t,e={}){for(const[i,s]of Object.entries(e))try{t[i]=s}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>s})}return t}function z(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function H(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const B={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${H(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${H(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const s of i){let i=s.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=z(t.dataset[s])}return e},getDataAttribute:(t,e)=>z(t.getAttribute(`data-bs-${H(e)}`))};class q{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=l(e)?B.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...l(e)?B.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[s,n]of Object.entries(e)){const e=t[s],o=l(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(n).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${s}" provided type "${o}" but expected type "${n}".`)}var i}}class W extends q{constructor(t,e){super(),(t=c(t))&&(this._element=t,this._config=this._getConfig(e),n.set(this._element,this.constructor.DATA_KEY,this))}dispose(){n.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){y(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return n.get(c(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const R=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?r(i.trim()):null}return e},K={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let s=t.parentNode.closest(e);for(;s;)i.push(s),s=s.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!d(t)&&h(t)))},getSelectorFromElement(t){const e=R(t);return e&&K.findOne(e)?e:null},getElementFromSelector(t){const e=R(t);return e?K.findOne(e):null},getMultipleElementsFromSelector(t){const e=R(t);return e?K.find(e):[]}},V=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;j.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),d(this))return;const n=K.getElementFromSelector(this)||this.closest(`.${s}`);t.getOrCreateInstance(n)[e]()}))},Q=".bs.alert",X=`close${Q}`,Y=`closed${Q}`;class U extends W{static get NAME(){return"alert"}close(){if(j.trigger(this._element,X).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),j.trigger(this._element,Y),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=U.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}V(U,"close"),b(U);const G='[data-bs-toggle="button"]';class J extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=J.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}j.on(document,"click.bs.button.data-api",G,(t=>{t.preventDefault();const e=t.target.closest(G);J.getOrCreateInstance(e).toggle()})),b(J);const Z=".bs.swipe",tt=`touchstart${Z}`,et=`touchmove${Z}`,it=`touchend${Z}`,st=`pointerdown${Z}`,nt=`pointerup${Z}`,ot={endCallback:null,leftCallback:null,rightCallback:null},rt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class at extends q{constructor(t,e){super(),this._element=t,t&&at.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return ot}static get DefaultType(){return rt}static get NAME(){return"swipe"}dispose(){j.off(this._element,Z)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),v(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&v(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(j.on(this._element,st,(t=>this._start(t))),j.on(this._element,nt,(t=>this._end(t))),this._element.classList.add("pointer-event")):(j.on(this._element,tt,(t=>this._start(t))),j.on(this._element,et,(t=>this._move(t))),j.on(this._element,it,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const lt=".bs.carousel",ct=".data-api",ht="next",dt="prev",ut="left",_t="right",gt=`slide${lt}`,ft=`slid${lt}`,mt=`keydown${lt}`,pt=`mouseenter${lt}`,bt=`mouseleave${lt}`,vt=`dragstart${lt}`,yt=`load${lt}${ct}`,wt=`click${lt}${ct}`,At="carousel",Et="active",Ct=".active",Tt=".carousel-item",kt=Ct+Tt,$t={ArrowLeft:_t,ArrowRight:ut},St={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Lt={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Ot extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=K.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===At&&this.cycle()}static get Default(){return St}static get DefaultType(){return Lt}static get NAME(){return"carousel"}next(){this._slide(ht)}nextWhenVisible(){!document.hidden&&h(this._element)&&this.next()}prev(){this._slide(dt)}pause(){this._isSliding&&a(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?j.one(this._element,ft,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void j.one(this._element,ft,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const s=t>i?ht:dt;this._slide(s,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&j.on(this._element,mt,(t=>this._keydown(t))),"hover"===this._config.pause&&(j.on(this._element,pt,(()=>this.pause())),j.on(this._element,bt,(()=>this._maybeEnableCycle()))),this._config.touch&&at.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of K.find(".carousel-item img",this._element))j.on(t,vt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ut)),rightCallback:()=>this._slide(this._directionToOrder(_t)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new at(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=$t[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=K.findOne(Ct,this._indicatorsElement);e.classList.remove(Et),e.removeAttribute("aria-current");const i=K.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(Et),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),s=t===ht,n=e||w(this._getItems(),i,s,this._config.wrap);if(n===i)return;const o=this._getItemIndex(n),r=e=>j.trigger(this._element,e,{relatedTarget:n,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(gt).defaultPrevented)return;if(!i||!n)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=n;const l=s?"carousel-item-start":"carousel-item-end",c=s?"carousel-item-next":"carousel-item-prev";n.classList.add(c),g(n),i.classList.add(l),n.classList.add(l),this._queueCallback((()=>{n.classList.remove(l,c),n.classList.add(Et),i.classList.remove(Et,c,l),this._isSliding=!1,r(ft)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return K.findOne(kt,this._element)}_getItems(){return K.find(Tt,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ut?dt:ht:t===ut?ht:dt}_orderToDirection(t){return p()?t===dt?ut:_t:t===dt?_t:ut}static jQueryInterface(t){return this.each((function(){const e=Ot.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}j.on(document,wt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=K.getElementFromSelector(this);if(!e||!e.classList.contains(At))return;t.preventDefault();const i=Ot.getOrCreateInstance(e),s=this.getAttribute("data-bs-slide-to");return s?(i.to(s),void i._maybeEnableCycle()):"next"===B.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),j.on(window,yt,(()=>{const t=K.find('[data-bs-ride="carousel"]');for(const e of t)Ot.getOrCreateInstance(e)})),b(Ot);const It=".bs.collapse",Dt=`show${It}`,Nt=`shown${It}`,Pt=`hide${It}`,xt=`hidden${It}`,Mt=`click${It}.data-api`,jt="show",Ft="collapse",zt="collapsing",Ht=`:scope .${Ft} .${Ft}`,Bt='[data-bs-toggle="collapse"]',qt={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Rt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=K.find(Bt);for(const t of i){const e=K.getSelectorFromElement(t),i=K.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return qt}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Rt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(j.trigger(this._element,Dt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Ft),this._element.classList.add(zt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(zt),this._element.classList.add(Ft,jt),this._element.style[e]="",j.trigger(this._element,Nt)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,Pt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,g(this._element),this._element.classList.add(zt),this._element.classList.remove(Ft,jt);for(const t of this._triggerArray){const e=K.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(zt),this._element.classList.add(Ft),j.trigger(this._element,xt)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(jt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=c(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Bt);for(const e of t){const t=K.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=K.find(Ht,this._config.parent);return K.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Rt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}j.on(document,Mt,Bt,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of K.getMultipleElementsFromSelector(this))Rt.getOrCreateInstance(t,{toggle:!1}).toggle()})),b(Rt);const Kt="dropdown",Vt=".bs.dropdown",Qt=".data-api",Xt="ArrowUp",Yt="ArrowDown",Ut=`hide${Vt}`,Gt=`hidden${Vt}`,Jt=`show${Vt}`,Zt=`shown${Vt}`,te=`click${Vt}${Qt}`,ee=`keydown${Vt}${Qt}`,ie=`keyup${Vt}${Qt}`,se="show",ne='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',oe=`${ne}.${se}`,re=".dropdown-menu",ae=p()?"top-end":"top-start",le=p()?"top-start":"top-end",ce=p()?"bottom-end":"bottom-start",he=p()?"bottom-start":"bottom-end",de=p()?"left-start":"right-start",ue=p()?"right-start":"left-start",_e={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},ge={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class fe extends W{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=K.next(this._element,re)[0]||K.prev(this._element,re)[0]||K.findOne(re,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return _e}static get DefaultType(){return ge}static get NAME(){return Kt}toggle(){return this._isShown()?this.hide():this.show()}show(){if(d(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!j.trigger(this._element,Jt,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))j.on(t,"mouseover",_);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(se),this._element.classList.add(se),j.trigger(this._element,Zt,t)}}hide(){if(d(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!j.trigger(this._element,Ut,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.off(t,"mouseover",_);this._popper&&this._popper.destroy(),this._menu.classList.remove(se),this._element.classList.remove(se),this._element.setAttribute("aria-expanded","false"),B.removeDataAttribute(this._menu,"popper"),j.trigger(this._element,Gt,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!l(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Kt.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===i)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:l(this._config.reference)?t=c(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=i.createPopper(t,this._menu,e)}_isShown(){return this._menu.classList.contains(se)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return de;if(t.classList.contains("dropstart"))return ue;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?le:ae:e?he:ce}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(B.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...v(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=K.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>h(t)));i.length&&w(i,e,t===Yt,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=fe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=K.find(oe);for(const i of e){const e=fe.getInstance(i);if(!e||!1===e._config.autoClose)continue;const s=t.composedPath(),n=s.includes(e._menu);if(s.includes(e._element)||"inside"===e._config.autoClose&&!n||"outside"===e._config.autoClose&&n)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,s=[Xt,Yt].includes(t.key);if(!s&&!i)return;if(e&&!i)return;t.preventDefault();const n=this.matches(ne)?this:K.prev(this,ne)[0]||K.next(this,ne)[0]||K.findOne(ne,t.delegateTarget.parentNode),o=fe.getOrCreateInstance(n);if(s)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),n.focus())}}j.on(document,ee,ne,fe.dataApiKeydownHandler),j.on(document,ee,re,fe.dataApiKeydownHandler),j.on(document,te,fe.clearMenus),j.on(document,ie,fe.clearMenus),j.on(document,te,ne,(function(t){t.preventDefault(),fe.getOrCreateInstance(this).toggle()})),b(fe);const me="backdrop",pe="show",be=`mousedown.bs.${me}`,ve={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},ye={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class we extends q{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return ve}static get DefaultType(){return ye}static get NAME(){return me}show(t){if(!this._config.isVisible)return void v(t);this._append();const e=this._getElement();this._config.isAnimated&&g(e),e.classList.add(pe),this._emulateAnimation((()=>{v(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(pe),this._emulateAnimation((()=>{this.dispose(),v(t)}))):v(t)}dispose(){this._isAppended&&(j.off(this._element,be),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=c(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),j.on(t,be,(()=>{v(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){y(t,this._getElement(),this._config.isAnimated)}}const Ae=".bs.focustrap",Ee=`focusin${Ae}`,Ce=`keydown.tab${Ae}`,Te="backward",ke={autofocus:!0,trapElement:null},$e={autofocus:"boolean",trapElement:"element"};class Se extends q{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return ke}static get DefaultType(){return $e}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),j.off(document,Ae),j.on(document,Ee,(t=>this._handleFocusin(t))),j.on(document,Ce,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,j.off(document,Ae))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=K.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===Te?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Te:"forward")}}const Le=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Oe=".sticky-top",Ie="padding-right",De="margin-right";class Ne{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,Ie,(e=>e+t)),this._setElementAttributes(Le,Ie,(e=>e+t)),this._setElementAttributes(Oe,De,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,Ie),this._resetElementAttributes(Le,Ie),this._resetElementAttributes(Oe,De)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const s=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+s)return;this._saveInitialAttribute(t,e);const n=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(n))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&B.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=B.getDataAttribute(t,e);null!==i?(B.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(l(t))e(t);else for(const i of K.find(t,this._element))e(i)}}const Pe=".bs.modal",xe=`hide${Pe}`,Me=`hidePrevented${Pe}`,je=`hidden${Pe}`,Fe=`show${Pe}`,ze=`shown${Pe}`,He=`resize${Pe}`,Be=`click.dismiss${Pe}`,qe=`mousedown.dismiss${Pe}`,We=`keydown.dismiss${Pe}`,Re=`click${Pe}.data-api`,Ke="modal-open",Ve="show",Qe="modal-static",Xe={backdrop:!0,focus:!0,keyboard:!0},Ye={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ue extends W{constructor(t,e){super(t,e),this._dialog=K.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Ne,this._addEventListeners()}static get Default(){return Xe}static get DefaultType(){return Ye}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||j.trigger(this._element,Fe,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Ke),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(j.trigger(this._element,xe).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Ve),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){j.off(window,Pe),j.off(this._dialog,Pe),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new we({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Se({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=K.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),g(this._element),this._element.classList.add(Ve),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,j.trigger(this._element,ze,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){j.on(this._element,We,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),j.on(window,He,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),j.on(this._element,qe,(t=>{j.one(this._element,Be,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Ke),this._resetAdjustments(),this._scrollBar.reset(),j.trigger(this._element,je)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(j.trigger(this._element,Me).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Qe)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Qe),this._queueCallback((()=>{this._element.classList.remove(Qe),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Ue.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}j.on(document,Re,'[data-bs-toggle="modal"]',(function(t){const e=K.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),j.one(e,Fe,(t=>{t.defaultPrevented||j.one(e,je,(()=>{h(this)&&this.focus()}))}));const i=K.findOne(".modal.show");i&&Ue.getInstance(i).hide(),Ue.getOrCreateInstance(e).toggle(this)})),V(Ue),b(Ue);const Ge=".bs.offcanvas",Je=".data-api",Ze=`load${Ge}${Je}`,ti="show",ei="showing",ii="hiding",si=".offcanvas.show",ni=`show${Ge}`,oi=`shown${Ge}`,ri=`hide${Ge}`,ai=`hidePrevented${Ge}`,li=`hidden${Ge}`,ci=`resize${Ge}`,hi=`click${Ge}${Je}`,di=`keydown.dismiss${Ge}`,ui={backdrop:!0,keyboard:!0,scroll:!1},_i={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class gi extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return ui}static get DefaultType(){return _i}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||j.trigger(this._element,ni,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new Ne).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(ei),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(ti),this._element.classList.remove(ei),j.trigger(this._element,oi,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(j.trigger(this._element,ri).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(ii),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(ti,ii),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new Ne).reset(),j.trigger(this._element,li)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new we({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():j.trigger(this._element,ai)}:null})}_initializeFocusTrap(){return new Se({trapElement:this._element})}_addEventListeners(){j.on(this._element,di,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():j.trigger(this._element,ai))}))}static jQueryInterface(t){return this.each((function(){const e=gi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}j.on(document,hi,'[data-bs-toggle="offcanvas"]',(function(t){const e=K.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),d(this))return;j.one(e,li,(()=>{h(this)&&this.focus()}));const i=K.findOne(si);i&&i!==e&&gi.getInstance(i).hide(),gi.getOrCreateInstance(e).toggle(this)})),j.on(window,Ze,(()=>{for(const t of K.find(si))gi.getOrCreateInstance(t).show()})),j.on(window,ci,(()=>{for(const t of K.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&gi.getOrCreateInstance(t).hide()})),V(gi),b(gi);const fi={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},mi=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),pi=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,bi=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!mi.has(i)||Boolean(pi.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},vi={allowList:fi,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},yi={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},wi={entry:"(string|element|function|null)",selector:"(string|element)"};class Ai extends q{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return vi}static get DefaultType(){return yi}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},wi)}_setContent(t,e,i){const s=K.findOne(i,t);s&&((e=this._resolvePossibleFunction(e))?l(e)?this._putElementInTemplate(c(e),s):this._config.html?s.innerHTML=this._maybeSanitize(e):s.textContent=e:s.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const s=(new window.DOMParser).parseFromString(t,"text/html"),n=[].concat(...s.body.querySelectorAll("*"));for(const t of n){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const s=[].concat(...t.attributes),n=[].concat(e["*"]||[],e[i]||[]);for(const e of s)bi(e,n)||t.removeAttribute(e.nodeName)}return s.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return v(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ei=new Set(["sanitize","allowList","sanitizeFn"]),Ci="fade",Ti="show",ki=".modal",$i="hide.bs.modal",Si="hover",Li="focus",Oi={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},Ii={allowList:fi,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Di={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Ni extends W{constructor(t,e){if(void 0===i)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Ii}static get DefaultType(){return Di}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(ki),$i,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=j.trigger(this._element,this.constructor.eventName("show")),e=(u(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:s}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(s.append(i),j.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(Ti),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.on(t,"mouseover",_);this._queueCallback((()=>{j.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!j.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(Ti),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.off(t,"mouseover",_);this._activeTrigger.click=!1,this._activeTrigger[Li]=!1,this._activeTrigger[Si]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),j.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ci,Ti),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(Ci),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Ai({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ci)}_isShown(){return this.tip&&this.tip.classList.contains(Ti)}_createPopper(t){const e=v(this._config.placement,[this,t,this._element]),s=Oi[e.toUpperCase()];return i.createPopper(this._element,t,this._getPopperConfig(s))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return v(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...v(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)j.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Si?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===Si?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");j.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Li:Si]=!0,e._enter()})),j.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Li:Si]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(ki),$i,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=B.getDataAttributes(this._element);for(const t of Object.keys(e))Ei.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:c(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=Ni.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}b(Ni);const Pi={...Ni.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},xi={...Ni.DefaultType,content:"(null|string|element|function)"};class Mi extends Ni{static get Default(){return Pi}static get DefaultType(){return xi}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=Mi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}b(Mi);const ji=".bs.scrollspy",Fi=`activate${ji}`,zi=`click${ji}`,Hi=`load${ji}.data-api`,Bi="active",qi="[href]",Wi=".nav-link",Ri=`${Wi}, .nav-item > ${Wi}, .list-group-item`,Ki={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Vi={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Qi extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Ki}static get DefaultType(){return Vi}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=c(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(j.off(this._config.target,zi),j.on(this._config.target,zi,qi,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,s=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:s,behavior:"smooth"});i.scrollTop=s}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},s=(this._rootElement||document.documentElement).scrollTop,n=s>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=s;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(n&&t){if(i(o),!s)return}else n||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=K.find(qi,this._config.target);for(const e of t){if(!e.hash||d(e))continue;const t=K.findOne(decodeURI(e.hash),this._element);h(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(Bi),this._activateParents(t),j.trigger(this._element,Fi,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))K.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(Bi);else for(const e of K.parents(t,".nav, .list-group"))for(const t of K.prev(e,Ri))t.classList.add(Bi)}_clearActiveClass(t){t.classList.remove(Bi);const e=K.find(`${qi}.${Bi}`,t);for(const t of e)t.classList.remove(Bi)}static jQueryInterface(t){return this.each((function(){const e=Qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(window,Hi,(()=>{for(const t of K.find('[data-bs-spy="scroll"]'))Qi.getOrCreateInstance(t)})),b(Qi);const Xi=".bs.tab",Yi=`hide${Xi}`,Ui=`hidden${Xi}`,Gi=`show${Xi}`,Ji=`shown${Xi}`,Zi=`click${Xi}`,ts=`keydown${Xi}`,es=`load${Xi}`,is="ArrowLeft",ss="ArrowRight",ns="ArrowUp",os="ArrowDown",rs="Home",as="End",ls="active",cs="fade",hs="show",ds=".dropdown-toggle",us=`:not(${ds})`,_s='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',gs=`.nav-link${us}, .list-group-item${us}, [role="tab"]${us}, ${_s}`,fs=`.${ls}[data-bs-toggle="tab"], .${ls}[data-bs-toggle="pill"], .${ls}[data-bs-toggle="list"]`;class ms extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),j.on(this._element,ts,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?j.trigger(e,Yi,{relatedTarget:t}):null;j.trigger(t,Gi,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(ls),this._activate(K.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),j.trigger(t,Ji,{relatedTarget:e})):t.classList.add(hs)}),t,t.classList.contains(cs)))}_deactivate(t,e){t&&(t.classList.remove(ls),t.blur(),this._deactivate(K.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),j.trigger(t,Ui,{relatedTarget:e})):t.classList.remove(hs)}),t,t.classList.contains(cs)))}_keydown(t){if(![is,ss,ns,os,rs,as].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!d(t)));let i;if([rs,as].includes(t.key))i=e[t.key===rs?0:e.length-1];else{const s=[ss,os].includes(t.key);i=w(e,t.target,s,!0)}i&&(i.focus({preventScroll:!0}),ms.getOrCreateInstance(i).show())}_getChildren(){return K.find(gs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=K.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const s=(t,s)=>{const n=K.findOne(t,i);n&&n.classList.toggle(s,e)};s(ds,ls),s(".dropdown-menu",hs),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(ls)}_getInnerElement(t){return t.matches(gs)?t:K.findOne(gs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=ms.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(document,Zi,_s,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),d(this)||ms.getOrCreateInstance(this).show()})),j.on(window,es,(()=>{for(const t of K.find(fs))ms.getOrCreateInstance(t)})),b(ms);const ps=".bs.toast",bs=`mouseover${ps}`,vs=`mouseout${ps}`,ys=`focusin${ps}`,ws=`focusout${ps}`,As=`hide${ps}`,Es=`hidden${ps}`,Cs=`show${ps}`,Ts=`shown${ps}`,ks="hide",$s="show",Ss="showing",Ls={animation:"boolean",autohide:"boolean",delay:"number"},Os={animation:!0,autohide:!0,delay:5e3};class Is extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Os}static get DefaultType(){return Ls}static get NAME(){return"toast"}show(){j.trigger(this._element,Cs).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(ks),g(this._element),this._element.classList.add($s,Ss),this._queueCallback((()=>{this._element.classList.remove(Ss),j.trigger(this._element,Ts),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(j.trigger(this._element,As).defaultPrevented||(this._element.classList.add(Ss),this._queueCallback((()=>{this._element.classList.add(ks),this._element.classList.remove(Ss,$s),j.trigger(this._element,Es)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove($s),super.dispose()}isShown(){return this._element.classList.contains($s)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){j.on(this._element,bs,(t=>this._onInteraction(t,!0))),j.on(this._element,vs,(t=>this._onInteraction(t,!1))),j.on(this._element,ys,(t=>this._onInteraction(t,!0))),j.on(this._element,ws,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Is.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return V(Is),b(Is),{Alert:U,Button:J,Carousel:Ot,Collapse:Rt,Dropdown:fe,Modal:Ue,Offcanvas:gi,Popover:Mi,ScrollSpy:Qi,Tab:ms,Toast:Is,Tooltip:Ni}})); -//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file diff --git a/apps/static/css/index.css b/apps/static/css/index.css index a7747ee..1ee94e7 100644 --- a/apps/static/css/index.css +++ b/apps/static/css/index.css @@ -121,44 +121,19 @@ body { .ticket-item .ticket-item-complex { transition: all 0.3s ease; - overflow: visible; + overflow: hidden; width: 2rem; } #ticketsContainer:not(.complex-items) .ticket-item .ticket-item-complex { margin: 0 !important; width: 0 !important; - overflow: hidden; } .ticket-item .ticket-item-complex .badge { min-width: 1.8rem; - position: relative; } -.ticket-item .ticket-item-complex .badge:hover { - margin-left: 2rem; -} - -.ticket-item .ticket-item-complex .badge .ticket-item-complex-expand { - display: none; -} - -.ticket-item .ticket-item-complex .badge:hover .ticket-item-complex-expand { - display: inline; -} - - - -/* -.ticket-item .ticket-item-complex .badge:hover .ticket-item-complex-expand, -.ticket-item .ticket-item-complex .badge .ticket-item-complex-expand:hover { - display: inline; - width: fit-content; - -} -*/ - .ticket-item .ticket-item-icon { width: 2rem; height: 2rem; diff --git a/apps/static/js/base.js b/apps/static/js/base.js index 39a1faf..67ae214 100644 --- a/apps/static/js/base.js +++ b/apps/static/js/base.js @@ -1,15 +1,22 @@ -$("#themeToggle").on("click", function() { - const currentTheme = $("body").attr("data-bs-theme"); +$(document).ready(function() { + // Activate all tooltips + $('[data-bs-toggle="tooltip"]').tooltip(); - if (currentTheme == "light") { - $("body").attr("data-bs-theme", "dark"); + // Apply the user preferred theme + const theme = localStorage.getItem("theme"); + if (theme == "light" || theme == "dark") { + $("body").attr("data-bs-theme", theme); } else { $("body").attr("data-bs-theme", "light"); } }); -$(document).ready(function() { - // Activate all tooltips - $('[data-bs-toggle="tooltip"]').tooltip(); +$("#themeToggle").on("click", function() { + var theme = $("body").attr("data-bs-theme"); + + theme = theme == "light" ? "dark" : "light"; + + localStorage.setItem("theme", theme) + $("body").attr("data-bs-theme", theme); }); \ No newline at end of file diff --git a/apps/static/js/bootstrap.bundle.min.js b/apps/static/js/bootstrap.bundle.min.js new file mode 100644 index 0000000..b1999d9 --- /dev/null +++ b/apps/static/js/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.3.2 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function M(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function j(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${j(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${j(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=M(t.dataset[n])}return e},getDataAttribute:(t,e)=>M(t.getAttribute(`data-bs-${j(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?n(i.trim()):null}return e},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",Mt="collapsing",jt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(Mt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(Mt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(jt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Me(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const je={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Me(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:Me(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==P(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],M=f?-T[$]/2:0,j=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-M-q-z-O.mainAxis:j-q-z-O.mainAxis,K=v?-E[$]/2+M+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Ws="show",Bs=".dropdown-toggle",zs=`:not(${Bs})`,Rs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}, ${Rs}`,Vs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Ks extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Ks.getOrCreateInstance(i).show())}_getChildren(){return z.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(Bs,Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(qs)?t:z.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Ks.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,Rs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Ks.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(Vs))Ks.getOrCreateInstance(t)})),m(Ks);const Qs=".bs.toast",Xs=`mouseover${Qs}`,Ys=`mouseout${Qs}`,Us=`focusin${Qs}`,Gs=`focusout${Qs}`,Js=`hide${Qs}`,Zs=`hidden${Qs}`,to=`show${Qs}`,eo=`shown${Qs}`,io="hide",no="show",so="showing",oo={animation:"boolean",autohide:"boolean",delay:"number"},ro={animation:!0,autohide:!0,delay:5e3};class ao extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ro}static get DefaultType(){return oo}static get NAME(){return"toast"}show(){N.trigger(this._element,to).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(io),d(this._element),this._element.classList.add(no,so),this._queueCallback((()=>{this._element.classList.remove(so),N.trigger(this._element,eo),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Js).defaultPrevented||(this._element.classList.add(so),this._queueCallback((()=>{this._element.classList.add(io),this._element.classList.remove(so,no),N.trigger(this._element,Zs)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(no),super.dispose()}isShown(){return this._element.classList.contains(no)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Xs,(t=>this._onInteraction(t,!0))),N.on(this._element,Ys,(t=>this._onInteraction(t,!1))),N.on(this._element,Us,(t=>this._onInteraction(t,!0))),N.on(this._element,Gs,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ao.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ao),m(ao),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Ks,Toast:ao,Tooltip:cs}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/apps/static/js/index.js b/apps/static/js/index.js index ffc9f8b..bf103d5 100644 --- a/apps/static/js/index.js +++ b/apps/static/js/index.js @@ -22006,978 +22006,6 @@ exports.preventOverflow = preventOverflow$1; },{"Zbi7gb":12}],10:[function(require,module,exports){ "use strict"; -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } - -/*! - * Datepicker for Bootstrap v1.9.0 (https://github.com/uxsolutions/bootstrap-datepicker) - * - * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) - */ -!function (a) { - "function" == typeof define && define.amd ? define(["jquery"], a) : a("object" == (typeof exports === "undefined" ? "undefined" : _typeof(exports)) ? require("jquery") : jQuery); -}(function (a, b) { - function c() { - return new Date(Date.UTC.apply(Date, arguments)); - } - - function d() { - var a = new Date(); - return c(a.getFullYear(), a.getMonth(), a.getDate()); - } - - function e(a, b) { - return a.getUTCFullYear() === b.getUTCFullYear() && a.getUTCMonth() === b.getUTCMonth() && a.getUTCDate() === b.getUTCDate(); - } - - function f(c, d) { - return function () { - return d !== b && a.fn.datepicker.deprecated(d), this[c].apply(this, arguments); - }; - } - - function g(a) { - return a && !isNaN(a.getTime()); - } - - function h(b, c) { - function d(a, b) { - return b.toLowerCase(); - } - - var e, - f = a(b).data(), - g = {}, - h = new RegExp("^" + c.toLowerCase() + "([A-Z])"); - c = new RegExp("^" + c.toLowerCase()); - - for (var i in f) { - c.test(i) && (e = i.replace(h, d), g[e] = f[i]); - } - - return g; - } - - function i(b) { - var c = {}; - - if (q[b] || (b = b.split("-")[0], q[b])) { - var d = q[b]; - return a.each(p, function (a, b) { - b in d && (c[b] = d[b]); - }), c; - } - } - - var j = function () { - var b = { - get: function get(a) { - return this.slice(a)[0]; - }, - contains: function contains(a) { - for (var b = a && a.valueOf(), c = 0, d = this.length; c < d; c++) { - if (0 <= this[c].valueOf() - b && this[c].valueOf() - b < 864e5) return c; - } - - return -1; - }, - remove: function remove(a) { - this.splice(a, 1); - }, - replace: function replace(b) { - b && (a.isArray(b) || (b = [b]), this.clear(), this.push.apply(this, b)); - }, - clear: function clear() { - this.length = 0; - }, - copy: function copy() { - var a = new j(); - return a.replace(this), a; - } - }; - return function () { - var c = []; - return c.push.apply(c, arguments), a.extend(c, b), c; - }; - }(), - k = function k(b, c) { - a.data(b, "datepicker", this), this._events = [], this._secondaryEvents = [], this._process_options(c), this.dates = new j(), this.viewDate = this.o.defaultViewDate, this.focusDate = null, this.element = a(b), this.isInput = this.element.is("input"), this.inputField = this.isInput ? this.element : this.element.find("input"), this.component = !!this.element.hasClass("date") && this.element.find(".add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn"), this.component && 0 === this.component.length && (this.component = !1), this.isInline = !this.component && this.element.is("div"), this.picker = a(r.template), this._check_template(this.o.templates.leftArrow) && this.picker.find(".prev").html(this.o.templates.leftArrow), this._check_template(this.o.templates.rightArrow) && this.picker.find(".next").html(this.o.templates.rightArrow), this._buildEvents(), this._attachEvents(), this.isInline ? this.picker.addClass("datepicker-inline").appendTo(this.element) : this.picker.addClass("datepicker-dropdown dropdown-menu"), this.o.rtl && this.picker.addClass("datepicker-rtl"), this.o.calendarWeeks && this.picker.find(".datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear").attr("colspan", function (a, b) { - return Number(b) + 1; - }), this._process_options({ - startDate: this._o.startDate, - endDate: this._o.endDate, - daysOfWeekDisabled: this.o.daysOfWeekDisabled, - daysOfWeekHighlighted: this.o.daysOfWeekHighlighted, - datesDisabled: this.o.datesDisabled - }), this._allow_update = !1, this.setViewMode(this.o.startView), this._allow_update = !0, this.fillDow(), this.fillMonths(), this.update(), this.isInline && this.show(); - }; - - k.prototype = { - constructor: k, - _resolveViewName: function _resolveViewName(b) { - return a.each(r.viewModes, function (c, d) { - if (b === c || -1 !== a.inArray(b, d.names)) return b = c, !1; - }), b; - }, - _resolveDaysOfWeek: function _resolveDaysOfWeek(b) { - return a.isArray(b) || (b = b.split(/[,\s]*/)), a.map(b, Number); - }, - _check_template: function _check_template(c) { - try { - if (c === b || "" === c) return !1; - if ((c.match(/[<>]/g) || []).length <= 0) return !0; - return a(c).length > 0; - } catch (a) { - return !1; - } - }, - _process_options: function _process_options(b) { - this._o = a.extend({}, this._o, b); - var e = this.o = a.extend({}, this._o), - f = e.language; - q[f] || (f = f.split("-")[0], q[f] || (f = o.language)), e.language = f, e.startView = this._resolveViewName(e.startView), e.minViewMode = this._resolveViewName(e.minViewMode), e.maxViewMode = this._resolveViewName(e.maxViewMode), e.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, e.startView)), !0 !== e.multidate && (e.multidate = Number(e.multidate) || !1, !1 !== e.multidate && (e.multidate = Math.max(0, e.multidate))), e.multidateSeparator = String(e.multidateSeparator), e.weekStart %= 7, e.weekEnd = (e.weekStart + 6) % 7; - var g = r.parseFormat(e.format); - e.startDate !== -1 / 0 && (e.startDate ? e.startDate instanceof Date ? e.startDate = this._local_to_utc(this._zero_time(e.startDate)) : e.startDate = r.parseDate(e.startDate, g, e.language, e.assumeNearbyYear) : e.startDate = -1 / 0), e.endDate !== 1 / 0 && (e.endDate ? e.endDate instanceof Date ? e.endDate = this._local_to_utc(this._zero_time(e.endDate)) : e.endDate = r.parseDate(e.endDate, g, e.language, e.assumeNearbyYear) : e.endDate = 1 / 0), e.daysOfWeekDisabled = this._resolveDaysOfWeek(e.daysOfWeekDisabled || []), e.daysOfWeekHighlighted = this._resolveDaysOfWeek(e.daysOfWeekHighlighted || []), e.datesDisabled = e.datesDisabled || [], a.isArray(e.datesDisabled) || (e.datesDisabled = e.datesDisabled.split(",")), e.datesDisabled = a.map(e.datesDisabled, function (a) { - return r.parseDate(a, g, e.language, e.assumeNearbyYear); - }); - var h = String(e.orientation).toLowerCase().split(/\s+/g), - i = e.orientation.toLowerCase(); - if (h = a.grep(h, function (a) { - return /^auto|left|right|top|bottom$/.test(a); - }), e.orientation = { - x: "auto", - y: "auto" - }, i && "auto" !== i) { - if (1 === h.length) switch (h[0]) { - case "top": - case "bottom": - e.orientation.y = h[0]; - break; - - case "left": - case "right": - e.orientation.x = h[0]; - } else i = a.grep(h, function (a) { - return /^left|right$/.test(a); - }), e.orientation.x = i[0] || "auto", i = a.grep(h, function (a) { - return /^top|bottom$/.test(a); - }), e.orientation.y = i[0] || "auto"; - } else ; - if (e.defaultViewDate instanceof Date || "string" == typeof e.defaultViewDate) e.defaultViewDate = r.parseDate(e.defaultViewDate, g, e.language, e.assumeNearbyYear);else if (e.defaultViewDate) { - var j = e.defaultViewDate.year || new Date().getFullYear(), - k = e.defaultViewDate.month || 0, - l = e.defaultViewDate.day || 1; - e.defaultViewDate = c(j, k, l); - } else e.defaultViewDate = d(); - }, - _applyEvents: function _applyEvents(a) { - for (var c, d, e, f = 0; f < a.length; f++) { - c = a[f][0], 2 === a[f].length ? (d = b, e = a[f][1]) : 3 === a[f].length && (d = a[f][1], e = a[f][2]), c.on(e, d); - } - }, - _unapplyEvents: function _unapplyEvents(a) { - for (var c, d, e, f = 0; f < a.length; f++) { - c = a[f][0], 2 === a[f].length ? (e = b, d = a[f][1]) : 3 === a[f].length && (e = a[f][1], d = a[f][2]), c.off(d, e); - } - }, - _buildEvents: function _buildEvents() { - var b = { - keyup: a.proxy(function (b) { - -1 === a.inArray(b.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) && this.update(); - }, this), - keydown: a.proxy(this.keydown, this), - paste: a.proxy(this.paste, this) - }; - !0 === this.o.showOnFocus && (b.focus = a.proxy(this.show, this)), this.isInput ? this._events = [[this.element, b]] : this.component && this.inputField.length ? this._events = [[this.inputField, b], [this.component, { - click: a.proxy(this.show, this) - }]] : this._events = [[this.element, { - click: a.proxy(this.show, this), - keydown: a.proxy(this.keydown, this) - }]], this._events.push([this.element, "*", { - blur: a.proxy(function (a) { - this._focused_from = a.target; - }, this) - }], [this.element, { - blur: a.proxy(function (a) { - this._focused_from = a.target; - }, this) - }]), this.o.immediateUpdates && this._events.push([this.element, { - "changeYear changeMonth": a.proxy(function (a) { - this.update(a.date); - }, this) - }]), this._secondaryEvents = [[this.picker, { - click: a.proxy(this.click, this) - }], [this.picker, ".prev, .next", { - click: a.proxy(this.navArrowsClick, this) - }], [this.picker, ".day:not(.disabled)", { - click: a.proxy(this.dayCellClick, this) - }], [a(window), { - resize: a.proxy(this.place, this) - }], [a(document), { - "mousedown touchstart": a.proxy(function (a) { - this.element.is(a.target) || this.element.find(a.target).length || this.picker.is(a.target) || this.picker.find(a.target).length || this.isInline || this.hide(); - }, this) - }]]; - }, - _attachEvents: function _attachEvents() { - this._detachEvents(), this._applyEvents(this._events); - }, - _detachEvents: function _detachEvents() { - this._unapplyEvents(this._events); - }, - _attachSecondaryEvents: function _attachSecondaryEvents() { - this._detachSecondaryEvents(), this._applyEvents(this._secondaryEvents); - }, - _detachSecondaryEvents: function _detachSecondaryEvents() { - this._unapplyEvents(this._secondaryEvents); - }, - _trigger: function _trigger(b, c) { - var d = c || this.dates.get(-1), - e = this._utc_to_local(d); - - this.element.trigger({ - type: b, - date: e, - viewMode: this.viewMode, - dates: a.map(this.dates, this._utc_to_local), - format: a.proxy(function (a, b) { - 0 === arguments.length ? (a = this.dates.length - 1, b = this.o.format) : "string" == typeof a && (b = a, a = this.dates.length - 1), b = b || this.o.format; - var c = this.dates.get(a); - return r.formatDate(c, b, this.o.language); - }, this) - }); - }, - show: function show() { - if (!(this.inputField.is(":disabled") || this.inputField.prop("readonly") && !1 === this.o.enableOnReadonly)) return this.isInline || this.picker.appendTo(this.o.container), this.place(), this.picker.show(), this._attachSecondaryEvents(), this._trigger("show"), (window.navigator.msMaxTouchPoints || "ontouchstart" in document) && this.o.disableTouchKeyboard && a(this.element).blur(), this; - }, - hide: function hide() { - return this.isInline || !this.picker.is(":visible") ? this : (this.focusDate = null, this.picker.hide().detach(), this._detachSecondaryEvents(), this.setViewMode(this.o.startView), this.o.forceParse && this.inputField.val() && this.setValue(), this._trigger("hide"), this); - }, - destroy: function destroy() { - return this.hide(), this._detachEvents(), this._detachSecondaryEvents(), this.picker.remove(), delete this.element.data().datepicker, this.isInput || delete this.element.data().date, this; - }, - paste: function paste(b) { - var c; - if (b.originalEvent.clipboardData && b.originalEvent.clipboardData.types && -1 !== a.inArray("text/plain", b.originalEvent.clipboardData.types)) c = b.originalEvent.clipboardData.getData("text/plain");else { - if (!window.clipboardData) return; - c = window.clipboardData.getData("Text"); - } - this.setDate(c), this.update(), b.preventDefault(); - }, - _utc_to_local: function _utc_to_local(a) { - if (!a) return a; - var b = new Date(a.getTime() + 6e4 * a.getTimezoneOffset()); - return b.getTimezoneOffset() !== a.getTimezoneOffset() && (b = new Date(a.getTime() + 6e4 * b.getTimezoneOffset())), b; - }, - _local_to_utc: function _local_to_utc(a) { - return a && new Date(a.getTime() - 6e4 * a.getTimezoneOffset()); - }, - _zero_time: function _zero_time(a) { - return a && new Date(a.getFullYear(), a.getMonth(), a.getDate()); - }, - _zero_utc_time: function _zero_utc_time(a) { - return a && c(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate()); - }, - getDates: function getDates() { - return a.map(this.dates, this._utc_to_local); - }, - getUTCDates: function getUTCDates() { - return a.map(this.dates, function (a) { - return new Date(a); - }); - }, - getDate: function getDate() { - return this._utc_to_local(this.getUTCDate()); - }, - getUTCDate: function getUTCDate() { - var a = this.dates.get(-1); - return a !== b ? new Date(a) : null; - }, - clearDates: function clearDates() { - this.inputField.val(""), this.update(), this._trigger("changeDate"), this.o.autoclose && this.hide(); - }, - setDates: function setDates() { - var b = a.isArray(arguments[0]) ? arguments[0] : arguments; - return this.update.apply(this, b), this._trigger("changeDate"), this.setValue(), this; - }, - setUTCDates: function setUTCDates() { - var b = a.isArray(arguments[0]) ? arguments[0] : arguments; - return this.setDates.apply(this, a.map(b, this._utc_to_local)), this; - }, - setDate: f("setDates"), - setUTCDate: f("setUTCDates"), - remove: f("destroy", "Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead"), - setValue: function setValue() { - var a = this.getFormattedDate(); - return this.inputField.val(a), this; - }, - getFormattedDate: function getFormattedDate(c) { - c === b && (c = this.o.format); - var d = this.o.language; - return a.map(this.dates, function (a) { - return r.formatDate(a, c, d); - }).join(this.o.multidateSeparator); - }, - getStartDate: function getStartDate() { - return this.o.startDate; - }, - setStartDate: function setStartDate(a) { - return this._process_options({ - startDate: a - }), this.update(), this.updateNavArrows(), this; - }, - getEndDate: function getEndDate() { - return this.o.endDate; - }, - setEndDate: function setEndDate(a) { - return this._process_options({ - endDate: a - }), this.update(), this.updateNavArrows(), this; - }, - setDaysOfWeekDisabled: function setDaysOfWeekDisabled(a) { - return this._process_options({ - daysOfWeekDisabled: a - }), this.update(), this; - }, - setDaysOfWeekHighlighted: function setDaysOfWeekHighlighted(a) { - return this._process_options({ - daysOfWeekHighlighted: a - }), this.update(), this; - }, - setDatesDisabled: function setDatesDisabled(a) { - return this._process_options({ - datesDisabled: a - }), this.update(), this; - }, - place: function place() { - if (this.isInline) return this; - var b = this.picker.outerWidth(), - c = this.picker.outerHeight(), - d = a(this.o.container), - e = d.width(), - f = "body" === this.o.container ? a(document).scrollTop() : d.scrollTop(), - g = d.offset(), - h = [0]; - this.element.parents().each(function () { - var b = a(this).css("z-index"); - "auto" !== b && 0 !== Number(b) && h.push(Number(b)); - }); - var i = Math.max.apply(Math, h) + this.o.zIndexOffset, - j = this.component ? this.component.parent().offset() : this.element.offset(), - k = this.component ? this.component.outerHeight(!0) : this.element.outerHeight(!1), - l = this.component ? this.component.outerWidth(!0) : this.element.outerWidth(!1), - m = j.left - g.left, - n = j.top - g.top; - "body" !== this.o.container && (n += f), this.picker.removeClass("datepicker-orient-top datepicker-orient-bottom datepicker-orient-right datepicker-orient-left"), "auto" !== this.o.orientation.x ? (this.picker.addClass("datepicker-orient-" + this.o.orientation.x), "right" === this.o.orientation.x && (m -= b - l)) : j.left < 0 ? (this.picker.addClass("datepicker-orient-left"), m -= j.left - 10) : m + b > e ? (this.picker.addClass("datepicker-orient-right"), m += l - b) : this.o.rtl ? this.picker.addClass("datepicker-orient-right") : this.picker.addClass("datepicker-orient-left"); - var o, - p = this.o.orientation.y; - - if ("auto" === p && (o = -f + n - c, p = o < 0 ? "bottom" : "top"), this.picker.addClass("datepicker-orient-" + p), "top" === p ? n -= c + parseInt(this.picker.css("padding-top")) : n += k, this.o.rtl) { - var q = e - (m + l); - this.picker.css({ - top: n, - right: q, - zIndex: i - }); - } else this.picker.css({ - top: n, - left: m, - zIndex: i - }); - - return this; - }, - _allow_update: !0, - update: function update() { - if (!this._allow_update) return this; - var b = this.dates.copy(), - c = [], - d = !1; - return arguments.length ? (a.each(arguments, a.proxy(function (a, b) { - b instanceof Date && (b = this._local_to_utc(b)), c.push(b); - }, this)), d = !0) : (c = this.isInput ? this.element.val() : this.element.data("date") || this.inputField.val(), c = c && this.o.multidate ? c.split(this.o.multidateSeparator) : [c], delete this.element.data().date), c = a.map(c, a.proxy(function (a) { - return r.parseDate(a, this.o.format, this.o.language, this.o.assumeNearbyYear); - }, this)), c = a.grep(c, a.proxy(function (a) { - return !this.dateWithinRange(a) || !a; - }, this), !0), this.dates.replace(c), this.o.updateViewDate && (this.dates.length ? this.viewDate = new Date(this.dates.get(-1)) : this.viewDate < this.o.startDate ? this.viewDate = new Date(this.o.startDate) : this.viewDate > this.o.endDate ? this.viewDate = new Date(this.o.endDate) : this.viewDate = this.o.defaultViewDate), d ? (this.setValue(), this.element.change()) : this.dates.length && String(b) !== String(this.dates) && d && (this._trigger("changeDate"), this.element.change()), !this.dates.length && b.length && (this._trigger("clearDate"), this.element.change()), this.fill(), this; - }, - fillDow: function fillDow() { - if (this.o.showWeekDays) { - var b = this.o.weekStart, - c = ""; - - for (this.o.calendarWeeks && (c += ' '); b < this.o.weekStart + 7;) { - c += '"; - } - - c += "", this.picker.find(".datepicker-days thead").append(c); - } - }, - fillMonths: function fillMonths() { - for (var a, b = this._utc_to_local(this.viewDate), c = "", d = 0; d < 12; d++) { - a = b && b.getMonth() === d ? " focused" : "", c += '' + q[this.o.language].monthsShort[d] + ""; - } - - this.picker.find(".datepicker-months td").html(c); - }, - setRange: function setRange(b) { - b && b.length ? this.range = a.map(b, function (a) { - return a.valueOf(); - }) : delete this.range, this.fill(); - }, - getClassNames: function getClassNames(b) { - var c = [], - f = this.viewDate.getUTCFullYear(), - g = this.viewDate.getUTCMonth(), - h = d(); - return b.getUTCFullYear() < f || b.getUTCFullYear() === f && b.getUTCMonth() < g ? c.push("old") : (b.getUTCFullYear() > f || b.getUTCFullYear() === f && b.getUTCMonth() > g) && c.push("new"), this.focusDate && b.valueOf() === this.focusDate.valueOf() && c.push("focused"), this.o.todayHighlight && e(b, h) && c.push("today"), -1 !== this.dates.contains(b) && c.push("active"), this.dateWithinRange(b) || c.push("disabled"), this.dateIsDisabled(b) && c.push("disabled", "disabled-date"), -1 !== a.inArray(b.getUTCDay(), this.o.daysOfWeekHighlighted) && c.push("highlighted"), this.range && (b > this.range[0] && b < this.range[this.range.length - 1] && c.push("range"), -1 !== a.inArray(b.valueOf(), this.range) && c.push("selected"), b.valueOf() === this.range[0] && c.push("range-start"), b.valueOf() === this.range[this.range.length - 1] && c.push("range-end")), c; - }, - _fill_yearsView: function _fill_yearsView(c, d, e, f, g, h, i) { - for (var j, k, l, m = "", n = e / 10, o = this.picker.find(c), p = Math.floor(f / e) * e, q = p + 9 * n, r = Math.floor(this.viewDate.getFullYear() / n) * n, s = a.map(this.dates, function (a) { - return Math.floor(a.getUTCFullYear() / n) * n; - }), t = p - n; t <= q + n; t += n) { - j = [d], k = null, t === p - n ? j.push("old") : t === q + n && j.push("new"), -1 !== a.inArray(t, s) && j.push("active"), (t < g || t > h) && j.push("disabled"), t === r && j.push("focused"), i !== a.noop && (l = i(new Date(t, 0, 1)), l === b ? l = {} : "boolean" == typeof l ? l = { - enabled: l - } : "string" == typeof l && (l = { - classes: l - }), !1 === l.enabled && j.push("disabled"), l.classes && (j = j.concat(l.classes.split(/\s+/))), l.tooltip && (k = l.tooltip)), m += '" + t + ""; - } - - o.find(".datepicker-switch").text(p + "-" + q), o.find("td").html(m); - }, - fill: function fill() { - var e, - f, - g = new Date(this.viewDate), - h = g.getUTCFullYear(), - i = g.getUTCMonth(), - j = this.o.startDate !== -1 / 0 ? this.o.startDate.getUTCFullYear() : -1 / 0, - k = this.o.startDate !== -1 / 0 ? this.o.startDate.getUTCMonth() : -1 / 0, - l = this.o.endDate !== 1 / 0 ? this.o.endDate.getUTCFullYear() : 1 / 0, - m = this.o.endDate !== 1 / 0 ? this.o.endDate.getUTCMonth() : 1 / 0, - n = q[this.o.language].today || q.en.today || "", - o = q[this.o.language].clear || q.en.clear || "", - p = q[this.o.language].titleFormat || q.en.titleFormat, - s = d(), - t = (!0 === this.o.todayBtn || "linked" === this.o.todayBtn) && s >= this.o.startDate && s <= this.o.endDate && !this.weekOfDateIsDisabled(s); - - if (!isNaN(h) && !isNaN(i)) { - this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(g, p, this.o.language)), this.picker.find("tfoot .today").text(n).css("display", t ? "table-cell" : "none"), this.picker.find("tfoot .clear").text(o).css("display", !0 === this.o.clearBtn ? "table-cell" : "none"), this.picker.find("thead .datepicker-title").text(this.o.title).css("display", "string" == typeof this.o.title && "" !== this.o.title ? "table-cell" : "none"), this.updateNavArrows(), this.fillMonths(); - var u = c(h, i, 0), - v = u.getUTCDate(); - u.setUTCDate(v - (u.getUTCDay() - this.o.weekStart + 7) % 7); - var w = new Date(u); - u.getUTCFullYear() < 100 && w.setUTCFullYear(u.getUTCFullYear()), w.setUTCDate(w.getUTCDate() + 42), w = w.valueOf(); - - for (var x, y, z = []; u.valueOf() < w;) { - if ((x = u.getUTCDay()) === this.o.weekStart && (z.push(""), this.o.calendarWeeks)) { - var A = new Date(+u + (this.o.weekStart - x - 7) % 7 * 864e5), - B = new Date(Number(A) + (11 - A.getUTCDay()) % 7 * 864e5), - C = new Date(Number(C = c(B.getUTCFullYear(), 0, 1)) + (11 - C.getUTCDay()) % 7 * 864e5), - D = (B - C) / 864e5 / 7 + 1; - z.push('' + D + ""); - } - - y = this.getClassNames(u), y.push("day"); - var E = u.getUTCDate(); - this.o.beforeShowDay !== a.noop && (f = this.o.beforeShowDay(this._utc_to_local(u)), f === b ? f = {} : "boolean" == typeof f ? f = { - enabled: f - } : "string" == typeof f && (f = { - classes: f - }), !1 === f.enabled && y.push("disabled"), f.classes && (y = y.concat(f.classes.split(/\s+/))), f.tooltip && (e = f.tooltip), f.content && (E = f.content)), y = a.isFunction(a.uniqueSort) ? a.uniqueSort(y) : a.unique(y), z.push('' + E + ""), e = null, x === this.o.weekEnd && z.push(""), u.setUTCDate(u.getUTCDate() + 1); - } - - this.picker.find(".datepicker-days tbody").html(z.join("")); - var F = q[this.o.language].monthsTitle || q.en.monthsTitle || "Months", - G = this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode < 2 ? F : h).end().find("tbody span").removeClass("active"); - - if (a.each(this.dates, function (a, b) { - b.getUTCFullYear() === h && G.eq(b.getUTCMonth()).addClass("active"); - }), (h < j || h > l) && G.addClass("disabled"), h === j && G.slice(0, k).addClass("disabled"), h === l && G.slice(m + 1).addClass("disabled"), this.o.beforeShowMonth !== a.noop) { - var H = this; - a.each(G, function (c, d) { - var e = new Date(h, c, 1), - f = H.o.beforeShowMonth(e); - f === b ? f = {} : "boolean" == typeof f ? f = { - enabled: f - } : "string" == typeof f && (f = { - classes: f - }), !1 !== f.enabled || a(d).hasClass("disabled") || a(d).addClass("disabled"), f.classes && a(d).addClass(f.classes), f.tooltip && a(d).prop("title", f.tooltip); - }); - } - - this._fill_yearsView(".datepicker-years", "year", 10, h, j, l, this.o.beforeShowYear), this._fill_yearsView(".datepicker-decades", "decade", 100, h, j, l, this.o.beforeShowDecade), this._fill_yearsView(".datepicker-centuries", "century", 1e3, h, j, l, this.o.beforeShowCentury); - } - }, - updateNavArrows: function updateNavArrows() { - if (this._allow_update) { - var a, - b, - c = new Date(this.viewDate), - d = c.getUTCFullYear(), - e = c.getUTCMonth(), - f = this.o.startDate !== -1 / 0 ? this.o.startDate.getUTCFullYear() : -1 / 0, - g = this.o.startDate !== -1 / 0 ? this.o.startDate.getUTCMonth() : -1 / 0, - h = this.o.endDate !== 1 / 0 ? this.o.endDate.getUTCFullYear() : 1 / 0, - i = this.o.endDate !== 1 / 0 ? this.o.endDate.getUTCMonth() : 1 / 0, - j = 1; - - switch (this.viewMode) { - case 4: - j *= 10; - - case 3: - j *= 10; - - case 2: - j *= 10; - - case 1: - a = Math.floor(d / j) * j <= f, b = Math.floor(d / j) * j + j > h; - break; - - case 0: - a = d <= f && e <= g, b = d >= h && e >= i; - } - - this.picker.find(".prev").toggleClass("disabled", a), this.picker.find(".next").toggleClass("disabled", b); - } - }, - click: function click(b) { - b.preventDefault(), b.stopPropagation(); - var e, f, g, h; - e = a(b.target), e.hasClass("datepicker-switch") && this.viewMode !== this.o.maxViewMode && this.setViewMode(this.viewMode + 1), e.hasClass("today") && !e.hasClass("day") && (this.setViewMode(0), this._setDate(d(), "linked" === this.o.todayBtn ? null : "view")), e.hasClass("clear") && this.clearDates(), e.hasClass("disabled") || (e.hasClass("month") || e.hasClass("year") || e.hasClass("decade") || e.hasClass("century")) && (this.viewDate.setUTCDate(1), f = 1, 1 === this.viewMode ? (h = e.parent().find("span").index(e), g = this.viewDate.getUTCFullYear(), this.viewDate.setUTCMonth(h)) : (h = 0, g = Number(e.text()), this.viewDate.setUTCFullYear(g)), this._trigger(r.viewModes[this.viewMode - 1].e, this.viewDate), this.viewMode === this.o.minViewMode ? this._setDate(c(g, h, f)) : (this.setViewMode(this.viewMode - 1), this.fill())), this.picker.is(":visible") && this._focused_from && this._focused_from.focus(), delete this._focused_from; - }, - dayCellClick: function dayCellClick(b) { - var c = a(b.currentTarget), - d = c.data("date"), - e = new Date(d); - this.o.updateViewDate && (e.getUTCFullYear() !== this.viewDate.getUTCFullYear() && this._trigger("changeYear", this.viewDate), e.getUTCMonth() !== this.viewDate.getUTCMonth() && this._trigger("changeMonth", this.viewDate)), this._setDate(e); - }, - navArrowsClick: function navArrowsClick(b) { - var c = a(b.currentTarget), - d = c.hasClass("prev") ? -1 : 1; - 0 !== this.viewMode && (d *= 12 * r.viewModes[this.viewMode].navStep), this.viewDate = this.moveMonth(this.viewDate, d), this._trigger(r.viewModes[this.viewMode].e, this.viewDate), this.fill(); - }, - _toggle_multidate: function _toggle_multidate(a) { - var b = this.dates.contains(a); - if (a || this.dates.clear(), -1 !== b ? (!0 === this.o.multidate || this.o.multidate > 1 || this.o.toggleActive) && this.dates.remove(b) : !1 === this.o.multidate ? (this.dates.clear(), this.dates.push(a)) : this.dates.push(a), "number" == typeof this.o.multidate) for (; this.dates.length > this.o.multidate;) { - this.dates.remove(0); - } - }, - _setDate: function _setDate(a, b) { - b && "date" !== b || this._toggle_multidate(a && new Date(a)), (!b && this.o.updateViewDate || "view" === b) && (this.viewDate = a && new Date(a)), this.fill(), this.setValue(), b && "view" === b || this._trigger("changeDate"), this.inputField.trigger("change"), !this.o.autoclose || b && "date" !== b || this.hide(); - }, - moveDay: function moveDay(a, b) { - var c = new Date(a); - return c.setUTCDate(a.getUTCDate() + b), c; - }, - moveWeek: function moveWeek(a, b) { - return this.moveDay(a, 7 * b); - }, - moveMonth: function moveMonth(a, b) { - if (!g(a)) return this.o.defaultViewDate; - if (!b) return a; - var c, - d, - e = new Date(a.valueOf()), - f = e.getUTCDate(), - h = e.getUTCMonth(), - i = Math.abs(b); - if (b = b > 0 ? 1 : -1, 1 === i) d = -1 === b ? function () { - return e.getUTCMonth() === h; - } : function () { - return e.getUTCMonth() !== c; - }, c = h + b, e.setUTCMonth(c), c = (c + 12) % 12;else { - for (var j = 0; j < i; j++) { - e = this.moveMonth(e, b); - } - - c = e.getUTCMonth(), e.setUTCDate(f), d = function d() { - return c !== e.getUTCMonth(); - }; - } - - for (; d();) { - e.setUTCDate(--f), e.setUTCMonth(c); - } - - return e; - }, - moveYear: function moveYear(a, b) { - return this.moveMonth(a, 12 * b); - }, - moveAvailableDate: function moveAvailableDate(a, b, c) { - do { - if (a = this[c](a, b), !this.dateWithinRange(a)) return !1; - c = "moveDay"; - } while (this.dateIsDisabled(a)); - - return a; - }, - weekOfDateIsDisabled: function weekOfDateIsDisabled(b) { - return -1 !== a.inArray(b.getUTCDay(), this.o.daysOfWeekDisabled); - }, - dateIsDisabled: function dateIsDisabled(b) { - return this.weekOfDateIsDisabled(b) || a.grep(this.o.datesDisabled, function (a) { - return e(b, a); - }).length > 0; - }, - dateWithinRange: function dateWithinRange(a) { - return a >= this.o.startDate && a <= this.o.endDate; - }, - keydown: function keydown(a) { - if (!this.picker.is(":visible")) return void (40 !== a.keyCode && 27 !== a.keyCode || (this.show(), a.stopPropagation())); - var b, - c, - d = !1, - e = this.focusDate || this.viewDate; - - switch (a.keyCode) { - case 27: - this.focusDate ? (this.focusDate = null, this.viewDate = this.dates.get(-1) || this.viewDate, this.fill()) : this.hide(), a.preventDefault(), a.stopPropagation(); - break; - - case 37: - case 38: - case 39: - case 40: - if (!this.o.keyboardNavigation || 7 === this.o.daysOfWeekDisabled.length) break; - b = 37 === a.keyCode || 38 === a.keyCode ? -1 : 1, 0 === this.viewMode ? a.ctrlKey ? (c = this.moveAvailableDate(e, b, "moveYear")) && this._trigger("changeYear", this.viewDate) : a.shiftKey ? (c = this.moveAvailableDate(e, b, "moveMonth")) && this._trigger("changeMonth", this.viewDate) : 37 === a.keyCode || 39 === a.keyCode ? c = this.moveAvailableDate(e, b, "moveDay") : this.weekOfDateIsDisabled(e) || (c = this.moveAvailableDate(e, b, "moveWeek")) : 1 === this.viewMode ? (38 !== a.keyCode && 40 !== a.keyCode || (b *= 4), c = this.moveAvailableDate(e, b, "moveMonth")) : 2 === this.viewMode && (38 !== a.keyCode && 40 !== a.keyCode || (b *= 4), c = this.moveAvailableDate(e, b, "moveYear")), c && (this.focusDate = this.viewDate = c, this.setValue(), this.fill(), a.preventDefault()); - break; - - case 13: - if (!this.o.forceParse) break; - e = this.focusDate || this.dates.get(-1) || this.viewDate, this.o.keyboardNavigation && (this._toggle_multidate(e), d = !0), this.focusDate = null, this.viewDate = this.dates.get(-1) || this.viewDate, this.setValue(), this.fill(), this.picker.is(":visible") && (a.preventDefault(), a.stopPropagation(), this.o.autoclose && this.hide()); - break; - - case 9: - this.focusDate = null, this.viewDate = this.dates.get(-1) || this.viewDate, this.fill(), this.hide(); - } - - d && (this.dates.length ? this._trigger("changeDate") : this._trigger("clearDate"), this.inputField.trigger("change")); - }, - setViewMode: function setViewMode(a) { - this.viewMode = a, this.picker.children("div").hide().filter(".datepicker-" + r.viewModes[this.viewMode].clsName).show(), this.updateNavArrows(), this._trigger("changeViewMode", new Date(this.viewDate)); - } - }; - - var l = function l(b, c) { - a.data(b, "datepicker", this), this.element = a(b), this.inputs = a.map(c.inputs, function (a) { - return a.jquery ? a[0] : a; - }), delete c.inputs, this.keepEmptyValues = c.keepEmptyValues, delete c.keepEmptyValues, n.call(a(this.inputs), c).on("changeDate", a.proxy(this.dateUpdated, this)), this.pickers = a.map(this.inputs, function (b) { - return a.data(b, "datepicker"); - }), this.updateDates(); - }; - - l.prototype = { - updateDates: function updateDates() { - this.dates = a.map(this.pickers, function (a) { - return a.getUTCDate(); - }), this.updateRanges(); - }, - updateRanges: function updateRanges() { - var b = a.map(this.dates, function (a) { - return a.valueOf(); - }); - a.each(this.pickers, function (a, c) { - c.setRange(b); - }); - }, - clearDates: function clearDates() { - a.each(this.pickers, function (a, b) { - b.clearDates(); - }); - }, - dateUpdated: function dateUpdated(c) { - if (!this.updating) { - this.updating = !0; - var d = a.data(c.target, "datepicker"); - - if (d !== b) { - var e = d.getUTCDate(), - f = this.keepEmptyValues, - g = a.inArray(c.target, this.inputs), - h = g - 1, - i = g + 1, - j = this.inputs.length; - - if (-1 !== g) { - if (a.each(this.pickers, function (a, b) { - b.getUTCDate() || b !== d && f || b.setUTCDate(e); - }), e < this.dates[h]) for (; h >= 0 && e < this.dates[h];) { - this.pickers[h--].setUTCDate(e); - } else if (e > this.dates[i]) for (; i < j && e > this.dates[i];) { - this.pickers[i++].setUTCDate(e); - } - this.updateDates(), delete this.updating; - } - } - } - }, - destroy: function destroy() { - a.map(this.pickers, function (a) { - a.destroy(); - }), a(this.inputs).off("changeDate", this.dateUpdated), delete this.element.data().datepicker; - }, - remove: f("destroy", "Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead") - }; - - var m = a.fn.datepicker, - n = function n(c) { - var d = Array.apply(null, arguments); - d.shift(); - var e; - if (this.each(function () { - var b = a(this), - f = b.data("datepicker"), - g = "object" == _typeof(c) && c; - - if (!f) { - var j = h(this, "date"), - m = a.extend({}, o, j, g), - n = i(m.language), - p = a.extend({}, o, n, j, g); - b.hasClass("input-daterange") || p.inputs ? (a.extend(p, { - inputs: p.inputs || b.find("input").toArray() - }), f = new l(this, p)) : f = new k(this, p), b.data("datepicker", f); - } - - "string" == typeof c && "function" == typeof f[c] && (e = f[c].apply(f, d)); - }), e === b || e instanceof k || e instanceof l) return this; - if (this.length > 1) throw new Error("Using only allowed for the collection of a single element (" + c + " function)"); - return e; - }; - - a.fn.datepicker = n; - var o = a.fn.datepicker.defaults = { - assumeNearbyYear: !1, - autoclose: !1, - beforeShowDay: a.noop, - beforeShowMonth: a.noop, - beforeShowYear: a.noop, - beforeShowDecade: a.noop, - beforeShowCentury: a.noop, - calendarWeeks: !1, - clearBtn: !1, - toggleActive: !1, - daysOfWeekDisabled: [], - daysOfWeekHighlighted: [], - datesDisabled: [], - endDate: 1 / 0, - forceParse: !0, - format: "mm/dd/yyyy", - keepEmptyValues: !1, - keyboardNavigation: !0, - language: "en", - minViewMode: 0, - maxViewMode: 4, - multidate: !1, - multidateSeparator: ",", - orientation: "auto", - rtl: !1, - startDate: -1 / 0, - startView: 0, - todayBtn: !1, - todayHighlight: !1, - updateViewDate: !0, - weekStart: 0, - disableTouchKeyboard: !1, - enableOnReadonly: !0, - showOnFocus: !0, - zIndexOffset: 10, - container: "body", - immediateUpdates: !1, - title: "", - templates: { - leftArrow: "«", - rightArrow: "»" - }, - showWeekDays: !0 - }, - p = a.fn.datepicker.locale_opts = ["format", "rtl", "weekStart"]; - a.fn.datepicker.Constructor = k; - var q = a.fn.datepicker.dates = { - en: { - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], - months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - today: "Today", - clear: "Clear", - titleFormat: "MM yyyy" - } - }, - r = { - viewModes: [{ - names: ["days", "month"], - clsName: "days", - e: "changeMonth" - }, { - names: ["months", "year"], - clsName: "months", - e: "changeYear", - navStep: 1 - }, { - names: ["years", "decade"], - clsName: "years", - e: "changeDecade", - navStep: 10 - }, { - names: ["decades", "century"], - clsName: "decades", - e: "changeCentury", - navStep: 100 - }, { - names: ["centuries", "millennium"], - clsName: "centuries", - e: "changeMillennium", - navStep: 1e3 - }], - validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g, - nonpunctuation: /[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g, - parseFormat: function parseFormat(a) { - if ("function" == typeof a.toValue && "function" == typeof a.toDisplay) return a; - var b = a.replace(this.validParts, "\0").split("\0"), - c = a.match(this.validParts); - if (!b || !b.length || !c || 0 === c.length) throw new Error("Invalid date format."); - return { - separators: b, - parts: c - }; - }, - parseDate: function parseDate(c, e, f, g) { - function h(a, b) { - return !0 === b && (b = 10), a < 100 && (a += 2e3) > new Date().getFullYear() + b && (a -= 100), a; - } - - function i() { - var a = this.slice(0, j[n].length), - b = j[n].slice(0, a.length); - return a.toLowerCase() === b.toLowerCase(); - } - - if (!c) return b; - if (c instanceof Date) return c; - if ("string" == typeof e && (e = r.parseFormat(e)), e.toValue) return e.toValue(c, e, f); - var j, - l, - m, - n, - o, - p = { - d: "moveDay", - m: "moveMonth", - w: "moveWeek", - y: "moveYear" - }, - s = { - yesterday: "-1d", - today: "+0d", - tomorrow: "+1d" - }; - - if (c in s && (c = s[c]), /^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(c)) { - for (j = c.match(/([\-+]\d+)([dmwy])/gi), c = new Date(), n = 0; n < j.length; n++) { - l = j[n].match(/([\-+]\d+)([dmwy])/i), m = Number(l[1]), o = p[l[2].toLowerCase()], c = k.prototype[o](c, m); - } - - return k.prototype._zero_utc_time(c); - } - - j = c && c.match(this.nonpunctuation) || []; - var t, - u, - v = {}, - w = ["yyyy", "yy", "M", "MM", "m", "mm", "d", "dd"], - x = { - yyyy: function yyyy(a, b) { - return a.setUTCFullYear(g ? h(b, g) : b); - }, - m: function m(a, b) { - if (isNaN(a)) return a; - - for (b -= 1; b < 0;) { - b += 12; - } - - for (b %= 12, a.setUTCMonth(b); a.getUTCMonth() !== b;) { - a.setUTCDate(a.getUTCDate() - 1); - } - - return a; - }, - d: function d(a, b) { - return a.setUTCDate(b); - } - }; - x.yy = x.yyyy, x.M = x.MM = x.mm = x.m, x.dd = x.d, c = d(); - var y = e.parts.slice(); - - if (j.length !== y.length && (y = a(y).filter(function (b, c) { - return -1 !== a.inArray(c, w); - }).toArray()), j.length === y.length) { - var z; - - for (n = 0, z = y.length; n < z; n++) { - if (t = parseInt(j[n], 10), l = y[n], isNaN(t)) switch (l) { - case "MM": - u = a(q[f].months).filter(i), t = a.inArray(u[0], q[f].months) + 1; - break; - - case "M": - u = a(q[f].monthsShort).filter(i), t = a.inArray(u[0], q[f].monthsShort) + 1; - } - v[l] = t; - } - - var A, B; - - for (n = 0; n < w.length; n++) { - (B = w[n]) in v && !isNaN(v[B]) && (A = new Date(c), x[B](A, v[B]), isNaN(A) || (c = A)); - } - } - - return c; - }, - formatDate: function formatDate(b, c, d) { - if (!b) return ""; - if ("string" == typeof c && (c = r.parseFormat(c)), c.toDisplay) return c.toDisplay(b, c, d); - var e = { - d: b.getUTCDate(), - D: q[d].daysShort[b.getUTCDay()], - DD: q[d].days[b.getUTCDay()], - m: b.getUTCMonth() + 1, - M: q[d].monthsShort[b.getUTCMonth()], - MM: q[d].months[b.getUTCMonth()], - yy: b.getUTCFullYear().toString().substring(2), - yyyy: b.getUTCFullYear() - }; - e.dd = (e.d < 10 ? "0" : "") + e.d, e.mm = (e.m < 10 ? "0" : "") + e.m, b = []; - - for (var f = a.extend([], c.separators), g = 0, h = c.parts.length; g <= h; g++) { - f.length && b.push(f.shift()), b.push(e[c.parts[g]]); - } - - return b.join(""); - }, - headTemplate: '' + o.templates.leftArrow + '' + o.templates.rightArrow + "", - contTemplate: '', - footTemplate: '' - }; - r.template = '
' + r.headTemplate + "" + r.footTemplate + '
' + r.headTemplate + r.contTemplate + r.footTemplate + '
' + r.headTemplate + r.contTemplate + r.footTemplate + '
' + r.headTemplate + r.contTemplate + r.footTemplate + '
' + r.headTemplate + r.contTemplate + r.footTemplate + "
", a.fn.datepicker.DPGlobal = r, a.fn.datepicker.noConflict = function () { - return a.fn.datepicker = m, this; - }, a.fn.datepicker.version = "1.9.0", a.fn.datepicker.deprecated = function (a) { - var b = window.console; - b && b.warn && b.warn("DEPRECATED: " + a); - }, a(document).on("focus.datepicker.data-api click.datepicker.data-api", '[data-provide="datepicker"]', function (b) { - var c = a(this); - c.data("datepicker") || (b.preventDefault(), n.call(c, "show")); - }), a(function () { - n.call(a('[data-provide="datepicker-inline"]')); - }); -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhIiwiZGVmaW5lIiwiYW1kIiwiZXhwb3J0cyIsInJlcXVpcmUiLCJqUXVlcnkiLCJiIiwiYyIsIkRhdGUiLCJVVEMiLCJhcHBseSIsImFyZ3VtZW50cyIsImQiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImUiLCJnZXRVVENGdWxsWWVhciIsImdldFVUQ01vbnRoIiwiZ2V0VVRDRGF0ZSIsImYiLCJmbiIsImRhdGVwaWNrZXIiLCJkZXByZWNhdGVkIiwiZyIsImlzTmFOIiwiZ2V0VGltZSIsImgiLCJ0b0xvd2VyQ2FzZSIsImRhdGEiLCJSZWdFeHAiLCJpIiwidGVzdCIsInJlcGxhY2UiLCJxIiwic3BsaXQiLCJlYWNoIiwicCIsImoiLCJnZXQiLCJzbGljZSIsImNvbnRhaW5zIiwidmFsdWVPZiIsImxlbmd0aCIsInJlbW92ZSIsInNwbGljZSIsImlzQXJyYXkiLCJjbGVhciIsInB1c2giLCJjb3B5IiwiZXh0ZW5kIiwiayIsIl9ldmVudHMiLCJfc2Vjb25kYXJ5RXZlbnRzIiwiX3Byb2Nlc3Nfb3B0aW9ucyIsImRhdGVzIiwidmlld0RhdGUiLCJvIiwiZGVmYXVsdFZpZXdEYXRlIiwiZm9jdXNEYXRlIiwiZWxlbWVudCIsImlzSW5wdXQiLCJpcyIsImlucHV0RmllbGQiLCJmaW5kIiwiY29tcG9uZW50IiwiaGFzQ2xhc3MiLCJpc0lubGluZSIsInBpY2tlciIsInIiLCJ0ZW1wbGF0ZSIsIl9jaGVja190ZW1wbGF0ZSIsInRlbXBsYXRlcyIsImxlZnRBcnJvdyIsImh0bWwiLCJyaWdodEFycm93IiwiX2J1aWxkRXZlbnRzIiwiX2F0dGFjaEV2ZW50cyIsImFkZENsYXNzIiwiYXBwZW5kVG8iLCJydGwiLCJjYWxlbmRhcldlZWtzIiwiYXR0ciIsIk51bWJlciIsInN0YXJ0RGF0ZSIsIl9vIiwiZW5kRGF0ZSIsImRheXNPZldlZWtEaXNhYmxlZCIsImRheXNPZldlZWtIaWdobGlnaHRlZCIsImRhdGVzRGlzYWJsZWQiLCJfYWxsb3dfdXBkYXRlIiwic2V0Vmlld01vZGUiLCJzdGFydFZpZXciLCJmaWxsRG93IiwiZmlsbE1vbnRocyIsInVwZGF0ZSIsInNob3ciLCJwcm90b3R5cGUiLCJjb25zdHJ1Y3RvciIsIl9yZXNvbHZlVmlld05hbWUiLCJ2aWV3TW9kZXMiLCJpbkFycmF5IiwibmFtZXMiLCJfcmVzb2x2ZURheXNPZldlZWsiLCJtYXAiLCJtYXRjaCIsImxhbmd1YWdlIiwibWluVmlld01vZGUiLCJtYXhWaWV3TW9kZSIsIk1hdGgiLCJtYXgiLCJtaW4iLCJtdWx0aWRhdGUiLCJtdWx0aWRhdGVTZXBhcmF0b3IiLCJTdHJpbmciLCJ3ZWVrU3RhcnQiLCJ3ZWVrRW5kIiwicGFyc2VGb3JtYXQiLCJmb3JtYXQiLCJfbG9jYWxfdG9fdXRjIiwiX3plcm9fdGltZSIsInBhcnNlRGF0ZSIsImFzc3VtZU5lYXJieVllYXIiLCJvcmllbnRhdGlvbiIsImdyZXAiLCJ4IiwieSIsInllYXIiLCJtb250aCIsImwiLCJkYXkiLCJfYXBwbHlFdmVudHMiLCJvbiIsIl91bmFwcGx5RXZlbnRzIiwib2ZmIiwia2V5dXAiLCJwcm94eSIsImtleUNvZGUiLCJrZXlkb3duIiwicGFzdGUiLCJzaG93T25Gb2N1cyIsImZvY3VzIiwiY2xpY2siLCJibHVyIiwiX2ZvY3VzZWRfZnJvbSIsInRhcmdldCIsImltbWVkaWF0ZVVwZGF0ZXMiLCJkYXRlIiwibmF2QXJyb3dzQ2xpY2siLCJkYXlDZWxsQ2xpY2siLCJ3aW5kb3ciLCJyZXNpemUiLCJwbGFjZSIsImRvY3VtZW50IiwiaGlkZSIsIl9kZXRhY2hFdmVudHMiLCJfYXR0YWNoU2Vjb25kYXJ5RXZlbnRzIiwiX2RldGFjaFNlY29uZGFyeUV2ZW50cyIsIl90cmlnZ2VyIiwiX3V0Y190b19sb2NhbCIsInRyaWdnZXIiLCJ0eXBlIiwidmlld01vZGUiLCJmb3JtYXREYXRlIiwicHJvcCIsImVuYWJsZU9uUmVhZG9ubHkiLCJjb250YWluZXIiLCJuYXZpZ2F0b3IiLCJtc01heFRvdWNoUG9pbnRzIiwiZGlzYWJsZVRvdWNoS2V5Ym9hcmQiLCJkZXRhY2giLCJmb3JjZVBhcnNlIiwidmFsIiwic2V0VmFsdWUiLCJkZXN0cm95Iiwib3JpZ2luYWxFdmVudCIsImNsaXBib2FyZERhdGEiLCJ0eXBlcyIsImdldERhdGEiLCJzZXREYXRlIiwicHJldmVudERlZmF1bHQiLCJnZXRUaW1lem9uZU9mZnNldCIsIl96ZXJvX3V0Y190aW1lIiwiZ2V0RGF0ZXMiLCJnZXRVVENEYXRlcyIsImNsZWFyRGF0ZXMiLCJhdXRvY2xvc2UiLCJzZXREYXRlcyIsInNldFVUQ0RhdGVzIiwic2V0VVRDRGF0ZSIsImdldEZvcm1hdHRlZERhdGUiLCJqb2luIiwiZ2V0U3RhcnREYXRlIiwic2V0U3RhcnREYXRlIiwidXBkYXRlTmF2QXJyb3dzIiwiZ2V0RW5kRGF0ZSIsInNldEVuZERhdGUiLCJzZXREYXlzT2ZXZWVrRGlzYWJsZWQiLCJzZXREYXlzT2ZXZWVrSGlnaGxpZ2h0ZWQiLCJzZXREYXRlc0Rpc2FibGVkIiwib3V0ZXJXaWR0aCIsIm91dGVySGVpZ2h0Iiwid2lkdGgiLCJzY3JvbGxUb3AiLCJvZmZzZXQiLCJwYXJlbnRzIiwiY3NzIiwiekluZGV4T2Zmc2V0IiwicGFyZW50IiwibSIsImxlZnQiLCJuIiwidG9wIiwicmVtb3ZlQ2xhc3MiLCJwYXJzZUludCIsInJpZ2h0IiwiekluZGV4IiwiZGF0ZVdpdGhpblJhbmdlIiwidXBkYXRlVmlld0RhdGUiLCJjaGFuZ2UiLCJmaWxsIiwic2hvd1dlZWtEYXlzIiwiZGF5c01pbiIsImFwcGVuZCIsIm1vbnRoc1Nob3J0Iiwic2V0UmFuZ2UiLCJyYW5nZSIsImdldENsYXNzTmFtZXMiLCJ0b2RheUhpZ2hsaWdodCIsImRhdGVJc0Rpc2FibGVkIiwiZ2V0VVRDRGF5IiwiX2ZpbGxfeWVhcnNWaWV3IiwiZmxvb3IiLCJzIiwidCIsIm5vb3AiLCJlbmFibGVkIiwiY2xhc3NlcyIsImNvbmNhdCIsInRvb2x0aXAiLCJ0ZXh0IiwidG9kYXkiLCJlbiIsInRpdGxlRm9ybWF0IiwidG9kYXlCdG4iLCJ3ZWVrT2ZEYXRlSXNEaXNhYmxlZCIsImNsZWFyQnRuIiwidGl0bGUiLCJ1IiwidiIsInciLCJzZXRVVENGdWxsWWVhciIsInoiLCJBIiwiQiIsIkMiLCJEIiwiRSIsImJlZm9yZVNob3dEYXkiLCJjb250ZW50IiwiaXNGdW5jdGlvbiIsInVuaXF1ZVNvcnQiLCJ1bmlxdWUiLCJ0b1N0cmluZyIsIkYiLCJtb250aHNUaXRsZSIsIkciLCJlbmQiLCJlcSIsImJlZm9yZVNob3dNb250aCIsIkgiLCJiZWZvcmVTaG93WWVhciIsImJlZm9yZVNob3dEZWNhZGUiLCJiZWZvcmVTaG93Q2VudHVyeSIsInRvZ2dsZUNsYXNzIiwic3RvcFByb3BhZ2F0aW9uIiwiX3NldERhdGUiLCJpbmRleCIsInNldFVUQ01vbnRoIiwiY3VycmVudFRhcmdldCIsIm5hdlN0ZXAiLCJtb3ZlTW9udGgiLCJfdG9nZ2xlX211bHRpZGF0ZSIsInRvZ2dsZUFjdGl2ZSIsIm1vdmVEYXkiLCJtb3ZlV2VlayIsImFicyIsIm1vdmVZZWFyIiwibW92ZUF2YWlsYWJsZURhdGUiLCJrZXlib2FyZE5hdmlnYXRpb24iLCJjdHJsS2V5Iiwic2hpZnRLZXkiLCJjaGlsZHJlbiIsImZpbHRlciIsImNsc05hbWUiLCJpbnB1dHMiLCJqcXVlcnkiLCJrZWVwRW1wdHlWYWx1ZXMiLCJjYWxsIiwiZGF0ZVVwZGF0ZWQiLCJwaWNrZXJzIiwidXBkYXRlRGF0ZXMiLCJ1cGRhdGVSYW5nZXMiLCJ1cGRhdGluZyIsIkFycmF5Iiwic2hpZnQiLCJ0b0FycmF5IiwiRXJyb3IiLCJkZWZhdWx0cyIsImxvY2FsZV9vcHRzIiwiQ29uc3RydWN0b3IiLCJkYXlzIiwiZGF5c1Nob3J0IiwibW9udGhzIiwidmFsaWRQYXJ0cyIsIm5vbnB1bmN0dWF0aW9uIiwidG9WYWx1ZSIsInRvRGlzcGxheSIsInNlcGFyYXRvcnMiLCJwYXJ0cyIsInllc3RlcmRheSIsInRvbW9ycm93IiwieXl5eSIsInl5IiwiTSIsIk1NIiwibW0iLCJkZCIsIkREIiwic3Vic3RyaW5nIiwiaGVhZFRlbXBsYXRlIiwiY29udFRlbXBsYXRlIiwiZm9vdFRlbXBsYXRlIiwiRFBHbG9iYWwiLCJub0NvbmZsaWN0IiwidmVyc2lvbiIsImNvbnNvbGUiLCJ3YXJuIl0sInNvdXJjZXMiOlsiYm9vdHN0cmFwLWRhdGVwaWNrZXIubWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogRGF0ZXBpY2tlciBmb3IgQm9vdHN0cmFwIHYxLjkuMCAoaHR0cHM6Ly9naXRodWIuY29tL3V4c29sdXRpb25zL2Jvb3RzdHJhcC1kYXRlcGlja2VyKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIChodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApXG4gKi9cblxuIWZ1bmN0aW9uKGEpe1wiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW1wianF1ZXJ5XCJdLGEpOmEoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/cmVxdWlyZShcImpxdWVyeVwiKTpqUXVlcnkpfShmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkoRGF0ZSxhcmd1bWVudHMpKX1mdW5jdGlvbiBkKCl7dmFyIGE9bmV3IERhdGU7cmV0dXJuIGMoYS5nZXRGdWxsWWVhcigpLGEuZ2V0TW9udGgoKSxhLmdldERhdGUoKSl9ZnVuY3Rpb24gZShhLGIpe3JldHVybiBhLmdldFVUQ0Z1bGxZZWFyKCk9PT1iLmdldFVUQ0Z1bGxZZWFyKCkmJmEuZ2V0VVRDTW9udGgoKT09PWIuZ2V0VVRDTW9udGgoKSYmYS5nZXRVVENEYXRlKCk9PT1iLmdldFVUQ0RhdGUoKX1mdW5jdGlvbiBmKGMsZCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGQhPT1iJiZhLmZuLmRhdGVwaWNrZXIuZGVwcmVjYXRlZChkKSx0aGlzW2NdLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gZyhhKXtyZXR1cm4gYSYmIWlzTmFOKGEuZ2V0VGltZSgpKX1mdW5jdGlvbiBoKGIsYyl7ZnVuY3Rpb24gZChhLGIpe3JldHVybiBiLnRvTG93ZXJDYXNlKCl9dmFyIGUsZj1hKGIpLmRhdGEoKSxnPXt9LGg9bmV3IFJlZ0V4cChcIl5cIitjLnRvTG93ZXJDYXNlKCkrXCIoW0EtWl0pXCIpO2M9bmV3IFJlZ0V4cChcIl5cIitjLnRvTG93ZXJDYXNlKCkpO2Zvcih2YXIgaSBpbiBmKWMudGVzdChpKSYmKGU9aS5yZXBsYWNlKGgsZCksZ1tlXT1mW2ldKTtyZXR1cm4gZ31mdW5jdGlvbiBpKGIpe3ZhciBjPXt9O2lmKHFbYl18fChiPWIuc3BsaXQoXCItXCIpWzBdLHFbYl0pKXt2YXIgZD1xW2JdO3JldHVybiBhLmVhY2gocCxmdW5jdGlvbihhLGIpe2IgaW4gZCYmKGNbYl09ZFtiXSl9KSxjfX12YXIgaj1mdW5jdGlvbigpe3ZhciBiPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc2xpY2UoYSlbMF19LGNvbnRhaW5zOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hJiZhLnZhbHVlT2YoKSxjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKWlmKDA8PXRoaXNbY10udmFsdWVPZigpLWImJnRoaXNbY10udmFsdWVPZigpLWI8ODY0ZTUpcmV0dXJuIGM7cmV0dXJuLTF9LHJlbW92ZTpmdW5jdGlvbihhKXt0aGlzLnNwbGljZShhLDEpfSxyZXBsYWNlOmZ1bmN0aW9uKGIpe2ImJihhLmlzQXJyYXkoYil8fChiPVtiXSksdGhpcy5jbGVhcigpLHRoaXMucHVzaC5hcHBseSh0aGlzLGIpKX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLmxlbmd0aD0wfSxjb3B5OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IGo7cmV0dXJuIGEucmVwbGFjZSh0aGlzKSxhfX07cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9W107cmV0dXJuIGMucHVzaC5hcHBseShjLGFyZ3VtZW50cyksYS5leHRlbmQoYyxiKSxjfX0oKSxrPWZ1bmN0aW9uKGIsYyl7YS5kYXRhKGIsXCJkYXRlcGlja2VyXCIsdGhpcyksdGhpcy5fZXZlbnRzPVtdLHRoaXMuX3NlY29uZGFyeUV2ZW50cz1bXSx0aGlzLl9wcm9jZXNzX29wdGlvbnMoYyksdGhpcy5kYXRlcz1uZXcgaix0aGlzLnZpZXdEYXRlPXRoaXMuby5kZWZhdWx0Vmlld0RhdGUsdGhpcy5mb2N1c0RhdGU9bnVsbCx0aGlzLmVsZW1lbnQ9YShiKSx0aGlzLmlzSW5wdXQ9dGhpcy5lbGVtZW50LmlzKFwiaW5wdXRcIiksdGhpcy5pbnB1dEZpZWxkPXRoaXMuaXNJbnB1dD90aGlzLmVsZW1lbnQ6dGhpcy5lbGVtZW50LmZpbmQoXCJpbnB1dFwiKSx0aGlzLmNvbXBvbmVudD0hIXRoaXMuZWxlbWVudC5oYXNDbGFzcyhcImRhdGVcIikmJnRoaXMuZWxlbWVudC5maW5kKFwiLmFkZC1vbiwgLmlucHV0LWdyb3VwLWFkZG9uLCAuaW5wdXQtZ3JvdXAtYXBwZW5kLCAuaW5wdXQtZ3JvdXAtcHJlcGVuZCwgLmJ0blwiKSx0aGlzLmNvbXBvbmVudCYmMD09PXRoaXMuY29tcG9uZW50Lmxlbmd0aCYmKHRoaXMuY29tcG9uZW50PSExKSx0aGlzLmlzSW5saW5lPSF0aGlzLmNvbXBvbmVudCYmdGhpcy5lbGVtZW50LmlzKFwiZGl2XCIpLHRoaXMucGlja2VyPWEoci50ZW1wbGF0ZSksdGhpcy5fY2hlY2tfdGVtcGxhdGUodGhpcy5vLnRlbXBsYXRlcy5sZWZ0QXJyb3cpJiZ0aGlzLnBpY2tlci5maW5kKFwiLnByZXZcIikuaHRtbCh0aGlzLm8udGVtcGxhdGVzLmxlZnRBcnJvdyksdGhpcy5fY2hlY2tfdGVtcGxhdGUodGhpcy5vLnRlbXBsYXRlcy5yaWdodEFycm93KSYmdGhpcy5waWNrZXIuZmluZChcIi5uZXh0XCIpLmh0bWwodGhpcy5vLnRlbXBsYXRlcy5yaWdodEFycm93KSx0aGlzLl9idWlsZEV2ZW50cygpLHRoaXMuX2F0dGFjaEV2ZW50cygpLHRoaXMuaXNJbmxpbmU/dGhpcy5waWNrZXIuYWRkQ2xhc3MoXCJkYXRlcGlja2VyLWlubGluZVwiKS5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpOnRoaXMucGlja2VyLmFkZENsYXNzKFwiZGF0ZXBpY2tlci1kcm9wZG93biBkcm9wZG93bi1tZW51XCIpLHRoaXMuby5ydGwmJnRoaXMucGlja2VyLmFkZENsYXNzKFwiZGF0ZXBpY2tlci1ydGxcIiksdGhpcy5vLmNhbGVuZGFyV2Vla3MmJnRoaXMucGlja2VyLmZpbmQoXCIuZGF0ZXBpY2tlci1kYXlzIC5kYXRlcGlja2VyLXN3aXRjaCwgdGhlYWQgLmRhdGVwaWNrZXItdGl0bGUsIHRmb290IC50b2RheSwgdGZvb3QgLmNsZWFyXCIpLmF0dHIoXCJjb2xzcGFuXCIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gTnVtYmVyKGIpKzF9KSx0aGlzLl9wcm9jZXNzX29wdGlvbnMoe3N0YXJ0RGF0ZTp0aGlzLl9vLnN0YXJ0RGF0ZSxlbmREYXRlOnRoaXMuX28uZW5kRGF0ZSxkYXlzT2ZXZWVrRGlzYWJsZWQ6dGhpcy5vLmRheXNPZldlZWtEaXNhYmxlZCxkYXlzT2ZXZWVrSGlnaGxpZ2h0ZWQ6dGhpcy5vLmRheXNPZldlZWtIaWdobGlnaHRlZCxkYXRlc0Rpc2FibGVkOnRoaXMuby5kYXRlc0Rpc2FibGVkfSksdGhpcy5fYWxsb3dfdXBkYXRlPSExLHRoaXMuc2V0Vmlld01vZGUodGhpcy5vLnN0YXJ0VmlldyksdGhpcy5fYWxsb3dfdXBkYXRlPSEwLHRoaXMuZmlsbERvdygpLHRoaXMuZmlsbE1vbnRocygpLHRoaXMudXBkYXRlKCksdGhpcy5pc0lubGluZSYmdGhpcy5zaG93KCl9O2sucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjprLF9yZXNvbHZlVmlld05hbWU6ZnVuY3Rpb24oYil7cmV0dXJuIGEuZWFjaChyLnZpZXdNb2RlcyxmdW5jdGlvbihjLGQpe2lmKGI9PT1jfHwtMSE9PWEuaW5BcnJheShiLGQubmFtZXMpKXJldHVybiBiPWMsITF9KSxifSxfcmVzb2x2ZURheXNPZldlZWs6ZnVuY3Rpb24oYil7cmV0dXJuIGEuaXNBcnJheShiKXx8KGI9Yi5zcGxpdCgvWyxcXHNdKi8pKSxhLm1hcChiLE51bWJlcil9LF9jaGVja190ZW1wbGF0ZTpmdW5jdGlvbihjKXt0cnl7aWYoYz09PWJ8fFwiXCI9PT1jKXJldHVybiExO2lmKChjLm1hdGNoKC9bPD5dL2cpfHxbXSkubGVuZ3RoPD0wKXJldHVybiEwO3JldHVybiBhKGMpLmxlbmd0aD4wfWNhdGNoKGEpe3JldHVybiExfX0sX3Byb2Nlc3Nfb3B0aW9uczpmdW5jdGlvbihiKXt0aGlzLl9vPWEuZXh0ZW5kKHt9LHRoaXMuX28sYik7dmFyIGU9dGhpcy5vPWEuZXh0ZW5kKHt9LHRoaXMuX28pLGY9ZS5sYW5ndWFnZTtxW2ZdfHwoZj1mLnNwbGl0KFwiLVwiKVswXSxxW2ZdfHwoZj1vLmxhbmd1YWdlKSksZS5sYW5ndWFnZT1mLGUuc3RhcnRWaWV3PXRoaXMuX3Jlc29sdmVWaWV3TmFtZShlLnN0YXJ0VmlldyksZS5taW5WaWV3TW9kZT10aGlzLl9yZXNvbHZlVmlld05hbWUoZS5taW5WaWV3TW9kZSksZS5tYXhWaWV3TW9kZT10aGlzLl9yZXNvbHZlVmlld05hbWUoZS5tYXhWaWV3TW9kZSksZS5zdGFydFZpZXc9TWF0aC5tYXgodGhpcy5vLm1pblZpZXdNb2RlLE1hdGgubWluKHRoaXMuby5tYXhWaWV3TW9kZSxlLnN0YXJ0VmlldykpLCEwIT09ZS5tdWx0aWRhdGUmJihlLm11bHRpZGF0ZT1OdW1iZXIoZS5tdWx0aWRhdGUpfHwhMSwhMSE9PWUubXVsdGlkYXRlJiYoZS5tdWx0aWRhdGU9TWF0aC5tYXgoMCxlLm11bHRpZGF0ZSkpKSxlLm11bHRpZGF0ZVNlcGFyYXRvcj1TdHJpbmcoZS5tdWx0aWRhdGVTZXBhcmF0b3IpLGUud2Vla1N0YXJ0JT03LGUud2Vla0VuZD0oZS53ZWVrU3RhcnQrNiklNzt2YXIgZz1yLnBhcnNlRm9ybWF0KGUuZm9ybWF0KTtlLnN0YXJ0RGF0ZSE9PS0xLzAmJihlLnN0YXJ0RGF0ZT9lLnN0YXJ0RGF0ZSBpbnN0YW5jZW9mIERhdGU/ZS5zdGFydERhdGU9dGhpcy5fbG9jYWxfdG9fdXRjKHRoaXMuX3plcm9fdGltZShlLnN0YXJ0RGF0ZSkpOmUuc3RhcnREYXRlPXIucGFyc2VEYXRlKGUuc3RhcnREYXRlLGcsZS5sYW5ndWFnZSxlLmFzc3VtZU5lYXJieVllYXIpOmUuc3RhcnREYXRlPS0xLzApLGUuZW5kRGF0ZSE9PTEvMCYmKGUuZW5kRGF0ZT9lLmVuZERhdGUgaW5zdGFuY2VvZiBEYXRlP2UuZW5kRGF0ZT10aGlzLl9sb2NhbF90b191dGModGhpcy5femVyb190aW1lKGUuZW5kRGF0ZSkpOmUuZW5kRGF0ZT1yLnBhcnNlRGF0ZShlLmVuZERhdGUsZyxlLmxhbmd1YWdlLGUuYXNzdW1lTmVhcmJ5WWVhcik6ZS5lbmREYXRlPTEvMCksZS5kYXlzT2ZXZWVrRGlzYWJsZWQ9dGhpcy5fcmVzb2x2ZURheXNPZldlZWsoZS5kYXlzT2ZXZWVrRGlzYWJsZWR8fFtdKSxlLmRheXNPZldlZWtIaWdobGlnaHRlZD10aGlzLl9yZXNvbHZlRGF5c09mV2VlayhlLmRheXNPZldlZWtIaWdobGlnaHRlZHx8W10pLGUuZGF0ZXNEaXNhYmxlZD1lLmRhdGVzRGlzYWJsZWR8fFtdLGEuaXNBcnJheShlLmRhdGVzRGlzYWJsZWQpfHwoZS5kYXRlc0Rpc2FibGVkPWUuZGF0ZXNEaXNhYmxlZC5zcGxpdChcIixcIikpLGUuZGF0ZXNEaXNhYmxlZD1hLm1hcChlLmRhdGVzRGlzYWJsZWQsZnVuY3Rpb24oYSl7cmV0dXJuIHIucGFyc2VEYXRlKGEsZyxlLmxhbmd1YWdlLGUuYXNzdW1lTmVhcmJ5WWVhcil9KTt2YXIgaD1TdHJpbmcoZS5vcmllbnRhdGlvbikudG9Mb3dlckNhc2UoKS5zcGxpdCgvXFxzKy9nKSxpPWUub3JpZW50YXRpb24udG9Mb3dlckNhc2UoKTtpZihoPWEuZ3JlcChoLGZ1bmN0aW9uKGEpe3JldHVybi9eYXV0b3xsZWZ0fHJpZ2h0fHRvcHxib3R0b20kLy50ZXN0KGEpfSksZS5vcmllbnRhdGlvbj17eDpcImF1dG9cIix5OlwiYXV0b1wifSxpJiZcImF1dG9cIiE9PWkpaWYoMT09PWgubGVuZ3RoKXN3aXRjaChoWzBdKXtjYXNlXCJ0b3BcIjpjYXNlXCJib3R0b21cIjplLm9yaWVudGF0aW9uLnk9aFswXTticmVhaztjYXNlXCJsZWZ0XCI6Y2FzZVwicmlnaHRcIjplLm9yaWVudGF0aW9uLng9aFswXX1lbHNlIGk9YS5ncmVwKGgsZnVuY3Rpb24oYSl7cmV0dXJuL15sZWZ0fHJpZ2h0JC8udGVzdChhKX0pLGUub3JpZW50YXRpb24ueD1pWzBdfHxcImF1dG9cIixpPWEuZ3JlcChoLGZ1bmN0aW9uKGEpe3JldHVybi9edG9wfGJvdHRvbSQvLnRlc3QoYSl9KSxlLm9yaWVudGF0aW9uLnk9aVswXXx8XCJhdXRvXCI7ZWxzZTtpZihlLmRlZmF1bHRWaWV3RGF0ZSBpbnN0YW5jZW9mIERhdGV8fFwic3RyaW5nXCI9PXR5cGVvZiBlLmRlZmF1bHRWaWV3RGF0ZSllLmRlZmF1bHRWaWV3RGF0ZT1yLnBhcnNlRGF0ZShlLmRlZmF1bHRWaWV3RGF0ZSxnLGUubGFuZ3VhZ2UsZS5hc3N1bWVOZWFyYnlZZWFyKTtlbHNlIGlmKGUuZGVmYXVsdFZpZXdEYXRlKXt2YXIgaj1lLmRlZmF1bHRWaWV3RGF0ZS55ZWFyfHwobmV3IERhdGUpLmdldEZ1bGxZZWFyKCksaz1lLmRlZmF1bHRWaWV3RGF0ZS5tb250aHx8MCxsPWUuZGVmYXVsdFZpZXdEYXRlLmRheXx8MTtlLmRlZmF1bHRWaWV3RGF0ZT1jKGosayxsKX1lbHNlIGUuZGVmYXVsdFZpZXdEYXRlPWQoKX0sX2FwcGx5RXZlbnRzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYyxkLGUsZj0wO2Y8YS5sZW5ndGg7ZisrKWM9YVtmXVswXSwyPT09YVtmXS5sZW5ndGg/KGQ9YixlPWFbZl1bMV0pOjM9PT1hW2ZdLmxlbmd0aCYmKGQ9YVtmXVsxXSxlPWFbZl1bMl0pLGMub24oZSxkKX0sX3VuYXBwbHlFdmVudHM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjLGQsZSxmPTA7ZjxhLmxlbmd0aDtmKyspYz1hW2ZdWzBdLDI9PT1hW2ZdLmxlbmd0aD8oZT1iLGQ9YVtmXVsxXSk6Mz09PWFbZl0ubGVuZ3RoJiYoZT1hW2ZdWzFdLGQ9YVtmXVsyXSksYy5vZmYoZCxlKX0sX2J1aWxkRXZlbnRzOmZ1bmN0aW9uKCl7dmFyIGI9e2tleXVwOmEucHJveHkoZnVuY3Rpb24oYil7LTE9PT1hLmluQXJyYXkoYi5rZXlDb2RlLFsyNywzNywzOSwzOCw0MCwzMiwxMyw5XSkmJnRoaXMudXBkYXRlKCl9LHRoaXMpLGtleWRvd246YS5wcm94eSh0aGlzLmtleWRvd24sdGhpcykscGFzdGU6YS5wcm94eSh0aGlzLnBhc3RlLHRoaXMpfTshMD09PXRoaXMuby5zaG93T25Gb2N1cyYmKGIuZm9jdXM9YS5wcm94eSh0aGlzLnNob3csdGhpcykpLHRoaXMuaXNJbnB1dD90aGlzLl9ldmVudHM9W1t0aGlzLmVsZW1lbnQsYl1dOnRoaXMuY29tcG9uZW50JiZ0aGlzLmlucHV0RmllbGQubGVuZ3RoP3RoaXMuX2V2ZW50cz1bW3RoaXMuaW5wdXRGaWVsZCxiXSxbdGhpcy5jb21wb25lbnQse2NsaWNrOmEucHJveHkodGhpcy5zaG93LHRoaXMpfV1dOnRoaXMuX2V2ZW50cz1bW3RoaXMuZWxlbWVudCx7Y2xpY2s6YS5wcm94eSh0aGlzLnNob3csdGhpcyksa2V5ZG93bjphLnByb3h5KHRoaXMua2V5ZG93bix0aGlzKX1dXSx0aGlzLl9ldmVudHMucHVzaChbdGhpcy5lbGVtZW50LFwiKlwiLHtibHVyOmEucHJveHkoZnVuY3Rpb24oYSl7dGhpcy5fZm9jdXNlZF9mcm9tPWEudGFyZ2V0fSx0aGlzKX1dLFt0aGlzLmVsZW1lbnQse2JsdXI6YS5wcm94eShmdW5jdGlvbihhKXt0aGlzLl9mb2N1c2VkX2Zyb209YS50YXJnZXR9LHRoaXMpfV0pLHRoaXMuby5pbW1lZGlhdGVVcGRhdGVzJiZ0aGlzLl9ldmVudHMucHVzaChbdGhpcy5lbGVtZW50LHtcImNoYW5nZVllYXIgY2hhbmdlTW9udGhcIjphLnByb3h5KGZ1bmN0aW9uKGEpe3RoaXMudXBkYXRlKGEuZGF0ZSl9LHRoaXMpfV0pLHRoaXMuX3NlY29uZGFyeUV2ZW50cz1bW3RoaXMucGlja2VyLHtjbGljazphLnByb3h5KHRoaXMuY2xpY2ssdGhpcyl9XSxbdGhpcy5waWNrZXIsXCIucHJldiwgLm5leHRcIix7Y2xpY2s6YS5wcm94eSh0aGlzLm5hdkFycm93c0NsaWNrLHRoaXMpfV0sW3RoaXMucGlja2VyLFwiLmRheTpub3QoLmRpc2FibGVkKVwiLHtjbGljazphLnByb3h5KHRoaXMuZGF5Q2VsbENsaWNrLHRoaXMpfV0sW2Eod2luZG93KSx7cmVzaXplOmEucHJveHkodGhpcy5wbGFjZSx0aGlzKX1dLFthKGRvY3VtZW50KSx7XCJtb3VzZWRvd24gdG91Y2hzdGFydFwiOmEucHJveHkoZnVuY3Rpb24oYSl7dGhpcy5lbGVtZW50LmlzKGEudGFyZ2V0KXx8dGhpcy5lbGVtZW50LmZpbmQoYS50YXJnZXQpLmxlbmd0aHx8dGhpcy5waWNrZXIuaXMoYS50YXJnZXQpfHx0aGlzLnBpY2tlci5maW5kKGEudGFyZ2V0KS5sZW5ndGh8fHRoaXMuaXNJbmxpbmV8fHRoaXMuaGlkZSgpfSx0aGlzKX1dXX0sX2F0dGFjaEV2ZW50czpmdW5jdGlvbigpe3RoaXMuX2RldGFjaEV2ZW50cygpLHRoaXMuX2FwcGx5RXZlbnRzKHRoaXMuX2V2ZW50cyl9LF9kZXRhY2hFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLl91bmFwcGx5RXZlbnRzKHRoaXMuX2V2ZW50cyl9LF9hdHRhY2hTZWNvbmRhcnlFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLl9kZXRhY2hTZWNvbmRhcnlFdmVudHMoKSx0aGlzLl9hcHBseUV2ZW50cyh0aGlzLl9zZWNvbmRhcnlFdmVudHMpfSxfZGV0YWNoU2Vjb25kYXJ5RXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5fdW5hcHBseUV2ZW50cyh0aGlzLl9zZWNvbmRhcnlFdmVudHMpfSxfdHJpZ2dlcjpmdW5jdGlvbihiLGMpe3ZhciBkPWN8fHRoaXMuZGF0ZXMuZ2V0KC0xKSxlPXRoaXMuX3V0Y190b19sb2NhbChkKTt0aGlzLmVsZW1lbnQudHJpZ2dlcih7dHlwZTpiLGRhdGU6ZSx2aWV3TW9kZTp0aGlzLnZpZXdNb2RlLGRhdGVzOmEubWFwKHRoaXMuZGF0ZXMsdGhpcy5fdXRjX3RvX2xvY2FsKSxmb3JtYXQ6YS5wcm94eShmdW5jdGlvbihhLGIpezA9PT1hcmd1bWVudHMubGVuZ3RoPyhhPXRoaXMuZGF0ZXMubGVuZ3RoLTEsYj10aGlzLm8uZm9ybWF0KTpcInN0cmluZ1wiPT10eXBlb2YgYSYmKGI9YSxhPXRoaXMuZGF0ZXMubGVuZ3RoLTEpLGI9Ynx8dGhpcy5vLmZvcm1hdDt2YXIgYz10aGlzLmRhdGVzLmdldChhKTtyZXR1cm4gci5mb3JtYXREYXRlKGMsYix0aGlzLm8ubGFuZ3VhZ2UpfSx0aGlzKX0pfSxzaG93OmZ1bmN0aW9uKCl7aWYoISh0aGlzLmlucHV0RmllbGQuaXMoXCI6ZGlzYWJsZWRcIil8fHRoaXMuaW5wdXRGaWVsZC5wcm9wKFwicmVhZG9ubHlcIikmJiExPT09dGhpcy5vLmVuYWJsZU9uUmVhZG9ubHkpKXJldHVybiB0aGlzLmlzSW5saW5lfHx0aGlzLnBpY2tlci5hcHBlbmRUbyh0aGlzLm8uY29udGFpbmVyKSx0aGlzLnBsYWNlKCksdGhpcy5waWNrZXIuc2hvdygpLHRoaXMuX2F0dGFjaFNlY29uZGFyeUV2ZW50cygpLHRoaXMuX3RyaWdnZXIoXCJzaG93XCIpLCh3aW5kb3cubmF2aWdhdG9yLm1zTWF4VG91Y2hQb2ludHN8fFwib250b3VjaHN0YXJ0XCJpbiBkb2N1bWVudCkmJnRoaXMuby5kaXNhYmxlVG91Y2hLZXlib2FyZCYmYSh0aGlzLmVsZW1lbnQpLmJsdXIoKSx0aGlzfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmxpbmV8fCF0aGlzLnBpY2tlci5pcyhcIjp2aXNpYmxlXCIpP3RoaXM6KHRoaXMuZm9jdXNEYXRlPW51bGwsdGhpcy5waWNrZXIuaGlkZSgpLmRldGFjaCgpLHRoaXMuX2RldGFjaFNlY29uZGFyeUV2ZW50cygpLHRoaXMuc2V0Vmlld01vZGUodGhpcy5vLnN0YXJ0VmlldyksdGhpcy5vLmZvcmNlUGFyc2UmJnRoaXMuaW5wdXRGaWVsZC52YWwoKSYmdGhpcy5zZXRWYWx1ZSgpLHRoaXMuX3RyaWdnZXIoXCJoaWRlXCIpLHRoaXMpfSxkZXN0cm95OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGlkZSgpLHRoaXMuX2RldGFjaEV2ZW50cygpLHRoaXMuX2RldGFjaFNlY29uZGFyeUV2ZW50cygpLHRoaXMucGlja2VyLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLmVsZW1lbnQuZGF0YSgpLmRhdGVwaWNrZXIsdGhpcy5pc0lucHV0fHxkZWxldGUgdGhpcy5lbGVtZW50LmRhdGEoKS5kYXRlLHRoaXN9LHBhc3RlOmZ1bmN0aW9uKGIpe3ZhciBjO2lmKGIub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhJiZiLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcyYmLTEhPT1hLmluQXJyYXkoXCJ0ZXh0L3BsYWluXCIsYi5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMpKWM9Yi5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YShcInRleHQvcGxhaW5cIik7ZWxzZXtpZighd2luZG93LmNsaXBib2FyZERhdGEpcmV0dXJuO2M9d2luZG93LmNsaXBib2FyZERhdGEuZ2V0RGF0YShcIlRleHRcIil9dGhpcy5zZXREYXRlKGMpLHRoaXMudXBkYXRlKCksYi5wcmV2ZW50RGVmYXVsdCgpfSxfdXRjX3RvX2xvY2FsOmZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiBhO3ZhciBiPW5ldyBEYXRlKGEuZ2V0VGltZSgpKzZlNCphLmdldFRpbWV6b25lT2Zmc2V0KCkpO3JldHVybiBiLmdldFRpbWV6b25lT2Zmc2V0KCkhPT1hLmdldFRpbWV6b25lT2Zmc2V0KCkmJihiPW5ldyBEYXRlKGEuZ2V0VGltZSgpKzZlNCpiLmdldFRpbWV6b25lT2Zmc2V0KCkpKSxifSxfbG9jYWxfdG9fdXRjOmZ1bmN0aW9uKGEpe3JldHVybiBhJiZuZXcgRGF0ZShhLmdldFRpbWUoKS02ZTQqYS5nZXRUaW1lem9uZU9mZnNldCgpKX0sX3plcm9fdGltZTpmdW5jdGlvbihhKXtyZXR1cm4gYSYmbmV3IERhdGUoYS5nZXRGdWxsWWVhcigpLGEuZ2V0TW9udGgoKSxhLmdldERhdGUoKSl9LF96ZXJvX3V0Y190aW1lOmZ1bmN0aW9uKGEpe3JldHVybiBhJiZjKGEuZ2V0VVRDRnVsbFllYXIoKSxhLmdldFVUQ01vbnRoKCksYS5nZXRVVENEYXRlKCkpfSxnZXREYXRlczpmdW5jdGlvbigpe3JldHVybiBhLm1hcCh0aGlzLmRhdGVzLHRoaXMuX3V0Y190b19sb2NhbCl9LGdldFVUQ0RhdGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGEubWFwKHRoaXMuZGF0ZXMsZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBEYXRlKGEpfSl9LGdldERhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXRjX3RvX2xvY2FsKHRoaXMuZ2V0VVRDRGF0ZSgpKX0sZ2V0VVRDRGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZGF0ZXMuZ2V0KC0xKTtyZXR1cm4gYSE9PWI/bmV3IERhdGUoYSk6bnVsbH0sY2xlYXJEYXRlczpmdW5jdGlvbigpe3RoaXMuaW5wdXRGaWVsZC52YWwoXCJcIiksdGhpcy51cGRhdGUoKSx0aGlzLl90cmlnZ2VyKFwiY2hhbmdlRGF0ZVwiKSx0aGlzLm8uYXV0b2Nsb3NlJiZ0aGlzLmhpZGUoKX0sc2V0RGF0ZXM6ZnVuY3Rpb24oKXt2YXIgYj1hLmlzQXJyYXkoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVwZGF0ZS5hcHBseSh0aGlzLGIpLHRoaXMuX3RyaWdnZXIoXCJjaGFuZ2VEYXRlXCIpLHRoaXMuc2V0VmFsdWUoKSx0aGlzfSxzZXRVVENEYXRlczpmdW5jdGlvbigpe3ZhciBiPWEuaXNBcnJheShhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMuc2V0RGF0ZXMuYXBwbHkodGhpcyxhLm1hcChiLHRoaXMuX3V0Y190b19sb2NhbCkpLHRoaXN9LHNldERhdGU6ZihcInNldERhdGVzXCIpLHNldFVUQ0RhdGU6ZihcInNldFVUQ0RhdGVzXCIpLHJlbW92ZTpmKFwiZGVzdHJveVwiLFwiTWV0aG9kIGByZW1vdmVgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDIuMC4gVXNlIGBkZXN0cm95YCBpbnN0ZWFkXCIpLHNldFZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRGb3JtYXR0ZWREYXRlKCk7cmV0dXJuIHRoaXMuaW5wdXRGaWVsZC52YWwoYSksdGhpc30sZ2V0Rm9ybWF0dGVkRGF0ZTpmdW5jdGlvbihjKXtjPT09YiYmKGM9dGhpcy5vLmZvcm1hdCk7dmFyIGQ9dGhpcy5vLmxhbmd1YWdlO3JldHVybiBhLm1hcCh0aGlzLmRhdGVzLGZ1bmN0aW9uKGEpe3JldHVybiByLmZvcm1hdERhdGUoYSxjLGQpfSkuam9pbih0aGlzLm8ubXVsdGlkYXRlU2VwYXJhdG9yKX0sZ2V0U3RhcnREYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuby5zdGFydERhdGV9LHNldFN0YXJ0RGF0ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fcHJvY2Vzc19vcHRpb25zKHtzdGFydERhdGU6YX0pLHRoaXMudXBkYXRlKCksdGhpcy51cGRhdGVOYXZBcnJvd3MoKSx0aGlzfSxnZXRFbmREYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuby5lbmREYXRlfSxzZXRFbmREYXRlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9wcm9jZXNzX29wdGlvbnMoe2VuZERhdGU6YX0pLHRoaXMudXBkYXRlKCksdGhpcy51cGRhdGVOYXZBcnJvd3MoKSx0aGlzfSxzZXREYXlzT2ZXZWVrRGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX3Byb2Nlc3Nfb3B0aW9ucyh7ZGF5c09mV2Vla0Rpc2FibGVkOmF9KSx0aGlzLnVwZGF0ZSgpLHRoaXN9LHNldERheXNPZldlZWtIaWdobGlnaHRlZDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fcHJvY2Vzc19vcHRpb25zKHtkYXlzT2ZXZWVrSGlnaGxpZ2h0ZWQ6YX0pLHRoaXMudXBkYXRlKCksdGhpc30sc2V0RGF0ZXNEaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fcHJvY2Vzc19vcHRpb25zKHtkYXRlc0Rpc2FibGVkOmF9KSx0aGlzLnVwZGF0ZSgpLHRoaXN9LHBsYWNlOmZ1bmN0aW9uKCl7aWYodGhpcy5pc0lubGluZSlyZXR1cm4gdGhpczt2YXIgYj10aGlzLnBpY2tlci5vdXRlcldpZHRoKCksYz10aGlzLnBpY2tlci5vdXRlckhlaWdodCgpLGQ9YSh0aGlzLm8uY29udGFpbmVyKSxlPWQud2lkdGgoKSxmPVwiYm9keVwiPT09dGhpcy5vLmNvbnRhaW5lcj9hKGRvY3VtZW50KS5zY3JvbGxUb3AoKTpkLnNjcm9sbFRvcCgpLGc9ZC5vZmZzZXQoKSxoPVswXTt0aGlzLmVsZW1lbnQucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLmNzcyhcInotaW5kZXhcIik7XCJhdXRvXCIhPT1iJiYwIT09TnVtYmVyKGIpJiZoLnB1c2goTnVtYmVyKGIpKX0pO3ZhciBpPU1hdGgubWF4LmFwcGx5KE1hdGgsaCkrdGhpcy5vLnpJbmRleE9mZnNldCxqPXRoaXMuY29tcG9uZW50P3RoaXMuY29tcG9uZW50LnBhcmVudCgpLm9mZnNldCgpOnRoaXMuZWxlbWVudC5vZmZzZXQoKSxrPXRoaXMuY29tcG9uZW50P3RoaXMuY29tcG9uZW50Lm91dGVySGVpZ2h0KCEwKTp0aGlzLmVsZW1lbnQub3V0ZXJIZWlnaHQoITEpLGw9dGhpcy5jb21wb25lbnQ/dGhpcy5jb21wb25lbnQub3V0ZXJXaWR0aCghMCk6dGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoITEpLG09ai5sZWZ0LWcubGVmdCxuPWoudG9wLWcudG9wO1wiYm9keVwiIT09dGhpcy5vLmNvbnRhaW5lciYmKG4rPWYpLHRoaXMucGlja2VyLnJlbW92ZUNsYXNzKFwiZGF0ZXBpY2tlci1vcmllbnQtdG9wIGRhdGVwaWNrZXItb3JpZW50LWJvdHRvbSBkYXRlcGlja2VyLW9yaWVudC1yaWdodCBkYXRlcGlja2VyLW9yaWVudC1sZWZ0XCIpLFwiYXV0b1wiIT09dGhpcy5vLm9yaWVudGF0aW9uLng/KHRoaXMucGlja2VyLmFkZENsYXNzKFwiZGF0ZXBpY2tlci1vcmllbnQtXCIrdGhpcy5vLm9yaWVudGF0aW9uLngpLFwicmlnaHRcIj09PXRoaXMuby5vcmllbnRhdGlvbi54JiYobS09Yi1sKSk6ai5sZWZ0PDA/KHRoaXMucGlja2VyLmFkZENsYXNzKFwiZGF0ZXBpY2tlci1vcmllbnQtbGVmdFwiKSxtLT1qLmxlZnQtMTApOm0rYj5lPyh0aGlzLnBpY2tlci5hZGRDbGFzcyhcImRhdGVwaWNrZXItb3JpZW50LXJpZ2h0XCIpLG0rPWwtYik6dGhpcy5vLnJ0bD90aGlzLnBpY2tlci5hZGRDbGFzcyhcImRhdGVwaWNrZXItb3JpZW50LXJpZ2h0XCIpOnRoaXMucGlja2VyLmFkZENsYXNzKFwiZGF0ZXBpY2tlci1vcmllbnQtbGVmdFwiKTt2YXIgbyxwPXRoaXMuby5vcmllbnRhdGlvbi55O2lmKFwiYXV0b1wiPT09cCYmKG89LWYrbi1jLHA9bzwwP1wiYm90dG9tXCI6XCJ0b3BcIiksdGhpcy5waWNrZXIuYWRkQ2xhc3MoXCJkYXRlcGlja2VyLW9yaWVudC1cIitwKSxcInRvcFwiPT09cD9uLT1jK3BhcnNlSW50KHRoaXMucGlja2VyLmNzcyhcInBhZGRpbmctdG9wXCIpKTpuKz1rLHRoaXMuby5ydGwpe3ZhciBxPWUtKG0rbCk7dGhpcy5waWNrZXIuY3NzKHt0b3A6bixyaWdodDpxLHpJbmRleDppfSl9ZWxzZSB0aGlzLnBpY2tlci5jc3Moe3RvcDpuLGxlZnQ6bSx6SW5kZXg6aX0pO3JldHVybiB0aGlzfSxfYWxsb3dfdXBkYXRlOiEwLHVwZGF0ZTpmdW5jdGlvbigpe2lmKCF0aGlzLl9hbGxvd191cGRhdGUpcmV0dXJuIHRoaXM7dmFyIGI9dGhpcy5kYXRlcy5jb3B5KCksYz1bXSxkPSExO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLmVhY2goYXJndW1lbnRzLGEucHJveHkoZnVuY3Rpb24oYSxiKXtiIGluc3RhbmNlb2YgRGF0ZSYmKGI9dGhpcy5fbG9jYWxfdG9fdXRjKGIpKSxjLnB1c2goYil9LHRoaXMpKSxkPSEwKTooYz10aGlzLmlzSW5wdXQ/dGhpcy5lbGVtZW50LnZhbCgpOnRoaXMuZWxlbWVudC5kYXRhKFwiZGF0ZVwiKXx8dGhpcy5pbnB1dEZpZWxkLnZhbCgpLGM9YyYmdGhpcy5vLm11bHRpZGF0ZT9jLnNwbGl0KHRoaXMuby5tdWx0aWRhdGVTZXBhcmF0b3IpOltjXSxkZWxldGUgdGhpcy5lbGVtZW50LmRhdGEoKS5kYXRlKSxjPWEubWFwKGMsYS5wcm94eShmdW5jdGlvbihhKXtyZXR1cm4gci5wYXJzZURhdGUoYSx0aGlzLm8uZm9ybWF0LHRoaXMuby5sYW5ndWFnZSx0aGlzLm8uYXNzdW1lTmVhcmJ5WWVhcil9LHRoaXMpKSxjPWEuZ3JlcChjLGEucHJveHkoZnVuY3Rpb24oYSl7cmV0dXJuIXRoaXMuZGF0ZVdpdGhpblJhbmdlKGEpfHwhYX0sdGhpcyksITApLHRoaXMuZGF0ZXMucmVwbGFjZShjKSx0aGlzLm8udXBkYXRlVmlld0RhdGUmJih0aGlzLmRhdGVzLmxlbmd0aD90aGlzLnZpZXdEYXRlPW5ldyBEYXRlKHRoaXMuZGF0ZXMuZ2V0KC0xKSk6dGhpcy52aWV3RGF0ZTx0aGlzLm8uc3RhcnREYXRlP3RoaXMudmlld0RhdGU9bmV3IERhdGUodGhpcy5vLnN0YXJ0RGF0ZSk6dGhpcy52aWV3RGF0ZT50aGlzLm8uZW5kRGF0ZT90aGlzLnZpZXdEYXRlPW5ldyBEYXRlKHRoaXMuby5lbmREYXRlKTp0aGlzLnZpZXdEYXRlPXRoaXMuby5kZWZhdWx0Vmlld0RhdGUpLGQ/KHRoaXMuc2V0VmFsdWUoKSx0aGlzLmVsZW1lbnQuY2hhbmdlKCkpOnRoaXMuZGF0ZXMubGVuZ3RoJiZTdHJpbmcoYikhPT1TdHJpbmcodGhpcy5kYXRlcykmJmQmJih0aGlzLl90cmlnZ2VyKFwiY2hhbmdlRGF0ZVwiKSx0aGlzLmVsZW1lbnQuY2hhbmdlKCkpLCF0aGlzLmRhdGVzLmxlbmd0aCYmYi5sZW5ndGgmJih0aGlzLl90cmlnZ2VyKFwiY2xlYXJEYXRlXCIpLHRoaXMuZWxlbWVudC5jaGFuZ2UoKSksdGhpcy5maWxsKCksdGhpc30sZmlsbERvdzpmdW5jdGlvbigpe2lmKHRoaXMuby5zaG93V2Vla0RheXMpe3ZhciBiPXRoaXMuby53ZWVrU3RhcnQsYz1cIjx0cj5cIjtmb3IodGhpcy5vLmNhbGVuZGFyV2Vla3MmJihjKz0nPHRoIGNsYXNzPVwiY3dcIj4mIzE2MDs8L3RoPicpO2I8dGhpcy5vLndlZWtTdGFydCs3OyljKz0nPHRoIGNsYXNzPVwiZG93JywtMSE9PWEuaW5BcnJheShiLHRoaXMuby5kYXlzT2ZXZWVrRGlzYWJsZWQpJiYoYys9XCIgZGlzYWJsZWRcIiksYys9J1wiPicrcVt0aGlzLm8ubGFuZ3VhZ2VdLmRheXNNaW5bYisrJTddK1wiPC90aD5cIjtjKz1cIjwvdHI+XCIsdGhpcy5waWNrZXIuZmluZChcIi5kYXRlcGlja2VyLWRheXMgdGhlYWRcIikuYXBwZW5kKGMpfX0sZmlsbE1vbnRoczpmdW5jdGlvbigpe2Zvcih2YXIgYSxiPXRoaXMuX3V0Y190b19sb2NhbCh0aGlzLnZpZXdEYXRlKSxjPVwiXCIsZD0wO2Q8MTI7ZCsrKWE9YiYmYi5nZXRNb250aCgpPT09ZD9cIiBmb2N1c2VkXCI6XCJcIixjKz0nPHNwYW4gY2xhc3M9XCJtb250aCcrYSsnXCI+JytxW3RoaXMuby5sYW5ndWFnZV0ubW9udGhzU2hvcnRbZF0rXCI8L3NwYW4+XCI7dGhpcy5waWNrZXIuZmluZChcIi5kYXRlcGlja2VyLW1vbnRocyB0ZFwiKS5odG1sKGMpfSxzZXRSYW5nZTpmdW5jdGlvbihiKXtiJiZiLmxlbmd0aD90aGlzLnJhbmdlPWEubWFwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIGEudmFsdWVPZigpfSk6ZGVsZXRlIHRoaXMucmFuZ2UsdGhpcy5maWxsKCl9LGdldENsYXNzTmFtZXM6ZnVuY3Rpb24oYil7dmFyIGM9W10sZj10aGlzLnZpZXdEYXRlLmdldFVUQ0Z1bGxZZWFyKCksZz10aGlzLnZpZXdEYXRlLmdldFVUQ01vbnRoKCksaD1kKCk7cmV0dXJuIGIuZ2V0VVRDRnVsbFllYXIoKTxmfHxiLmdldFVUQ0Z1bGxZZWFyKCk9PT1mJiZiLmdldFVUQ01vbnRoKCk8Zz9jLnB1c2goXCJvbGRcIik6KGIuZ2V0VVRDRnVsbFllYXIoKT5mfHxiLmdldFVUQ0Z1bGxZZWFyKCk9PT1mJiZiLmdldFVUQ01vbnRoKCk+ZykmJmMucHVzaChcIm5ld1wiKSx0aGlzLmZvY3VzRGF0ZSYmYi52YWx1ZU9mKCk9PT10aGlzLmZvY3VzRGF0ZS52YWx1ZU9mKCkmJmMucHVzaChcImZvY3VzZWRcIiksdGhpcy5vLnRvZGF5SGlnaGxpZ2h0JiZlKGIsaCkmJmMucHVzaChcInRvZGF5XCIpLC0xIT09dGhpcy5kYXRlcy5jb250YWlucyhiKSYmYy5wdXNoKFwiYWN0aXZlXCIpLHRoaXMuZGF0ZVdpdGhpblJhbmdlKGIpfHxjLnB1c2goXCJkaXNhYmxlZFwiKSx0aGlzLmRhdGVJc0Rpc2FibGVkKGIpJiZjLnB1c2goXCJkaXNhYmxlZFwiLFwiZGlzYWJsZWQtZGF0ZVwiKSwtMSE9PWEuaW5BcnJheShiLmdldFVUQ0RheSgpLHRoaXMuby5kYXlzT2ZXZWVrSGlnaGxpZ2h0ZWQpJiZjLnB1c2goXCJoaWdobGlnaHRlZFwiKSx0aGlzLnJhbmdlJiYoYj50aGlzLnJhbmdlWzBdJiZiPHRoaXMucmFuZ2VbdGhpcy5yYW5nZS5sZW5ndGgtMV0mJmMucHVzaChcInJhbmdlXCIpLC0xIT09YS5pbkFycmF5KGIudmFsdWVPZigpLHRoaXMucmFuZ2UpJiZjLnB1c2goXCJzZWxlY3RlZFwiKSxiLnZhbHVlT2YoKT09PXRoaXMucmFuZ2VbMF0mJmMucHVzaChcInJhbmdlLXN0YXJ0XCIpLGIudmFsdWVPZigpPT09dGhpcy5yYW5nZVt0aGlzLnJhbmdlLmxlbmd0aC0xXSYmYy5wdXNoKFwicmFuZ2UtZW5kXCIpKSxjfSxfZmlsbF95ZWFyc1ZpZXc6ZnVuY3Rpb24oYyxkLGUsZixnLGgsaSl7Zm9yKHZhciBqLGssbCxtPVwiXCIsbj1lLzEwLG89dGhpcy5waWNrZXIuZmluZChjKSxwPU1hdGguZmxvb3IoZi9lKSplLHE9cCs5Km4scj1NYXRoLmZsb29yKHRoaXMudmlld0RhdGUuZ2V0RnVsbFllYXIoKS9uKSpuLHM9YS5tYXAodGhpcy5kYXRlcyxmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5mbG9vcihhLmdldFVUQ0Z1bGxZZWFyKCkvbikqbn0pLHQ9cC1uO3Q8PXErbjt0Kz1uKWo9W2RdLGs9bnVsbCx0PT09cC1uP2oucHVzaChcIm9sZFwiKTp0PT09cStuJiZqLnB1c2goXCJuZXdcIiksLTEhPT1hLmluQXJyYXkodCxzKSYmai5wdXNoKFwiYWN0aXZlXCIpLCh0PGd8fHQ+aCkmJmoucHVzaChcImRpc2FibGVkXCIpLHQ9PT1yJiZqLnB1c2goXCJmb2N1c2VkXCIpLGkhPT1hLm5vb3AmJihsPWkobmV3IERhdGUodCwwLDEpKSxsPT09Yj9sPXt9OlwiYm9vbGVhblwiPT10eXBlb2YgbD9sPXtlbmFibGVkOmx9Olwic3RyaW5nXCI9PXR5cGVvZiBsJiYobD17Y2xhc3NlczpsfSksITE9PT1sLmVuYWJsZWQmJmoucHVzaChcImRpc2FibGVkXCIpLGwuY2xhc3NlcyYmKGo9ai5jb25jYXQobC5jbGFzc2VzLnNwbGl0KC9cXHMrLykpKSxsLnRvb2x0aXAmJihrPWwudG9vbHRpcCkpLG0rPSc8c3BhbiBjbGFzcz1cIicrai5qb2luKFwiIFwiKSsnXCInKyhrPycgdGl0bGU9XCInK2srJ1wiJzpcIlwiKStcIj5cIit0K1wiPC9zcGFuPlwiO28uZmluZChcIi5kYXRlcGlja2VyLXN3aXRjaFwiKS50ZXh0KHArXCItXCIrcSksby5maW5kKFwidGRcIikuaHRtbChtKX0sZmlsbDpmdW5jdGlvbigpe3ZhciBlLGYsZz1uZXcgRGF0ZSh0aGlzLnZpZXdEYXRlKSxoPWcuZ2V0VVRDRnVsbFllYXIoKSxpPWcuZ2V0VVRDTW9udGgoKSxqPXRoaXMuby5zdGFydERhdGUhPT0tMS8wP3RoaXMuby5zdGFydERhdGUuZ2V0VVRDRnVsbFllYXIoKTotMS8wLGs9dGhpcy5vLnN0YXJ0RGF0ZSE9PS0xLzA/dGhpcy5vLnN0YXJ0RGF0ZS5nZXRVVENNb250aCgpOi0xLzAsbD10aGlzLm8uZW5kRGF0ZSE9PTEvMD90aGlzLm8uZW5kRGF0ZS5nZXRVVENGdWxsWWVhcigpOjEvMCxtPXRoaXMuby5lbmREYXRlIT09MS8wP3RoaXMuby5lbmREYXRlLmdldFVUQ01vbnRoKCk6MS8wLG49cVt0aGlzLm8ubGFuZ3VhZ2VdLnRvZGF5fHxxLmVuLnRvZGF5fHxcIlwiLG89cVt0aGlzLm8ubGFuZ3VhZ2VdLmNsZWFyfHxxLmVuLmNsZWFyfHxcIlwiLHA9cVt0aGlzLm8ubGFuZ3VhZ2VdLnRpdGxlRm9ybWF0fHxxLmVuLnRpdGxlRm9ybWF0LHM9ZCgpLHQ9KCEwPT09dGhpcy5vLnRvZGF5QnRufHxcImxpbmtlZFwiPT09dGhpcy5vLnRvZGF5QnRuKSYmcz49dGhpcy5vLnN0YXJ0RGF0ZSYmczw9dGhpcy5vLmVuZERhdGUmJiF0aGlzLndlZWtPZkRhdGVJc0Rpc2FibGVkKHMpO2lmKCFpc05hTihoKSYmIWlzTmFOKGkpKXt0aGlzLnBpY2tlci5maW5kKFwiLmRhdGVwaWNrZXItZGF5cyAuZGF0ZXBpY2tlci1zd2l0Y2hcIikudGV4dChyLmZvcm1hdERhdGUoZyxwLHRoaXMuby5sYW5ndWFnZSkpLHRoaXMucGlja2VyLmZpbmQoXCJ0Zm9vdCAudG9kYXlcIikudGV4dChuKS5jc3MoXCJkaXNwbGF5XCIsdD9cInRhYmxlLWNlbGxcIjpcIm5vbmVcIiksdGhpcy5waWNrZXIuZmluZChcInRmb290IC5jbGVhclwiKS50ZXh0KG8pLmNzcyhcImRpc3BsYXlcIiwhMD09PXRoaXMuby5jbGVhckJ0bj9cInRhYmxlLWNlbGxcIjpcIm5vbmVcIiksdGhpcy5waWNrZXIuZmluZChcInRoZWFkIC5kYXRlcGlja2VyLXRpdGxlXCIpLnRleHQodGhpcy5vLnRpdGxlKS5jc3MoXCJkaXNwbGF5XCIsXCJzdHJpbmdcIj09dHlwZW9mIHRoaXMuby50aXRsZSYmXCJcIiE9PXRoaXMuby50aXRsZT9cInRhYmxlLWNlbGxcIjpcIm5vbmVcIiksdGhpcy51cGRhdGVOYXZBcnJvd3MoKSx0aGlzLmZpbGxNb250aHMoKTt2YXIgdT1jKGgsaSwwKSx2PXUuZ2V0VVRDRGF0ZSgpO3Uuc2V0VVRDRGF0ZSh2LSh1LmdldFVUQ0RheSgpLXRoaXMuby53ZWVrU3RhcnQrNyklNyk7dmFyIHc9bmV3IERhdGUodSk7dS5nZXRVVENGdWxsWWVhcigpPDEwMCYmdy5zZXRVVENGdWxsWWVhcih1LmdldFVUQ0Z1bGxZZWFyKCkpLHcuc2V0VVRDRGF0ZSh3LmdldFVUQ0RhdGUoKSs0Miksdz13LnZhbHVlT2YoKTtmb3IodmFyIHgseSx6PVtdO3UudmFsdWVPZigpPHc7KXtpZigoeD11LmdldFVUQ0RheSgpKT09PXRoaXMuby53ZWVrU3RhcnQmJih6LnB1c2goXCI8dHI+XCIpLHRoaXMuby5jYWxlbmRhcldlZWtzKSl7dmFyIEE9bmV3IERhdGUoK3UrKHRoaXMuby53ZWVrU3RhcnQteC03KSU3Kjg2NGU1KSxCPW5ldyBEYXRlKE51bWJlcihBKSsoMTEtQS5nZXRVVENEYXkoKSklNyo4NjRlNSksQz1uZXcgRGF0ZShOdW1iZXIoQz1jKEIuZ2V0VVRDRnVsbFllYXIoKSwwLDEpKSsoMTEtQy5nZXRVVENEYXkoKSklNyo4NjRlNSksRD0oQi1DKS84NjRlNS83KzE7ei5wdXNoKCc8dGQgY2xhc3M9XCJjd1wiPicrRCtcIjwvdGQ+XCIpfXk9dGhpcy5nZXRDbGFzc05hbWVzKHUpLHkucHVzaChcImRheVwiKTt2YXIgRT11LmdldFVUQ0RhdGUoKTt0aGlzLm8uYmVmb3JlU2hvd0RheSE9PWEubm9vcCYmKGY9dGhpcy5vLmJlZm9yZVNob3dEYXkodGhpcy5fdXRjX3RvX2xvY2FsKHUpKSxmPT09Yj9mPXt9OlwiYm9vbGVhblwiPT10eXBlb2YgZj9mPXtlbmFibGVkOmZ9Olwic3RyaW5nXCI9PXR5cGVvZiBmJiYoZj17Y2xhc3NlczpmfSksITE9PT1mLmVuYWJsZWQmJnkucHVzaChcImRpc2FibGVkXCIpLGYuY2xhc3NlcyYmKHk9eS5jb25jYXQoZi5jbGFzc2VzLnNwbGl0KC9cXHMrLykpKSxmLnRvb2x0aXAmJihlPWYudG9vbHRpcCksZi5jb250ZW50JiYoRT1mLmNvbnRlbnQpKSx5PWEuaXNGdW5jdGlvbihhLnVuaXF1ZVNvcnQpP2EudW5pcXVlU29ydCh5KTphLnVuaXF1ZSh5KSx6LnB1c2goJzx0ZCBjbGFzcz1cIicreS5qb2luKFwiIFwiKSsnXCInKyhlPycgdGl0bGU9XCInK2UrJ1wiJzpcIlwiKSsnIGRhdGEtZGF0ZT1cIicrdS5nZXRUaW1lKCkudG9TdHJpbmcoKSsnXCI+JytFK1wiPC90ZD5cIiksZT1udWxsLHg9PT10aGlzLm8ud2Vla0VuZCYmei5wdXNoKFwiPC90cj5cIiksdS5zZXRVVENEYXRlKHUuZ2V0VVRDRGF0ZSgpKzEpfXRoaXMucGlja2VyLmZpbmQoXCIuZGF0ZXBpY2tlci1kYXlzIHRib2R5XCIpLmh0bWwoei5qb2luKFwiXCIpKTt2YXIgRj1xW3RoaXMuby5sYW5ndWFnZV0ubW9udGhzVGl0bGV8fHEuZW4ubW9udGhzVGl0bGV8fFwiTW9udGhzXCIsRz10aGlzLnBpY2tlci5maW5kKFwiLmRhdGVwaWNrZXItbW9udGhzXCIpLmZpbmQoXCIuZGF0ZXBpY2tlci1zd2l0Y2hcIikudGV4dCh0aGlzLm8ubWF4Vmlld01vZGU8Mj9GOmgpLmVuZCgpLmZpbmQoXCJ0Ym9keSBzcGFuXCIpLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO2lmKGEuZWFjaCh0aGlzLmRhdGVzLGZ1bmN0aW9uKGEsYil7Yi5nZXRVVENGdWxsWWVhcigpPT09aCYmRy5lcShiLmdldFVUQ01vbnRoKCkpLmFkZENsYXNzKFwiYWN0aXZlXCIpfSksKGg8anx8aD5sKSYmRy5hZGRDbGFzcyhcImRpc2FibGVkXCIpLGg9PT1qJiZHLnNsaWNlKDAsaykuYWRkQ2xhc3MoXCJkaXNhYmxlZFwiKSxoPT09bCYmRy5zbGljZShtKzEpLmFkZENsYXNzKFwiZGlzYWJsZWRcIiksdGhpcy5vLmJlZm9yZVNob3dNb250aCE9PWEubm9vcCl7dmFyIEg9dGhpczthLmVhY2goRyxmdW5jdGlvbihjLGQpe3ZhciBlPW5ldyBEYXRlKGgsYywxKSxmPUguby5iZWZvcmVTaG93TW9udGgoZSk7Zj09PWI/Zj17fTpcImJvb2xlYW5cIj09dHlwZW9mIGY/Zj17ZW5hYmxlZDpmfTpcInN0cmluZ1wiPT10eXBlb2YgZiYmKGY9e2NsYXNzZXM6Zn0pLCExIT09Zi5lbmFibGVkfHxhKGQpLmhhc0NsYXNzKFwiZGlzYWJsZWRcIil8fGEoZCkuYWRkQ2xhc3MoXCJkaXNhYmxlZFwiKSxmLmNsYXNzZXMmJmEoZCkuYWRkQ2xhc3MoZi5jbGFzc2VzKSxmLnRvb2x0aXAmJmEoZCkucHJvcChcInRpdGxlXCIsZi50b29sdGlwKX0pfXRoaXMuX2ZpbGxfeWVhcnNWaWV3KFwiLmRhdGVwaWNrZXIteWVhcnNcIixcInllYXJcIiwxMCxoLGosbCx0aGlzLm8uYmVmb3JlU2hvd1llYXIpLHRoaXMuX2ZpbGxfeWVhcnNWaWV3KFwiLmRhdGVwaWNrZXItZGVjYWRlc1wiLFwiZGVjYWRlXCIsMTAwLGgsaixsLHRoaXMuby5iZWZvcmVTaG93RGVjYWRlKSx0aGlzLl9maWxsX3llYXJzVmlldyhcIi5kYXRlcGlja2VyLWNlbnR1cmllc1wiLFwiY2VudHVyeVwiLDFlMyxoLGosbCx0aGlzLm8uYmVmb3JlU2hvd0NlbnR1cnkpfX0sdXBkYXRlTmF2QXJyb3dzOmZ1bmN0aW9uKCl7aWYodGhpcy5fYWxsb3dfdXBkYXRlKXt2YXIgYSxiLGM9bmV3IERhdGUodGhpcy52aWV3RGF0ZSksZD1jLmdldFVUQ0Z1bGxZZWFyKCksZT1jLmdldFVUQ01vbnRoKCksZj10aGlzLm8uc3RhcnREYXRlIT09LTEvMD90aGlzLm8uc3RhcnREYXRlLmdldFVUQ0Z1bGxZZWFyKCk6LTEvMCxnPXRoaXMuby5zdGFydERhdGUhPT0tMS8wP3RoaXMuby5zdGFydERhdGUuZ2V0VVRDTW9udGgoKTotMS8wLGg9dGhpcy5vLmVuZERhdGUhPT0xLzA/dGhpcy5vLmVuZERhdGUuZ2V0VVRDRnVsbFllYXIoKToxLzAsaT10aGlzLm8uZW5kRGF0ZSE9PTEvMD90aGlzLm8uZW5kRGF0ZS5nZXRVVENNb250aCgpOjEvMCxqPTE7c3dpdGNoKHRoaXMudmlld01vZGUpe2Nhc2UgNDpqKj0xMDtjYXNlIDM6aio9MTA7Y2FzZSAyOmoqPTEwO2Nhc2UgMTphPU1hdGguZmxvb3IoZC9qKSpqPD1mLGI9TWF0aC5mbG9vcihkL2opKmoraj5oO2JyZWFrO2Nhc2UgMDphPWQ8PWYmJmU8PWcsYj1kPj1oJiZlPj1pfXRoaXMucGlja2VyLmZpbmQoXCIucHJldlwiKS50b2dnbGVDbGFzcyhcImRpc2FibGVkXCIsYSksdGhpcy5waWNrZXIuZmluZChcIi5uZXh0XCIpLnRvZ2dsZUNsYXNzKFwiZGlzYWJsZWRcIixiKX19LGNsaWNrOmZ1bmN0aW9uKGIpe2IucHJldmVudERlZmF1bHQoKSxiLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBlLGYsZyxoO2U9YShiLnRhcmdldCksZS5oYXNDbGFzcyhcImRhdGVwaWNrZXItc3dpdGNoXCIpJiZ0aGlzLnZpZXdNb2RlIT09dGhpcy5vLm1heFZpZXdNb2RlJiZ0aGlzLnNldFZpZXdNb2RlKHRoaXMudmlld01vZGUrMSksZS5oYXNDbGFzcyhcInRvZGF5XCIpJiYhZS5oYXNDbGFzcyhcImRheVwiKSYmKHRoaXMuc2V0Vmlld01vZGUoMCksdGhpcy5fc2V0RGF0ZShkKCksXCJsaW5rZWRcIj09PXRoaXMuby50b2RheUJ0bj9udWxsOlwidmlld1wiKSksZS5oYXNDbGFzcyhcImNsZWFyXCIpJiZ0aGlzLmNsZWFyRGF0ZXMoKSxlLmhhc0NsYXNzKFwiZGlzYWJsZWRcIil8fChlLmhhc0NsYXNzKFwibW9udGhcIil8fGUuaGFzQ2xhc3MoXCJ5ZWFyXCIpfHxlLmhhc0NsYXNzKFwiZGVjYWRlXCIpfHxlLmhhc0NsYXNzKFwiY2VudHVyeVwiKSkmJih0aGlzLnZpZXdEYXRlLnNldFVUQ0RhdGUoMSksZj0xLDE9PT10aGlzLnZpZXdNb2RlPyhoPWUucGFyZW50KCkuZmluZChcInNwYW5cIikuaW5kZXgoZSksZz10aGlzLnZpZXdEYXRlLmdldFVUQ0Z1bGxZZWFyKCksdGhpcy52aWV3RGF0ZS5zZXRVVENNb250aChoKSk6KGg9MCxnPU51bWJlcihlLnRleHQoKSksdGhpcy52aWV3RGF0ZS5zZXRVVENGdWxsWWVhcihnKSksdGhpcy5fdHJpZ2dlcihyLnZpZXdNb2Rlc1t0aGlzLnZpZXdNb2RlLTFdLmUsdGhpcy52aWV3RGF0ZSksdGhpcy52aWV3TW9kZT09PXRoaXMuby5taW5WaWV3TW9kZT90aGlzLl9zZXREYXRlKGMoZyxoLGYpKToodGhpcy5zZXRWaWV3TW9kZSh0aGlzLnZpZXdNb2RlLTEpLHRoaXMuZmlsbCgpKSksdGhpcy5waWNrZXIuaXMoXCI6dmlzaWJsZVwiKSYmdGhpcy5fZm9jdXNlZF9mcm9tJiZ0aGlzLl9mb2N1c2VkX2Zyb20uZm9jdXMoKSxkZWxldGUgdGhpcy5fZm9jdXNlZF9mcm9tfSxkYXlDZWxsQ2xpY2s6ZnVuY3Rpb24oYil7dmFyIGM9YShiLmN1cnJlbnRUYXJnZXQpLGQ9Yy5kYXRhKFwiZGF0ZVwiKSxlPW5ldyBEYXRlKGQpO3RoaXMuby51cGRhdGVWaWV3RGF0ZSYmKGUuZ2V0VVRDRnVsbFllYXIoKSE9PXRoaXMudmlld0RhdGUuZ2V0VVRDRnVsbFllYXIoKSYmdGhpcy5fdHJpZ2dlcihcImNoYW5nZVllYXJcIix0aGlzLnZpZXdEYXRlKSxlLmdldFVUQ01vbnRoKCkhPT10aGlzLnZpZXdEYXRlLmdldFVUQ01vbnRoKCkmJnRoaXMuX3RyaWdnZXIoXCJjaGFuZ2VNb250aFwiLHRoaXMudmlld0RhdGUpKSx0aGlzLl9zZXREYXRlKGUpfSxuYXZBcnJvd3NDbGljazpmdW5jdGlvbihiKXt2YXIgYz1hKGIuY3VycmVudFRhcmdldCksZD1jLmhhc0NsYXNzKFwicHJldlwiKT8tMToxOzAhPT10aGlzLnZpZXdNb2RlJiYoZCo9MTIqci52aWV3TW9kZXNbdGhpcy52aWV3TW9kZV0ubmF2U3RlcCksdGhpcy52aWV3RGF0ZT10aGlzLm1vdmVNb250aCh0aGlzLnZpZXdEYXRlLGQpLHRoaXMuX3RyaWdnZXIoci52aWV3TW9kZXNbdGhpcy52aWV3TW9kZV0uZSx0aGlzLnZpZXdEYXRlKSx0aGlzLmZpbGwoKX0sX3RvZ2dsZV9tdWx0aWRhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5kYXRlcy5jb250YWlucyhhKTtpZihhfHx0aGlzLmRhdGVzLmNsZWFyKCksLTEhPT1iPyghMD09PXRoaXMuby5tdWx0aWRhdGV8fHRoaXMuby5tdWx0aWRhdGU+MXx8dGhpcy5vLnRvZ2dsZUFjdGl2ZSkmJnRoaXMuZGF0ZXMucmVtb3ZlKGIpOiExPT09dGhpcy5vLm11bHRpZGF0ZT8odGhpcy5kYXRlcy5jbGVhcigpLHRoaXMuZGF0ZXMucHVzaChhKSk6dGhpcy5kYXRlcy5wdXNoKGEpLFwibnVtYmVyXCI9PXR5cGVvZiB0aGlzLm8ubXVsdGlkYXRlKWZvcig7dGhpcy5kYXRlcy5sZW5ndGg+dGhpcy5vLm11bHRpZGF0ZTspdGhpcy5kYXRlcy5yZW1vdmUoMCl9LF9zZXREYXRlOmZ1bmN0aW9uKGEsYil7YiYmXCJkYXRlXCIhPT1ifHx0aGlzLl90b2dnbGVfbXVsdGlkYXRlKGEmJm5ldyBEYXRlKGEpKSwoIWImJnRoaXMuby51cGRhdGVWaWV3RGF0ZXx8XCJ2aWV3XCI9PT1iKSYmKHRoaXMudmlld0RhdGU9YSYmbmV3IERhdGUoYSkpLHRoaXMuZmlsbCgpLHRoaXMuc2V0VmFsdWUoKSxiJiZcInZpZXdcIj09PWJ8fHRoaXMuX3RyaWdnZXIoXCJjaGFuZ2VEYXRlXCIpLHRoaXMuaW5wdXRGaWVsZC50cmlnZ2VyKFwiY2hhbmdlXCIpLCF0aGlzLm8uYXV0b2Nsb3NlfHxiJiZcImRhdGVcIiE9PWJ8fHRoaXMuaGlkZSgpfSxtb3ZlRGF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IERhdGUoYSk7cmV0dXJuIGMuc2V0VVRDRGF0ZShhLmdldFVUQ0RhdGUoKStiKSxjfSxtb3ZlV2VlazpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdmVEYXkoYSw3KmIpfSxtb3ZlTW9udGg6ZnVuY3Rpb24oYSxiKXtpZighZyhhKSlyZXR1cm4gdGhpcy5vLmRlZmF1bHRWaWV3RGF0ZTtpZighYilyZXR1cm4gYTt2YXIgYyxkLGU9bmV3IERhdGUoYS52YWx1ZU9mKCkpLGY9ZS5nZXRVVENEYXRlKCksaD1lLmdldFVUQ01vbnRoKCksaT1NYXRoLmFicyhiKTtpZihiPWI+MD8xOi0xLDE9PT1pKWQ9LTE9PT1iP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0VVRDTW9udGgoKT09PWh9OmZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0VVRDTW9udGgoKSE9PWN9LGM9aCtiLGUuc2V0VVRDTW9udGgoYyksYz0oYysxMiklMTI7ZWxzZXtmb3IodmFyIGo9MDtqPGk7aisrKWU9dGhpcy5tb3ZlTW9udGgoZSxiKTtjPWUuZ2V0VVRDTW9udGgoKSxlLnNldFVUQ0RhdGUoZiksZD1mdW5jdGlvbigpe3JldHVybiBjIT09ZS5nZXRVVENNb250aCgpfX1mb3IoO2QoKTspZS5zZXRVVENEYXRlKC0tZiksZS5zZXRVVENNb250aChjKTtyZXR1cm4gZX0sbW92ZVllYXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5tb3ZlTW9udGgoYSwxMipiKX0sbW92ZUF2YWlsYWJsZURhdGU6ZnVuY3Rpb24oYSxiLGMpe2Rve2lmKGE9dGhpc1tjXShhLGIpLCF0aGlzLmRhdGVXaXRoaW5SYW5nZShhKSlyZXR1cm4hMTtjPVwibW92ZURheVwifXdoaWxlKHRoaXMuZGF0ZUlzRGlzYWJsZWQoYSkpO3JldHVybiBhfSx3ZWVrT2ZEYXRlSXNEaXNhYmxlZDpmdW5jdGlvbihiKXtyZXR1cm4tMSE9PWEuaW5BcnJheShiLmdldFVUQ0RheSgpLHRoaXMuby5kYXlzT2ZXZWVrRGlzYWJsZWQpfSxkYXRlSXNEaXNhYmxlZDpmdW5jdGlvbihiKXtyZXR1cm4gdGhpcy53ZWVrT2ZEYXRlSXNEaXNhYmxlZChiKXx8YS5ncmVwKHRoaXMuby5kYXRlc0Rpc2FibGVkLGZ1bmN0aW9uKGEpe3JldHVybiBlKGIsYSl9KS5sZW5ndGg+MH0sZGF0ZVdpdGhpblJhbmdlOmZ1bmN0aW9uKGEpe3JldHVybiBhPj10aGlzLm8uc3RhcnREYXRlJiZhPD10aGlzLm8uZW5kRGF0ZX0sa2V5ZG93bjpmdW5jdGlvbihhKXtpZighdGhpcy5waWNrZXIuaXMoXCI6dmlzaWJsZVwiKSlyZXR1cm4gdm9pZCg0MCE9PWEua2V5Q29kZSYmMjchPT1hLmtleUNvZGV8fCh0aGlzLnNob3coKSxhLnN0b3BQcm9wYWdhdGlvbigpKSk7dmFyIGIsYyxkPSExLGU9dGhpcy5mb2N1c0RhdGV8fHRoaXMudmlld0RhdGU7c3dpdGNoKGEua2V5Q29kZSl7Y2FzZSAyNzp0aGlzLmZvY3VzRGF0ZT8odGhpcy5mb2N1c0RhdGU9bnVsbCx0aGlzLnZpZXdEYXRlPXRoaXMuZGF0ZXMuZ2V0KC0xKXx8dGhpcy52aWV3RGF0ZSx0aGlzLmZpbGwoKSk6dGhpcy5oaWRlKCksYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCk7YnJlYWs7Y2FzZSAzNzpjYXNlIDM4OmNhc2UgMzk6Y2FzZSA0MDppZighdGhpcy5vLmtleWJvYXJkTmF2aWdhdGlvbnx8Nz09PXRoaXMuby5kYXlzT2ZXZWVrRGlzYWJsZWQubGVuZ3RoKWJyZWFrO2I9Mzc9PT1hLmtleUNvZGV8fDM4PT09YS5rZXlDb2RlPy0xOjEsMD09PXRoaXMudmlld01vZGU/YS5jdHJsS2V5PyhjPXRoaXMubW92ZUF2YWlsYWJsZURhdGUoZSxiLFwibW92ZVllYXJcIikpJiZ0aGlzLl90cmlnZ2VyKFwiY2hhbmdlWWVhclwiLHRoaXMudmlld0RhdGUpOmEuc2hpZnRLZXk/KGM9dGhpcy5tb3ZlQXZhaWxhYmxlRGF0ZShlLGIsXCJtb3ZlTW9udGhcIikpJiZ0aGlzLl90cmlnZ2VyKFwiY2hhbmdlTW9udGhcIix0aGlzLnZpZXdEYXRlKTozNz09PWEua2V5Q29kZXx8Mzk9PT1hLmtleUNvZGU/Yz10aGlzLm1vdmVBdmFpbGFibGVEYXRlKGUsYixcIm1vdmVEYXlcIik6dGhpcy53ZWVrT2ZEYXRlSXNEaXNhYmxlZChlKXx8KGM9dGhpcy5tb3ZlQXZhaWxhYmxlRGF0ZShlLGIsXCJtb3ZlV2Vla1wiKSk6MT09PXRoaXMudmlld01vZGU/KDM4IT09YS5rZXlDb2RlJiY0MCE9PWEua2V5Q29kZXx8KGIqPTQpLGM9dGhpcy5tb3ZlQXZhaWxhYmxlRGF0ZShlLGIsXCJtb3ZlTW9udGhcIikpOjI9PT10aGlzLnZpZXdNb2RlJiYoMzghPT1hLmtleUNvZGUmJjQwIT09YS5rZXlDb2RlfHwoYio9NCksYz10aGlzLm1vdmVBdmFpbGFibGVEYXRlKGUsYixcIm1vdmVZZWFyXCIpKSxjJiYodGhpcy5mb2N1c0RhdGU9dGhpcy52aWV3RGF0ZT1jLHRoaXMuc2V0VmFsdWUoKSx0aGlzLmZpbGwoKSxhLnByZXZlbnREZWZhdWx0KCkpO2JyZWFrO2Nhc2UgMTM6aWYoIXRoaXMuby5mb3JjZVBhcnNlKWJyZWFrO2U9dGhpcy5mb2N1c0RhdGV8fHRoaXMuZGF0ZXMuZ2V0KC0xKXx8dGhpcy52aWV3RGF0ZSx0aGlzLm8ua2V5Ym9hcmROYXZpZ2F0aW9uJiYodGhpcy5fdG9nZ2xlX211bHRpZGF0ZShlKSxkPSEwKSx0aGlzLmZvY3VzRGF0ZT1udWxsLHRoaXMudmlld0RhdGU9dGhpcy5kYXRlcy5nZXQoLTEpfHx0aGlzLnZpZXdEYXRlLHRoaXMuc2V0VmFsdWUoKSx0aGlzLmZpbGwoKSx0aGlzLnBpY2tlci5pcyhcIjp2aXNpYmxlXCIpJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5vLmF1dG9jbG9zZSYmdGhpcy5oaWRlKCkpO2JyZWFrO2Nhc2UgOTp0aGlzLmZvY3VzRGF0ZT1udWxsLHRoaXMudmlld0RhdGU9dGhpcy5kYXRlcy5nZXQoLTEpfHx0aGlzLnZpZXdEYXRlLHRoaXMuZmlsbCgpLHRoaXMuaGlkZSgpfWQmJih0aGlzLmRhdGVzLmxlbmd0aD90aGlzLl90cmlnZ2VyKFwiY2hhbmdlRGF0ZVwiKTp0aGlzLl90cmlnZ2VyKFwiY2xlYXJEYXRlXCIpLHRoaXMuaW5wdXRGaWVsZC50cmlnZ2VyKFwiY2hhbmdlXCIpKX0sc2V0Vmlld01vZGU6ZnVuY3Rpb24oYSl7dGhpcy52aWV3TW9kZT1hLHRoaXMucGlja2VyLmNoaWxkcmVuKFwiZGl2XCIpLmhpZGUoKS5maWx0ZXIoXCIuZGF0ZXBpY2tlci1cIityLnZpZXdNb2Rlc1t0aGlzLnZpZXdNb2RlXS5jbHNOYW1lKS5zaG93KCksdGhpcy51cGRhdGVOYXZBcnJvd3MoKSx0aGlzLl90cmlnZ2VyKFwiY2hhbmdlVmlld01vZGVcIixuZXcgRGF0ZSh0aGlzLnZpZXdEYXRlKSl9fTt2YXIgbD1mdW5jdGlvbihiLGMpe2EuZGF0YShiLFwiZGF0ZXBpY2tlclwiLHRoaXMpLHRoaXMuZWxlbWVudD1hKGIpLHRoaXMuaW5wdXRzPWEubWFwKGMuaW5wdXRzLGZ1bmN0aW9uKGEpe3JldHVybiBhLmpxdWVyeT9hWzBdOmF9KSxkZWxldGUgYy5pbnB1dHMsdGhpcy5rZWVwRW1wdHlWYWx1ZXM9Yy5rZWVwRW1wdHlWYWx1ZXMsZGVsZXRlIGMua2VlcEVtcHR5VmFsdWVzLG4uY2FsbChhKHRoaXMuaW5wdXRzKSxjKS5vbihcImNoYW5nZURhdGVcIixhLnByb3h5KHRoaXMuZGF0ZVVwZGF0ZWQsdGhpcykpLHRoaXMucGlja2Vycz1hLm1hcCh0aGlzLmlucHV0cyxmdW5jdGlvbihiKXtyZXR1cm4gYS5kYXRhKGIsXCJkYXRlcGlja2VyXCIpfSksdGhpcy51cGRhdGVEYXRlcygpfTtsLnByb3RvdHlwZT17dXBkYXRlRGF0ZXM6ZnVuY3Rpb24oKXt0aGlzLmRhdGVzPWEubWFwKHRoaXMucGlja2VycyxmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRVVENEYXRlKCl9KSx0aGlzLnVwZGF0ZVJhbmdlcygpfSx1cGRhdGVSYW5nZXM6ZnVuY3Rpb24oKXt2YXIgYj1hLm1hcCh0aGlzLmRhdGVzLGZ1bmN0aW9uKGEpe3JldHVybiBhLnZhbHVlT2YoKX0pO2EuZWFjaCh0aGlzLnBpY2tlcnMsZnVuY3Rpb24oYSxjKXtjLnNldFJhbmdlKGIpfSl9LGNsZWFyRGF0ZXM6ZnVuY3Rpb24oKXthLmVhY2godGhpcy5waWNrZXJzLGZ1bmN0aW9uKGEsYil7Yi5jbGVhckRhdGVzKCl9KX0sZGF0ZVVwZGF0ZWQ6ZnVuY3Rpb24oYyl7aWYoIXRoaXMudXBkYXRpbmcpe3RoaXMudXBkYXRpbmc9ITA7dmFyIGQ9YS5kYXRhKGMudGFyZ2V0LFwiZGF0ZXBpY2tlclwiKTtpZihkIT09Yil7dmFyIGU9ZC5nZXRVVENEYXRlKCksZj10aGlzLmtlZXBFbXB0eVZhbHVlcyxnPWEuaW5BcnJheShjLnRhcmdldCx0aGlzLmlucHV0cyksaD1nLTEsaT1nKzEsaj10aGlzLmlucHV0cy5sZW5ndGg7aWYoLTEhPT1nKXtpZihhLmVhY2godGhpcy5waWNrZXJzLGZ1bmN0aW9uKGEsYil7Yi5nZXRVVENEYXRlKCl8fGIhPT1kJiZmfHxiLnNldFVUQ0RhdGUoZSl9KSxlPHRoaXMuZGF0ZXNbaF0pZm9yKDtoPj0wJiZlPHRoaXMuZGF0ZXNbaF07KXRoaXMucGlja2Vyc1toLS1dLnNldFVUQ0RhdGUoZSk7ZWxzZSBpZihlPnRoaXMuZGF0ZXNbaV0pZm9yKDtpPGomJmU+dGhpcy5kYXRlc1tpXTspdGhpcy5waWNrZXJzW2krK10uc2V0VVRDRGF0ZShlKTt0aGlzLnVwZGF0ZURhdGVzKCksZGVsZXRlIHRoaXMudXBkYXRpbmd9fX19LGRlc3Ryb3k6ZnVuY3Rpb24oKXthLm1hcCh0aGlzLnBpY2tlcnMsZnVuY3Rpb24oYSl7YS5kZXN0cm95KCl9KSxhKHRoaXMuaW5wdXRzKS5vZmYoXCJjaGFuZ2VEYXRlXCIsdGhpcy5kYXRlVXBkYXRlZCksZGVsZXRlIHRoaXMuZWxlbWVudC5kYXRhKCkuZGF0ZXBpY2tlcn0scmVtb3ZlOmYoXCJkZXN0cm95XCIsXCJNZXRob2QgYHJlbW92ZWAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gMi4wLiBVc2UgYGRlc3Ryb3lgIGluc3RlYWRcIil9O3ZhciBtPWEuZm4uZGF0ZXBpY2tlcixuPWZ1bmN0aW9uKGMpe3ZhciBkPUFycmF5LmFwcGx5KG51bGwsYXJndW1lbnRzKTtkLnNoaWZ0KCk7dmFyIGU7aWYodGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKSxmPWIuZGF0YShcImRhdGVwaWNrZXJcIiksZz1cIm9iamVjdFwiPT10eXBlb2YgYyYmYztpZighZil7dmFyIGo9aCh0aGlzLFwiZGF0ZVwiKSxtPWEuZXh0ZW5kKHt9LG8saixnKSxuPWkobS5sYW5ndWFnZSkscD1hLmV4dGVuZCh7fSxvLG4saixnKTtiLmhhc0NsYXNzKFwiaW5wdXQtZGF0ZXJhbmdlXCIpfHxwLmlucHV0cz8oYS5leHRlbmQocCx7aW5wdXRzOnAuaW5wdXRzfHxiLmZpbmQoXCJpbnB1dFwiKS50b0FycmF5KCl9KSxmPW5ldyBsKHRoaXMscCkpOmY9bmV3IGsodGhpcyxwKSxiLmRhdGEoXCJkYXRlcGlja2VyXCIsZil9XCJzdHJpbmdcIj09dHlwZW9mIGMmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGZbY10mJihlPWZbY10uYXBwbHkoZixkKSl9KSxlPT09Ynx8ZSBpbnN0YW5jZW9mIGt8fGUgaW5zdGFuY2VvZiBsKXJldHVybiB0aGlzO2lmKHRoaXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKFwiVXNpbmcgb25seSBhbGxvd2VkIGZvciB0aGUgY29sbGVjdGlvbiBvZiBhIHNpbmdsZSBlbGVtZW50IChcIitjK1wiIGZ1bmN0aW9uKVwiKTtyZXR1cm4gZX07YS5mbi5kYXRlcGlja2VyPW47dmFyIG89YS5mbi5kYXRlcGlja2VyLmRlZmF1bHRzPXthc3N1bWVOZWFyYnlZZWFyOiExLGF1dG9jbG9zZTohMSxiZWZvcmVTaG93RGF5OmEubm9vcCxiZWZvcmVTaG93TW9udGg6YS5ub29wLGJlZm9yZVNob3dZZWFyOmEubm9vcCxiZWZvcmVTaG93RGVjYWRlOmEubm9vcCxiZWZvcmVTaG93Q2VudHVyeTphLm5vb3AsY2FsZW5kYXJXZWVrczohMSxjbGVhckJ0bjohMSx0b2dnbGVBY3RpdmU6ITEsZGF5c09mV2Vla0Rpc2FibGVkOltdLGRheXNPZldlZWtIaWdobGlnaHRlZDpbXSxkYXRlc0Rpc2FibGVkOltdLGVuZERhdGU6MS8wLGZvcmNlUGFyc2U6ITAsZm9ybWF0OlwibW0vZGQveXl5eVwiLGtlZXBFbXB0eVZhbHVlczohMSxrZXlib2FyZE5hdmlnYXRpb246ITAsbGFuZ3VhZ2U6XCJlblwiLG1pblZpZXdNb2RlOjAsbWF4Vmlld01vZGU6NCxtdWx0aWRhdGU6ITEsbXVsdGlkYXRlU2VwYXJhdG9yOlwiLFwiLG9yaWVudGF0aW9uOlwiYXV0b1wiLHJ0bDohMSxzdGFydERhdGU6LTEvMCxzdGFydFZpZXc6MCx0b2RheUJ0bjohMSx0b2RheUhpZ2hsaWdodDohMSx1cGRhdGVWaWV3RGF0ZTohMCx3ZWVrU3RhcnQ6MCxkaXNhYmxlVG91Y2hLZXlib2FyZDohMSxlbmFibGVPblJlYWRvbmx5OiEwLHNob3dPbkZvY3VzOiEwLHpJbmRleE9mZnNldDoxMCxjb250YWluZXI6XCJib2R5XCIsaW1tZWRpYXRlVXBkYXRlczohMSx0aXRsZTpcIlwiLHRlbXBsYXRlczp7bGVmdEFycm93OlwiJiN4MDBBQjtcIixyaWdodEFycm93OlwiJiN4MDBCQjtcIn0sc2hvd1dlZWtEYXlzOiEwfSxwPWEuZm4uZGF0ZXBpY2tlci5sb2NhbGVfb3B0cz1bXCJmb3JtYXRcIixcInJ0bFwiLFwid2Vla1N0YXJ0XCJdO2EuZm4uZGF0ZXBpY2tlci5Db25zdHJ1Y3Rvcj1rO3ZhciBxPWEuZm4uZGF0ZXBpY2tlci5kYXRlcz17ZW46e2RheXM6W1wiU3VuZGF5XCIsXCJNb25kYXlcIixcIlR1ZXNkYXlcIixcIldlZG5lc2RheVwiLFwiVGh1cnNkYXlcIixcIkZyaWRheVwiLFwiU2F0dXJkYXlcIl0sZGF5c1Nob3J0OltcIlN1blwiLFwiTW9uXCIsXCJUdWVcIixcIldlZFwiLFwiVGh1XCIsXCJGcmlcIixcIlNhdFwiXSxkYXlzTWluOltcIlN1XCIsXCJNb1wiLFwiVHVcIixcIldlXCIsXCJUaFwiLFwiRnJcIixcIlNhXCJdLG1vbnRoczpbXCJKYW51YXJ5XCIsXCJGZWJydWFyeVwiLFwiTWFyY2hcIixcIkFwcmlsXCIsXCJNYXlcIixcIkp1bmVcIixcIkp1bHlcIixcIkF1Z3VzdFwiLFwiU2VwdGVtYmVyXCIsXCJPY3RvYmVyXCIsXCJOb3ZlbWJlclwiLFwiRGVjZW1iZXJcIl0sbW9udGhzU2hvcnQ6W1wiSmFuXCIsXCJGZWJcIixcIk1hclwiLFwiQXByXCIsXCJNYXlcIixcIkp1blwiLFwiSnVsXCIsXCJBdWdcIixcIlNlcFwiLFwiT2N0XCIsXCJOb3ZcIixcIkRlY1wiXSx0b2RheTpcIlRvZGF5XCIsY2xlYXI6XCJDbGVhclwiLHRpdGxlRm9ybWF0OlwiTU0geXl5eVwifX0scj17dmlld01vZGVzOlt7bmFtZXM6W1wiZGF5c1wiLFwibW9udGhcIl0sY2xzTmFtZTpcImRheXNcIixlOlwiY2hhbmdlTW9udGhcIn0se25hbWVzOltcIm1vbnRoc1wiLFwieWVhclwiXSxjbHNOYW1lOlwibW9udGhzXCIsZTpcImNoYW5nZVllYXJcIixuYXZTdGVwOjF9LHtuYW1lczpbXCJ5ZWFyc1wiLFwiZGVjYWRlXCJdLGNsc05hbWU6XCJ5ZWFyc1wiLGU6XCJjaGFuZ2VEZWNhZGVcIixuYXZTdGVwOjEwfSx7bmFtZXM6W1wiZGVjYWRlc1wiLFwiY2VudHVyeVwiXSxjbHNOYW1lOlwiZGVjYWRlc1wiLGU6XCJjaGFuZ2VDZW50dXJ5XCIsbmF2U3RlcDoxMDB9LHtuYW1lczpbXCJjZW50dXJpZXNcIixcIm1pbGxlbm5pdW1cIl0sY2xzTmFtZTpcImNlbnR1cmllc1wiLGU6XCJjaGFuZ2VNaWxsZW5uaXVtXCIsbmF2U3RlcDoxZTN9XSx2YWxpZFBhcnRzOi9kZD98REQ/fG1tP3xNTT98eXkoPzp5eSk/L2csbm9ucHVuY3R1YXRpb246L1teIC1cXC86LUBcXHU1ZTc0XFx1NjcwOFxcdTY1ZTVcXFstYHstflxcdFxcblxccl0rL2cscGFyc2VGb3JtYXQ6ZnVuY3Rpb24oYSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgYS50b1ZhbHVlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLnRvRGlzcGxheSlyZXR1cm4gYTt2YXIgYj1hLnJlcGxhY2UodGhpcy52YWxpZFBhcnRzLFwiXFwwXCIpLnNwbGl0KFwiXFwwXCIpLGM9YS5tYXRjaCh0aGlzLnZhbGlkUGFydHMpO2lmKCFifHwhYi5sZW5ndGh8fCFjfHwwPT09Yy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBkYXRlIGZvcm1hdC5cIik7cmV0dXJue3NlcGFyYXRvcnM6YixwYXJ0czpjfX0scGFyc2VEYXRlOmZ1bmN0aW9uKGMsZSxmLGcpe2Z1bmN0aW9uIGgoYSxiKXtyZXR1cm4hMD09PWImJihiPTEwKSxhPDEwMCYmKGErPTJlMyk+KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpK2ImJihhLT0xMDApLGF9ZnVuY3Rpb24gaSgpe3ZhciBhPXRoaXMuc2xpY2UoMCxqW25dLmxlbmd0aCksYj1qW25dLnNsaWNlKDAsYS5sZW5ndGgpO3JldHVybiBhLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9aWYoIWMpcmV0dXJuIGI7aWYoYyBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIGM7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJihlPXIucGFyc2VGb3JtYXQoZSkpLGUudG9WYWx1ZSlyZXR1cm4gZS50b1ZhbHVlKGMsZSxmKTt2YXIgaixsLG0sbixvLHA9e2Q6XCJtb3ZlRGF5XCIsbTpcIm1vdmVNb250aFwiLHc6XCJtb3ZlV2Vla1wiLHk6XCJtb3ZlWWVhclwifSxzPXt5ZXN0ZXJkYXk6XCItMWRcIix0b2RheTpcIiswZFwiLHRvbW9ycm93OlwiKzFkXCJ9O2lmKGMgaW4gcyYmKGM9c1tjXSksL15bXFwtK11cXGQrW2Rtd3ldKFtcXHMsXStbXFwtK11cXGQrW2Rtd3ldKSokL2kudGVzdChjKSl7Zm9yKGo9Yy5tYXRjaCgvKFtcXC0rXVxcZCspKFtkbXd5XSkvZ2kpLGM9bmV3IERhdGUsbj0wO248ai5sZW5ndGg7bisrKWw9altuXS5tYXRjaCgvKFtcXC0rXVxcZCspKFtkbXd5XSkvaSksbT1OdW1iZXIobFsxXSksbz1wW2xbMl0udG9Mb3dlckNhc2UoKV0sYz1rLnByb3RvdHlwZVtvXShjLG0pO3JldHVybiBrLnByb3RvdHlwZS5femVyb191dGNfdGltZShjKX1qPWMmJmMubWF0Y2godGhpcy5ub25wdW5jdHVhdGlvbil8fFtdO3ZhciB0LHUsdj17fSx3PVtcInl5eXlcIixcInl5XCIsXCJNXCIsXCJNTVwiLFwibVwiLFwibW1cIixcImRcIixcImRkXCJdLHg9e3l5eXk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5zZXRVVENGdWxsWWVhcihnP2goYixnKTpiKX0sbTpmdW5jdGlvbihhLGIpe2lmKGlzTmFOKGEpKXJldHVybiBhO2ZvcihiLT0xO2I8MDspYis9MTI7Zm9yKGIlPTEyLGEuc2V0VVRDTW9udGgoYik7YS5nZXRVVENNb250aCgpIT09YjspYS5zZXRVVENEYXRlKGEuZ2V0VVRDRGF0ZSgpLTEpO3JldHVybiBhfSxkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc2V0VVRDRGF0ZShiKX19O3gueXk9eC55eXl5LHguTT14Lk1NPXgubW09eC5tLHguZGQ9eC5kLGM9ZCgpO3ZhciB5PWUucGFydHMuc2xpY2UoKTtpZihqLmxlbmd0aCE9PXkubGVuZ3RoJiYoeT1hKHkpLmZpbHRlcihmdW5jdGlvbihiLGMpe3JldHVybi0xIT09YS5pbkFycmF5KGMsdyl9KS50b0FycmF5KCkpLGoubGVuZ3RoPT09eS5sZW5ndGgpe3ZhciB6O2ZvcihuPTAsej15Lmxlbmd0aDtuPHo7bisrKXtpZih0PXBhcnNlSW50KGpbbl0sMTApLGw9eVtuXSxpc05hTih0KSlzd2l0Y2gobCl7Y2FzZVwiTU1cIjp1PWEocVtmXS5tb250aHMpLmZpbHRlcihpKSx0PWEuaW5BcnJheSh1WzBdLHFbZl0ubW9udGhzKSsxO2JyZWFrO2Nhc2VcIk1cIjp1PWEocVtmXS5tb250aHNTaG9ydCkuZmlsdGVyKGkpLHQ9YS5pbkFycmF5KHVbMF0scVtmXS5tb250aHNTaG9ydCkrMX12W2xdPXR9dmFyIEEsQjtmb3Iobj0wO248dy5sZW5ndGg7bisrKShCPXdbbl0paW4gdiYmIWlzTmFOKHZbQl0pJiYoQT1uZXcgRGF0ZShjKSx4W0JdKEEsdltCXSksaXNOYU4oQSl8fChjPUEpKX1yZXR1cm4gY30sZm9ybWF0RGF0ZTpmdW5jdGlvbihiLGMsZCl7aWYoIWIpcmV0dXJuXCJcIjtpZihcInN0cmluZ1wiPT10eXBlb2YgYyYmKGM9ci5wYXJzZUZvcm1hdChjKSksYy50b0Rpc3BsYXkpcmV0dXJuIGMudG9EaXNwbGF5KGIsYyxkKTt2YXIgZT17ZDpiLmdldFVUQ0RhdGUoKSxEOnFbZF0uZGF5c1Nob3J0W2IuZ2V0VVRDRGF5KCldLEREOnFbZF0uZGF5c1tiLmdldFVUQ0RheSgpXSxtOmIuZ2V0VVRDTW9udGgoKSsxLE06cVtkXS5tb250aHNTaG9ydFtiLmdldFVUQ01vbnRoKCldLE1NOnFbZF0ubW9udGhzW2IuZ2V0VVRDTW9udGgoKV0seXk6Yi5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpLHl5eXk6Yi5nZXRVVENGdWxsWWVhcigpfTtlLmRkPShlLmQ8MTA/XCIwXCI6XCJcIikrZS5kLGUubW09KGUubTwxMD9cIjBcIjpcIlwiKStlLm0sYj1bXTtmb3IodmFyIGY9YS5leHRlbmQoW10sYy5zZXBhcmF0b3JzKSxnPTAsaD1jLnBhcnRzLmxlbmd0aDtnPD1oO2crKylmLmxlbmd0aCYmYi5wdXNoKGYuc2hpZnQoKSksYi5wdXNoKGVbYy5wYXJ0c1tnXV0pO3JldHVybiBiLmpvaW4oXCJcIil9LFxuaGVhZFRlbXBsYXRlOic8dGhlYWQ+PHRyPjx0aCBjb2xzcGFuPVwiN1wiIGNsYXNzPVwiZGF0ZXBpY2tlci10aXRsZVwiPjwvdGg+PC90cj48dHI+PHRoIGNsYXNzPVwicHJldlwiPicrby50ZW1wbGF0ZXMubGVmdEFycm93Kyc8L3RoPjx0aCBjb2xzcGFuPVwiNVwiIGNsYXNzPVwiZGF0ZXBpY2tlci1zd2l0Y2hcIj48L3RoPjx0aCBjbGFzcz1cIm5leHRcIj4nK28udGVtcGxhdGVzLnJpZ2h0QXJyb3crXCI8L3RoPjwvdHI+PC90aGVhZD5cIixjb250VGVtcGxhdGU6Jzx0Ym9keT48dHI+PHRkIGNvbHNwYW49XCI3XCI+PC90ZD48L3RyPjwvdGJvZHk+Jyxmb290VGVtcGxhdGU6Jzx0Zm9vdD48dHI+PHRoIGNvbHNwYW49XCI3XCIgY2xhc3M9XCJ0b2RheVwiPjwvdGg+PC90cj48dHI+PHRoIGNvbHNwYW49XCI3XCIgY2xhc3M9XCJjbGVhclwiPjwvdGg+PC90cj48L3Rmb290Pid9O3IudGVtcGxhdGU9JzxkaXYgY2xhc3M9XCJkYXRlcGlja2VyXCI+PGRpdiBjbGFzcz1cImRhdGVwaWNrZXItZGF5c1wiPjx0YWJsZSBjbGFzcz1cInRhYmxlLWNvbmRlbnNlZFwiPicrci5oZWFkVGVtcGxhdGUrXCI8dGJvZHk+PC90Ym9keT5cIityLmZvb3RUZW1wbGF0ZSsnPC90YWJsZT48L2Rpdj48ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1tb250aHNcIj48dGFibGUgY2xhc3M9XCJ0YWJsZS1jb25kZW5zZWRcIj4nK3IuaGVhZFRlbXBsYXRlK3IuY29udFRlbXBsYXRlK3IuZm9vdFRlbXBsYXRlKyc8L3RhYmxlPjwvZGl2PjxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLXllYXJzXCI+PHRhYmxlIGNsYXNzPVwidGFibGUtY29uZGVuc2VkXCI+JytyLmhlYWRUZW1wbGF0ZStyLmNvbnRUZW1wbGF0ZStyLmZvb3RUZW1wbGF0ZSsnPC90YWJsZT48L2Rpdj48ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1kZWNhZGVzXCI+PHRhYmxlIGNsYXNzPVwidGFibGUtY29uZGVuc2VkXCI+JytyLmhlYWRUZW1wbGF0ZStyLmNvbnRUZW1wbGF0ZStyLmZvb3RUZW1wbGF0ZSsnPC90YWJsZT48L2Rpdj48ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jZW50dXJpZXNcIj48dGFibGUgY2xhc3M9XCJ0YWJsZS1jb25kZW5zZWRcIj4nK3IuaGVhZFRlbXBsYXRlK3IuY29udFRlbXBsYXRlK3IuZm9vdFRlbXBsYXRlK1wiPC90YWJsZT48L2Rpdj48L2Rpdj5cIixhLmZuLmRhdGVwaWNrZXIuRFBHbG9iYWw9cixhLmZuLmRhdGVwaWNrZXIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmRhdGVwaWNrZXI9bSx0aGlzfSxhLmZuLmRhdGVwaWNrZXIudmVyc2lvbj1cIjEuOS4wXCIsYS5mbi5kYXRlcGlja2VyLmRlcHJlY2F0ZWQ9ZnVuY3Rpb24oYSl7dmFyIGI9d2luZG93LmNvbnNvbGU7YiYmYi53YXJuJiZiLndhcm4oXCJERVBSRUNBVEVEOiBcIithKX0sYShkb2N1bWVudCkub24oXCJmb2N1cy5kYXRlcGlja2VyLmRhdGEtYXBpIGNsaWNrLmRhdGVwaWNrZXIuZGF0YS1hcGlcIiwnW2RhdGEtcHJvdmlkZT1cImRhdGVwaWNrZXJcIl0nLGZ1bmN0aW9uKGIpe3ZhciBjPWEodGhpcyk7Yy5kYXRhKFwiZGF0ZXBpY2tlclwiKXx8KGIucHJldmVudERlZmF1bHQoKSxuLmNhbGwoYyxcInNob3dcIikpfSksYShmdW5jdGlvbigpe24uY2FsbChhKCdbZGF0YS1wcm92aWRlPVwiZGF0ZXBpY2tlci1pbmxpbmVcIl0nKSl9KX0pOyJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxDQUFDLFVBQVNBLENBQVQsRUFBVztFQUFDLGNBQVksT0FBT0MsTUFBbkIsSUFBMkJBLE1BQU0sQ0FBQ0MsR0FBbEMsR0FBc0NELE1BQU0sQ0FBQyxDQUFDLFFBQUQsQ0FBRCxFQUFZRCxDQUFaLENBQTVDLEdBQTJEQSxDQUFDLENBQUMsb0JBQWlCRyxPQUFqQix5Q0FBaUJBLE9BQWpCLEtBQXlCQyxPQUFPLENBQUMsUUFBRCxDQUFoQyxHQUEyQ0MsTUFBNUMsQ0FBNUQ7QUFBZ0gsQ0FBNUgsQ0FBNkgsVUFBU0wsQ0FBVCxFQUFXTSxDQUFYLEVBQWE7RUFBQyxTQUFTQyxDQUFULEdBQVk7SUFBQyxPQUFPLElBQUlDLElBQUosQ0FBU0EsSUFBSSxDQUFDQyxHQUFMLENBQVNDLEtBQVQsQ0FBZUYsSUFBZixFQUFvQkcsU0FBcEIsQ0FBVCxDQUFQO0VBQWdEOztFQUFBLFNBQVNDLENBQVQsR0FBWTtJQUFDLElBQUlaLENBQUMsR0FBQyxJQUFJ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 },{"jquery":20}],11:[function(require,module,exports){ "use strict"; @@ -23035,6302 +22063,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } -/*! - * Bootstrap v5.2.0 (https://getbootstrap.com/) - * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -(function (global, factory) { - (typeof exports === "undefined" ? "undefined" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core')) : typeof define === 'function' && define.amd ? define(['@popperjs/core'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory(global.Popper)); -})(void 0, function (Popper) { - 'use strict'; - var _KEY_TO_DIRECTION; +// bootstrap was here - function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null, _defineProperty({}, Symbol.toStringTag, { - value: 'Module' - })); - - if (e) { - var _loop = function _loop(k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function get() { - return e[k]; - } - }); - } - }; - - for (var k in e) { - _loop(k); - } - } - - n["default"] = e; - return Object.freeze(n); - } - - var Popper__namespace = /*#__PURE__*/_interopNamespace(Popper); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): util/index.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - - var MAX_UID = 1000000; - var MILLISECONDS_MULTIPLIER = 1000; - var TRANSITION_END = 'transitionend'; // Shout-out Angus Croll (https://goo.gl/pxwQGp) - - var toType = function toType(object) { - if (object === null || object === undefined) { - return "".concat(object); - } - - return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); - }; - /** - * Public Util API - */ - - - var getUID = function getUID(prefix) { - do { - prefix += Math.floor(Math.random() * MAX_UID); - } while (document.getElementById(prefix)); - - return prefix; - }; - - var getSelector = function getSelector(element) { - var selector = element.getAttribute('data-bs-target'); - - if (!selector || selector === '#') { - var hrefAttribute = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes, - // so everything starting with `#` or `.`. If a "real" URL is used as the selector, - // `document.querySelector` will rightfully complain it is invalid. - // See https://github.com/twbs/bootstrap/issues/32273 - - if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) { - return null; - } // Just in case some CMS puts out a full URL with the anchor appended - - - if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { - hrefAttribute = "#".concat(hrefAttribute.split('#')[1]); - } - - selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null; - } - - return selector; - }; - - var getSelectorFromElement = function getSelectorFromElement(element) { - var selector = getSelector(element); - - if (selector) { - return document.querySelector(selector) ? selector : null; - } - - return null; - }; - - var getElementFromSelector = function getElementFromSelector(element) { - var selector = getSelector(element); - return selector ? document.querySelector(selector) : null; - }; - - var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) { - if (!element) { - return 0; - } // Get transition-duration of the element - - - var _window$getComputedSt = window.getComputedStyle(element), - transitionDuration = _window$getComputedSt.transitionDuration, - transitionDelay = _window$getComputedSt.transitionDelay; - - var floatTransitionDuration = Number.parseFloat(transitionDuration); - var floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found - - if (!floatTransitionDuration && !floatTransitionDelay) { - return 0; - } // If multiple durations are defined, take the first - - - transitionDuration = transitionDuration.split(',')[0]; - transitionDelay = transitionDelay.split(',')[0]; - return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; - }; - - var triggerTransitionEnd = function triggerTransitionEnd(element) { - element.dispatchEvent(new Event(TRANSITION_END)); - }; - - var isElement = function isElement(object) { - if (!object || _typeof(object) !== 'object') { - return false; - } - - if (typeof object.jquery !== 'undefined') { - object = object[0]; - } - - return typeof object.nodeType !== 'undefined'; - }; - - var getElement = function getElement(object) { - // it's a jQuery object or a node element - if (isElement(object)) { - return object.jquery ? object[0] : object; - } - - if (typeof object === 'string' && object.length > 0) { - return document.querySelector(object); - } - - return null; - }; - - var isVisible = function isVisible(element) { - if (!isElement(element) || element.getClientRects().length === 0) { - return false; - } - - var elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed - - var closedDetails = element.closest('details:not([open])'); - - if (!closedDetails) { - return elementIsVisible; - } - - if (closedDetails !== element) { - var summary = element.closest('summary'); - - if (summary && summary.parentNode !== closedDetails) { - return false; - } - - if (summary === null) { - return false; - } - } - - return elementIsVisible; - }; - - var isDisabled = function isDisabled(element) { - if (!element || element.nodeType !== Node.ELEMENT_NODE) { - return true; - } - - if (element.classList.contains('disabled')) { - return true; - } - - if (typeof element.disabled !== 'undefined') { - return element.disabled; - } - - return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; - }; - - var findShadowRoot = function findShadowRoot(element) { - if (!document.documentElement.attachShadow) { - return null; - } // Can find the shadow root otherwise it'll return the document - - - if (typeof element.getRootNode === 'function') { - var root = element.getRootNode(); - return root instanceof ShadowRoot ? root : null; - } - - if (element instanceof ShadowRoot) { - return element; - } // when we don't find a shadow root - - - if (!element.parentNode) { - return null; - } - - return findShadowRoot(element.parentNode); - }; - - var noop = function noop() {}; - /** - * Trick to restart an element's animation - * - * @param {HTMLElement} element - * @return void - * - * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation - */ - - - var reflow = function reflow(element) { - element.offsetHeight; // eslint-disable-line no-unused-expressions - }; - - var getjQuery = function getjQuery() { - if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { - return window.jQuery; - } - - return null; - }; - - var DOMContentLoadedCallbacks = []; - - var onDOMContentLoaded = function onDOMContentLoaded(callback) { - if (document.readyState === 'loading') { - // add listener on the first call when the document is in loading state - if (!DOMContentLoadedCallbacks.length) { - document.addEventListener('DOMContentLoaded', function () { - var _iterator = _createForOfIteratorHelper(DOMContentLoadedCallbacks), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var _callback = _step.value; - - _callback(); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - }); - } - - DOMContentLoadedCallbacks.push(callback); - } else { - callback(); - } - }; - - var isRTL = function isRTL() { - return document.documentElement.dir === 'rtl'; - }; - - var defineJQueryPlugin = function defineJQueryPlugin(plugin) { - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var name = plugin.NAME; - var JQUERY_NO_CONFLICT = $.fn[name]; - $.fn[name] = plugin.jQueryInterface; - $.fn[name].Constructor = plugin; - - $.fn[name].noConflict = function () { - $.fn[name] = JQUERY_NO_CONFLICT; - return plugin.jQueryInterface; - }; - } - }); - }; - - var execute = function execute(callback) { - if (typeof callback === 'function') { - callback(); - } - }; - - var executeAfterTransition = function executeAfterTransition(callback, transitionElement) { - var waitForTransition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; - - if (!waitForTransition) { - execute(callback); - return; - } - - var durationPadding = 5; - var emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; - var called = false; - - var handler = function handler(_ref) { - var target = _ref.target; - - if (target !== transitionElement) { - return; - } - - called = true; - transitionElement.removeEventListener(TRANSITION_END, handler); - execute(callback); - }; - - transitionElement.addEventListener(TRANSITION_END, handler); - setTimeout(function () { - if (!called) { - triggerTransitionEnd(transitionElement); - } - }, emulatedDuration); - }; - /** - * Return the previous/next element of a list. - * - * @param {array} list The list of elements - * @param activeElement The active element - * @param shouldGetNext Choose to get next or previous element - * @param isCycleAllowed - * @return {Element|elem} The proper element - */ - - - var getNextActiveElement = function getNextActiveElement(list, activeElement, shouldGetNext, isCycleAllowed) { - var listLength = list.length; - var index = list.indexOf(activeElement); // if the element does not exist in the list return an element - // depending on the direction and if cycle is allowed - - if (index === -1) { - return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]; - } - - index += shouldGetNext ? 1 : -1; - - if (isCycleAllowed) { - index = (index + listLength) % listLength; - } - - return list[Math.max(0, Math.min(index, listLength - 1))]; - }; - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): dom/event-handler.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - - var namespaceRegex = /[^.]*(?=\..*)\.|.*/; - var stripNameRegex = /\..*/; - var stripUidRegex = /::\d+$/; - var eventRegistry = {}; // Events storage - - var uidEvent = 1; - var customEvents = { - mouseenter: 'mouseover', - mouseleave: 'mouseout' - }; - var nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); - /** - * Private methods - */ - - function makeEventUid(element, uid) { - return uid && "".concat(uid, "::").concat(uidEvent++) || element.uidEvent || uidEvent++; - } - - function getElementEvents(element) { - var uid = makeEventUid(element); - element.uidEvent = uid; - eventRegistry[uid] = eventRegistry[uid] || {}; - return eventRegistry[uid]; - } - - function bootstrapHandler(element, fn) { - return function handler(event) { - hydrateObj(event, { - delegateTarget: element - }); - - if (handler.oneOff) { - EventHandler.off(element, event.type, fn); - } - - return fn.apply(element, [event]); - }; - } - - function bootstrapDelegationHandler(element, selector, fn) { - return function handler(event) { - var domElements = element.querySelectorAll(selector); - - for (var target = event.target; target && target !== this; target = target.parentNode) { - var _iterator2 = _createForOfIteratorHelper(domElements), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var domElement = _step2.value; - - if (domElement !== target) { - continue; - } - - hydrateObj(event, { - delegateTarget: target - }); - - if (handler.oneOff) { - EventHandler.off(element, event.type, selector, fn); - } - - return fn.apply(target, [event]); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - } - }; - } - - function findHandler(events, callable) { - var delegationSelector = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - return Object.values(events).find(function (event) { - return event.callable === callable && event.delegationSelector === delegationSelector; - }); - } - - function normalizeParameters(originalTypeEvent, handler, delegationFunction) { - var isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check - - var callable = isDelegated ? delegationFunction : handler || delegationFunction; - var typeEvent = getTypeEvent(originalTypeEvent); - - if (!nativeEvents.has(typeEvent)) { - typeEvent = originalTypeEvent; - } - - return [isDelegated, callable, typeEvent]; - } - - function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { - if (typeof originalTypeEvent !== 'string' || !element) { - return; - } - - var _normalizeParameters = normalizeParameters(originalTypeEvent, handler, delegationFunction), - _normalizeParameters2 = _slicedToArray(_normalizeParameters, 3), - isDelegated = _normalizeParameters2[0], - callable = _normalizeParameters2[1], - typeEvent = _normalizeParameters2[2]; // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position - // this prevents the handler from being dispatched the same way as mouseover or mouseout does - - - if (originalTypeEvent in customEvents) { - var wrapFunction = function wrapFunction(fn) { - return function (event) { - if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { - return fn.call(this, event); - } - }; - }; - - callable = wrapFunction(callable); - } - - var events = getElementEvents(element); - var handlers = events[typeEvent] || (events[typeEvent] = {}); - var previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); - - if (previousFunction) { - previousFunction.oneOff = previousFunction.oneOff && oneOff; - return; - } - - var uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, '')); - var fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); - fn.delegationSelector = isDelegated ? handler : null; - fn.callable = callable; - fn.oneOff = oneOff; - fn.uidEvent = uid; - handlers[uid] = fn; - element.addEventListener(typeEvent, fn, isDelegated); - } - - function removeHandler(element, events, typeEvent, handler, delegationSelector) { - var fn = findHandler(events[typeEvent], handler, delegationSelector); - - if (!fn) { - return; - } - - element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); - delete events[typeEvent][fn.uidEvent]; - } - - function removeNamespacedHandlers(element, events, typeEvent, namespace) { - var storeElementEvent = events[typeEvent] || {}; - - for (var _i2 = 0, _Object$keys = Object.keys(storeElementEvent); _i2 < _Object$keys.length; _i2++) { - var handlerKey = _Object$keys[_i2]; - - if (handlerKey.includes(namespace)) { - var event = storeElementEvent[handlerKey]; - removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); - } - } - } - - function getTypeEvent(event) { - // allow to get the native events from namespaced events ('click.bs.button' --> 'click') - event = event.replace(stripNameRegex, ''); - return customEvents[event] || event; - } - - var EventHandler = { - on: function on(element, event, handler, delegationFunction) { - addHandler(element, event, handler, delegationFunction, false); - }, - one: function one(element, event, handler, delegationFunction) { - addHandler(element, event, handler, delegationFunction, true); - }, - off: function off(element, originalTypeEvent, handler, delegationFunction) { - if (typeof originalTypeEvent !== 'string' || !element) { - return; - } - - var _normalizeParameters3 = normalizeParameters(originalTypeEvent, handler, delegationFunction), - _normalizeParameters4 = _slicedToArray(_normalizeParameters3, 3), - isDelegated = _normalizeParameters4[0], - callable = _normalizeParameters4[1], - typeEvent = _normalizeParameters4[2]; - - var inNamespace = typeEvent !== originalTypeEvent; - var events = getElementEvents(element); - var storeElementEvent = events[typeEvent] || {}; - var isNamespace = originalTypeEvent.startsWith('.'); - - if (typeof callable !== 'undefined') { - // Simplest case: handler is passed, remove that listener ONLY. - if (!Object.keys(storeElementEvent).length) { - return; - } - - removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); - return; - } - - if (isNamespace) { - for (var _i3 = 0, _Object$keys2 = Object.keys(events); _i3 < _Object$keys2.length; _i3++) { - var elementEvent = _Object$keys2[_i3]; - removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); - } - } - - for (var _i4 = 0, _Object$keys3 = Object.keys(storeElementEvent); _i4 < _Object$keys3.length; _i4++) { - var keyHandlers = _Object$keys3[_i4]; - var handlerKey = keyHandlers.replace(stripUidRegex, ''); - - if (!inNamespace || originalTypeEvent.includes(handlerKey)) { - var event = storeElementEvent[keyHandlers]; - removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); - } - } - }, - trigger: function trigger(element, event, args) { - if (typeof event !== 'string' || !element) { - return null; - } - - var $ = getjQuery(); - var typeEvent = getTypeEvent(event); - var inNamespace = event !== typeEvent; - var jQueryEvent = null; - var bubbles = true; - var nativeDispatch = true; - var defaultPrevented = false; - - if (inNamespace && $) { - jQueryEvent = $.Event(event, args); - $(element).trigger(jQueryEvent); - bubbles = !jQueryEvent.isPropagationStopped(); - nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); - defaultPrevented = jQueryEvent.isDefaultPrevented(); - } - - var evt = new Event(event, { - bubbles: bubbles, - cancelable: true - }); - evt = hydrateObj(evt, args); - - if (defaultPrevented) { - evt.preventDefault(); - } - - if (nativeDispatch) { - element.dispatchEvent(evt); - } - - if (evt.defaultPrevented && jQueryEvent) { - jQueryEvent.preventDefault(); - } - - return evt; - } - }; - - function hydrateObj(obj, meta) { - var _loop2 = function _loop2() { - var _Object$entries$_i = _slicedToArray(_Object$entries[_i5], 2), - key = _Object$entries$_i[0], - value = _Object$entries$_i[1]; - - try { - obj[key] = value; - } catch (_unused) { - Object.defineProperty(obj, key, { - configurable: true, - get: function get() { - return value; - } - }); - } - }; - - for (var _i5 = 0, _Object$entries = Object.entries(meta || {}); _i5 < _Object$entries.length; _i5++) { - _loop2(); - } - - return obj; - } - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): dom/data.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - - var elementMap = new Map(); - var Data = { - set: function set(element, key, instance) { - if (!elementMap.has(element)) { - elementMap.set(element, new Map()); - } - - var instanceMap = elementMap.get(element); // make it clear we only want one instance per element - // can be removed later when multiple key/instances are fine to be used - - if (!instanceMap.has(key) && instanceMap.size !== 0) { - // eslint-disable-next-line no-console - console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(instanceMap.keys())[0], ".")); - return; - } - - instanceMap.set(key, instance); - }, - get: function get(element, key) { - if (elementMap.has(element)) { - return elementMap.get(element).get(key) || null; - } - - return null; - }, - remove: function remove(element, key) { - if (!elementMap.has(element)) { - return; - } - - var instanceMap = elementMap.get(element); - instanceMap["delete"](key); // free up element references if there are no instances left for an element - - if (instanceMap.size === 0) { - elementMap["delete"](element); - } - } - }; - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): dom/manipulator.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - function normalizeData(value) { - if (value === 'true') { - return true; - } - - if (value === 'false') { - return false; - } - - if (value === Number(value).toString()) { - return Number(value); - } - - if (value === '' || value === 'null') { - return null; - } - - if (typeof value !== 'string') { - return value; - } - - try { - return JSON.parse(decodeURIComponent(value)); - } catch (_unused) { - return value; - } - } - - function normalizeDataKey(key) { - return key.replace(/[A-Z]/g, function (chr) { - return "-".concat(chr.toLowerCase()); - }); - } - - var Manipulator = { - setDataAttribute: function setDataAttribute(element, key, value) { - element.setAttribute("data-bs-".concat(normalizeDataKey(key)), value); - }, - removeDataAttribute: function removeDataAttribute(element, key) { - element.removeAttribute("data-bs-".concat(normalizeDataKey(key))); - }, - getDataAttributes: function getDataAttributes(element) { - if (!element) { - return {}; - } - - var attributes = {}; - var bsKeys = Object.keys(element.dataset).filter(function (key) { - return key.startsWith('bs') && !key.startsWith('bsConfig'); - }); - - var _iterator3 = _createForOfIteratorHelper(bsKeys), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var key = _step3.value; - var pureKey = key.replace(/^bs/, ''); - pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); - attributes[pureKey] = normalizeData(element.dataset[key]); - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - return attributes; - }, - getDataAttribute: function getDataAttribute(element, key) { - return normalizeData(element.getAttribute("data-bs-".concat(normalizeDataKey(key)))); - } - }; - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): util/config.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Class definition - */ - - var Config = /*#__PURE__*/function () { - function Config() { - _classCallCheck(this, Config); - } - - _createClass(Config, [{ - key: "_getConfig", - value: function _getConfig(config) { - config = this._mergeConfigObj(config); - config = this._configAfterMerge(config); - - this._typeCheckConfig(config); - - return config; - } - }, { - key: "_configAfterMerge", - value: function _configAfterMerge(config) { - return config; - } - }, { - key: "_mergeConfigObj", - value: function _mergeConfigObj(config, element) { - var jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse - - return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, this.constructor.Default), _typeof(jsonConfig) === 'object' ? jsonConfig : {}), isElement(element) ? Manipulator.getDataAttributes(element) : {}), _typeof(config) === 'object' ? config : {}); - } - }, { - key: "_typeCheckConfig", - value: function _typeCheckConfig(config) { - var configTypes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.constructor.DefaultType; - - for (var _i6 = 0, _Object$keys4 = Object.keys(configTypes); _i6 < _Object$keys4.length; _i6++) { - var property = _Object$keys4[_i6]; - var expectedTypes = configTypes[property]; - var value = config[property]; - var valueType = isElement(value) ? 'element' : toType(value); - - if (!new RegExp(expectedTypes).test(valueType)) { - throw new TypeError("".concat(this.constructor.NAME.toUpperCase(), ": Option \"").concat(property, "\" provided type \"").concat(valueType, "\" but expected type \"").concat(expectedTypes, "\".")); - } - } - } - }], [{ - key: "Default", - get: // Getters - function get() { - return {}; - } - }, { - key: "DefaultType", - get: function get() { - return {}; - } - }, { - key: "NAME", - get: function get() { - throw new Error('You have to implement the static method "NAME", for each component!'); - } - }]); - - return Config; - }(); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): base-component.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - - var VERSION = '5.2.0'; - /** - * Class definition - */ - - var BaseComponent = /*#__PURE__*/function (_Config) { - _inherits(BaseComponent, _Config); - - var _super = _createSuper(BaseComponent); - - function BaseComponent(element, config) { - var _this; - - _classCallCheck(this, BaseComponent); - - _this = _super.call(this); - element = getElement(element); - - if (!element) { - return _possibleConstructorReturn(_this); - } - - _this._element = element; - _this._config = _this._getConfig(config); - Data.set(_this._element, _this.constructor.DATA_KEY, _assertThisInitialized(_this)); - return _this; - } // Public - - - _createClass(BaseComponent, [{ - key: "dispose", - value: function dispose() { - Data.remove(this._element, this.constructor.DATA_KEY); - EventHandler.off(this._element, this.constructor.EVENT_KEY); - - var _iterator4 = _createForOfIteratorHelper(Object.getOwnPropertyNames(this)), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var propertyName = _step4.value; - this[propertyName] = null; - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - } - }, { - key: "_queueCallback", - value: function _queueCallback(callback, element) { - var isAnimated = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; - executeAfterTransition(callback, element, isAnimated); - } - }, { - key: "_getConfig", - value: function _getConfig(config) { - config = this._mergeConfigObj(config, this._element); - config = this._configAfterMerge(config); - - this._typeCheckConfig(config); - - return config; - } // Static - - }], [{ - key: "getInstance", - value: function getInstance(element) { - return Data.get(getElement(element), this.DATA_KEY); - } - }, { - key: "getOrCreateInstance", - value: function getOrCreateInstance(element) { - var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return this.getInstance(element) || new this(element, _typeof(config) === 'object' ? config : null); - } - }, { - key: "VERSION", - get: function get() { - return VERSION; - } - }, { - key: "DATA_KEY", - get: function get() { - return "bs.".concat(this.NAME); - } - }, { - key: "EVENT_KEY", - get: function get() { - return ".".concat(this.DATA_KEY); - } - }, { - key: "eventName", - value: function eventName(name) { - return "".concat(name).concat(this.EVENT_KEY); - } - }]); - - return BaseComponent; - }(Config); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): util/component-functions.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - - var enableDismissTrigger = function enableDismissTrigger(component) { - var method = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'hide'; - var clickEvent = "click.dismiss".concat(component.EVENT_KEY); - var name = component.NAME; - EventHandler.on(document, clickEvent, "[data-bs-dismiss=\"".concat(name, "\"]"), function (event) { - if (['A', 'AREA'].includes(this.tagName)) { - event.preventDefault(); - } - - if (isDisabled(this)) { - return; - } - - var target = getElementFromSelector(this) || this.closest(".".concat(name)); - var instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method - - instance[method](); - }); - }; - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): alert.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - - var NAME$f = 'alert'; - var DATA_KEY$a = 'bs.alert'; - var EVENT_KEY$b = ".".concat(DATA_KEY$a); - var EVENT_CLOSE = "close".concat(EVENT_KEY$b); - var EVENT_CLOSED = "closed".concat(EVENT_KEY$b); - var CLASS_NAME_FADE$5 = 'fade'; - var CLASS_NAME_SHOW$8 = 'show'; - /** - * Class definition - */ - - var Alert = /*#__PURE__*/function (_BaseComponent) { - _inherits(Alert, _BaseComponent); - - var _super2 = _createSuper(Alert); - - function Alert() { - _classCallCheck(this, Alert); - - return _super2.apply(this, arguments); - } - - _createClass(Alert, [{ - key: "close", - value: // Public - function close() { - var _this2 = this; - - var closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); - - if (closeEvent.defaultPrevented) { - return; - } - - this._element.classList.remove(CLASS_NAME_SHOW$8); - - var isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5); - - this._queueCallback(function () { - return _this2._destroyElement(); - }, this._element, isAnimated); - } // Private - - }, { - key: "_destroyElement", - value: function _destroyElement() { - this._element.remove(); - - EventHandler.trigger(this._element, EVENT_CLOSED); - this.dispose(); - } // Static - - }], [{ - key: "NAME", - get: // Getters - function get() { - return NAME$f; - } - }, { - key: "jQueryInterface", - value: function jQueryInterface(config) { - return this.each(function () { - var data = Alert.getOrCreateInstance(this); - - if (typeof config !== 'string') { - return; - } - - if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { - throw new TypeError("No method named \"".concat(config, "\"")); - } - - data[config](this); - }); - } - }]); - - return Alert; - }(BaseComponent); - /** - * Data API implementation - */ - - - enableDismissTrigger(Alert, 'close'); - /** - * jQuery - */ - - defineJQueryPlugin(Alert); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): button.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - var NAME$e = 'button'; - var DATA_KEY$9 = 'bs.button'; - var EVENT_KEY$a = ".".concat(DATA_KEY$9); - var DATA_API_KEY$6 = '.data-api'; - var CLASS_NAME_ACTIVE$3 = 'active'; - var SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; - var EVENT_CLICK_DATA_API$6 = "click".concat(EVENT_KEY$a).concat(DATA_API_KEY$6); - /** - * Class definition - */ - - var Button = /*#__PURE__*/function (_BaseComponent2) { - _inherits(Button, _BaseComponent2); - - var _super3 = _createSuper(Button); - - function Button() { - _classCallCheck(this, Button); - - return _super3.apply(this, arguments); - } - - _createClass(Button, [{ - key: "toggle", - value: // Public - function toggle() { - // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method - this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); - } // Static - - }], [{ - key: "NAME", - get: // Getters - function get() { - return NAME$e; - } - }, { - key: "jQueryInterface", - value: function jQueryInterface(config) { - return this.each(function () { - var data = Button.getOrCreateInstance(this); - - if (config === 'toggle') { - data[config](); - } - }); - } - }]); - - return Button; - }(BaseComponent); - /** - * Data API implementation - */ - - - EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, function (event) { - event.preventDefault(); - var button = event.target.closest(SELECTOR_DATA_TOGGLE$5); - var data = Button.getOrCreateInstance(button); - data.toggle(); - }); - /** - * jQuery - */ - - defineJQueryPlugin(Button); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): dom/selector-engine.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - var SelectorEngine = { - find: function find(selector) { - var _ref2; - - var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement; - return (_ref2 = []).concat.apply(_ref2, _toConsumableArray(Element.prototype.querySelectorAll.call(element, selector))); - }, - findOne: function findOne(selector) { - var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement; - return Element.prototype.querySelector.call(element, selector); - }, - children: function children(element, selector) { - var _ref3; - - return (_ref3 = []).concat.apply(_ref3, _toConsumableArray(element.children)).filter(function (child) { - return child.matches(selector); - }); - }, - parents: function parents(element, selector) { - var parents = []; - var ancestor = element.parentNode.closest(selector); - - while (ancestor) { - parents.push(ancestor); - ancestor = ancestor.parentNode.closest(selector); - } - - return parents; - }, - prev: function prev(element, selector) { - var previous = element.previousElementSibling; - - while (previous) { - if (previous.matches(selector)) { - return [previous]; - } - - previous = previous.previousElementSibling; - } - - return []; - }, - // TODO: this is now unused; remove later along with prev() - next: function next(element, selector) { - var next = element.nextElementSibling; - - while (next) { - if (next.matches(selector)) { - return [next]; - } - - next = next.nextElementSibling; - } - - return []; - }, - focusableChildren: function focusableChildren(element) { - var focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(function (selector) { - return "".concat(selector, ":not([tabindex^=\"-\"])"); - }).join(','); - return this.find(focusables, element).filter(function (el) { - return !isDisabled(el) && isVisible(el); - }); - } - }; - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): util/swipe.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - var NAME$d = 'swipe'; - var EVENT_KEY$9 = '.bs.swipe'; - var EVENT_TOUCHSTART = "touchstart".concat(EVENT_KEY$9); - var EVENT_TOUCHMOVE = "touchmove".concat(EVENT_KEY$9); - var EVENT_TOUCHEND = "touchend".concat(EVENT_KEY$9); - var EVENT_POINTERDOWN = "pointerdown".concat(EVENT_KEY$9); - var EVENT_POINTERUP = "pointerup".concat(EVENT_KEY$9); - var POINTER_TYPE_TOUCH = 'touch'; - var POINTER_TYPE_PEN = 'pen'; - var CLASS_NAME_POINTER_EVENT = 'pointer-event'; - var SWIPE_THRESHOLD = 40; - var Default$c = { - endCallback: null, - leftCallback: null, - rightCallback: null - }; - var DefaultType$c = { - endCallback: '(function|null)', - leftCallback: '(function|null)', - rightCallback: '(function|null)' - }; - /** - * Class definition - */ - - var Swipe = /*#__PURE__*/function (_Config2) { - _inherits(Swipe, _Config2); - - var _super4 = _createSuper(Swipe); - - function Swipe(element, config) { - var _this3; - - _classCallCheck(this, Swipe); - - _this3 = _super4.call(this); - _this3._element = element; - - if (!element || !Swipe.isSupported()) { - return _possibleConstructorReturn(_this3); - } - - _this3._config = _this3._getConfig(config); - _this3._deltaX = 0; - _this3._supportPointerEvents = Boolean(window.PointerEvent); - - _this3._initEvents(); - - return _this3; - } // Getters - - - _createClass(Swipe, [{ - key: "dispose", - value: // Public - function dispose() { - EventHandler.off(this._element, EVENT_KEY$9); - } // Private - - }, { - key: "_start", - value: function _start(event) { - if (!this._supportPointerEvents) { - this._deltaX = event.touches[0].clientX; - return; - } - - if (this._eventIsPointerPenTouch(event)) { - this._deltaX = event.clientX; - } - } - }, { - key: "_end", - value: function _end(event) { - if (this._eventIsPointerPenTouch(event)) { - this._deltaX = event.clientX - this._deltaX; - } - - this._handleSwipe(); - - execute(this._config.endCallback); - } - }, { - key: "_move", - value: function _move(event) { - this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX; - } - }, { - key: "_handleSwipe", - value: function _handleSwipe() { - var absDeltaX = Math.abs(this._deltaX); - - if (absDeltaX <= SWIPE_THRESHOLD) { - return; - } - - var direction = absDeltaX / this._deltaX; - this._deltaX = 0; - - if (!direction) { - return; - } - - execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback); - } - }, { - key: "_initEvents", - value: function _initEvents() { - var _this4 = this; - - if (this._supportPointerEvents) { - EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) { - return _this4._start(event); - }); - EventHandler.on(this._element, EVENT_POINTERUP, function (event) { - return _this4._end(event); - }); - - this._element.classList.add(CLASS_NAME_POINTER_EVENT); - } else { - EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) { - return _this4._start(event); - }); - EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) { - return _this4._move(event); - }); - EventHandler.on(this._element, EVENT_TOUCHEND, function (event) { - return _this4._end(event); - }); - } - } - }, { - key: "_eventIsPointerPenTouch", - value: function _eventIsPointerPenTouch(event) { - return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); - } // Static - - }], [{ - key: "Default", - get: function get() { - return Default$c; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$c; - } - }, { - key: "NAME", - get: function get() { - return NAME$d; - } - }, { - key: "isSupported", - value: function isSupported() { - return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; - } - }]); - - return Swipe; - }(Config); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): carousel.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - - var NAME$c = 'carousel'; - var DATA_KEY$8 = 'bs.carousel'; - var EVENT_KEY$8 = ".".concat(DATA_KEY$8); - var DATA_API_KEY$5 = '.data-api'; - var ARROW_LEFT_KEY$1 = 'ArrowLeft'; - var ARROW_RIGHT_KEY$1 = 'ArrowRight'; - var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch - - var ORDER_NEXT = 'next'; - var ORDER_PREV = 'prev'; - var DIRECTION_LEFT = 'left'; - var DIRECTION_RIGHT = 'right'; - var EVENT_SLIDE = "slide".concat(EVENT_KEY$8); - var EVENT_SLID = "slid".concat(EVENT_KEY$8); - var EVENT_KEYDOWN$1 = "keydown".concat(EVENT_KEY$8); - var EVENT_MOUSEENTER$1 = "mouseenter".concat(EVENT_KEY$8); - var EVENT_MOUSELEAVE$1 = "mouseleave".concat(EVENT_KEY$8); - var EVENT_DRAG_START = "dragstart".concat(EVENT_KEY$8); - var EVENT_LOAD_DATA_API$3 = "load".concat(EVENT_KEY$8).concat(DATA_API_KEY$5); - var EVENT_CLICK_DATA_API$5 = "click".concat(EVENT_KEY$8).concat(DATA_API_KEY$5); - var CLASS_NAME_CAROUSEL = 'carousel'; - var CLASS_NAME_ACTIVE$2 = 'active'; - var CLASS_NAME_SLIDE = 'slide'; - var CLASS_NAME_END = 'carousel-item-end'; - var CLASS_NAME_START = 'carousel-item-start'; - var CLASS_NAME_NEXT = 'carousel-item-next'; - var CLASS_NAME_PREV = 'carousel-item-prev'; - var SELECTOR_ACTIVE = '.active'; - var SELECTOR_ITEM = '.carousel-item'; - var SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM; - var SELECTOR_ITEM_IMG = '.carousel-item img'; - var SELECTOR_INDICATORS = '.carousel-indicators'; - var SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; - var SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; - var KEY_TO_DIRECTION = (_KEY_TO_DIRECTION = {}, _defineProperty(_KEY_TO_DIRECTION, ARROW_LEFT_KEY$1, DIRECTION_RIGHT), _defineProperty(_KEY_TO_DIRECTION, ARROW_RIGHT_KEY$1, DIRECTION_LEFT), _KEY_TO_DIRECTION); - var Default$b = { - interval: 5000, - keyboard: true, - pause: 'hover', - ride: false, - touch: true, - wrap: true - }; - var DefaultType$b = { - interval: '(number|boolean)', - // TODO:v6 remove boolean support - keyboard: 'boolean', - pause: '(string|boolean)', - ride: '(boolean|string)', - touch: 'boolean', - wrap: 'boolean' - }; - /** - * Class definition - */ - - var Carousel = /*#__PURE__*/function (_BaseComponent3) { - _inherits(Carousel, _BaseComponent3); - - var _super5 = _createSuper(Carousel); - - function Carousel(element, config) { - var _this5; - - _classCallCheck(this, Carousel); - - _this5 = _super5.call(this, element, config); - _this5._interval = null; - _this5._activeElement = null; - _this5._isSliding = false; - _this5.touchTimeout = null; - _this5._swipeHelper = null; - _this5._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, _this5._element); - - _this5._addEventListeners(); - - if (_this5._config.ride === CLASS_NAME_CAROUSEL) { - _this5.cycle(); - } - - return _this5; - } // Getters - - - _createClass(Carousel, [{ - key: "next", - value: // Public - function next() { - this._slide(ORDER_NEXT); - } - }, { - key: "nextWhenVisible", - value: function nextWhenVisible() { - // FIXME TODO use `document.visibilityState` - // Don't call next when the page isn't visible - // or the carousel or its parent isn't visible - if (!document.hidden && isVisible(this._element)) { - this.next(); - } - } - }, { - key: "prev", - value: function prev() { - this._slide(ORDER_PREV); - } - }, { - key: "pause", - value: function pause() { - if (this._isSliding) { - triggerTransitionEnd(this._element); - } - - this._clearInterval(); - } - }, { - key: "cycle", - value: function cycle() { - var _this6 = this; - - this._clearInterval(); - - this._updateInterval(); - - this._interval = setInterval(function () { - return _this6.nextWhenVisible(); - }, this._config.interval); - } - }, { - key: "_maybeEnableCycle", - value: function _maybeEnableCycle() { - var _this7 = this; - - if (!this._config.ride) { - return; - } - - if (this._isSliding) { - EventHandler.one(this._element, EVENT_SLID, function () { - return _this7.cycle(); - }); - return; - } - - this.cycle(); - } - }, { - key: "to", - value: function to(index) { - var _this8 = this; - - var items = this._getItems(); - - if (index > items.length - 1 || index < 0) { - return; - } - - if (this._isSliding) { - EventHandler.one(this._element, EVENT_SLID, function () { - return _this8.to(index); - }); - return; - } - - var activeIndex = this._getItemIndex(this._getActive()); - - if (activeIndex === index) { - return; - } - - var order = index > activeIndex ? ORDER_NEXT : ORDER_PREV; - - this._slide(order, items[index]); - } - }, { - key: "dispose", - value: function dispose() { - if (this._swipeHelper) { - this._swipeHelper.dispose(); - } - - _get(_getPrototypeOf(Carousel.prototype), "dispose", this).call(this); - } // Private - - }, { - key: "_configAfterMerge", - value: function _configAfterMerge(config) { - config.defaultInterval = config.interval; - return config; - } - }, { - key: "_addEventListeners", - value: function _addEventListeners() { - var _this9 = this; - - if (this._config.keyboard) { - EventHandler.on(this._element, EVENT_KEYDOWN$1, function (event) { - return _this9._keydown(event); - }); - } - - if (this._config.pause === 'hover') { - EventHandler.on(this._element, EVENT_MOUSEENTER$1, function () { - return _this9.pause(); - }); - EventHandler.on(this._element, EVENT_MOUSELEAVE$1, function () { - return _this9._maybeEnableCycle(); - }); - } - - if (this._config.touch && Swipe.isSupported()) { - this._addTouchEventListeners(); - } - } - }, { - key: "_addTouchEventListeners", - value: function _addTouchEventListeners() { - var _this10 = this; - - var _iterator5 = _createForOfIteratorHelper(SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)), - _step5; - - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var img = _step5.value; - EventHandler.on(img, EVENT_DRAG_START, function (event) { - return event.preventDefault(); - }); - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - - var endCallBack = function endCallBack() { - if (_this10._config.pause !== 'hover') { - return; - } // If it's a touch-enabled device, mouseenter/leave are fired as - // part of the mouse compatibility events on first tap - the carousel - // would stop cycling until user tapped out of it; - // here, we listen for touchend, explicitly pause the carousel - // (as if it's the second time we tap on it, mouseenter compat event - // is NOT fired) and after a timeout (to allow for mouse compatibility - // events to fire) we explicitly restart cycling - - - _this10.pause(); - - if (_this10.touchTimeout) { - clearTimeout(_this10.touchTimeout); - } - - _this10.touchTimeout = setTimeout(function () { - return _this10._maybeEnableCycle(); - }, TOUCHEVENT_COMPAT_WAIT + _this10._config.interval); - }; - - var swipeConfig = { - leftCallback: function leftCallback() { - return _this10._slide(_this10._directionToOrder(DIRECTION_LEFT)); - }, - rightCallback: function rightCallback() { - return _this10._slide(_this10._directionToOrder(DIRECTION_RIGHT)); - }, - endCallback: endCallBack - }; - this._swipeHelper = new Swipe(this._element, swipeConfig); - } - }, { - key: "_keydown", - value: function _keydown(event) { - if (/input|textarea/i.test(event.target.tagName)) { - return; - } - - var direction = KEY_TO_DIRECTION[event.key]; - - if (direction) { - event.preventDefault(); - - this._slide(this._directionToOrder(direction)); - } - } - }, { - key: "_getItemIndex", - value: function _getItemIndex(element) { - return this._getItems().indexOf(element); - } - }, { - key: "_setActiveIndicatorElement", - value: function _setActiveIndicatorElement(index) { - if (!this._indicatorsElement) { - return; - } - - var activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement); - activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); - activeIndicator.removeAttribute('aria-current'); - var newActiveIndicator = SelectorEngine.findOne("[data-bs-slide-to=\"".concat(index, "\"]"), this._indicatorsElement); - - if (newActiveIndicator) { - newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2); - newActiveIndicator.setAttribute('aria-current', 'true'); - } - } - }, { - key: "_updateInterval", - value: function _updateInterval() { - var element = this._activeElement || this._getActive(); - - if (!element) { - return; - } - - var elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); - this._config.interval = elementInterval || this._config.defaultInterval; - } - }, { - key: "_slide", - value: function _slide(order) { - var _this11 = this; - - var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - if (this._isSliding) { - return; - } - - var activeElement = this._getActive(); - - var isNext = order === ORDER_NEXT; - var nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap); - - if (nextElement === activeElement) { - return; - } - - var nextElementIndex = this._getItemIndex(nextElement); - - var triggerEvent = function triggerEvent(eventName) { - return EventHandler.trigger(_this11._element, eventName, { - relatedTarget: nextElement, - direction: _this11._orderToDirection(order), - from: _this11._getItemIndex(activeElement), - to: nextElementIndex - }); - }; - - var slideEvent = triggerEvent(EVENT_SLIDE); - - if (slideEvent.defaultPrevented) { - return; - } - - if (!activeElement || !nextElement) { - // Some weirdness is happening, so we bail - // todo: change tests that use empty divs to avoid this check - return; - } - - var isCycling = Boolean(this._interval); - this.pause(); - this._isSliding = true; - - this._setActiveIndicatorElement(nextElementIndex); - - this._activeElement = nextElement; - var directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; - var orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; - nextElement.classList.add(orderClassName); - reflow(nextElement); - activeElement.classList.add(directionalClassName); - nextElement.classList.add(directionalClassName); - - var completeCallBack = function completeCallBack() { - nextElement.classList.remove(directionalClassName, orderClassName); - nextElement.classList.add(CLASS_NAME_ACTIVE$2); - activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); - _this11._isSliding = false; - triggerEvent(EVENT_SLID); - }; - - this._queueCallback(completeCallBack, activeElement, this._isAnimated()); - - if (isCycling) { - this.cycle(); - } - } - }, { - key: "_isAnimated", - value: function _isAnimated() { - return this._element.classList.contains(CLASS_NAME_SLIDE); - } - }, { - key: "_getActive", - value: function _getActive() { - return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - } - }, { - key: "_getItems", - value: function _getItems() { - return SelectorEngine.find(SELECTOR_ITEM, this._element); - } - }, { - key: "_clearInterval", - value: function _clearInterval() { - if (this._interval) { - clearInterval(this._interval); - this._interval = null; - } - } - }, { - key: "_directionToOrder", - value: function _directionToOrder(direction) { - if (isRTL()) { - return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT; - } - - return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV; - } - }, { - key: "_orderToDirection", - value: function _orderToDirection(order) { - if (isRTL()) { - return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - - return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT; - } // Static - - }], [{ - key: "Default", - get: function get() { - return Default$b; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$b; - } - }, { - key: "NAME", - get: function get() { - return NAME$c; - } - }, { - key: "jQueryInterface", - value: function jQueryInterface(config) { - return this.each(function () { - var data = Carousel.getOrCreateInstance(this, config); - - if (typeof config === 'number') { - data.to(config); - return; - } - - if (typeof config === 'string') { - if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { - throw new TypeError("No method named \"".concat(config, "\"")); - } - - data[config](); - } - }); - } - }]); - - return Carousel; - }(BaseComponent); - /** - * Data API implementation - */ - - - EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) { - var target = getElementFromSelector(this); - - if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { - return; - } - - event.preventDefault(); - var carousel = Carousel.getOrCreateInstance(target); - var slideIndex = this.getAttribute('data-bs-slide-to'); - - if (slideIndex) { - carousel.to(slideIndex); - - carousel._maybeEnableCycle(); - - return; - } - - if (Manipulator.getDataAttribute(this, 'slide') === 'next') { - carousel.next(); - - carousel._maybeEnableCycle(); - - return; - } - - carousel.prev(); - - carousel._maybeEnableCycle(); - }); - EventHandler.on(window, EVENT_LOAD_DATA_API$3, function () { - var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); - - var _iterator6 = _createForOfIteratorHelper(carousels), - _step6; - - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var carousel = _step6.value; - Carousel.getOrCreateInstance(carousel); - } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); - } - }); - /** - * jQuery - */ - - defineJQueryPlugin(Carousel); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): collapse.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - var NAME$b = 'collapse'; - var DATA_KEY$7 = 'bs.collapse'; - var EVENT_KEY$7 = ".".concat(DATA_KEY$7); - var DATA_API_KEY$4 = '.data-api'; - var EVENT_SHOW$6 = "show".concat(EVENT_KEY$7); - var EVENT_SHOWN$6 = "shown".concat(EVENT_KEY$7); - var EVENT_HIDE$6 = "hide".concat(EVENT_KEY$7); - var EVENT_HIDDEN$6 = "hidden".concat(EVENT_KEY$7); - var EVENT_CLICK_DATA_API$4 = "click".concat(EVENT_KEY$7).concat(DATA_API_KEY$4); - var CLASS_NAME_SHOW$7 = 'show'; - var CLASS_NAME_COLLAPSE = 'collapse'; - var CLASS_NAME_COLLAPSING = 'collapsing'; - var CLASS_NAME_COLLAPSED = 'collapsed'; - var CLASS_NAME_DEEPER_CHILDREN = ":scope .".concat(CLASS_NAME_COLLAPSE, " .").concat(CLASS_NAME_COLLAPSE); - var CLASS_NAME_HORIZONTAL = 'collapse-horizontal'; - var WIDTH = 'width'; - var HEIGHT = 'height'; - var SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'; - var SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; - var Default$a = { - parent: null, - toggle: true - }; - var DefaultType$a = { - parent: '(null|element)', - toggle: 'boolean' - }; - /** - * Class definition - */ - - var Collapse = /*#__PURE__*/function (_BaseComponent4) { - _inherits(Collapse, _BaseComponent4); - - var _super6 = _createSuper(Collapse); - - function Collapse(element, config) { - var _this12; - - _classCallCheck(this, Collapse); - - _this12 = _super6.call(this, element, config); - _this12._isTransitioning = false; - _this12._triggerArray = []; - var toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); - - var _iterator7 = _createForOfIteratorHelper(toggleList), - _step7; - - try { - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - var elem = _step7.value; - var selector = getSelectorFromElement(elem); - var filterElement = SelectorEngine.find(selector).filter(function (foundElement) { - return foundElement === _this12._element; - }); - - if (selector !== null && filterElement.length) { - _this12._triggerArray.push(elem); - } - } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - - _this12._initializeChildren(); - - if (!_this12._config.parent) { - _this12._addAriaAndCollapsedClass(_this12._triggerArray, _this12._isShown()); - } - - if (_this12._config.toggle) { - _this12.toggle(); - } - - return _this12; - } // Getters - - - _createClass(Collapse, [{ - key: "toggle", - value: // Public - function toggle() { - if (this._isShown()) { - this.hide(); - } else { - this.show(); - } - } - }, { - key: "show", - value: function show() { - var _this13 = this; - - if (this._isTransitioning || this._isShown()) { - return; - } - - var activeChildren = []; // find active children - - if (this._config.parent) { - activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(function (element) { - return element !== _this13._element; - }).map(function (element) { - return Collapse.getOrCreateInstance(element, { - toggle: false - }); - }); - } - - if (activeChildren.length && activeChildren[0]._isTransitioning) { - return; - } - - var startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6); - - if (startEvent.defaultPrevented) { - return; - } - - var _iterator8 = _createForOfIteratorHelper(activeChildren), - _step8; - - try { - for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { - var activeInstance = _step8.value; - activeInstance.hide(); - } - } catch (err) { - _iterator8.e(err); - } finally { - _iterator8.f(); - } - - var dimension = this._getDimension(); - - this._element.classList.remove(CLASS_NAME_COLLAPSE); - - this._element.classList.add(CLASS_NAME_COLLAPSING); - - this._element.style[dimension] = 0; - - this._addAriaAndCollapsedClass(this._triggerArray, true); - - this._isTransitioning = true; - - var complete = function complete() { - _this13._isTransitioning = false; - - _this13._element.classList.remove(CLASS_NAME_COLLAPSING); - - _this13._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); - - _this13._element.style[dimension] = ''; - EventHandler.trigger(_this13._element, EVENT_SHOWN$6); - }; - - var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); - var scrollSize = "scroll".concat(capitalizedDimension); - - this._queueCallback(complete, this._element, true); - - this._element.style[dimension] = "".concat(this._element[scrollSize], "px"); - } - }, { - key: "hide", - value: function hide() { - var _this14 = this; - - if (this._isTransitioning || !this._isShown()) { - return; - } - - var startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6); - - if (startEvent.defaultPrevented) { - return; - } - - var dimension = this._getDimension(); - - this._element.style[dimension] = "".concat(this._element.getBoundingClientRect()[dimension], "px"); - reflow(this._element); - - this._element.classList.add(CLASS_NAME_COLLAPSING); - - this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); - - var _iterator9 = _createForOfIteratorHelper(this._triggerArray), - _step9; - - try { - for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) { - var trigger = _step9.value; - var element = getElementFromSelector(trigger); - - if (element && !this._isShown(element)) { - this._addAriaAndCollapsedClass([trigger], false); - } - } - } catch (err) { - _iterator9.e(err); - } finally { - _iterator9.f(); - } - - this._isTransitioning = true; - - var complete = function complete() { - _this14._isTransitioning = false; - - _this14._element.classList.remove(CLASS_NAME_COLLAPSING); - - _this14._element.classList.add(CLASS_NAME_COLLAPSE); - - EventHandler.trigger(_this14._element, EVENT_HIDDEN$6); - }; - - this._element.style[dimension] = ''; - - this._queueCallback(complete, this._element, true); - } - }, { - key: "_isShown", - value: function _isShown() { - var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._element; - return element.classList.contains(CLASS_NAME_SHOW$7); - } // Private - - }, { - key: "_configAfterMerge", - value: function _configAfterMerge(config) { - config.toggle = Boolean(config.toggle); // Coerce string values - - config.parent = getElement(config.parent); - return config; - } - }, { - key: "_getDimension", - value: function _getDimension() { - return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; - } - }, { - key: "_initializeChildren", - value: function _initializeChildren() { - if (!this._config.parent) { - return; - } - - var children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4); - - var _iterator10 = _createForOfIteratorHelper(children), - _step10; - - try { - for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) { - var element = _step10.value; - var selected = getElementFromSelector(element); - - if (selected) { - this._addAriaAndCollapsedClass([element], this._isShown(selected)); - } - } - } catch (err) { - _iterator10.e(err); - } finally { - _iterator10.f(); - } - } - }, { - key: "_getFirstLevelChildren", - value: function _getFirstLevelChildren(selector) { - var children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth - - return SelectorEngine.find(selector, this._config.parent).filter(function (element) { - return !children.includes(element); - }); - } - }, { - key: "_addAriaAndCollapsedClass", - value: function _addAriaAndCollapsedClass(triggerArray, isOpen) { - if (!triggerArray.length) { - return; - } - - var _iterator11 = _createForOfIteratorHelper(triggerArray), - _step11; - - try { - for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) { - var element = _step11.value; - element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); - element.setAttribute('aria-expanded', isOpen); - } - } catch (err) { - _iterator11.e(err); - } finally { - _iterator11.f(); - } - } // Static - - }], [{ - key: "Default", - get: function get() { - return Default$a; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$a; - } - }, { - key: "NAME", - get: function get() { - return NAME$b; - } - }, { - key: "jQueryInterface", - value: function jQueryInterface(config) { - var _config = {}; - - if (typeof config === 'string' && /show|hide/.test(config)) { - _config.toggle = false; - } - - return this.each(function () { - var data = Collapse.getOrCreateInstance(this, _config); - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"".concat(config, "\"")); - } - - data[config](); - } - }); - } - }]); - - return Collapse; - }(BaseComponent); - /** - * Data API implementation - */ - - - EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) { - // preventDefault only for elements (which change the URL) not inside the collapsible element - if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') { - event.preventDefault(); - } - - var selector = getSelectorFromElement(this); - var selectorElements = SelectorEngine.find(selector); - - var _iterator12 = _createForOfIteratorHelper(selectorElements), - _step12; - - try { - for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) { - var element = _step12.value; - Collapse.getOrCreateInstance(element, { - toggle: false - }).toggle(); - } - } catch (err) { - _iterator12.e(err); - } finally { - _iterator12.f(); - } - }); - /** - * jQuery - */ - - defineJQueryPlugin(Collapse); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): dropdown.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - var NAME$a = 'dropdown'; - var DATA_KEY$6 = 'bs.dropdown'; - var EVENT_KEY$6 = ".".concat(DATA_KEY$6); - var DATA_API_KEY$3 = '.data-api'; - var ESCAPE_KEY$2 = 'Escape'; - var TAB_KEY$1 = 'Tab'; - var ARROW_UP_KEY$1 = 'ArrowUp'; - var ARROW_DOWN_KEY$1 = 'ArrowDown'; - var RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button - - var EVENT_HIDE$5 = "hide".concat(EVENT_KEY$6); - var EVENT_HIDDEN$5 = "hidden".concat(EVENT_KEY$6); - var EVENT_SHOW$5 = "show".concat(EVENT_KEY$6); - var EVENT_SHOWN$5 = "shown".concat(EVENT_KEY$6); - var EVENT_CLICK_DATA_API$3 = "click".concat(EVENT_KEY$6).concat(DATA_API_KEY$3); - var EVENT_KEYDOWN_DATA_API = "keydown".concat(EVENT_KEY$6).concat(DATA_API_KEY$3); - var EVENT_KEYUP_DATA_API = "keyup".concat(EVENT_KEY$6).concat(DATA_API_KEY$3); - var CLASS_NAME_SHOW$6 = 'show'; - var CLASS_NAME_DROPUP = 'dropup'; - var CLASS_NAME_DROPEND = 'dropend'; - var CLASS_NAME_DROPSTART = 'dropstart'; - var CLASS_NAME_DROPUP_CENTER = 'dropup-center'; - var CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'; - var SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'; - var SELECTOR_DATA_TOGGLE_SHOWN = "".concat(SELECTOR_DATA_TOGGLE$3, ".").concat(CLASS_NAME_SHOW$6); - var SELECTOR_MENU = '.dropdown-menu'; - var SELECTOR_NAVBAR = '.navbar'; - var SELECTOR_NAVBAR_NAV = '.navbar-nav'; - var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; - var PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'; - var PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'; - var PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'; - var PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'; - var PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'; - var PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'; - var PLACEMENT_TOPCENTER = 'top'; - var PLACEMENT_BOTTOMCENTER = 'bottom'; - var Default$9 = { - autoClose: true, - boundary: 'clippingParents', - display: 'dynamic', - offset: [0, 2], - popperConfig: null, - reference: 'toggle' - }; - var DefaultType$9 = { - autoClose: '(boolean|string)', - boundary: '(string|element)', - display: 'string', - offset: '(array|string|function)', - popperConfig: '(null|object|function)', - reference: '(string|element|object)' - }; - /** - * Class definition - */ - - var Dropdown = /*#__PURE__*/function (_BaseComponent5) { - _inherits(Dropdown, _BaseComponent5); - - var _super7 = _createSuper(Dropdown); - - function Dropdown(element, config) { - var _this15; - - _classCallCheck(this, Dropdown); - - _this15 = _super7.call(this, element, config); - _this15._popper = null; - _this15._parent = _this15._element.parentNode; // dropdown wrapper - - _this15._menu = SelectorEngine.findOne(SELECTOR_MENU, _this15._parent); - _this15._inNavbar = _this15._detectNavbar(); - return _this15; - } // Getters - - - _createClass(Dropdown, [{ - key: "toggle", - value: // Public - function toggle() { - return this._isShown() ? this.hide() : this.show(); - } - }, { - key: "show", - value: function show() { - if (isDisabled(this._element) || this._isShown()) { - return; - } - - var relatedTarget = { - relatedTarget: this._element - }; - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget); - - if (showEvent.defaultPrevented) { - return; - } - - this._createPopper(); // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - - - if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) { - var _ref4; - - var _iterator13 = _createForOfIteratorHelper((_ref4 = []).concat.apply(_ref4, _toConsumableArray(document.body.children))), - _step13; - - try { - for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) { - var element = _step13.value; - EventHandler.on(element, 'mouseover', noop); - } - } catch (err) { - _iterator13.e(err); - } finally { - _iterator13.f(); - } - } - - this._element.focus(); - - this._element.setAttribute('aria-expanded', true); - - this._menu.classList.add(CLASS_NAME_SHOW$6); - - this._element.classList.add(CLASS_NAME_SHOW$6); - - EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget); - } - }, { - key: "hide", - value: function hide() { - if (isDisabled(this._element) || !this._isShown()) { - return; - } - - var relatedTarget = { - relatedTarget: this._element - }; - - this._completeHide(relatedTarget); - } - }, { - key: "dispose", - value: function dispose() { - if (this._popper) { - this._popper.destroy(); - } - - _get(_getPrototypeOf(Dropdown.prototype), "dispose", this).call(this); - } - }, { - key: "update", - value: function update() { - this._inNavbar = this._detectNavbar(); - - if (this._popper) { - this._popper.update(); - } - } // Private - - }, { - key: "_completeHide", - value: function _completeHide(relatedTarget) { - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget); - - if (hideEvent.defaultPrevented) { - return; - } // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - - - if ('ontouchstart' in document.documentElement) { - var _ref5; - - var _iterator14 = _createForOfIteratorHelper((_ref5 = []).concat.apply(_ref5, _toConsumableArray(document.body.children))), - _step14; - - try { - for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) { - var element = _step14.value; - EventHandler.off(element, 'mouseover', noop); - } - } catch (err) { - _iterator14.e(err); - } finally { - _iterator14.f(); - } - } - - if (this._popper) { - this._popper.destroy(); - } - - this._menu.classList.remove(CLASS_NAME_SHOW$6); - - this._element.classList.remove(CLASS_NAME_SHOW$6); - - this._element.setAttribute('aria-expanded', 'false'); - - Manipulator.removeDataAttribute(this._menu, 'popper'); - EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget); - } - }, { - key: "_getConfig", - value: function _getConfig(config) { - config = _get(_getPrototypeOf(Dropdown.prototype), "_getConfig", this).call(this, config); - - if (_typeof(config.reference) === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') { - // Popper virtual elements require a getBoundingClientRect method - throw new TypeError("".concat(NAME$a.toUpperCase(), ": Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.")); - } - - return config; - } - }, { - key: "_createPopper", - value: function _createPopper() { - if (typeof Popper__namespace === 'undefined') { - throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); - } - - var referenceElement = this._element; - - if (this._config.reference === 'parent') { - referenceElement = this._parent; - } else if (isElement(this._config.reference)) { - referenceElement = getElement(this._config.reference); - } else if (_typeof(this._config.reference) === 'object') { - referenceElement = this._config.reference; - } - - var popperConfig = this._getPopperConfig(); - - this._popper = Popper__namespace.createPopper(referenceElement, this._menu, popperConfig); - } - }, { - key: "_isShown", - value: function _isShown() { - return this._menu.classList.contains(CLASS_NAME_SHOW$6); - } - }, { - key: "_getPlacement", - value: function _getPlacement() { - var parentDropdown = this._parent; - - if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { - return PLACEMENT_RIGHT; - } - - if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { - return PLACEMENT_LEFT; - } - - if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) { - return PLACEMENT_TOPCENTER; - } - - if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) { - return PLACEMENT_BOTTOMCENTER; - } // We need to trim the value because custom properties can also include spaces - - - var isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; - - if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { - return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; - } - - return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; - } - }, { - key: "_detectNavbar", - value: function _detectNavbar() { - return this._element.closest(SELECTOR_NAVBAR) !== null; - } - }, { - key: "_getOffset", - value: function _getOffset() { - var _this16 = this; - - var offset = this._config.offset; - - if (typeof offset === 'string') { - return offset.split(',').map(function (value) { - return Number.parseInt(value, 10); - }); - } - - if (typeof offset === 'function') { - return function (popperData) { - return offset(popperData, _this16._element); - }; - } - - return offset; - } - }, { - key: "_getPopperConfig", - value: function _getPopperConfig() { - var defaultBsPopperConfig = { - placement: this._getPlacement(), - modifiers: [{ - name: 'preventOverflow', - options: { - boundary: this._config.boundary - } - }, { - name: 'offset', - options: { - offset: this._getOffset() - } - }] - }; // Disable Popper if we have a static display or Dropdown is in Navbar - - if (this._inNavbar || this._config.display === 'static') { - Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove - - defaultBsPopperConfig.modifiers = [{ - name: 'applyStyles', - enabled: false - }]; - } - - return _objectSpread(_objectSpread({}, defaultBsPopperConfig), typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig); - } - }, { - key: "_selectMenuItem", - value: function _selectMenuItem(_ref6) { - var key = _ref6.key, - target = _ref6.target; - var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(function (element) { - return isVisible(element); - }); - - if (!items.length) { - return; - } // if target isn't included in items (e.g. when expanding the dropdown) - // allow cycling to get the last item in case key equals ARROW_UP_KEY - - - getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus(); - } // Static - - }], [{ - key: "Default", - get: function get() { - return Default$9; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$9; - } - }, { - key: "NAME", - get: function get() { - return NAME$a; - } - }, { - key: "jQueryInterface", - value: function jQueryInterface(config) { - return this.each(function () { - var data = Dropdown.getOrCreateInstance(this, config); - - if (typeof config !== 'string') { - return; - } - - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"".concat(config, "\"")); - } - - data[config](); - }); - } - }, { - key: "clearMenus", - value: function clearMenus(event) { - if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) { - return; - } - - var openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN); - - var _iterator15 = _createForOfIteratorHelper(openToggles), - _step15; - - try { - for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) { - var toggle = _step15.value; - var context = Dropdown.getInstance(toggle); - - if (!context || context._config.autoClose === false) { - continue; - } - - var composedPath = event.composedPath(); - var isMenuTarget = composedPath.includes(context._menu); - - if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) { - continue; - } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu - - - if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { - continue; - } - - var relatedTarget = { - relatedTarget: context._element - }; - - if (event.type === 'click') { - relatedTarget.clickEvent = event; - } - - context._completeHide(relatedTarget); - } - } catch (err) { - _iterator15.e(err); - } finally { - _iterator15.f(); - } - } - }, { - key: "dataApiKeydownHandler", - value: function dataApiKeydownHandler(event) { - // If not an UP | DOWN | ESCAPE key => not a dropdown command - // If input/textarea && if key is other than ESCAPE => not a dropdown command - var isInput = /input|textarea/i.test(event.target.tagName); - var isEscapeEvent = event.key === ESCAPE_KEY$2; - var isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key); - - if (!isUpOrDownEvent && !isEscapeEvent) { - return; - } - - if (isInput && !isEscapeEvent) { - return; - } - - event.preventDefault(); - var getToggleButton = SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode); - var instance = Dropdown.getOrCreateInstance(getToggleButton); - - if (isUpOrDownEvent) { - event.stopPropagation(); - instance.show(); - - instance._selectMenuItem(event); - - return; - } - - if (instance._isShown()) { - // else is escape and we check if it is shown - event.stopPropagation(); - instance.hide(); - getToggleButton.focus(); - } - } - }]); - - return Dropdown; - }(BaseComponent); - /** - * Data API implementation - */ - - - EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); - EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); - EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus); - EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); - EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { - event.preventDefault(); - Dropdown.getOrCreateInstance(this).toggle(); - }); - /** - * jQuery - */ - - defineJQueryPlugin(Dropdown); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): util/scrollBar.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; - var SELECTOR_STICKY_CONTENT = '.sticky-top'; - var PROPERTY_PADDING = 'padding-right'; - var PROPERTY_MARGIN = 'margin-right'; - /** - * Class definition - */ - - var ScrollBarHelper = /*#__PURE__*/function () { - function ScrollBarHelper() { - _classCallCheck(this, ScrollBarHelper); - - this._element = document.body; - } // Public - - - _createClass(ScrollBarHelper, [{ - key: "getWidth", - value: function getWidth() { - // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes - var documentWidth = document.documentElement.clientWidth; - return Math.abs(window.innerWidth - documentWidth); - } - }, { - key: "hide", - value: function hide() { - var width = this.getWidth(); - - this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width - - - this._setElementAttributes(this._element, PROPERTY_PADDING, function (calculatedValue) { - return calculatedValue + width; - }); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth - - - this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, function (calculatedValue) { - return calculatedValue + width; - }); - - this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, function (calculatedValue) { - return calculatedValue - width; - }); - } - }, { - key: "reset", - value: function reset() { - this._resetElementAttributes(this._element, 'overflow'); - - this._resetElementAttributes(this._element, PROPERTY_PADDING); - - this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING); - - this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN); - } - }, { - key: "isOverflowing", - value: function isOverflowing() { - return this.getWidth() > 0; - } // Private - - }, { - key: "_disableOverFlow", - value: function _disableOverFlow() { - this._saveInitialAttribute(this._element, 'overflow'); - - this._element.style.overflow = 'hidden'; - } - }, { - key: "_setElementAttributes", - value: function _setElementAttributes(selector, styleProperty, callback) { - var _this17 = this; - - var scrollbarWidth = this.getWidth(); - - var manipulationCallBack = function manipulationCallBack(element) { - if (element !== _this17._element && window.innerWidth > element.clientWidth + scrollbarWidth) { - return; - } - - _this17._saveInitialAttribute(element, styleProperty); - - var calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty); - element.style.setProperty(styleProperty, "".concat(callback(Number.parseFloat(calculatedValue)), "px")); - }; - - this._applyManipulationCallback(selector, manipulationCallBack); - } - }, { - key: "_saveInitialAttribute", - value: function _saveInitialAttribute(element, styleProperty) { - var actualValue = element.style.getPropertyValue(styleProperty); - - if (actualValue) { - Manipulator.setDataAttribute(element, styleProperty, actualValue); - } - } - }, { - key: "_resetElementAttributes", - value: function _resetElementAttributes(selector, styleProperty) { - var manipulationCallBack = function manipulationCallBack(element) { - var value = Manipulator.getDataAttribute(element, styleProperty); // We only want to remove the property if the value is `null`; the value can also be zero - - if (value === null) { - element.style.removeProperty(styleProperty); - return; - } - - Manipulator.removeDataAttribute(element, styleProperty); - element.style.setProperty(styleProperty, value); - }; - - this._applyManipulationCallback(selector, manipulationCallBack); - } - }, { - key: "_applyManipulationCallback", - value: function _applyManipulationCallback(selector, callBack) { - if (isElement(selector)) { - callBack(selector); - return; - } - - var _iterator16 = _createForOfIteratorHelper(SelectorEngine.find(selector, this._element)), - _step16; - - try { - for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) { - var sel = _step16.value; - callBack(sel); - } - } catch (err) { - _iterator16.e(err); - } finally { - _iterator16.f(); - } - } - }]); - - return ScrollBarHelper; - }(); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): util/backdrop.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - - var NAME$9 = 'backdrop'; - var CLASS_NAME_FADE$4 = 'fade'; - var CLASS_NAME_SHOW$5 = 'show'; - var EVENT_MOUSEDOWN = "mousedown.bs.".concat(NAME$9); - var Default$8 = { - className: 'modal-backdrop', - clickCallback: null, - isAnimated: false, - isVisible: true, - // if false, we use the backdrop helper without adding any element to the dom - rootElement: 'body' // give the choice to place backdrop under different elements - - }; - var DefaultType$8 = { - className: 'string', - clickCallback: '(function|null)', - isAnimated: 'boolean', - isVisible: 'boolean', - rootElement: '(element|string)' - }; - /** - * Class definition - */ - - var Backdrop = /*#__PURE__*/function (_Config3) { - _inherits(Backdrop, _Config3); - - var _super8 = _createSuper(Backdrop); - - function Backdrop(config) { - var _this18; - - _classCallCheck(this, Backdrop); - - _this18 = _super8.call(this); - _this18._config = _this18._getConfig(config); - _this18._isAppended = false; - _this18._element = null; - return _this18; - } // Getters - - - _createClass(Backdrop, [{ - key: "show", - value: // Public - function show(callback) { - if (!this._config.isVisible) { - execute(callback); - return; - } - - this._append(); - - var element = this._getElement(); - - if (this._config.isAnimated) { - reflow(element); - } - - element.classList.add(CLASS_NAME_SHOW$5); - - this._emulateAnimation(function () { - execute(callback); - }); - } - }, { - key: "hide", - value: function hide(callback) { - var _this19 = this; - - if (!this._config.isVisible) { - execute(callback); - return; - } - - this._getElement().classList.remove(CLASS_NAME_SHOW$5); - - this._emulateAnimation(function () { - _this19.dispose(); - - execute(callback); - }); - } - }, { - key: "dispose", - value: function dispose() { - if (!this._isAppended) { - return; - } - - EventHandler.off(this._element, EVENT_MOUSEDOWN); - - this._element.remove(); - - this._isAppended = false; - } // Private - - }, { - key: "_getElement", - value: function _getElement() { - if (!this._element) { - var backdrop = document.createElement('div'); - backdrop.className = this._config.className; - - if (this._config.isAnimated) { - backdrop.classList.add(CLASS_NAME_FADE$4); - } - - this._element = backdrop; - } - - return this._element; - } - }, { - key: "_configAfterMerge", - value: function _configAfterMerge(config) { - // use getElement() with the default "body" to get a fresh Element on each instantiation - config.rootElement = getElement(config.rootElement); - return config; - } - }, { - key: "_append", - value: function _append() { - var _this20 = this; - - if (this._isAppended) { - return; - } - - var element = this._getElement(); - - this._config.rootElement.append(element); - - EventHandler.on(element, EVENT_MOUSEDOWN, function () { - execute(_this20._config.clickCallback); - }); - this._isAppended = true; - } - }, { - key: "_emulateAnimation", - value: function _emulateAnimation(callback) { - executeAfterTransition(callback, this._getElement(), this._config.isAnimated); - } - }], [{ - key: "Default", - get: function get() { - return Default$8; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$8; - } - }, { - key: "NAME", - get: function get() { - return NAME$9; - } - }]); - - return Backdrop; - }(Config); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): util/focustrap.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - - var NAME$8 = 'focustrap'; - var DATA_KEY$5 = 'bs.focustrap'; - var EVENT_KEY$5 = ".".concat(DATA_KEY$5); - var EVENT_FOCUSIN$2 = "focusin".concat(EVENT_KEY$5); - var EVENT_KEYDOWN_TAB = "keydown.tab".concat(EVENT_KEY$5); - var TAB_KEY = 'Tab'; - var TAB_NAV_FORWARD = 'forward'; - var TAB_NAV_BACKWARD = 'backward'; - var Default$7 = { - autofocus: true, - trapElement: null // The element to trap focus inside of - - }; - var DefaultType$7 = { - autofocus: 'boolean', - trapElement: 'element' - }; - /** - * Class definition - */ - - var FocusTrap = /*#__PURE__*/function (_Config4) { - _inherits(FocusTrap, _Config4); - - var _super9 = _createSuper(FocusTrap); - - function FocusTrap(config) { - var _this21; - - _classCallCheck(this, FocusTrap); - - _this21 = _super9.call(this); - _this21._config = _this21._getConfig(config); - _this21._isActive = false; - _this21._lastTabNavDirection = null; - return _this21; - } // Getters - - - _createClass(FocusTrap, [{ - key: "activate", - value: // Public - function activate() { - var _this22 = this; - - if (this._isActive) { - return; - } - - if (this._config.autofocus) { - this._config.trapElement.focus(); - } - - EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop - - EventHandler.on(document, EVENT_FOCUSIN$2, function (event) { - return _this22._handleFocusin(event); - }); - EventHandler.on(document, EVENT_KEYDOWN_TAB, function (event) { - return _this22._handleKeydown(event); - }); - this._isActive = true; - } - }, { - key: "deactivate", - value: function deactivate() { - if (!this._isActive) { - return; - } - - this._isActive = false; - EventHandler.off(document, EVENT_KEY$5); - } // Private - - }, { - key: "_handleFocusin", - value: function _handleFocusin(event) { - var trapElement = this._config.trapElement; - - if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) { - return; - } - - var elements = SelectorEngine.focusableChildren(trapElement); - - if (elements.length === 0) { - trapElement.focus(); - } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { - elements[elements.length - 1].focus(); - } else { - elements[0].focus(); - } - } - }, { - key: "_handleKeydown", - value: function _handleKeydown(event) { - if (event.key !== TAB_KEY) { - return; - } - - this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; - } - }], [{ - key: "Default", - get: function get() { - return Default$7; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$7; - } - }, { - key: "NAME", - get: function get() { - return NAME$8; - } - }]); - - return FocusTrap; - }(Config); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): modal.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - - var NAME$7 = 'modal'; - var DATA_KEY$4 = 'bs.modal'; - var EVENT_KEY$4 = ".".concat(DATA_KEY$4); - var DATA_API_KEY$2 = '.data-api'; - var ESCAPE_KEY$1 = 'Escape'; - var EVENT_HIDE$4 = "hide".concat(EVENT_KEY$4); - var EVENT_HIDE_PREVENTED$1 = "hidePrevented".concat(EVENT_KEY$4); - var EVENT_HIDDEN$4 = "hidden".concat(EVENT_KEY$4); - var EVENT_SHOW$4 = "show".concat(EVENT_KEY$4); - var EVENT_SHOWN$4 = "shown".concat(EVENT_KEY$4); - var EVENT_RESIZE$1 = "resize".concat(EVENT_KEY$4); - var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss".concat(EVENT_KEY$4); - var EVENT_KEYDOWN_DISMISS$1 = "keydown.dismiss".concat(EVENT_KEY$4); - var EVENT_CLICK_DATA_API$2 = "click".concat(EVENT_KEY$4).concat(DATA_API_KEY$2); - var CLASS_NAME_OPEN = 'modal-open'; - var CLASS_NAME_FADE$3 = 'fade'; - var CLASS_NAME_SHOW$4 = 'show'; - var CLASS_NAME_STATIC = 'modal-static'; - var OPEN_SELECTOR$1 = '.modal.show'; - var SELECTOR_DIALOG = '.modal-dialog'; - var SELECTOR_MODAL_BODY = '.modal-body'; - var SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; - var Default$6 = { - backdrop: true, - focus: true, - keyboard: true - }; - var DefaultType$6 = { - backdrop: '(boolean|string)', - focus: 'boolean', - keyboard: 'boolean' - }; - /** - * Class definition - */ - - var Modal = /*#__PURE__*/function (_BaseComponent6) { - _inherits(Modal, _BaseComponent6); - - var _super10 = _createSuper(Modal); - - function Modal(element, config) { - var _this23; - - _classCallCheck(this, Modal); - - _this23 = _super10.call(this, element, config); - _this23._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, _this23._element); - _this23._backdrop = _this23._initializeBackDrop(); - _this23._focustrap = _this23._initializeFocusTrap(); - _this23._isShown = false; - _this23._isTransitioning = false; - _this23._scrollBar = new ScrollBarHelper(); - - _this23._addEventListeners(); - - return _this23; - } // Getters - - - _createClass(Modal, [{ - key: "toggle", - value: // Public - function toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget); - } - }, { - key: "show", - value: function show(relatedTarget) { - var _this24 = this; - - if (this._isShown || this._isTransitioning) { - return; - } - - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, { - relatedTarget: relatedTarget - }); - - if (showEvent.defaultPrevented) { - return; - } - - this._isShown = true; - this._isTransitioning = true; - - this._scrollBar.hide(); - - document.body.classList.add(CLASS_NAME_OPEN); - - this._adjustDialog(); - - this._backdrop.show(function () { - return _this24._showElement(relatedTarget); - }); - } - }, { - key: "hide", - value: function hide() { - var _this25 = this; - - if (!this._isShown || this._isTransitioning) { - return; - } - - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); - - if (hideEvent.defaultPrevented) { - return; - } - - this._isShown = false; - this._isTransitioning = true; - - this._focustrap.deactivate(); - - this._element.classList.remove(CLASS_NAME_SHOW$4); - - this._queueCallback(function () { - return _this25._hideModal(); - }, this._element, this._isAnimated()); - } - }, { - key: "dispose", - value: function dispose() { - for (var _i7 = 0, _arr2 = [window, this._dialog]; _i7 < _arr2.length; _i7++) { - var htmlElement = _arr2[_i7]; - EventHandler.off(htmlElement, EVENT_KEY$4); - } - - this._backdrop.dispose(); - - this._focustrap.deactivate(); - - _get(_getPrototypeOf(Modal.prototype), "dispose", this).call(this); - } - }, { - key: "handleUpdate", - value: function handleUpdate() { - this._adjustDialog(); - } // Private - - }, { - key: "_initializeBackDrop", - value: function _initializeBackDrop() { - return new Backdrop({ - isVisible: Boolean(this._config.backdrop), - // 'static' option will be translated to true, and booleans will keep their value, - isAnimated: this._isAnimated() - }); - } - }, { - key: "_initializeFocusTrap", - value: function _initializeFocusTrap() { - return new FocusTrap({ - trapElement: this._element - }); - } - }, { - key: "_showElement", - value: function _showElement(relatedTarget) { - var _this26 = this; - - // try to append dynamic modal - if (!document.body.contains(this._element)) { - document.body.append(this._element); - } - - this._element.style.display = 'block'; - - this._element.removeAttribute('aria-hidden'); - - this._element.setAttribute('aria-modal', true); - - this._element.setAttribute('role', 'dialog'); - - this._element.scrollTop = 0; - var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); - - if (modalBody) { - modalBody.scrollTop = 0; - } - - reflow(this._element); - - this._element.classList.add(CLASS_NAME_SHOW$4); - - var transitionComplete = function transitionComplete() { - if (_this26._config.focus) { - _this26._focustrap.activate(); - } - - _this26._isTransitioning = false; - EventHandler.trigger(_this26._element, EVENT_SHOWN$4, { - relatedTarget: relatedTarget - }); - }; - - this._queueCallback(transitionComplete, this._dialog, this._isAnimated()); - } - }, { - key: "_addEventListeners", - value: function _addEventListeners() { - var _this27 = this; - - EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, function (event) { - if (event.key !== ESCAPE_KEY$1) { - return; - } - - if (_this27._config.keyboard) { - event.preventDefault(); - - _this27.hide(); - - return; - } - - _this27._triggerBackdropTransition(); - }); - EventHandler.on(window, EVENT_RESIZE$1, function () { - if (_this27._isShown && !_this27._isTransitioning) { - _this27._adjustDialog(); - } - }); - EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, function (event) { - if (event.target !== event.currentTarget) { - // click is inside modal-dialog - return; - } - - if (_this27._config.backdrop === 'static') { - _this27._triggerBackdropTransition(); - - return; - } - - if (_this27._config.backdrop) { - _this27.hide(); - } - }); - } - }, { - key: "_hideModal", - value: function _hideModal() { - var _this28 = this; - - this._element.style.display = 'none'; - - this._element.setAttribute('aria-hidden', true); - - this._element.removeAttribute('aria-modal'); - - this._element.removeAttribute('role'); - - this._isTransitioning = false; - - this._backdrop.hide(function () { - document.body.classList.remove(CLASS_NAME_OPEN); - - _this28._resetAdjustments(); - - _this28._scrollBar.reset(); - - EventHandler.trigger(_this28._element, EVENT_HIDDEN$4); - }); - } - }, { - key: "_isAnimated", - value: function _isAnimated() { - return this._element.classList.contains(CLASS_NAME_FADE$3); - } - }, { - key: "_triggerBackdropTransition", - value: function _triggerBackdropTransition() { - var _this29 = this; - - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1); - - if (hideEvent.defaultPrevented) { - return; - } - - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - var initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed - - if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) { - return; - } - - if (!isModalOverflowing) { - this._element.style.overflowY = 'hidden'; - } - - this._element.classList.add(CLASS_NAME_STATIC); - - this._queueCallback(function () { - _this29._element.classList.remove(CLASS_NAME_STATIC); - - _this29._queueCallback(function () { - _this29._element.style.overflowY = initialOverflowY; - }, _this29._dialog); - }, this._dialog); - - this._element.focus(); - } - /** - * The following methods are used to handle overflowing modals - */ - - }, { - key: "_adjustDialog", - value: function _adjustDialog() { - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - - var scrollbarWidth = this._scrollBar.getWidth(); - - var isBodyOverflowing = scrollbarWidth > 0; - - if (isBodyOverflowing && !isModalOverflowing) { - var property = isRTL() ? 'paddingLeft' : 'paddingRight'; - this._element.style[property] = "".concat(scrollbarWidth, "px"); - } - - if (!isBodyOverflowing && isModalOverflowing) { - var _property = isRTL() ? 'paddingRight' : 'paddingLeft'; - - this._element.style[_property] = "".concat(scrollbarWidth, "px"); - } - } - }, { - key: "_resetAdjustments", - value: function _resetAdjustments() { - this._element.style.paddingLeft = ''; - this._element.style.paddingRight = ''; - } // Static - - }], [{ - key: "Default", - get: function get() { - return Default$6; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$6; - } - }, { - key: "NAME", - get: function get() { - return NAME$7; - } - }, { - key: "jQueryInterface", - value: function jQueryInterface(config, relatedTarget) { - return this.each(function () { - var data = Modal.getOrCreateInstance(this, config); - - if (typeof config !== 'string') { - return; - } - - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"".concat(config, "\"")); - } - - data[config](relatedTarget); - }); - } - }]); - - return Modal; - }(BaseComponent); - /** - * Data API implementation - */ - - - EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { - var _this30 = this; - - var target = getElementFromSelector(this); - - if (['A', 'AREA'].includes(this.tagName)) { - event.preventDefault(); - } - - EventHandler.one(target, EVENT_SHOW$4, function (showEvent) { - if (showEvent.defaultPrevented) { - // only register focus restorer if modal will actually get shown - return; - } - - EventHandler.one(target, EVENT_HIDDEN$4, function () { - if (isVisible(_this30)) { - _this30.focus(); - } - }); - }); // avoid conflict when clicking modal toggler while another one is open - - var alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); - - if (alreadyOpen) { - Modal.getInstance(alreadyOpen).hide(); - } - - var data = Modal.getOrCreateInstance(target); - data.toggle(this); - }); - enableDismissTrigger(Modal); - /** - * jQuery - */ - - defineJQueryPlugin(Modal); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): offcanvas.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - var NAME$6 = 'offcanvas'; - var DATA_KEY$3 = 'bs.offcanvas'; - var EVENT_KEY$3 = ".".concat(DATA_KEY$3); - var DATA_API_KEY$1 = '.data-api'; - var EVENT_LOAD_DATA_API$2 = "load".concat(EVENT_KEY$3).concat(DATA_API_KEY$1); - var ESCAPE_KEY = 'Escape'; - var CLASS_NAME_SHOW$3 = 'show'; - var CLASS_NAME_SHOWING$1 = 'showing'; - var CLASS_NAME_HIDING = 'hiding'; - var CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; - var OPEN_SELECTOR = '.offcanvas.show'; - var EVENT_SHOW$3 = "show".concat(EVENT_KEY$3); - var EVENT_SHOWN$3 = "shown".concat(EVENT_KEY$3); - var EVENT_HIDE$3 = "hide".concat(EVENT_KEY$3); - var EVENT_HIDE_PREVENTED = "hidePrevented".concat(EVENT_KEY$3); - var EVENT_HIDDEN$3 = "hidden".concat(EVENT_KEY$3); - var EVENT_RESIZE = "resize".concat(EVENT_KEY$3); - var EVENT_CLICK_DATA_API$1 = "click".concat(EVENT_KEY$3).concat(DATA_API_KEY$1); - var EVENT_KEYDOWN_DISMISS = "keydown.dismiss".concat(EVENT_KEY$3); - var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; - var Default$5 = { - backdrop: true, - keyboard: true, - scroll: false - }; - var DefaultType$5 = { - backdrop: '(boolean|string)', - keyboard: 'boolean', - scroll: 'boolean' - }; - /** - * Class definition - */ - - var Offcanvas = /*#__PURE__*/function (_BaseComponent7) { - _inherits(Offcanvas, _BaseComponent7); - - var _super11 = _createSuper(Offcanvas); - - function Offcanvas(element, config) { - var _this31; - - _classCallCheck(this, Offcanvas); - - _this31 = _super11.call(this, element, config); - _this31._isShown = false; - _this31._backdrop = _this31._initializeBackDrop(); - _this31._focustrap = _this31._initializeFocusTrap(); - - _this31._addEventListeners(); - - return _this31; - } // Getters - - - _createClass(Offcanvas, [{ - key: "toggle", - value: // Public - function toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget); - } - }, { - key: "show", - value: function show(relatedTarget) { - var _this32 = this; - - if (this._isShown) { - return; - } - - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { - relatedTarget: relatedTarget - }); - - if (showEvent.defaultPrevented) { - return; - } - - this._isShown = true; - - this._backdrop.show(); - - if (!this._config.scroll) { - new ScrollBarHelper().hide(); - } - - this._element.setAttribute('aria-modal', true); - - this._element.setAttribute('role', 'dialog'); - - this._element.classList.add(CLASS_NAME_SHOWING$1); - - var completeCallBack = function completeCallBack() { - if (!_this32._config.scroll || _this32._config.backdrop) { - _this32._focustrap.activate(); - } - - _this32._element.classList.add(CLASS_NAME_SHOW$3); - - _this32._element.classList.remove(CLASS_NAME_SHOWING$1); - - EventHandler.trigger(_this32._element, EVENT_SHOWN$3, { - relatedTarget: relatedTarget - }); - }; - - this._queueCallback(completeCallBack, this._element, true); - } - }, { - key: "hide", - value: function hide() { - var _this33 = this; - - if (!this._isShown) { - return; - } - - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); - - if (hideEvent.defaultPrevented) { - return; - } - - this._focustrap.deactivate(); - - this._element.blur(); - - this._isShown = false; - - this._element.classList.add(CLASS_NAME_HIDING); - - this._backdrop.hide(); - - var completeCallback = function completeCallback() { - _this33._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING); - - _this33._element.removeAttribute('aria-modal'); - - _this33._element.removeAttribute('role'); - - if (!_this33._config.scroll) { - new ScrollBarHelper().reset(); - } - - EventHandler.trigger(_this33._element, EVENT_HIDDEN$3); - }; - - this._queueCallback(completeCallback, this._element, true); - } - }, { - key: "dispose", - value: function dispose() { - this._backdrop.dispose(); - - this._focustrap.deactivate(); - - _get(_getPrototypeOf(Offcanvas.prototype), "dispose", this).call(this); - } // Private - - }, { - key: "_initializeBackDrop", - value: function _initializeBackDrop() { - var _this34 = this; - - var clickCallback = function clickCallback() { - if (_this34._config.backdrop === 'static') { - EventHandler.trigger(_this34._element, EVENT_HIDE_PREVENTED); - return; - } - - _this34.hide(); - }; // 'static' option will be translated to true, and booleans will keep their value - - - var isVisible = Boolean(this._config.backdrop); - return new Backdrop({ - className: CLASS_NAME_BACKDROP, - isVisible: isVisible, - isAnimated: true, - rootElement: this._element.parentNode, - clickCallback: isVisible ? clickCallback : null - }); - } - }, { - key: "_initializeFocusTrap", - value: function _initializeFocusTrap() { - return new FocusTrap({ - trapElement: this._element - }); - } - }, { - key: "_addEventListeners", - value: function _addEventListeners() { - var _this35 = this; - - EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) { - if (event.key !== ESCAPE_KEY) { - return; - } - - if (!_this35._config.keyboard) { - EventHandler.trigger(_this35._element, EVENT_HIDE_PREVENTED); - return; - } - - _this35.hide(); - }); - } // Static - - }], [{ - key: "Default", - get: function get() { - return Default$5; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$5; - } - }, { - key: "NAME", - get: function get() { - return NAME$6; - } - }, { - key: "jQueryInterface", - value: function jQueryInterface(config) { - return this.each(function () { - var data = Offcanvas.getOrCreateInstance(this, config); - - if (typeof config !== 'string') { - return; - } - - if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { - throw new TypeError("No method named \"".concat(config, "\"")); - } - - data[config](this); - }); - } - }]); - - return Offcanvas; - }(BaseComponent); - /** - * Data API implementation - */ - - - EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { - var _this36 = this; - - var target = getElementFromSelector(this); - - if (['A', 'AREA'].includes(this.tagName)) { - event.preventDefault(); - } - - if (isDisabled(this)) { - return; - } - - EventHandler.one(target, EVENT_HIDDEN$3, function () { - // focus on trigger when it is closed - if (isVisible(_this36)) { - _this36.focus(); - } - }); // avoid conflict when clicking a toggler of an offcanvas, while another is open - - var alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); - - if (alreadyOpen && alreadyOpen !== target) { - Offcanvas.getInstance(alreadyOpen).hide(); - } - - var data = Offcanvas.getOrCreateInstance(target); - data.toggle(this); - }); - EventHandler.on(window, EVENT_LOAD_DATA_API$2, function () { - var _iterator17 = _createForOfIteratorHelper(SelectorEngine.find(OPEN_SELECTOR)), - _step17; - - try { - for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) { - var selector = _step17.value; - Offcanvas.getOrCreateInstance(selector).show(); - } - } catch (err) { - _iterator17.e(err); - } finally { - _iterator17.f(); - } - }); - EventHandler.on(window, EVENT_RESIZE, function () { - var _iterator18 = _createForOfIteratorHelper(SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')), - _step18; - - try { - for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) { - var element = _step18.value; - - if (getComputedStyle(element).position !== 'fixed') { - Offcanvas.getOrCreateInstance(element).hide(); - } - } - } catch (err) { - _iterator18.e(err); - } finally { - _iterator18.f(); - } - }); - enableDismissTrigger(Offcanvas); - /** - * jQuery - */ - - defineJQueryPlugin(Offcanvas); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): util/sanitizer.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - var uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); - var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; - /** - * A pattern that recognizes a commonly useful subset of URLs that are safe. - * - * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts - */ - - var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i; - /** - * A pattern that matches safe data URLs. Only matches image, video and audio types. - * - * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts - */ - - var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; - - var allowedAttribute = function allowedAttribute(attribute, allowedAttributeList) { - var attributeName = attribute.nodeName.toLowerCase(); - - if (allowedAttributeList.includes(attributeName)) { - if (uriAttributes.has(attributeName)) { - return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue)); - } - - return true; - } // Check if a regular expression validates the attribute. - - - return allowedAttributeList.filter(function (attributeRegex) { - return attributeRegex instanceof RegExp; - }).some(function (regex) { - return regex.test(attributeName); - }); - }; - - var DefaultAllowlist = { - // Global attributes allowed on any supplied element below. - '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], - a: ['target', 'href', 'title', 'rel'], - area: [], - b: [], - br: [], - col: [], - code: [], - div: [], - em: [], - hr: [], - h1: [], - h2: [], - h3: [], - h4: [], - h5: [], - h6: [], - i: [], - img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], - li: [], - ol: [], - p: [], - pre: [], - s: [], - small: [], - span: [], - sub: [], - sup: [], - strong: [], - u: [], - ul: [] - }; - - function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { - var _ref7; - - if (!unsafeHtml.length) { - return unsafeHtml; - } - - if (sanitizeFunction && typeof sanitizeFunction === 'function') { - return sanitizeFunction(unsafeHtml); - } - - var domParser = new window.DOMParser(); - var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); - - var elements = (_ref7 = []).concat.apply(_ref7, _toConsumableArray(createdDocument.body.querySelectorAll('*'))); - - var _iterator19 = _createForOfIteratorHelper(elements), - _step19; - - try { - for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) { - var _ref8; - - var element = _step19.value; - var elementName = element.nodeName.toLowerCase(); - - if (!Object.keys(allowList).includes(elementName)) { - element.remove(); - continue; - } - - var attributeList = (_ref8 = []).concat.apply(_ref8, _toConsumableArray(element.attributes)); - - var allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []); - - var _iterator20 = _createForOfIteratorHelper(attributeList), - _step20; - - try { - for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) { - var attribute = _step20.value; - - if (!allowedAttribute(attribute, allowedAttributes)) { - element.removeAttribute(attribute.nodeName); - } - } - } catch (err) { - _iterator20.e(err); - } finally { - _iterator20.f(); - } - } - } catch (err) { - _iterator19.e(err); - } finally { - _iterator19.f(); - } - - return createdDocument.body.innerHTML; - } - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): util/template-factory.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - - var NAME$5 = 'TemplateFactory'; - var Default$4 = { - allowList: DefaultAllowlist, - content: {}, - // { selector : text , selector2 : text2 , } - extraClass: '', - html: false, - sanitize: true, - sanitizeFn: null, - template: '
' - }; - var DefaultType$4 = { - allowList: 'object', - content: 'object', - extraClass: '(string|function)', - html: 'boolean', - sanitize: 'boolean', - sanitizeFn: '(null|function)', - template: 'string' - }; - var DefaultContentType = { - entry: '(string|element|function|null)', - selector: '(string|element)' - }; - /** - * Class definition - */ - - var TemplateFactory = /*#__PURE__*/function (_Config5) { - _inherits(TemplateFactory, _Config5); - - var _super12 = _createSuper(TemplateFactory); - - function TemplateFactory(config) { - var _this37; - - _classCallCheck(this, TemplateFactory); - - _this37 = _super12.call(this); - _this37._config = _this37._getConfig(config); - return _this37; - } // Getters - - - _createClass(TemplateFactory, [{ - key: "getContent", - value: // Public - function getContent() { - var _this38 = this; - - return Object.values(this._config.content).map(function (config) { - return _this38._resolvePossibleFunction(config); - }).filter(Boolean); - } - }, { - key: "hasContent", - value: function hasContent() { - return this.getContent().length > 0; - } - }, { - key: "changeContent", - value: function changeContent(content) { - this._checkContent(content); - - this._config.content = _objectSpread(_objectSpread({}, this._config.content), content); - return this; - } - }, { - key: "toHtml", - value: function toHtml() { - var templateWrapper = document.createElement('div'); - templateWrapper.innerHTML = this._maybeSanitize(this._config.template); - - for (var _i8 = 0, _Object$entries2 = Object.entries(this._config.content); _i8 < _Object$entries2.length; _i8++) { - var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i8], 2), - selector = _Object$entries2$_i[0], - text = _Object$entries2$_i[1]; - - this._setContent(templateWrapper, text, selector); - } - - var template = templateWrapper.children[0]; - - var extraClass = this._resolvePossibleFunction(this._config.extraClass); - - if (extraClass) { - var _template$classList; - - (_template$classList = template.classList).add.apply(_template$classList, _toConsumableArray(extraClass.split(' '))); - } - - return template; - } // Private - - }, { - key: "_typeCheckConfig", - value: function _typeCheckConfig(config) { - _get(_getPrototypeOf(TemplateFactory.prototype), "_typeCheckConfig", this).call(this, config); - - this._checkContent(config.content); - } - }, { - key: "_checkContent", - value: function _checkContent(arg) { - for (var _i9 = 0, _Object$entries3 = Object.entries(arg); _i9 < _Object$entries3.length; _i9++) { - var _Object$entries3$_i = _slicedToArray(_Object$entries3[_i9], 2), - selector = _Object$entries3$_i[0], - content = _Object$entries3$_i[1]; - - _get(_getPrototypeOf(TemplateFactory.prototype), "_typeCheckConfig", this).call(this, { - selector: selector, - entry: content - }, DefaultContentType); - } - } - }, { - key: "_setContent", - value: function _setContent(template, content, selector) { - var templateElement = SelectorEngine.findOne(selector, template); - - if (!templateElement) { - return; - } - - content = this._resolvePossibleFunction(content); - - if (!content) { - templateElement.remove(); - return; - } - - if (isElement(content)) { - this._putElementInTemplate(getElement(content), templateElement); - - return; - } - - if (this._config.html) { - templateElement.innerHTML = this._maybeSanitize(content); - return; - } - - templateElement.textContent = content; - } - }, { - key: "_maybeSanitize", - value: function _maybeSanitize(arg) { - return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; - } - }, { - key: "_resolvePossibleFunction", - value: function _resolvePossibleFunction(arg) { - return typeof arg === 'function' ? arg(this) : arg; - } - }, { - key: "_putElementInTemplate", - value: function _putElementInTemplate(element, templateElement) { - if (this._config.html) { - templateElement.innerHTML = ''; - templateElement.append(element); - return; - } - - templateElement.textContent = element.textContent; - } - }], [{ - key: "Default", - get: function get() { - return Default$4; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$4; - } - }, { - key: "NAME", - get: function get() { - return NAME$5; - } - }]); - - return TemplateFactory; - }(Config); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): tooltip.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - - var NAME$4 = 'tooltip'; - var DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); - var CLASS_NAME_FADE$2 = 'fade'; - var CLASS_NAME_MODAL = 'modal'; - var CLASS_NAME_SHOW$2 = 'show'; - var SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; - var SELECTOR_MODAL = ".".concat(CLASS_NAME_MODAL); - var EVENT_MODAL_HIDE = 'hide.bs.modal'; - var TRIGGER_HOVER = 'hover'; - var TRIGGER_FOCUS = 'focus'; - var TRIGGER_CLICK = 'click'; - var TRIGGER_MANUAL = 'manual'; - var EVENT_HIDE$2 = 'hide'; - var EVENT_HIDDEN$2 = 'hidden'; - var EVENT_SHOW$2 = 'show'; - var EVENT_SHOWN$2 = 'shown'; - var EVENT_INSERTED = 'inserted'; - var EVENT_CLICK$1 = 'click'; - var EVENT_FOCUSIN$1 = 'focusin'; - var EVENT_FOCUSOUT$1 = 'focusout'; - var EVENT_MOUSEENTER = 'mouseenter'; - var EVENT_MOUSELEAVE = 'mouseleave'; - var AttachmentMap = { - AUTO: 'auto', - TOP: 'top', - RIGHT: isRTL() ? 'left' : 'right', - BOTTOM: 'bottom', - LEFT: isRTL() ? 'right' : 'left' - }; - var Default$3 = { - allowList: DefaultAllowlist, - animation: true, - boundary: 'clippingParents', - container: false, - customClass: '', - delay: 0, - fallbackPlacements: ['top', 'right', 'bottom', 'left'], - html: false, - offset: [0, 0], - placement: 'top', - popperConfig: null, - sanitize: true, - sanitizeFn: null, - selector: false, - template: '', - title: '', - trigger: 'hover focus' - }; - var DefaultType$3 = { - allowList: 'object', - animation: 'boolean', - boundary: '(string|element)', - container: '(string|element|boolean)', - customClass: '(string|function)', - delay: '(number|object)', - fallbackPlacements: 'array', - html: 'boolean', - offset: '(array|string|function)', - placement: '(string|function)', - popperConfig: '(null|object|function)', - sanitize: 'boolean', - sanitizeFn: '(null|function)', - selector: '(string|boolean)', - template: 'string', - title: '(string|element|function)', - trigger: 'string' - }; - /** - * Class definition - */ - - var Tooltip = /*#__PURE__*/function (_BaseComponent8) { - _inherits(Tooltip, _BaseComponent8); - - var _super13 = _createSuper(Tooltip); - - function Tooltip(element, config) { - var _this39; - - _classCallCheck(this, Tooltip); - - if (typeof Popper__namespace === 'undefined') { - throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); - } - - _this39 = _super13.call(this, element, config); // Private - - _this39._isEnabled = true; - _this39._timeout = 0; - _this39._isHovered = false; - _this39._activeTrigger = {}; - _this39._popper = null; - _this39._templateFactory = null; - _this39._newContent = null; // Protected - - _this39.tip = null; - - _this39._setListeners(); - - return _this39; - } // Getters - - - _createClass(Tooltip, [{ - key: "enable", - value: // Public - function enable() { - this._isEnabled = true; - } - }, { - key: "disable", - value: function disable() { - this._isEnabled = false; - } - }, { - key: "toggleEnabled", - value: function toggleEnabled() { - this._isEnabled = !this._isEnabled; - } - }, { - key: "toggle", - value: function toggle(event) { - if (!this._isEnabled) { - return; - } - - if (event) { - var context = this._initializeOnDelegatedTarget(event); - - context._activeTrigger.click = !context._activeTrigger.click; - - if (context._isWithActiveTrigger()) { - context._enter(); - } else { - context._leave(); - } - - return; - } - - if (this._isShown()) { - this._leave(); - - return; - } - - this._enter(); - } - }, { - key: "dispose", - value: function dispose() { - clearTimeout(this._timeout); - EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); - - if (this.tip) { - this.tip.remove(); - } - - this._disposePopper(); - - _get(_getPrototypeOf(Tooltip.prototype), "dispose", this).call(this); - } - }, { - key: "show", - value: function show() { - var _this40 = this; - - if (this._element.style.display === 'none') { - throw new Error('Please use show on visible elements'); - } - - if (!(this._isWithContent() && this._isEnabled)) { - return; - } - - var showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2)); - var shadowRoot = findShadowRoot(this._element); - - var isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); - - if (showEvent.defaultPrevented || !isInTheDom) { - return; - } // todo v6 remove this OR make it optional - - - if (this.tip) { - this.tip.remove(); - this.tip = null; - } - - var tip = this._getTipElement(); - - this._element.setAttribute('aria-describedby', tip.getAttribute('id')); - - var container = this._config.container; - - if (!this._element.ownerDocument.documentElement.contains(this.tip)) { - container.append(tip); - EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); - } - - if (this._popper) { - this._popper.update(); - } else { - this._popper = this._createPopper(tip); - } - - tip.classList.add(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - - if ('ontouchstart' in document.documentElement) { - var _ref9; - - var _iterator21 = _createForOfIteratorHelper((_ref9 = []).concat.apply(_ref9, _toConsumableArray(document.body.children))), - _step21; - - try { - for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) { - var element = _step21.value; - EventHandler.on(element, 'mouseover', noop); - } - } catch (err) { - _iterator21.e(err); - } finally { - _iterator21.f(); - } - } - - var complete = function complete() { - var previousHoverState = _this40._isHovered; - _this40._isHovered = false; - EventHandler.trigger(_this40._element, _this40.constructor.eventName(EVENT_SHOWN$2)); - - if (previousHoverState) { - _this40._leave(); - } - }; - - this._queueCallback(complete, this.tip, this._isAnimated()); - } - }, { - key: "hide", - value: function hide() { - var _this41 = this; - - if (!this._isShown()) { - return; - } - - var hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2)); - - if (hideEvent.defaultPrevented) { - return; - } - - var tip = this._getTipElement(); - - tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - - if ('ontouchstart' in document.documentElement) { - var _ref10; - - var _iterator22 = _createForOfIteratorHelper((_ref10 = []).concat.apply(_ref10, _toConsumableArray(document.body.children))), - _step22; - - try { - for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) { - var element = _step22.value; - EventHandler.off(element, 'mouseover', noop); - } - } catch (err) { - _iterator22.e(err); - } finally { - _iterator22.f(); - } - } - - this._activeTrigger[TRIGGER_CLICK] = false; - this._activeTrigger[TRIGGER_FOCUS] = false; - this._activeTrigger[TRIGGER_HOVER] = false; - this._isHovered = false; - - var complete = function complete() { - if (_this41._isWithActiveTrigger()) { - return; - } - - if (!_this41._isHovered) { - tip.remove(); - } - - _this41._element.removeAttribute('aria-describedby'); - - EventHandler.trigger(_this41._element, _this41.constructor.eventName(EVENT_HIDDEN$2)); - - _this41._disposePopper(); - }; - - this._queueCallback(complete, this.tip, this._isAnimated()); - } - }, { - key: "update", - value: function update() { - if (this._popper) { - this._popper.update(); - } - } // Protected - - }, { - key: "_isWithContent", - value: function _isWithContent() { - return Boolean(this._getTitle()); - } - }, { - key: "_getTipElement", - value: function _getTipElement() { - if (!this.tip) { - this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); - } - - return this.tip; - } - }, { - key: "_createTipElement", - value: function _createTipElement(content) { - var tip = this._getTemplateFactory(content).toHtml(); // todo: remove this check on v6 - - - if (!tip) { - return null; - } - - tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); // todo: on v6 the following can be achieved with CSS only - - tip.classList.add("bs-".concat(this.constructor.NAME, "-auto")); - var tipId = getUID(this.constructor.NAME).toString(); - tip.setAttribute('id', tipId); - - if (this._isAnimated()) { - tip.classList.add(CLASS_NAME_FADE$2); - } - - return tip; - } - }, { - key: "setContent", - value: function setContent(content) { - this._newContent = content; - - if (this._isShown()) { - this._disposePopper(); - - this.show(); - } - } - }, { - key: "_getTemplateFactory", - value: function _getTemplateFactory(content) { - if (this._templateFactory) { - this._templateFactory.changeContent(content); - } else { - this._templateFactory = new TemplateFactory(_objectSpread(_objectSpread({}, this._config), {}, { - // the `content` var has to be after `this._config` - // to override config.content in case of popover - content: content, - extraClass: this._resolvePossibleFunction(this._config.customClass) - })); - } - - return this._templateFactory; - } - }, { - key: "_getContentForTemplate", - value: function _getContentForTemplate() { - return _defineProperty({}, SELECTOR_TOOLTIP_INNER, this._getTitle()); - } - }, { - key: "_getTitle", - value: function _getTitle() { - return this._resolvePossibleFunction(this._config.title) || this._config.originalTitle; - } // Private - - }, { - key: "_initializeOnDelegatedTarget", - value: function _initializeOnDelegatedTarget(event) { - return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); - } - }, { - key: "_isAnimated", - value: function _isAnimated() { - return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2); - } - }, { - key: "_isShown", - value: function _isShown() { - return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2); - } - }, { - key: "_createPopper", - value: function _createPopper(tip) { - var placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement; - var attachment = AttachmentMap[placement.toUpperCase()]; - return Popper__namespace.createPopper(this._element, tip, this._getPopperConfig(attachment)); - } - }, { - key: "_getOffset", - value: function _getOffset() { - var _this42 = this; - - var offset = this._config.offset; - - if (typeof offset === 'string') { - return offset.split(',').map(function (value) { - return Number.parseInt(value, 10); - }); - } - - if (typeof offset === 'function') { - return function (popperData) { - return offset(popperData, _this42._element); - }; - } - - return offset; - } - }, { - key: "_resolvePossibleFunction", - value: function _resolvePossibleFunction(arg) { - return typeof arg === 'function' ? arg.call(this._element) : arg; - } - }, { - key: "_getPopperConfig", - value: function _getPopperConfig(attachment) { - var _this43 = this; - - var defaultBsPopperConfig = { - placement: attachment, - modifiers: [{ - name: 'flip', - options: { - fallbackPlacements: this._config.fallbackPlacements - } - }, { - name: 'offset', - options: { - offset: this._getOffset() - } - }, { - name: 'preventOverflow', - options: { - boundary: this._config.boundary - } - }, { - name: 'arrow', - options: { - element: ".".concat(this.constructor.NAME, "-arrow") - } - }, { - name: 'preSetPlacement', - enabled: true, - phase: 'beforeMain', - fn: function fn(data) { - // Pre-set Popper's placement attribute in order to read the arrow sizes properly. - // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement - _this43._getTipElement().setAttribute('data-popper-placement', data.state.placement); - } - }] - }; - return _objectSpread(_objectSpread({}, defaultBsPopperConfig), typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig); - } - }, { - key: "_setListeners", - value: function _setListeners() { - var _this44 = this; - - var triggers = this._config.trigger.split(' '); - - var _iterator23 = _createForOfIteratorHelper(triggers), - _step23; - - try { - for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) { - var trigger = _step23.value; - - if (trigger === 'click') { - EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, function (event) { - return _this44.toggle(event); - }); - } else if (trigger !== TRIGGER_MANUAL) { - var eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1); - var eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1); - EventHandler.on(this._element, eventIn, this._config.selector, function (event) { - var context = _this44._initializeOnDelegatedTarget(event); - - context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; - - context._enter(); - }); - EventHandler.on(this._element, eventOut, this._config.selector, function (event) { - var context = _this44._initializeOnDelegatedTarget(event); - - context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); - - context._leave(); - }); - } - } - } catch (err) { - _iterator23.e(err); - } finally { - _iterator23.f(); - } - - this._hideModalHandler = function () { - if (_this44._element) { - _this44.hide(); - } - }; - - EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); - - if (this._config.selector) { - this._config = _objectSpread(_objectSpread({}, this._config), {}, { - trigger: 'manual', - selector: '' - }); - } else { - this._fixTitle(); - } - } - }, { - key: "_fixTitle", - value: function _fixTitle() { - var title = this._config.originalTitle; - - if (!title) { - return; - } - - if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) { - this._element.setAttribute('aria-label', title); - } - - this._element.removeAttribute('title'); - } - }, { - key: "_enter", - value: function _enter() { - var _this45 = this; - - if (this._isShown() || this._isHovered) { - this._isHovered = true; - return; - } - - this._isHovered = true; - - this._setTimeout(function () { - if (_this45._isHovered) { - _this45.show(); - } - }, this._config.delay.show); - } - }, { - key: "_leave", - value: function _leave() { - var _this46 = this; - - if (this._isWithActiveTrigger()) { - return; - } - - this._isHovered = false; - - this._setTimeout(function () { - if (!_this46._isHovered) { - _this46.hide(); - } - }, this._config.delay.hide); - } - }, { - key: "_setTimeout", - value: function _setTimeout(handler, timeout) { - clearTimeout(this._timeout); - this._timeout = setTimeout(handler, timeout); - } - }, { - key: "_isWithActiveTrigger", - value: function _isWithActiveTrigger() { - return Object.values(this._activeTrigger).includes(true); - } - }, { - key: "_getConfig", - value: function _getConfig(config) { - var dataAttributes = Manipulator.getDataAttributes(this._element); - - for (var _i10 = 0, _Object$keys5 = Object.keys(dataAttributes); _i10 < _Object$keys5.length; _i10++) { - var dataAttribute = _Object$keys5[_i10]; - - if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { - delete dataAttributes[dataAttribute]; - } - } - - config = _objectSpread(_objectSpread({}, dataAttributes), _typeof(config) === 'object' && config ? config : {}); - config = this._mergeConfigObj(config); - config = this._configAfterMerge(config); - - this._typeCheckConfig(config); - - return config; - } - }, { - key: "_configAfterMerge", - value: function _configAfterMerge(config) { - config.container = config.container === false ? document.body : getElement(config.container); - - if (typeof config.delay === 'number') { - config.delay = { - show: config.delay, - hide: config.delay - }; - } - - config.originalTitle = this._element.getAttribute('title') || ''; - - if (typeof config.title === 'number') { - config.title = config.title.toString(); - } - - if (typeof config.content === 'number') { - config.content = config.content.toString(); - } - - return config; - } - }, { - key: "_getDelegateConfig", - value: function _getDelegateConfig() { - var config = {}; - - for (var key in this._config) { - if (this.constructor.Default[key] !== this._config[key]) { - config[key] = this._config[key]; - } - } // In the future can be replaced with: - // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]]) - // `Object.fromEntries(keysWithDifferentValues)` - - - return config; - } - }, { - key: "_disposePopper", - value: function _disposePopper() { - if (this._popper) { - this._popper.destroy(); - - this._popper = null; - } - } // Static - - }], [{ - key: "Default", - get: function get() { - return Default$3; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$3; - } - }, { - key: "NAME", - get: function get() { - return NAME$4; - } - }, { - key: "jQueryInterface", - value: function jQueryInterface(config) { - return this.each(function () { - var data = Tooltip.getOrCreateInstance(this, config); - - if (typeof config !== 'string') { - return; - } - - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"".concat(config, "\"")); - } - - data[config](); - }); - } - }]); - - return Tooltip; - }(BaseComponent); - /** - * jQuery - */ - - - defineJQueryPlugin(Tooltip); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): popover.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - var NAME$3 = 'popover'; - var SELECTOR_TITLE = '.popover-header'; - var SELECTOR_CONTENT = '.popover-body'; - - var Default$2 = _objectSpread(_objectSpread({}, Tooltip.Default), {}, { - content: '', - offset: [0, 8], - placement: 'right', - template: '', - trigger: 'click' - }); - - var DefaultType$2 = _objectSpread(_objectSpread({}, Tooltip.DefaultType), {}, { - content: '(null|string|element|function)' - }); - /** - * Class definition - */ - - - var Popover = /*#__PURE__*/function (_Tooltip) { - _inherits(Popover, _Tooltip); - - var _super14 = _createSuper(Popover); - - function Popover() { - _classCallCheck(this, Popover); - - return _super14.apply(this, arguments); - } - - _createClass(Popover, [{ - key: "_isWithContent", - value: // Overrides - function _isWithContent() { - return this._getTitle() || this._getContent(); - } // Private - - }, { - key: "_getContentForTemplate", - value: function _getContentForTemplate() { - var _ref12; - - return _ref12 = {}, _defineProperty(_ref12, SELECTOR_TITLE, this._getTitle()), _defineProperty(_ref12, SELECTOR_CONTENT, this._getContent()), _ref12; - } - }, { - key: "_getContent", - value: function _getContent() { - return this._resolvePossibleFunction(this._config.content); - } // Static - - }], [{ - key: "Default", - get: // Getters - function get() { - return Default$2; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$2; - } - }, { - key: "NAME", - get: function get() { - return NAME$3; - } - }, { - key: "jQueryInterface", - value: function jQueryInterface(config) { - return this.each(function () { - var data = Popover.getOrCreateInstance(this, config); - - if (typeof config !== 'string') { - return; - } - - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"".concat(config, "\"")); - } - - data[config](); - }); - } - }]); - - return Popover; - }(Tooltip); - /** - * jQuery - */ - - - defineJQueryPlugin(Popover); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.0): scrollspy.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * Constants - */ - - var NAME$2 = 'scrollspy'; - var DATA_KEY$2 = 'bs.scrollspy'; - var EVENT_KEY$2 = ".".concat(DATA_KEY$2); - var DATA_API_KEY = '.data-api'; - var EVENT_ACTIVATE = "activate".concat(EVENT_KEY$2); - var EVENT_CLICK = "click".concat(EVENT_KEY$2); - var EVENT_LOAD_DATA_API$1 = "load".concat(EVENT_KEY$2).concat(DATA_API_KEY); - var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; - var CLASS_NAME_ACTIVE$1 = 'active'; - var SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; - var SELECTOR_TARGET_LINKS = '[href]'; - var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; - var SELECTOR_NAV_LINKS = '.nav-link'; - var SELECTOR_NAV_ITEMS = '.nav-item'; - var SELECTOR_LIST_ITEMS = '.list-group-item'; - var SELECTOR_LINK_ITEMS = "".concat(SELECTOR_NAV_LINKS, ", ").concat(SELECTOR_NAV_ITEMS, " > ").concat(SELECTOR_NAV_LINKS, ", ").concat(SELECTOR_LIST_ITEMS); - var SELECTOR_DROPDOWN = '.dropdown'; - var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; - var Default$1 = { - offset: null, - // TODO: v6 @deprecated, keep it for backwards compatibility reasons - rootMargin: '0px 0px -25%', - smoothScroll: false, - target: null - }; - var DefaultType$1 = { - offset: '(number|null)', - // TODO v6 @deprecated, keep it for backwards compatibility reasons - rootMargin: 'string', - smoothScroll: 'boolean', - target: 'element' - }; - /** - * Class definition - */ - - var ScrollSpy = /*#__PURE__*/function (_BaseComponent9) { - _inherits(ScrollSpy, _BaseComponent9); - - var _super15 = _createSuper(ScrollSpy); - - function ScrollSpy(element, config) { - var _this47; - - _classCallCheck(this, ScrollSpy); - - _this47 = _super15.call(this, element, config); // this._element is the observablesContainer and config.target the menu links wrapper - - _this47._targetLinks = new Map(); - _this47._observableSections = new Map(); - _this47._rootElement = getComputedStyle(_this47._element).overflowY === 'visible' ? null : _this47._element; - _this47._activeTarget = null; - _this47._observer = null; - _this47._previousScrollData = { - visibleEntryTop: 0, - parentScrollTop: 0 - }; - - _this47.refresh(); // initialize - - - return _this47; - } // Getters - - - _createClass(ScrollSpy, [{ - key: "refresh", - value: // Public - function refresh() { - this._initializeTargetsAndObservables(); - - this._maybeEnableSmoothScroll(); - - if (this._observer) { - this._observer.disconnect(); - } else { - this._observer = this._getNewObserver(); - } - - var _iterator24 = _createForOfIteratorHelper(this._observableSections.values()), - _step24; - - try { - for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) { - var section = _step24.value; - - this._observer.observe(section); - } - } catch (err) { - _iterator24.e(err); - } finally { - _iterator24.f(); - } - } - }, { - key: "dispose", - value: function dispose() { - this._observer.disconnect(); - - _get(_getPrototypeOf(ScrollSpy.prototype), "dispose", this).call(this); - } // Private - - }, { - key: "_configAfterMerge", - value: function _configAfterMerge(config) { - // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case - config.target = getElement(config.target) || document.body; - return config; - } - }, { - key: "_maybeEnableSmoothScroll", - value: function _maybeEnableSmoothScroll() { - var _this48 = this; - - if (!this._config.smoothScroll) { - return; - } // unregister any previous listeners - - - EventHandler.off(this._config.target, EVENT_CLICK); - EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, function (event) { - var observableSection = _this48._observableSections.get(event.target.hash); - - if (observableSection) { - event.preventDefault(); - var root = _this48._rootElement || window; - var height = observableSection.offsetTop - _this48._element.offsetTop; - - if (root.scrollTo) { - root.scrollTo({ - top: height, - behavior: 'smooth' - }); - return; - } // Chrome 60 doesn't support `scrollTo` - - - root.scrollTop = height; - } - }); - } - }, { - key: "_getNewObserver", - value: function _getNewObserver() { - var _this49 = this; - - var options = { - root: this._rootElement, - threshold: [0.1, 0.5, 1], - rootMargin: this._getRootMargin() - }; - return new IntersectionObserver(function (entries) { - return _this49._observerCallback(entries); - }, options); - } // The logic of selection - - }, { - key: "_observerCallback", - value: function _observerCallback(entries) { - var _this50 = this; - - var targetElement = function targetElement(entry) { - return _this50._targetLinks.get("#".concat(entry.target.id)); - }; - - var activate = function activate(entry) { - _this50._previousScrollData.visibleEntryTop = entry.target.offsetTop; - - _this50._process(targetElement(entry)); - }; - - var parentScrollTop = (this._rootElement || document.documentElement).scrollTop; - var userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop; - this._previousScrollData.parentScrollTop = parentScrollTop; - - var _iterator25 = _createForOfIteratorHelper(entries), - _step25; - - try { - for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) { - var entry = _step25.value; - - if (!entry.isIntersecting) { - this._activeTarget = null; - - this._clearActiveClass(targetElement(entry)); - - continue; - } - - var entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop - - if (userScrollsDown && entryIsLowerThanPrevious) { - activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration - - if (!parentScrollTop) { - return; - } - - continue; - } // if we are scrolling up, pick the smallest offsetTop - - - if (!userScrollsDown && !entryIsLowerThanPrevious) { - activate(entry); - } - } - } catch (err) { - _iterator25.e(err); - } finally { - _iterator25.f(); - } - } // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only - - }, { - key: "_getRootMargin", - value: function _getRootMargin() { - return this._config.offset ? "".concat(this._config.offset, "px 0px -30%") : this._config.rootMargin; - } - }, { - key: "_initializeTargetsAndObservables", - value: function _initializeTargetsAndObservables() { - this._targetLinks = new Map(); - this._observableSections = new Map(); - var targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target); - - var _iterator26 = _createForOfIteratorHelper(targetLinks), - _step26; - - try { - for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) { - var anchor = _step26.value; - - // ensure that the anchor has an id and is not disabled - if (!anchor.hash || isDisabled(anchor)) { - continue; - } - - var observableSection = SelectorEngine.findOne(anchor.hash, this._element); // ensure that the observableSection exists & is visible - - if (isVisible(observableSection)) { - this._targetLinks.set(anchor.hash, anchor); - - this._observableSections.set(anchor.hash, observableSection); - } - } - } catch (err) { - _iterator26.e(err); - } finally { - _iterator26.f(); - } - } - }, { - key: "_process", - value: function _process(target) { - if (this._activeTarget === target) { - return; - } - - this._clearActiveClass(this._config.target); - - this._activeTarget = target; - target.classList.add(CLASS_NAME_ACTIVE$1); - - this._activateParents(target); - - EventHandler.trigger(this._element, EVENT_ACTIVATE, { - relatedTarget: target - }); - } - }, { - key: "_activateParents", - value: function _activateParents(target) { - // Activate dropdown parents - if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { - SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1); - return; - } - - var _iterator27 = _createForOfIteratorHelper(SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)), - _step27; - - try { - for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) { - var listGroup = _step27.value; - - // Set triggered links parents as active - // With both
    and