{{ERROR}}
\"),this.setContent(t,n)}clearContent(t){var e;null===(e=this.carousel)||void 0===e||e.emit(\"removeSlide\",t)}getSlide(){var t;const e=this.carousel;return(null===(t=null==e?void 0:e.pages[null==e?void 0:e.page])||void 0===t?void 0:t.slides[0])||void 0}close(t,e){if(this.isClosing())return;const i=new Event(\"shouldClose\",{bubbles:!0,cancelable:!0});if(this.emit(\"shouldClose\",i,t),i.defaultPrevented)return;t&&t.cancelable&&(t.preventDefault(),t.stopPropagation());const n=this.fsAPI,s=()=>{this.proceedClose(t,e)};n&&n.isFullscreen()?Promise.resolve(n.exit()).then((()=>s())):s()}clearIdle(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=null}setIdle(t=!1){const e=()=>{this.clearIdle(),this.idle=!0,S(this.container,\"is-idle\"),this.emit(\"setIdle\")};if(this.clearIdle(),!this.isClosing())if(t)e();else{const t=this.option(\"idle\");t&&(this.idleTimer=setTimeout(e,t))}}endIdle(){this.clearIdle(),this.idle&&!this.isClosing()&&(this.idle=!1,E(this.container,\"is-idle\"),this.emit(\"endIdle\"))}resetIdle(){this.endIdle(),this.setIdle()}toggleIdle(){this.idle?this.endIdle():this.setIdle(!0)}toggleFullscreen(){const t=this.fsAPI;t&&(t.isFullscreen()?t.exit():this.container&&t.request(this.container))}isClosing(){return[et.Closing,et.CustomClosing,et.Destroy].includes(this.state)}proceedClose(t,e){var i,n;this.state=et.Closing,this.clearIdle(),this.detachEvents();const s=this.container,o=this.carousel,a=this.getSlide(),r=a&&this.option(\"placeFocusBack\")?a.triggerEl||this.option(\"triggerEl\"):null;if(r&&(U(r)?Q(r):r.focus()),s&&(S(s,\"is-closing\"),s.setAttribute(\"aria-hidden\",\"true\"),this.option(\"animated\")&&S(s,kt),s.style.pointerEvents=\"none\"),o){o.clearTransitions(),null===(i=o.panzoom)||void 0===i||i.destroy(),null===(n=o.plugins.Navigation)||void 0===n||n.detach();for(const t of o.slides){t.state=it.Closing,this.hideLoading(t);const e=t.contentEl;e&&this.stop(e);const i=null==t?void 0:t.panzoom;i&&(i.stop(),i.detachEvents(),i.detachObserver()),this.isCurrentSlide(t)||o.emit(\"removeSlide\",t)}}this.emit(\"close\",t),this.state!==et.CustomClosing?(void 0===e&&a&&(e=this.optionFor(a,\"hideClass\")),e&&a?(this.animate(a.contentEl,e,(()=>{o&&o.emit(\"removeSlide\",a)})),setTimeout((()=>{this.destroy()}),500)):this.destroy()):setTimeout((()=>{this.destroy()}),500)}destroy(){var t;if(this.state===et.Destroy)return;this.state=et.Destroy,null===(t=this.carousel)||void 0===t||t.destroy();const e=this.container;e&&e.remove(),Bt.delete(this.id);const i=_t.getInstance();i?i.focus():(jt&&(jt.remove(),jt=null),Ht&&(Ht.remove(),Ht=null),E(document.documentElement,At),(()=>{if(!G)return;const t=document,e=t.body;e.classList.remove(zt),e.style.setProperty(Rt,\"\"),t.documentElement.style.setProperty(Lt,\"\")})(),this.emit(\"destroy\"))}static bind(t,e,i){if(!G)return;let n,s=\"\",o={};if(void 0===t?n=document.body:\"string\"==typeof t?(n=document.body,s=t,\"object\"==typeof e&&(o=e||{})):(n=t,\"string\"==typeof e&&(s=e),\"object\"==typeof i&&(o=i||{})),!n||!x(n))return;s=s||\"[data-fancybox]\";const a=_t.openers.get(n)||new Map;a.set(s,o),_t.openers.set(n,a),1===a.size&&n.addEventListener(\"click\",_t.fromEvent)}static unbind(t,e){let i,n=\"\";if(\"string\"==typeof t?(i=document.body,n=t):(i=t,\"string\"==typeof e&&(n=e)),!i)return;const s=_t.openers.get(i);s&&n&&s.delete(n),n&&s||(_t.openers.delete(i),i.removeEventListener(\"click\",_t.fromEvent))}static destroy(){let t;for(;t=_t.getInstance();)t.destroy();for(const t of _t.openers.keys())t.removeEventListener(\"click\",_t.fromEvent);_t.openers=new Map}static fromEvent(t){if(t.defaultPrevented)return;if(t.button&&0!==t.button)return;if(t.ctrlKey||t.metaKey||t.shiftKey)return;let e=t.composedPath()[0];const i=e.closest(\"[data-fancybox-trigger]\");if(i){const t=i.dataset.fancyboxTrigger||\"\",n=document.querySelectorAll(`[data-fancybox=\"${t}\"]`),s=parseInt(i.dataset.fancyboxIndex||\"\",10)||0;e=n[s]||e}if(!(e&&e instanceof Element))return;let n,s,o,a;if([..._t.openers].reverse().find((([t,i])=>!(!t.contains(e)||![...i].reverse().find((([i,r])=>{let l=e.closest(i);return!!l&&(n=t,s=i,o=l,a=r,!0)}))))),!n||!s||!o)return;a=a||{},t.preventDefault(),e=o;let r=[],l=u({},tt,a);l.event=t,l.triggerEl=e,l.delegate=i;const c=l.groupAll,h=l.groupAttr,d=h&&e?e.getAttribute(`${h}`):\"\";if((!e||d||c)&&(r=[].slice.call(n.querySelectorAll(s))),e&&!c&&(r=d?r.filter((t=>t.getAttribute(`${h}`)===d)):[e]),!r.length)return;const p=_t.getInstance();return p&&p.options.triggerEl&&r.indexOf(p.options.triggerEl)>-1?void 0:(e&&(l.startIndex=r.indexOf(e)),_t.fromNodes(r,l))}static fromSelector(t,e){let i=null,n=\"\";if(\"string\"==typeof t?(i=document.body,n=t):t instanceof HTMLElement&&\"string\"==typeof e&&(i=t,n=e),!i||!n)return!1;const s=_t.openers.get(i);if(!s)return!1;const o=s.get(n);return!!o&&_t.fromNodes(Array.from(i.querySelectorAll(n)),o)}static fromNodes(t,e){e=u({},tt,e||{});const i=[];for(const n of t){const t=n.dataset||{},s=t.src||n.getAttribute(\"href\")||n.getAttribute(\"currentSrc\")||n.getAttribute(\"src\")||void 0;let o;const a=e.delegate;let r;a&&i.length===e.startIndex&&(o=a instanceof HTMLImageElement?a:a.querySelector(\"img:not([aria-hidden])\")),o||(o=n instanceof HTMLImageElement?n:n.querySelector(\"img:not([aria-hidden])\")),o&&(r=o.currentSrc||o.src||void 0,!r&&o.dataset&&(r=o.dataset.lazySrc||o.dataset.src||void 0));const l={src:s,triggerEl:n,thumbEl:o,thumbElSrc:r,thumbSrc:r};for(const e in t)l[e]=t[e]+\"\";i.push(l)}return new _t(i,e)}static getInstance(t){if(t)return Bt.get(t);return Array.from(Bt.values()).reverse().find((t=>!t.isClosing()&&t))||null}static getSlide(){var t;return(null===(t=_t.getInstance())||void 0===t?void 0:t.getSlide())||null}static show(t=[],e={}){return new _t(t,e)}static next(){const t=_t.getInstance();t&&t.next()}static prev(){const t=_t.getInstance();t&&t.prev()}static close(t=!0,...e){if(t)for(const t of Bt.values())t.close(...e);else{const t=_t.getInstance();t&&t.close(...e)}}}Object.defineProperty(_t,\"version\",{enumerable:!0,configurable:!0,writable:!0,value:\"5.0.20\"}),Object.defineProperty(_t,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:tt}),Object.defineProperty(_t,\"Plugins\",{enumerable:!0,configurable:!0,writable:!0,value:Ot}),Object.defineProperty(_t,\"openers\",{enumerable:!0,configurable:!0,writable:!0,value:new Map});export{Z as Carousel,_t as Fancybox,R as Panzoom};\n","!(function (e, t) {\r\n \"object\" == typeof exports && \"object\" == typeof module\r\n ? (module.exports = t())\r\n : \"function\" == typeof define && define.amd\r\n ? define([], t)\r\n : \"object\" == typeof exports\r\n ? (exports[\"@master/css\"] = t())\r\n : (e[\"@master/css\"] = t());\r\n})(this, function () {\r\n return (() => {\r\n var e = {\r\n 642: (e) => {\r\n e.exports = {\r\n \"3xs\": 360,\r\n \"2xs\": 480,\r\n xs: 600,\r\n sm: 768.98,\r\n md: 1024.98,\r\n lg: 1280.98,\r\n xl: 1440.98,\r\n \"2xl\": 1600.98,\r\n \"3xl\": 1920.98,\r\n \"4xl\": 2560.98,\r\n };\r\n },\r\n 580: (e) => {\r\n e.exports = {\r\n fade: {\r\n 10: \"131518\",\r\n 20: \"24262d\",\r\n 30: \"363944\",\r\n 40: \"4c515f\",\r\n 50: \"63697c\",\r\n 60: \"878d9f\",\r\n 70: \"a6abb8\",\r\n 80: \"c3c6cf\",\r\n 90: \"f4f4f6\",\r\n },\r\n gray: {\r\n 10: \"151515\",\r\n 20: \"242424\",\r\n 30: \"39393b\",\r\n 40: \"515153\",\r\n 50: \"6a6a6c\",\r\n 60: \"8d8d8f\",\r\n 70: \"aaaaac\",\r\n 80: \"c6c6c8\",\r\n 90: \"f4f4f6\",\r\n },\r\n brown: {\r\n 10: \"1c130f\",\r\n 20: \"31221b\",\r\n 30: \"4b3429\",\r\n 40: \"6a4a3a\",\r\n 50: \"8a604c\",\r\n 60: \"af836e\",\r\n 70: \"c4a394\",\r\n 80: \"d8c2b8\",\r\n 90: \"f8f3f1\",\r\n },\r\n orange: {\r\n 10: \"221205\",\r\n 20: \"3a1f08\",\r\n 30: \"582f0d\",\r\n 40: \"7c4312\",\r\n 50: \"a15717\",\r\n 60: \"d5731e\",\r\n 70: \"e79855\",\r\n 80: \"efbd92\",\r\n 90: \"fcf1e7\",\r\n },\r\n gold: {\r\n 10: \"1e1400\",\r\n 20: \"342300\",\r\n 30: \"4e3400\",\r\n 40: \"6e4900\",\r\n 50: \"906000\",\r\n 60: \"c08000\",\r\n 70: \"e89a00\",\r\n 80: \"ffba30\",\r\n 90: \"fff3da\",\r\n },\r\n yellow: {\r\n 10: \"1b1500\",\r\n 20: \"2f2500\",\r\n 30: \"473800\",\r\n 40: \"634f00\",\r\n 50: \"806700\",\r\n 60: \"ac8a00\",\r\n 70: \"d0a700\",\r\n 80: \"f0c100\",\r\n 90: \"fff5ca\",\r\n },\r\n grass: {\r\n 10: \"101803\",\r\n 20: \"1c2a05\",\r\n 30: \"2a4008\",\r\n 40: \"3c5a0b\",\r\n 50: \"4e750e\",\r\n 60: \"689c13\",\r\n 70: \"7dbc17\",\r\n 80: \"92da1a\",\r\n 90: \"ebfad4\",\r\n },\r\n green: {\r\n 10: \"011a0b\",\r\n 20: \"022d13\",\r\n 30: \"03441d\",\r\n 40: \"055f28\",\r\n 50: \"067b34\",\r\n 60: \"08a345\",\r\n 70: \"0ac553\",\r\n 80: \"0be561\",\r\n 90: \"d5fde5\",\r\n },\r\n beryl: {\r\n 10: \"001912\",\r\n 20: \"002b1f\",\r\n 30: \"00432f\",\r\n 40: \"005d41\",\r\n 50: \"007954\",\r\n 60: \"00a170\",\r\n 70: \"00c387\",\r\n 80: \"00e19c\",\r\n 90: \"c9ffee\",\r\n },\r\n teal: {\r\n 10: \"001918\",\r\n 20: \"002b28\",\r\n 30: \"00413d\",\r\n 40: \"005b55\",\r\n 50: \"00776f\",\r\n 60: \"009f94\",\r\n 70: \"00bfb2\",\r\n 80: \"00ddce\",\r\n 90: \"c5fffb\",\r\n },\r\n cyan: {\r\n 10: \"00181f\",\r\n 20: \"002a35\",\r\n 30: \"003f51\",\r\n 40: \"005973\",\r\n 50: \"007391\",\r\n 60: \"0099c1\",\r\n 70: \"00b9e9\",\r\n 80: \"3dd7ff\",\r\n 90: \"dff8ff\",\r\n },\r\n sky: {\r\n 10: \"021726\",\r\n 20: \"032841\",\r\n 30: \"043c61\",\r\n 40: \"065489\",\r\n 50: \"086eb3\",\r\n 60: \"0b92ee\",\r\n 70: \"4db3f7\",\r\n 80: \"8ccefa\",\r\n 90: \"eaf6fe\",\r\n },\r\n blue: {\r\n 10: \"051338\",\r\n 20: \"09205e\",\r\n 30: \"0d318d\",\r\n 40: \"1344c4\",\r\n 50: \"175fe9\",\r\n 60: \"538cee\",\r\n 70: \"81acf3\",\r\n 80: \"a5c7fd\",\r\n 90: \"edf4fe\",\r\n },\r\n indigo: {\r\n 10: \"161031\",\r\n 20: \"24195e\",\r\n 30: \"332592\",\r\n 40: \"4835cc\",\r\n 50: \"5a5bd5\",\r\n 60: \"7d84e8\",\r\n 70: \"a1a5ee\",\r\n 80: \"bfc2f4\",\r\n 90: \"f1f2ff\",\r\n },\r\n violet: {\r\n 10: \"1f0839\",\r\n 20: \"310e63\",\r\n 30: \"491595\",\r\n 40: \"641ed2\",\r\n 50: \"7949e5\",\r\n 60: \"9e77f5\",\r\n 70: \"b89bf9\",\r\n 80: \"d0bdfb\",\r\n 90: \"f5f1ff\",\r\n },\r\n purple: {\r\n 10: \"220736\",\r\n 20: \"390c5b\",\r\n 30: \"551287\",\r\n 40: \"7719bd\",\r\n 50: \"9832e4\",\r\n 60: \"b56cec\",\r\n 70: \"ca96f1\",\r\n 80: \"dcbaf6\",\r\n 90: \"f9f0ff\",\r\n },\r\n fuchsia: {\r\n 10: \"2b0720\",\r\n 20: \"470b3d\",\r\n 30: \"68105f\",\r\n 40: \"8e1691\",\r\n 50: \"b61cbb\",\r\n 60: \"e04ee5\",\r\n 70: \"ea86ed\",\r\n 80: \"f1b1f3\",\r\n 90: \"feefff\",\r\n },\r\n pink: {\r\n 10: \"2d0519\",\r\n 20: \"4c082b\",\r\n 30: \"720c40\",\r\n 40: \"9d1059\",\r\n 50: \"ca1473\",\r\n 60: \"ee52a3\",\r\n 70: \"f388c0\",\r\n 80: \"f7b2d6\",\r\n 90: \"fff0f8\",\r\n },\r\n crimson: {\r\n 10: \"33020f\",\r\n 20: \"500317\",\r\n 30: \"780522\",\r\n 40: \"a20d35\",\r\n 50: \"ce1a4b\",\r\n 60: \"ea5b82\",\r\n 70: \"f58ba7\",\r\n 80: \"ffb1c6\",\r\n 90: \"fff1f4\",\r\n },\r\n red: {\r\n 10: \"350001\",\r\n 20: \"530001\",\r\n 30: \"780506\",\r\n 40: \"a60708\",\r\n 50: \"d11a1e\",\r\n 60: \"eb5f63\",\r\n 70: \"fa8b8d\",\r\n 80: \"fdb3b5\",\r\n 90: \"fff1f1\",\r\n },\r\n black: \"000000\",\r\n white: \"ffffff\",\r\n };\r\n },\r\n 989: (e, t, s) => {\r\n const i = s(824),\r\n r = s(860);\r\n s(580);\r\n e.exports = function (e) {\r\n \"string\" == typeof e && (e = { \"\": e });\r\n const t = \"\" in e;\r\n let s = !1;\r\n for (const t in e)\r\n if (t && +t >= 100) {\r\n s = !0;\r\n break;\r\n }\r\n if (!s && (!t || Object.keys(e).length > 1)) {\r\n let t,\r\n s,\r\n n = 0,\r\n a = \"0\" in e ? i(e[0]) : [0, 0, 0];\r\n const c = [],\r\n l = () => {\r\n const i = t - n,\r\n l = s.map((e, t) => (e - a[t]) / i);\r\n for (const t of c) {\r\n const s = t - n,\r\n i = a.map((e, t) => Math.round(e + l[t] * s));\r\n e[t] = r.call(this, ...i);\r\n }\r\n };\r\n for (let r = 1; r < 100; r++) {\r\n const o = r % 2 == 0;\r\n r in e\r\n ? (c.length\r\n ? ((t = r), (s = i(e[r])), l(), (c.length = 0), (a = s))\r\n : (a = i(e[r])),\r\n (n = r))\r\n : o && c.push(r);\r\n }\r\n c.length &&\r\n ((t = 100),\r\n (s = \"100\" in e ? i(e[100]) : [255, 255, 255]),\r\n l());\r\n }\r\n return t || (e[\"\"] = e[s ? \"500\" : \"50\"]), e;\r\n };\r\n },\r\n 824: (e) => {\r\n e.exports = function (e) {\r\n const t = e.match(/.{1,2}/g);\r\n return [parseInt(t[0], 16), parseInt(t[1], 16), parseInt(t[2], 16)];\r\n };\r\n },\r\n 860: (e) => {\r\n e.exports = function (e, t, s) {\r\n return ((1 << 24) + (e << 16) + (t << 8) + s).toString(16).slice(1);\r\n };\r\n },\r\n },\r\n t = {};\r\n function s(i) {\r\n var r = t[i];\r\n if (void 0 !== r) return r.exports;\r\n var n = (t[i] = { exports: {} });\r\n return e[i](n, n.exports, s), n.exports;\r\n }\r\n (s.n = (e) => {\r\n var t = e && e.__esModule ? () => e.default : () => e;\r\n return s.d(t, { a: t }), t;\r\n }),\r\n (s.d = (e, t) => {\r\n for (var i in t)\r\n s.o(t, i) &&\r\n !s.o(e, i) &&\r\n Object.defineProperty(e, i, {\r\n enumerable: !0,\r\n get: t[i],\r\n });\r\n }),\r\n (s.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t)),\r\n (s.r = (e) => {\r\n \"undefined\" != typeof Symbol &&\r\n Symbol.toStringTag &&\r\n Object.defineProperty(e, Symbol.toStringTag, {\r\n value: \"Module\",\r\n }),\r\n Object.defineProperty(e, \"__esModule\", { value: !0 });\r\n });\r\n var i = {};\r\n return (\r\n (() => {\r\n \"use strict\";\r\n function e(e, t) {\r\n return (\r\n e +\r\n \":\" +\r\n (t.unit ? t.value + t.unit : t.value) +\r\n (t.important ? \"!important\" : \"\")\r\n );\r\n }\r\n s.r(i),\r\n s.d(i, {\r\n Style: () => $t,\r\n StyleSheet: () => Ct,\r\n Styles: () => qn,\r\n breakpoints: () => Qn,\r\n colors: () => Fn,\r\n init: () => Zn,\r\n sheets: () => Nt,\r\n });\r\n const t = /^([+-.]?\\d+(\\.?\\d+)?)(.*)?/;\r\n function r(e, s, i, r, n) {\r\n let a = r ? r[e] : \"\",\r\n c = \"\",\r\n l = \"\";\r\n if (a) return { value: a, unit: c, unitToken: l };\r\n if (\"number\" == typeof e) (a = e), (c = s || \"\");\r\n else {\r\n if (i) {\r\n const t = Object.keys(i);\r\n e = e.replace(\r\n new RegExp(\r\n `(^|,| |\\\\()(${t.join(\r\n \"|\"\r\n )})(?:-([0-9]+))?(?:\\\\/(\\\\.?[0-9]+))?(?=(\\\\)|\\\\}|,| |$))`,\r\n \"gm\"\r\n ),\r\n (e, t, s, r, n, a) => {\r\n const c = i[s][r || \"\"];\r\n if (c) {\r\n let e = \"#\" + c;\r\n if (n) {\r\n let t = +n;\r\n (t = isNaN(t) ? 1 : Math.min(Math.max(t, 0), 1)),\r\n (e += Math.round(255 * t)\r\n .toString(16)\r\n .toUpperCase()\r\n .padStart(2, \"0\"));\r\n }\r\n return t + e;\r\n }\r\n return e;\r\n }\r\n );\r\n }\r\n if (s) {\r\n const i = e.match(t);\r\n if (i) {\r\n if (e.includes(\"/\")) {\r\n const t = e.split(\"/\");\r\n return {\r\n value: (+t[0] / +t[1]) * 100 + \"%\",\r\n unit: c,\r\n unitToken: l,\r\n };\r\n }\r\n return (\r\n (a = +i[1]),\r\n (c = l = i[3] || \"\"),\r\n c || ((\"rem\" !== s && \"em\" !== s) || (a /= n), (c = s || \"\")),\r\n { value: a, unit: c, unitToken: l }\r\n );\r\n }\r\n }\r\n a = (\r\n -1 === e.indexOf(\"calc(\")\r\n ? e\r\n : (function (e) {\r\n const t = (e) =>\r\n \"+\" === e || \"-\" === e || \"*\" === e || \"/\" === e;\r\n let s,\r\n i = \"\",\r\n r = \"\",\r\n n = !1;\r\n function a() {\r\n (s = null), (r = \"\");\r\n }\r\n for (let c = 0; c < e.length; c++) {\r\n const l = e[c];\r\n if (\"(\" === l || \")\" === l)\r\n (n = \")\" === l), (i += r + l), a();\r\n else if (\",\" === l) (i += r + l + \" \"), a();\r\n else {\r\n switch (s) {\r\n case 1:\r\n break;\r\n case 2:\r\n if (t(l)) {\r\n (i += r + \" \" + l + \" \"), a();\r\n continue;\r\n }\r\n break;\r\n default:\r\n n && (r += \" \"),\r\n isNaN(+l) ? t(l) || (s = 1) : (s = 2);\r\n }\r\n r += l;\r\n }\r\n }\r\n return r && (i += r), i;\r\n })(e)\r\n ).replace(/\\$\\(((\\w|-)+)\\)/g, \"var(--$1)\");\r\n }\r\n return { value: a, unit: c, unitToken: l };\r\n }\r\n const n = [\":disabled\", \":active\", \":focus\", \":hover\"],\r\n a = { \"(\": \")\", \"'\": \"'\", \"{\": \"}\" };\r\n var c = s(642),\r\n l = s.n(c);\r\n const o = (...e) => e.join(\"-\"),\r\n d = \"border\",\r\n h = \"radius\",\r\n u = \"margin\",\r\n f = \"padding\",\r\n m = \"font\",\r\n p = \"currentColor\",\r\n x = \",\",\r\n b = \"flow\",\r\n g = \"template\",\r\n y = \"column\",\r\n k = \"columns\",\r\n v = \"gap\",\r\n w = \"row\",\r\n O = \"rows\",\r\n j = \"shadow\",\r\n S = \"user\",\r\n N = \"content\",\r\n $ = \"image\",\r\n I = \"stroke\",\r\n R = \"filter\",\r\n z = \"blend\",\r\n W = \"background\",\r\n A = \"repeat\",\r\n C = \"color\",\r\n E = \"scroll\",\r\n M = \"animation\",\r\n V = \"direction\",\r\n _ = \"mode\",\r\n L = \"behavior\",\r\n T = o(\"overscroll\", L),\r\n q = \"y\",\r\n P = \"x\",\r\n Z = \"height\",\r\n F = \"width\",\r\n Q = \"max\",\r\n U = \"min\",\r\n X = \"block\",\r\n Y = \"inline\",\r\n B = \"flex\",\r\n D = \"grid\",\r\n G = \"transition\",\r\n H = \"origin\",\r\n J = \"delay\",\r\n K = \"rotate\",\r\n ee = \"deg\",\r\n te = \"timing-function\",\r\n se = \"duration\",\r\n ie = \"display\",\r\n re = \"hidden\",\r\n ne = \"box\",\r\n ae = \"fill\",\r\n ce = \"clip\",\r\n le = \"none\",\r\n oe = \"text\",\r\n de = \"align\",\r\n he = \"transform\",\r\n ue = \"vertical\",\r\n fe = \"word\",\r\n me = \"space\",\r\n pe = \"decoration\",\r\n xe = \"break\",\r\n be = \"size\",\r\n ge = \"auto\",\r\n ye = \"line\",\r\n ke = \"object\",\r\n ve = \"position\",\r\n we = \"rem\",\r\n Oe = \"style\",\r\n je = \"smoothing\",\r\n Se = \"antialiased\",\r\n Ne = \"spacing\",\r\n $e = o(\"letter\", Ne),\r\n Ie = o(Q, F),\r\n Re = o(U, F),\r\n ze = o(Q, Z),\r\n We = o(U, Z),\r\n Ae = \"table\",\r\n Ce = \"group\",\r\n Ee = \"list\",\r\n Me = \"item\",\r\n Ve = \"span\",\r\n _e = \"justify\",\r\n Le = \"items\",\r\n Te = \"self\",\r\n qe = \"place\",\r\n Pe = \"type\",\r\n Ze = \"offset\",\r\n Fe = \"outline\",\r\n Qe = \"snap\",\r\n Ue = \"shape\",\r\n Xe = \"view\",\r\n Ye = \"area\",\r\n Be = \"start\",\r\n De = \"blur\",\r\n Ge = \"drop\",\r\n He = {\r\n full: \"100%\",\r\n fit: o(\"fit\", N),\r\n max: o(Q, N),\r\n min: o(U, N),\r\n };\r\n for (const e in l()) He[e] = l()[e] / 19.2 + \"rem\";\r\n const Je = s(989),\r\n Ke = \"matches\",\r\n et = \"semantics\",\r\n tt = \"symbol\",\r\n st = \"max-width\",\r\n it = \"min-width\",\r\n rt = \"motion\",\r\n nt = \"reduce\",\r\n at = \"reduced-motion\",\r\n ct = \"::scrollbar\",\r\n lt = \"::slider-thumb\",\r\n ot = \"::slider-runnable-track\",\r\n dt = \"::search\",\r\n ht = \"::meter\",\r\n ut = \"::resizer\",\r\n ft = \"::progress\",\r\n mt = \"px\",\r\n pt = [\"!\", \"*\", \">\", \"+\", \"~\", \":\", \"[\", \"@\", \"_\"],\r\n xt = [...pt, void 0, \".\"],\r\n bt = new RegExp(ct, \"g\"),\r\n gt = new RegExp(dt, \"g\"),\r\n yt = new RegExp(ht, \"g\"),\r\n kt = new RegExp(ot, \"g\"),\r\n vt = new RegExp(lt, \"g\"),\r\n wt = new RegExp(ut, \"g\"),\r\n Ot = new RegExp(ft, \"g\"),\r\n jt = /(\\\\'(?:.*?)[^\\\\]\\\\')(?=[*_>~+,)])|(\\[[^=]+='(?:.*?)[^\\\\]'\\])/,\r\n St = (e) =>\r\n e\r\n .split(jt)\r\n .map((e, t) => (t % 3 ? e : e.replace(/\\_/g, \" \")))\r\n .join(\"\"),\r\n Nt = [];\r\n class $t {\r\n constructor(t, s) {\r\n (this.name = t),\r\n (this.matching = s),\r\n (this.at = {}),\r\n (this.prioritySelectorIndex = -1);\r\n const i = this.constructor;\r\n if (void 0 === s && !(s = i.match(t))) return;\r\n let c,\r\n l,\r\n o,\r\n {\r\n id: d,\r\n semantics: h,\r\n unit: u,\r\n colors: f,\r\n key: m,\r\n values: p,\r\n colorful: x,\r\n breakpoints: b,\r\n mediaQueries: g,\r\n colorSchemes: y,\r\n rootSize: k,\r\n } = i,\r\n v = t;\r\n if ((x || (f = null), s.origin === et))\r\n (c = s.value),\r\n (o = v.slice(s.value.length)),\r\n (this.value = h[s.value]);\r\n else {\r\n if (s.origin === Ke)\r\n if (d === Ce) {\r\n let e = 0;\r\n for (\r\n ;\r\n e < v.length && (\"{\" !== v[e] || \"\\\\\" === v[e - 1]);\r\n e++\r\n );\r\n (l = v.slice(0, e)), (c = v.slice(e));\r\n } else {\r\n const e = v.indexOf(\":\");\r\n (this.prefix = v.slice(0, e + 1)),\r\n this.prefix.includes(\"(\")\r\n ? ((this.prefix = void 0), (c = v))\r\n : (c = v.slice(e + 1));\r\n }\r\n else s.origin === tt && ((this.symbol = v[0]), (c = v.slice(1)));\r\n let e,\r\n t = \"\",\r\n i = [],\r\n n = 0;\r\n !(function s(l, o, d = \"\") {\r\n let h,\r\n m = !1;\r\n for (\r\n l &&\r\n (\")\" === l && \"$\" === t.slice(-1)\r\n ? (h = t.length - 1)\r\n : \"'\" === l && (m = !0),\r\n (t += c[n++]));\r\n n < c.length;\r\n n++\r\n ) {\r\n const x = c[n];\r\n if (x === l) {\r\n if (((t += x), m)) {\r\n let e = 0;\r\n for (let s = t.length - 2; \"\\\\\" === t[s]; s--) e++;\r\n if (e % 2) continue;\r\n }\r\n void 0 !== h &&\r\n (t =\r\n t.slice(0, h) +\r\n t.slice(h).replace(/\\$\\((.*)\\)/, \"var(--$1)\")),\r\n o ||\r\n (m\r\n ? i.push(t)\r\n : ((e = r(t, u, f, p, k)), i.push(e.value + e.unit)),\r\n (d = \"\"),\r\n (t = \"\"));\r\n break;\r\n }\r\n if (!m && x in a) s(a[x], void 0 === o ? 0 : o + 1, d);\r\n else if (\"|\" !== x || \"}\" === l || (m && \"path\" !== d)) {\r\n if (!l) {\r\n if (\".\" === x) {\r\n if (isNaN(+c[n + 1])) break;\r\n \"-\" === c[n - 1] && (t += \"0\");\r\n } else {\r\n if (\",\" === x) {\r\n (e = r(t, u, f, p, k)),\r\n i.push(e.value + e.unit, \",\"),\r\n (t = \"\");\r\n continue;\r\n }\r\n if (\r\n (\"#\" === x &&\r\n (t || (i.length && \"|\" !== c[n - 1]))) ||\r\n pt.includes(x)\r\n )\r\n break;\r\n }\r\n d += x;\r\n }\r\n t += x;\r\n } else\r\n l\r\n ? (t += \" \")\r\n : ((e = r(t, u, f, p, k)),\r\n i.push(e.value + e.unit),\r\n (t = \"\"));\r\n }\r\n })(),\r\n t && ((e = r(t, u, f, p, k)), i.push(e.value + e.unit)),\r\n (o = c.slice(n)),\r\n 1 === i.length\r\n ? e\r\n ? ((this.value = e.value), (this.unit = e.unit))\r\n : ((this.value = i[0]), (this.unit = \"\"))\r\n : (this.value = i.reduce(\r\n (e, t, s) =>\r\n e +\r\n t +\r\n (\",\" === t || \",\" === i[s + 1] || s === i.length - 1\r\n ? \"\"\r\n : \" \"),\r\n \"\"\r\n ));\r\n }\r\n o.includes(ct) && (o = o.replace(bt, \"::-webkit-scrollbar\")),\r\n o.includes(dt) && (o = o.replace(gt, \"::-webkit-search\")),\r\n o.includes(lt) && (o = o.replace(vt, \"::-webkit-slider-thumb\")),\r\n o.includes(ot) &&\r\n (o = o.replace(kt, \"::-webkit-slider-runnable-track\")),\r\n o.includes(ht) && (o = o.replace(yt, \"::-webkit-meter\")),\r\n o.includes(ut) && (o = o.replace(wt, \"::-webkit-resizer\")),\r\n o.includes(ft) && (o = o.replace(Ot, \"::-webkit-progress\")),\r\n o.includes(\":first\") &&\r\n (o = o.replace(/:first(?![a-z-])/g, \":first-child\")),\r\n o.includes(\":last\") &&\r\n (o = o.replace(/:last(?![a-z-])/g, \":last-child\")),\r\n o.includes(\":even\") &&\r\n (o = o.replace(/:even(?![a-z-])/g, \":nth-child(2n)\")),\r\n o.includes(\":odd\") &&\r\n (o = o.replace(/:odd(?![a-z-])/g, \":nth-child(odd)\")),\r\n o.includes(\":nth(\") && (o = o.replace(/:nth\\(/g, \":nth-child(\")),\r\n this.parseValue && (this.value = this.parseValue),\r\n p && this.value in p && (this.value = p[this.value]),\r\n \"!\" === o[0] && ((this.important = !0), (o = o.slice(1))),\r\n (this.prefixSelector = l ? St(l) : \"\");\r\n const w = o.split(\"@\");\r\n let O = w[0];\r\n if (O) {\r\n (O = St(O)), (this.hasWhere = O.includes(\":where(\"));\r\n for (let e = 0; e < n.length; e++)\r\n if (O.includes(n[e])) {\r\n this.prioritySelectorIndex = e;\r\n break;\r\n }\r\n }\r\n this.suffixSelector = O;\r\n for (let e = 1; e < w.length; e++) {\r\n const t = w[e];\r\n if (t)\r\n if (y.includes(t)) this.colorScheme = t;\r\n else if (\"rtl\" === t || \"ltr\" === t) this.direction = t;\r\n else {\r\n let e, s;\r\n const i = t.indexOf(\"_\");\r\n if (-1 !== i) (e = t.slice(0, i)), (s = t.slice(i));\r\n else {\r\n const i = t.indexOf(\"(\");\r\n -1 !== i && ((e = t.slice(0, i)), (s = t.slice(i)));\r\n }\r\n if (!e) {\r\n e = \"media\";\r\n const i = [];\r\n this.media = { token: t, features: {} };\r\n const n = t.split(\"&\");\r\n for (const e of n)\r\n if (\r\n \"all\" === e ||\r\n \"print\" === e ||\r\n \"screen\" === e ||\r\n \"speech\" === e\r\n )\r\n this.media.type = e;\r\n else if (\"🖨\" === e) this.media.type = \"print\";\r\n else if (\"landscape\" === e || \"portrait\" === e)\r\n i.push(\"(orientation:\" + e + \")\");\r\n else if (e === rt || e === at)\r\n i.push(\r\n \"(prefers-reduced-motion:\" +\r\n (e === rt ? \"no-preference\" : nt) +\r\n \")\"\r\n );\r\n else if (e in g) i.push(g[e]);\r\n else {\r\n const t = { token: e };\r\n let s = \"\",\r\n n = \"\",\r\n a = 0;\r\n switch (\r\n (e.startsWith(\"<=\")\r\n ? ((n = \"<=\"), (s = st))\r\n : e.startsWith(\">=\") || b[e]\r\n ? ((n = \">=\"), (s = it))\r\n : e.startsWith(\">\")\r\n ? ((n = \">\"), (s = it), (a = 0.02))\r\n : e.startsWith(\"<\") &&\r\n ((n = \"<\"), (s = st), (a = -0.02)),\r\n s)\r\n ) {\r\n case st:\r\n case it:\r\n const c = n ? e.replace(n, \"\") : e,\r\n l = b[c];\r\n l\r\n ? Object.assign(t, r(l, mt))\r\n : Object.assign(t, r(c, mt)),\r\n t.unit === mt && (t.value += a),\r\n (this.media.features[s] = t),\r\n i.push(\"(\" + s + \":\" + (t.value + t.unit) + \")\");\r\n }\r\n }\r\n (s = \"\"),\r\n this.media.type && (s = this.media.type),\r\n i.length && (s += (s ? \" and \" : \"\") + i.join(\" and \"));\r\n }\r\n s &&\r\n (this.at[e] =\r\n (e in this.at ? this.at[e] + \" and \" : \"\") +\r\n s.replace(/\\_/g, \" \"));\r\n }\r\n }\r\n let j = \"\";\r\n this.colorScheme && (j += \".\" + this.colorScheme + \" \"),\r\n this.prefixSelector && (j += this.prefixSelector),\r\n this.direction && (j += \"[dir=\" + this.direction + \"] \"),\r\n (this.text =\r\n j +\r\n \".\" +\r\n CSS.escape(this.name) +\r\n this.suffixSelector +\r\n (this.name in $t.relations\r\n ? $t.relations[this.name]\r\n .map(\r\n (e) =>\r\n \", \" + j + \".\" + CSS.escape(e) + this.suffixSelector\r\n )\r\n .join(\"\")\r\n : \"\") +\r\n \"{\" +\r\n (\"object\" == typeof this.value\r\n ? Object.keys(this.value)\r\n .map((t) =>\r\n e(\r\n t,\r\n Object.assign(Object.assign({}, this), {\r\n unit: \"\",\r\n value: this.value[t],\r\n })\r\n )\r\n )\r\n .join(\";\")\r\n : this.props\r\n ? Object.keys(this.props)\r\n .map((t) => e(t, this.props[t]))\r\n .join(\";\")\r\n : e(m, this)) +\r\n \"}\");\r\n for (const e of Object.keys(this.at).sort((e, t) =>\r\n \"supports\" === t ? -1 : 1\r\n ))\r\n this.text = \"@\" + e + \" \" + this.at[e] + \"{\" + this.text + \"}\";\r\n void 0 === this.order && (this.order = 0);\r\n }\r\n static match(e) {\r\n if (this.matches && this.matches.test(e)) return { origin: Ke };\r\n if (this.semantics)\r\n for (const t in this.semantics)\r\n if (e === t || (e.startsWith(t) && xt.includes(e[t.length])))\r\n return { origin: et, value: t };\r\n return this.colorStarts &&\r\n (e.match(\r\n \"^\" + this.colorStarts + \"(#|(rgb|hsl)\\\\(.*\\\\))((?!\\\\|).)*$\"\r\n ) ||\r\n (this.colorNames.length &&\r\n e.match(\r\n \"^\" +\r\n this.colorStarts +\r\n \"(\" +\r\n this.colorNames.join(\"|\") +\r\n \")\"\r\n ) &&\r\n -1 === e.indexOf(\"|\")))\r\n ? { origin: Ke }\r\n : this.symbol && e.startsWith(this.symbol)\r\n ? { origin: tt }\r\n : this.key && e.startsWith(this.key + \":\")\r\n ? { origin: Ke }\r\n : void 0;\r\n }\r\n static extend(e, ...t) {\r\n if (!t.length) return this;\r\n const s = Object.assign({}, ...t),\r\n i = (e, t, i) => {\r\n var r;\r\n for (const n in s) {\r\n const a = s[n];\r\n null == a\r\n ? n in e && (null == i || i(n), delete e[n])\r\n : (e[n] =\r\n null !== (r = null == t ? void 0 : t(n, a)) &&\r\n void 0 !== r\r\n ? r\r\n : a);\r\n }\r\n };\r\n switch (e) {\r\n case \"classes\":\r\n i(\r\n this.classes,\r\n (e, t) => {\r\n if (e in this.classes)\r\n for (const t in this.relations) {\r\n const s = this.relations[t],\r\n i = s.indexOf(e);\r\n -1 !== i &&\r\n (s.length > 1\r\n ? s.splice(i, 1)\r\n : delete this.relations[t]);\r\n }\r\n const s = Array.isArray(t)\r\n ? t\r\n : t\r\n .replace(/(?:\\n(?:\\s*))+/g, \" \")\r\n .trim()\r\n .split(\" \");\r\n for (const t of s)\r\n t in this.relations\r\n ? this.relations[t].push(e)\r\n : (this.relations[t] = [e]);\r\n return s;\r\n },\r\n (e) => {\r\n for (const t of this.classes[e]) {\r\n const s = this.relations[t];\r\n s.length > 1\r\n ? s.splice(s.indexOf(e), 1)\r\n : delete this.relations[t];\r\n }\r\n }\r\n );\r\n break;\r\n case \"colors\":\r\n i(\r\n this.colors,\r\n (e, t) => (\r\n -1 === this.colorNames.indexOf(e) &&\r\n this.colorNames.push(e),\r\n Je(t)\r\n ),\r\n (e) => {\r\n const t = this.colorNames.indexOf(e);\r\n -1 !== t && this.colorNames.splice(t, 1);\r\n }\r\n );\r\n break;\r\n default:\r\n let t = this[e];\r\n t || (t = this[e] = {}), i(t);\r\n }\r\n return this;\r\n }\r\n }\r\n ($t.unit = \"rem\"),\r\n ($t.rootSize = 19.2),\r\n ($t.mediaQueries = {}),\r\n ($t.sheets = Nt),\r\n ($t.colors = {}),\r\n ($t.classes = {}),\r\n ($t.colorNames = []),\r\n ($t.relations = {}),\r\n ($t.colorSchemes = [\"dark\", \"light\"]),\r\n \"undefined\" != typeof window && (window.MasterStyle = $t);\r\n const It = [\",\", \".\", \"#\", \"[\", \"!\", \"*\", \">\", \"+\", \"~\", \":\", \"@\"],\r\n Rt = \"undefined\" != typeof document;\r\n let zt;\r\n Rt && ((zt = document.createElement(\"style\")), (zt.id = \"master-css\"));\r\n const Wt = \"undefined\" != typeof window,\r\n At = Wt ? window.MutationObserver : Object;\r\n class Ct extends At {\r\n constructor(e) {\r\n if (\r\n (super((e) => {\r\n const t = {},\r\n s = [],\r\n i = [],\r\n r = [],\r\n n = (e, t) => {\r\n t ? e.classList.forEach(c) : e.classList.forEach(a);\r\n const s = e.children;\r\n for (let e = 0; e < s.length; e++) {\r\n const r = s[e];\r\n r.classList && (i.push(r), n(r, t));\r\n }\r\n },\r\n a = (e) => {\r\n e in t ? t[e]++ : (t[e] = 1);\r\n },\r\n c = (e) => {\r\n e in t ? t[e]-- : e in this.countOfName && (t[e] = -1);\r\n },\r\n l = (e, t) => {\r\n for (let s = 0; s < e.length; s++) {\r\n const a = e[s];\r\n !a.classList ||\r\n i.includes(a) ||\r\n r.includes(a) ||\r\n (a.isConnected !== t\r\n ? (i.push(a), n(a, t))\r\n : r.push(a));\r\n }\r\n };\r\n for (let t = 0; t < e.length; t++) {\r\n const r = e[t],\r\n {\r\n addedNodes: n,\r\n removedNodes: a,\r\n type: c,\r\n target: o,\r\n oldValue: d,\r\n } = r;\r\n if (\"attributes\" === c) {\r\n if (s.find((e) => e.target === o)) continue;\r\n s.push(r);\r\n } else l(n, !1), (o.isConnected && i.includes(o)) || l(a, !0);\r\n }\r\n if (s.length || Object.keys(t).length) {\r\n for (const { oldValue: e, target: t } of s) {\r\n const s = i.includes(t),\r\n r = t.classList,\r\n n = e ? e.split(\" \") : [];\r\n if (s) {\r\n if (t.isConnected) continue;\r\n for (const e of n) r.contains(e) || c(e);\r\n } else if (t.isConnected) {\r\n r.forEach((e) => {\r\n n.includes(e) || a(e);\r\n });\r\n for (const e of n) r.contains(e) || c(e);\r\n }\r\n }\r\n for (const e in t) {\r\n const s = t[e],\r\n i = (this.countOfName[e] || 0) + s;\r\n 0 === i\r\n ? (delete this.countOfName[e], this.delete(e))\r\n : (e in this.countOfName || this.findAndInsert(e),\r\n (this.countOfName[e] = i));\r\n }\r\n }\r\n }),\r\n (this.container = e),\r\n (this.styles = []),\r\n (this.styleOfName = {}),\r\n (this.countOfName = {}),\r\n Rt)\r\n ) {\r\n if (e) {\r\n const t = e.querySelector('[id=\"master-css\"]');\r\n if (t) {\r\n this.element = t;\r\n const e = (t, s) => {\r\n if (t.selectorText) {\r\n const e = t.selectorText.split(\", \")[0].split(\" \");\r\n for (let i = 0; i < e.length; i++) {\r\n const r = e[i];\r\n if (\".\" === r[0]) {\r\n const e = r.slice(1);\r\n let i = \"\";\r\n for (let t = 0; t < e.length; t++) {\r\n const s = e[t],\r\n r = e[t + 1];\r\n if (\"\\\\\" === s) {\r\n if ((t++, \"\\\\\" !== r)) {\r\n i += r;\r\n continue;\r\n }\r\n } else if (It.includes(s)) break;\r\n i += s;\r\n }\r\n if (!(i in this.styleOfName) && !(i in $t.classes)) {\r\n const e = Ct.findAndNew(i);\r\n e &&\r\n ((e.cssRule = null != s ? s : t),\r\n this.styles.push(e),\r\n (this.styleOfName[e.name] = e));\r\n }\r\n }\r\n }\r\n } else if (t.cssRules)\r\n for (let i = 0; i < t.cssRules.length; i++)\r\n e(t.cssRules[i], null != s ? s : t.cssRules[i]);\r\n };\r\n e(t.sheet, void 0);\r\n } else\r\n (this.element = zt.cloneNode()),\r\n null == e || e.prepend(this.element);\r\n }\r\n Nt.push(this);\r\n }\r\n }\r\n observe(e, t = { subtree: !0, childList: !0 }) {\r\n const s = (e) => {\r\n e.forEach((e) => {\r\n e in this.countOfName\r\n ? this.countOfName[e]++\r\n : ((this.countOfName[e] = 1), this.findAndInsert(e));\r\n });\r\n };\r\n return (\r\n s(e.classList),\r\n t.subtree &&\r\n e.querySelectorAll(\"[class]\").forEach((e) => s(e.classList)),\r\n super.observe(\r\n e,\r\n Object.assign(Object.assign({}, t), {\r\n attributes: !0,\r\n attributeOldValue: !0,\r\n attributeFilter: [\"class\"],\r\n })\r\n ),\r\n this\r\n );\r\n }\r\n disconnect() {\r\n super.disconnect(),\r\n (this.styleOfName = {}),\r\n (this.countOfName = {}),\r\n (this.styles.length = 0);\r\n const e = this.element.sheet;\r\n if (e)\r\n for (let t = e.cssRules.length - 1; t >= 0; t--) e.deleteRule(t);\r\n }\r\n static findAndNew(e) {\r\n const t = (e) => {\r\n for (const t of this.Styles) {\r\n const s = t.match(e);\r\n if (s) return new t(e, s);\r\n }\r\n };\r\n return e in $t.classes\r\n ? $t.classes[e].map(t).filter((e) => e)\r\n : t(e);\r\n }\r\n static find(e) {\r\n const t = (e) => {\r\n for (const t of this.Styles) {\r\n if (t.match(e)) return t;\r\n }\r\n };\r\n return e in $t.classes\r\n ? $t.classes[e].map(t).filter((e) => e)\r\n : t(e);\r\n }\r\n static refresh() {\r\n for (const e of Nt) e.refresh();\r\n }\r\n refresh() {\r\n if (!this.element) return;\r\n const e = zt.cloneNode();\r\n this.element.replaceWith(e),\r\n (this.element = e),\r\n (this.styles.length = 0),\r\n (this.styleOfName = {});\r\n for (const e in this.countOfName) this.findAndInsert(e);\r\n }\r\n destroy() {\r\n this.disconnect(),\r\n Nt.splice(Nt.indexOf(this), 1),\r\n this.element.remove();\r\n }\r\n insert(e) {\r\n if (this.styleOfName[e.name]) return;\r\n const t = e.text;\r\n let s;\r\n const i = this.styles.length - 1,\r\n r = e.media,\r\n n = e.order,\r\n a = e.prioritySelectorIndex,\r\n c = e.hasWhere,\r\n l = (e, t, s, i) => {\r\n let r,\r\n l,\r\n o = 0;\r\n t && (o = e.findIndex(t)),\r\n s && (l = e.findIndex(s)),\r\n -1 === o && (o = e.length),\r\n (void 0 !== l && -1 !== l) || (l = e.length),\r\n (r = e.slice(o, l));\r\n for (let e = 0; e < r.length; e++) {\r\n const t = r[e];\r\n if (\r\n !(-1 === t.prioritySelectorIndex || (i && i(t))) &&\r\n (t.prioritySelectorIndex < a ||\r\n (t.prioritySelectorIndex === a &&\r\n ((c && !t.hasWhere) || t.order >= n)))\r\n )\r\n return o + e;\r\n }\r\n return o + r.length;\r\n };\r\n if (r) {\r\n const e = this.styles.findIndex((e) => e.media);\r\n if (-1 !== e) {\r\n const t = r.features[\"max-width\"],\r\n o = r.features[\"min-width\"];\r\n if (t && o) {\r\n const r = t.value - o.value;\r\n for (let t = i; t >= e; t--) {\r\n s = t;\r\n const i = this.styles[t],\r\n n = i.media,\r\n o = n.features[\"max-width\"],\r\n d = n.features[\"min-width\"];\r\n if (!o || !d) {\r\n s++;\r\n break;\r\n }\r\n const h = o.value - d.value;\r\n if (h === r) {\r\n if (c !== i.hasWhere) continue;\r\n if (-1 !== a) {\r\n const i = [this.styles[t]];\r\n for (let s = t - 1; s >= e; s--) {\r\n const e = this.styles[s];\r\n if (e.hasWhere !== c) break;\r\n const t = e.media,\r\n r = t.features[\"max-width\"],\r\n n = t.features[\"min-width\"];\r\n if (!r || !n || r.value - n.value !== h) break;\r\n i.unshift(this.styles[s]);\r\n }\r\n s = l(\r\n this.styles,\r\n (e) =>\r\n e.media &&\r\n -1 !== e.prioritySelectorIndex &&\r\n e.media.features[\"min-width\"] &&\r\n e.media.features[\"max-width\"]\r\n );\r\n }\r\n break;\r\n }\r\n if (h > r) break;\r\n }\r\n } else if (o)\r\n for (let t = e; t <= i; t++) {\r\n s = t;\r\n const e = this.styles[t],\r\n r = e.media,\r\n d = r.features[\"max-width\"],\r\n h = r.features[\"min-width\"];\r\n if (d) {\r\n if (h) break;\r\n continue;\r\n }\r\n const u = null == h ? void 0 : h.value;\r\n if (u === o.value) {\r\n if (!c && e.hasWhere) {\r\n s++;\r\n continue;\r\n }\r\n if (-1 !== a)\r\n s = l(\r\n this.styles,\r\n (e) => e.media,\r\n (e) =>\r\n e.media &&\r\n -1 !== e.prioritySelectorIndex &&\r\n e.media.features[\"min-width\"] &&\r\n e.media.features[\"max-width\"],\r\n (e) =>\r\n !e.media.features[\"min-width\"] &&\r\n !e.media.features[\"max-width\"]\r\n );\r\n else\r\n for (let e = t; e <= i; e++) {\r\n const t = this.styles[e],\r\n i = t.media,\r\n r = i.features[\"min-width\"];\r\n if (!i.features[\"max-width\"]) {\r\n if (\r\n t.hasWhere !== c ||\r\n r.value !== u ||\r\n t.order >= n\r\n )\r\n break;\r\n s = e + 1;\r\n }\r\n }\r\n break;\r\n }\r\n if (u > o.value) break;\r\n s++;\r\n }\r\n else if (t)\r\n for (let r = i; r >= e; r--) {\r\n s = r;\r\n const i = this.styles[r],\r\n o = i.media,\r\n d = o.features[\"max-width\"];\r\n if (o.features[\"min-width\"]) continue;\r\n const h = null == d ? void 0 : d.value;\r\n if (!h || h > t.value) {\r\n s++;\r\n break;\r\n }\r\n if (h === t.value) {\r\n if (c && !i.hasWhere) continue;\r\n if (-1 !== a)\r\n s = l(\r\n this.styles,\r\n (e) => e.media,\r\n (e) =>\r\n e.media &&\r\n -1 !== e.prioritySelectorIndex &&\r\n e.media.features[\"min-width\"] &&\r\n e.media.features[\"max-width\"],\r\n (e) =>\r\n !e.media.features[\"min-width\"] &&\r\n !e.media.features[\"max-width\"]\r\n );\r\n else {\r\n const t = [this.styles[r]];\r\n for (let s = r - 1; s >= e; s--) {\r\n const e = this.styles[s],\r\n i = e.media,\r\n r = i.features[\"min-width\"],\r\n n = i.features[\"max-width\"];\r\n if (!(r || (n && n.value === h && e.hasWhere === c)))\r\n break;\r\n t.unshift(e);\r\n }\r\n for (let e = 0; e < t.length; e++) {\r\n const i = t[e];\r\n if (!i.media.features[\"min-width\"]) {\r\n if (i.order >= n) break;\r\n s = r - t.length + 2 + e;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n if (void 0 === s)\r\n if (-1 === e) s = i + 1;\r\n else if (-1 !== a)\r\n s =\r\n e +\r\n l(\r\n this.styles.slice(e),\r\n void 0,\r\n (e) =>\r\n e.media.features[\"max-width\"] ||\r\n e.media.features[\"min-width\"]\r\n );\r\n else if (c) {\r\n let t = e;\r\n for (; t < this.styles.length; t++) {\r\n const e = this.styles[t];\r\n if (\r\n -1 !== e.prioritySelectorIndex ||\r\n !e.hasWhere ||\r\n e.order >= n\r\n ) {\r\n s = t;\r\n break;\r\n }\r\n }\r\n void 0 === s && (s = t);\r\n } else\r\n for (let t = e; t <= i; t++) {\r\n s = t;\r\n const e = this.styles[t],\r\n i = e.media;\r\n if (\r\n -1 !== e.prioritySelectorIndex ||\r\n i.features[\"max-width\"] ||\r\n i.features[\"min-width\"]\r\n )\r\n break;\r\n if (e.hasWhere) s++;\r\n else if (e.order >= n) break;\r\n }\r\n } else if (-1 === a)\r\n if (c)\r\n (s = this.styles.findIndex(\r\n (e) =>\r\n !e.hasWhere ||\r\n e.media ||\r\n -1 !== e.prioritySelectorIndex ||\r\n e.order >= n\r\n )),\r\n -1 === s && (s = i + 1);\r\n else {\r\n let e = 0;\r\n for (; e < this.styles.length; e++) {\r\n const t = this.styles[e];\r\n if (\r\n t.media ||\r\n (!t.hasWhere &&\r\n (t.order >= n || -1 !== t.prioritySelectorIndex))\r\n ) {\r\n s = e;\r\n break;\r\n }\r\n }\r\n void 0 === s && (s = e);\r\n }\r\n else s = l(this.styles, void 0, (e) => e.media);\r\n try {\r\n if (this.element) {\r\n const i = this.element.sheet;\r\n i.insertRule(t, s), (e.cssRule = i.cssRules[s]);\r\n }\r\n this.styles.splice(s, 0, e), (this.styleOfName[e.name] = e);\r\n } catch (e) {}\r\n }\r\n delete(e) {\r\n const t = this.element.sheet,\r\n s = (e) => {\r\n const s = this.styleOfName[e];\r\n if (\r\n !(\r\n !(null == s ? void 0 : s.cssRule) ||\r\n (e in $t.relations &&\r\n $t.relations[e].some((e) => e in this.countOfName))\r\n )\r\n )\r\n for (let e = 0; e < t.cssRules.length; e++) {\r\n t.cssRules[e] === s.cssRule &&\r\n (t.deleteRule(e),\r\n this.styles.splice(e, 1),\r\n delete this.styleOfName[s.name]);\r\n }\r\n };\r\n if (e in $t.classes)\r\n for (const t of $t.classes[e]) t in this.countOfName || s(t);\r\n else s(e);\r\n }\r\n findAndInsert(e) {\r\n const t = Ct.findAndNew(e);\r\n if (Array.isArray(t)) for (const e of t) this.insert(e);\r\n else t && this.insert(t);\r\n }\r\n }\r\n (Ct.Styles = []), Wt && (window.MasterStyleSheet = Ct);\r\n class Et extends $t {}\r\n (Et.matches =\r\n /^f(ont)?:(thin|extralight|light|regular|medium|semibold|bold|bolder|extrabold|heavy)(?!\\|)/),\r\n (Et.key = o(m, \"weight\")),\r\n (Et.unit = \"\"),\r\n (Et.values = {\r\n thin: 100,\r\n extralight: 200,\r\n light: 300,\r\n regular: 400,\r\n medium: 500,\r\n semibold: 600,\r\n bold: 700,\r\n extrabold: 800,\r\n heavy: 900,\r\n });\r\n const Mt = \"var(--font-\";\r\n class Vt extends $t {}\r\n (Vt.matches = /^f(ont)?:(mono|sans|serif)(?!\\|)/),\r\n (Vt.key = o(m, \"family\")),\r\n (Vt.values = {\r\n mono: Mt + \"mono)\",\r\n sans: Mt + \"sans)\",\r\n serif: Mt + \"serif)\",\r\n });\r\n class _t extends $t {}\r\n (_t.matches = /^f(ont)?:([0-9]|(max|min|calc|clamp)\\(.*\\))((?!\\|).)*$/),\r\n (_t.key = o(m, be));\r\n const Lt = \"top\",\r\n Tt = \"bottom\",\r\n qt = \"left\",\r\n Pt = \"right\",\r\n Zt = \"l\",\r\n Ft = \"r\",\r\n Qt = \"t\",\r\n Ut = \"b\",\r\n Xt = \"x\",\r\n Yt = \"y\";\r\n class Bt extends $t {\r\n get props() {\r\n const e = \"m\" === this.prefix[0] ? u : f,\r\n t = o(e, qt),\r\n s = o(e, Pt),\r\n i = o(e, Lt),\r\n r = o(e, Tt);\r\n switch (this.prefix[1]) {\r\n case Xt:\r\n return { [t]: this, [s]: this };\r\n case Yt:\r\n return { [i]: this, [r]: this };\r\n case Zt:\r\n return { [t]: this };\r\n case Ft:\r\n return { [s]: this };\r\n case Qt:\r\n return { [i]: this };\r\n case Ut:\r\n return { [r]: this };\r\n default:\r\n return { [e]: this };\r\n }\r\n }\r\n get order() {\r\n return \"p:\" === this.prefix || \"m:\" === this.prefix ? -1 : 0;\r\n }\r\n }\r\n (Bt.id = \"spacing\"), (Bt.matches = /^[pm][xytblr]?:./);\r\n class Dt extends $t {}\r\n (Dt.matches = /^w:./), (Dt.key = F), (Dt.values = He);\r\n class Gt extends $t {}\r\n (Gt.matches = /^h:./), (Gt.key = Z), (Gt.values = He);\r\n class Ht extends $t {}\r\n (Ht.matches = /^min-w:./), (Ht.key = Re), (Ht.values = He);\r\n class Jt extends $t {}\r\n (Jt.matches = /^min-h:./), (Jt.key = We), (Jt.values = He);\r\n class Kt extends $t {}\r\n (Kt.matches = /^ls:./), (Kt.key = $e), (Kt.unit = \"em\");\r\n const es = o(\"subpixel\", Se),\r\n ts = o(\"-webkit-font\", je),\r\n ss = o(\"-moz-osxfont\", je);\r\n class is extends $t {\r\n get props() {\r\n const e = {};\r\n switch (this.value) {\r\n case es:\r\n e[ts] = e[ss] = Object.assign(Object.assign({}, this), {\r\n value: ge,\r\n });\r\n break;\r\n case Se:\r\n (e[ts] = Object.assign(Object.assign({}, this), { value: Se })),\r\n (e[ss] = Object.assign(Object.assign({}, this), {\r\n value: \"grayscale\",\r\n }));\r\n }\r\n return e;\r\n }\r\n }\r\n (is.id = \"fontSmoothing\"),\r\n (is.matches = /^f(ont)?:(antialiased|subpixel-antialiased)(?!\\|)/),\r\n (is.unit = \"\");\r\n class rs extends $t {}\r\n (rs.matches = /^f(ont)?:(normal|italic|oblique)(?!\\|)/),\r\n (rs.key = o(m, Oe)),\r\n (rs.unit = \"deg\"),\r\n (rs.semantics = { italic: \"italic\", oblique: \"oblique\" });\r\n class ns extends $t {}\r\n (ns.matches =\r\n /^f(ont)?:(ordinal|slashed-zero|lining-nums|oldstyle-nums|proportional-nums|tabular-nums|diagonal-fractions|stacked-fractions)(?!\\|)/),\r\n (ns.key = o(m, \"variant\", \"numeric\"));\r\n class as extends $t {}\r\n (as.matches = /^lh:./), (as.key = o(ye, Z)), (as.unit = \"\");\r\n class cs extends $t {}\r\n (cs.matches = /^(object|obj):(contain|cover|fill|scale-down)/),\r\n (cs.key = o(ke, \"fit\"));\r\n class ls extends $t {}\r\n (ls.matches = /^(object|obj):(top|bottom|right|left|center)/),\r\n (ls.key = o(ke, ve));\r\n class os extends $t {}\r\n (os.matches = /^t(ext)?:(justify|center|left|right|start|end)(?!\\|)/),\r\n (os.key = o(oe, de));\r\n class ds extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n (ds.matches = /^t(ext)?:(underline|line-through|overline)/),\r\n (ds.key = o(oe, pe)),\r\n (ds.colorful = !0);\r\n class hs extends $t {}\r\n (hs.matches = /^t(ext)?:(uppercase|lowercase|capitalize)(?!\\|)/),\r\n (hs.key = o(oe, he)),\r\n (hs.semantics = {\r\n uppercase: \"uppercase\",\r\n lowercase: \"lowercase\",\r\n capitalize: \"capitalize\",\r\n });\r\n class us extends $t {}\r\n (us.matches = /^(?:v|vertical):./), (us.key = o(ue, de));\r\n class fs extends $t {\r\n get props() {\r\n return {\r\n overflow: Object.assign(Object.assign({}, this), {\r\n value: re,\r\n }),\r\n display: Object.assign(Object.assign({}, this), {\r\n value: \"-webkit-box\",\r\n }),\r\n \"overflow-wrap\": Object.assign(Object.assign({}, this), {\r\n value: o(xe, fe),\r\n }),\r\n \"text-overflow\": Object.assign(Object.assign({}, this), {\r\n value: \"ellipsis\",\r\n }),\r\n \"-webkit-box-orient\": Object.assign(Object.assign({}, this), {\r\n value: ue,\r\n }),\r\n \"-webkit-line-clamp\": this,\r\n };\r\n }\r\n }\r\n (fs.id = \"lines\"), (fs.matches = /^lines:./), (fs.unit = \"\");\r\n class ms extends $t {}\r\n (ms.matches = /^transform:((top|bottom|right|left|center)|\\d)/),\r\n (ms.key = o(he, H)),\r\n (ms.unit = \"px\");\r\n class ps extends $t {}\r\n (ps.matches = /^transform:(flat|preserve-3d)(?!\\|)/),\r\n (ps.key = o(he, Oe));\r\n class xs extends $t {}\r\n (xs.matches = /^transform:(content|border|fill|stroke|view)(?!\\|)/),\r\n (xs.key = o(he, ne)),\r\n (xs.values = {\r\n content: o(N, ne),\r\n border: o(d, ne),\r\n fill: o(ae, ne),\r\n stroke: o(I, ne),\r\n view: o(Xe, ne),\r\n });\r\n class bs extends $t {\r\n get parseValue() {\r\n return this.value.replace(\r\n /(translate|scale|skew|rotate|perspective|matrix)(3d|[XYZ])?\\((.*?)\\)/g,\r\n (e, t, s, i) => {\r\n let r, n;\r\n switch (t) {\r\n case \"translate\":\r\n r = we;\r\n break;\r\n case \"skew\":\r\n r = ee;\r\n break;\r\n case K:\r\n \"3d\" === s && (n = !0), (r = ee);\r\n break;\r\n default:\r\n return e;\r\n }\r\n const a = i.split(\",\");\r\n return e.replace(\r\n i,\r\n a\r\n .map((e, t) => {\r\n if (n && a.length - 1 !== t) return e;\r\n return Number.isNaN(+e) ? e : e / (r === we ? 16 : 1) + r;\r\n })\r\n .join(\",\")\r\n );\r\n }\r\n );\r\n }\r\n }\r\n (bs.matches =\r\n /^(translate|scale|skew|rotate|perspective|matrix)(3d|[XYZ])?\\(/),\r\n (bs.key = he),\r\n (bs.unit = \"\");\r\n class gs extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n (gs.symbol = \"~\"), (gs.key = G);\r\n class ys extends $t {}\r\n (ys.matches = /^~delay:./), (ys.key = o(G, J)), (ys.unit = \"ms\");\r\n class ks extends $t {}\r\n (ks.matches = /^~duration:./), (ks.key = o(G, se)), (ks.unit = \"ms\");\r\n class vs extends $t {}\r\n (vs.matches = /^~property:./), (vs.key = o(G, \"property\"));\r\n class ws extends $t {}\r\n (ws.matches = /^~easing:./), (ws.key = o(G, te));\r\n class Os extends $t {}\r\n (Os.matches = /^max-h:./), (Os.key = ze), (Os.values = He);\r\n class js extends $t {}\r\n (js.matches = /^max-w:./), (js.key = Ie), (js.values = He);\r\n class Ss extends $t {}\r\n (Ss.matches = /^d:./),\r\n (Ss.key = ie),\r\n (Ss.semantics = {\r\n hidden: le,\r\n hide: le,\r\n block: X,\r\n table: Ae,\r\n flex: B,\r\n grid: D,\r\n contents: \"contents\",\r\n inline: Y,\r\n \"inline-block\": o(Y, X),\r\n \"inline-flex\": o(Y, B),\r\n \"inline-grid\": o(Y, D),\r\n \"inline-table\": o(Y, Ae),\r\n \"table-cell\": o(Ae, \"cell\"),\r\n \"table-caption\": o(Ae, \"caption\"),\r\n \"flow-root\": o(b, \"root\"),\r\n \"list-item\": o(Ee, Me),\r\n \"table-row\": o(Ae, w),\r\n \"table-column\": o(Ae, y),\r\n \"table-row-group\": o(Ae, w, Ce),\r\n \"table-column-group\": o(Ae, y, Ce),\r\n \"table-header-group\": o(Ae, \"header\", Ce),\r\n \"table-footer-group\": o(Ae, \"footer\", Ce),\r\n });\r\n class Ns extends $t {}\r\n (Ns.matches = /^box:(content|border)(?!\\|)/),\r\n (Ns.key = o(ne, \"sizing\")),\r\n (Ns.values = { content: o(N, ne), border: o(d, ne) });\r\n class $s extends $t {}\r\n ($s.key = \"opacity\"), ($s.unit = \"\");\r\n class Is extends $t {}\r\n (Is.key = \"visibility\"),\r\n (Is.semantics = { visible: \"visible\", invisible: re });\r\n class Rs extends $t {}\r\n Rs.key = \"clear\";\r\n class zs extends $t {}\r\n zs.key = \"float\";\r\n class Ws extends $t {}\r\n (Ws.key = \"isolation\"), (Ws.semantics = { isolate: \"isolate\" });\r\n class As extends $t {\r\n get props() {\r\n if (this.prefix)\r\n switch (this.prefix.slice(-2, -1)) {\r\n case P:\r\n return { \"overflow-x\": this };\r\n case q:\r\n return { \"overflow-y\": this };\r\n }\r\n return { overflow: this };\r\n }\r\n get order() {\r\n if (this.prefix)\r\n switch (this.prefix.slice(-2, -1)) {\r\n case P:\r\n case q:\r\n return 0;\r\n }\r\n return -1;\r\n }\r\n }\r\n (As.id = \"overflow\"),\r\n (As.matches =\r\n /^overflow(-x|-y)?:(?:visible|overlay|hidden|scroll|auto|clip|inherit|initial|revert|revert-layer|unset|\\$|var)/),\r\n (As.semantics = { overflow: \"visible\" });\r\n class Cs extends $t {\r\n get props() {\r\n switch (this.prefix.slice(-2, -1)) {\r\n case P:\r\n return { [o(T, P)]: this };\r\n case q:\r\n return { [o(T, q)]: this };\r\n default:\r\n return { [T]: this };\r\n }\r\n }\r\n }\r\n (Cs.id = \"overscrollBehavior\"),\r\n (Cs.matches = /^overscroll-behavior(?:-[xy])?:/);\r\n class Es extends $t {}\r\n (Es.matches = /^z:./), (Es.key = \"z-index\"), (Es.unit = \"\");\r\n class Ms extends $t {}\r\n (Ms.matches = /^\\@delay:./), (Ms.key = o(M, J)), (Ms.unit = \"ms\");\r\n class Vs extends $t {}\r\n (Vs.matches = /^\\@direction:./), (Vs.key = o(M, V));\r\n class _s extends $t {}\r\n (_s.matches = /^\\@fill-mode:./), (_s.key = o(M, ae, _));\r\n class Ls extends $t {}\r\n (Ls.matches = /^\\@iteration-count:./),\r\n (Ls.key = o(M, \"iteration\", \"count\")),\r\n (Ls.unit = \"\");\r\n class Ts extends $t {}\r\n (Ts.matches = /^\\@name:./), (Ts.key = o(M, \"name\"));\r\n class qs extends $t {}\r\n (qs.matches = /^\\@play-state:./), (qs.key = o(M, \"play-state\"));\r\n class Ps extends $t {}\r\n (Ps.matches = /^\\@easing:./), (Ps.key = o(M, te));\r\n class Zs extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n (Zs.symbol = \"@\"), (Zs.key = M), (Zs.unit = \"\");\r\n function Fs(e, t, s = \"\") {\r\n s && (s = \"-\" + s);\r\n const i = \"border-left\" + s,\r\n r = \"border-right\" + s,\r\n n = \"border-top\" + s,\r\n a = \"border-bottom\" + s;\r\n switch (/^b(order)?-?(.)?/.exec(e)[2]) {\r\n case Xt:\r\n return { [i]: t, [r]: t };\r\n case Yt:\r\n return { [n]: t, [a]: t };\r\n case Zt:\r\n return { [i]: t };\r\n case Ft:\r\n return { [r]: t };\r\n case Qt:\r\n return { [n]: t };\r\n case Ut:\r\n return { [a]: t };\r\n default:\r\n return { [d + s]: t };\r\n }\r\n }\r\n class Qs extends $t {\r\n get props() {\r\n return Fs(this.prefix, this, C);\r\n }\r\n get order() {\r\n return this.prefix === o(d, C) + \":\" ||\r\n \"b:\" === this.prefix ||\r\n \"border:\" === this.prefix\r\n ? -1\r\n : 0;\r\n }\r\n }\r\n (Qs.id = \"borderColor\"),\r\n (Qs.matches = /^border(-(left|right|top|bottom))?-color:./),\r\n (Qs.colorStarts = \"b([xytblr]|(order(-(left|right|top|bottom))?))?:\"),\r\n (Qs.colorful = !0),\r\n (Qs.values = { current: p });\r\n const Us = o(d, Lt, qt, h),\r\n Xs = o(d, Lt, Pt, h),\r\n Ys = o(d, Tt, qt, h),\r\n Bs = o(d, Tt, Pt, h),\r\n Ds = o(d, h),\r\n Gs = [Us, Xs, Ys, Bs];\r\n class Hs extends $t {\r\n get props() {\r\n var e;\r\n if (this.prefix) {\r\n let e = \"\";\r\n const t = this.prefix.split(\"-\");\r\n if (t.length > 1)\r\n for (let s = 1; s < t.length - 1; s++) e += t[s][0];\r\n else e = this.prefix.slice(1, -1);\r\n switch (e) {\r\n case Qt:\r\n return { [Us]: this, [Xs]: this };\r\n case \"tl\":\r\n case \"lt\":\r\n return { [Us]: this };\r\n case \"rt\":\r\n case \"tr\":\r\n return { [Xs]: this };\r\n case Ut:\r\n return { [Ys]: this, [Bs]: this };\r\n case \"bl\":\r\n case \"lb\":\r\n return { [Ys]: this };\r\n case \"br\":\r\n case \"rb\":\r\n return { [Bs]: this };\r\n case Zt:\r\n return { [Us]: this, [Ys]: this };\r\n case Ft:\r\n return { [Xs]: this, [Bs]: this };\r\n default:\r\n return { [Ds]: this };\r\n }\r\n }\r\n const t =\r\n null === (e = this.prefix) || void 0 === e\r\n ? void 0\r\n : e.slice(0, -1);\r\n return { [Gs.includes(t) ? t : Ds]: this };\r\n }\r\n get order() {\r\n return this.prefix === o(d, h) + \":\" || \"r:\" === this.prefix\r\n ? -1\r\n : 0;\r\n }\r\n }\r\n (Hs.id = \"borderRadius\"),\r\n (Hs.matches =\r\n /^((r[tblr]?[tblr]?|border(-(top|bottom)-(left|right))?-radius):.)/),\r\n (Hs.semantics = { rounded: \"1e9em\", round: \"50%\" });\r\n class Js extends $t {\r\n get props() {\r\n return Fs(this.prefix, this, Oe);\r\n }\r\n get order() {\r\n return this.prefix === o(d, Oe) + \":\" ||\r\n \"b:\" === this.prefix ||\r\n \"border:\" === this.prefix\r\n ? -1\r\n : 0;\r\n }\r\n }\r\n (Js.id = \"borderStyle\"),\r\n (Js.matches =\r\n /^(border(-(left|right|top|bottom))?-style:.|b([xytblr]|order(-(left|right|top|bottom))?)?:(none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset)(?!\\|))/);\r\n class Ks extends $t {\r\n get props() {\r\n return Fs(this.prefix, this, F);\r\n }\r\n get order() {\r\n return this.prefix === o(d, F) + \":\" ||\r\n \"b:\" === this.prefix ||\r\n \"border:\" === this.prefix\r\n ? -1\r\n : 0;\r\n }\r\n }\r\n (Ks.id = \"borderWidth\"),\r\n (Ks.matches =\r\n /^(border(-(left|right|top|bottom))?-width:.|b([xytblr]|order(-(left|right|top|bottom))?)?:(([0-9]|(max|min|calc|clamp)\\(.*\\))|(max|min|calc|clamp)\\(.*\\))((?!\\|).)*$)/);\r\n class ei extends $t {\r\n get props() {\r\n return Fs(this.prefix, this);\r\n }\r\n get order() {\r\n return \"border:\" === this.prefix || \"b:\" === this.prefix ? -2 : -1;\r\n }\r\n }\r\n (ei.id = \"border\"),\r\n (ei.matches = /^b([xytblr]?|order(-(left|right|top|bottom))?):./),\r\n (ei.colorful = !0);\r\n class ti extends $t {}\r\n (ti.matches = /^(bg|background):(fixed|local|scroll)(?!\\|)/),\r\n (ti.key = o(W, \"attachment\"));\r\n class si extends $t {}\r\n si.key = o(W, z, _);\r\n class ii extends $t {\r\n get props() {\r\n return {\r\n \"-webkit-background-clip\": this,\r\n \"background-clip\": this,\r\n };\r\n }\r\n }\r\n (ii.matches = /^(bg|background):text(?!\\|)/),\r\n (ii.key = o(W, ce)),\r\n (ii.values = {\r\n content: o(N, ne),\r\n border: o(d, ne),\r\n padding: o(f, ne),\r\n });\r\n class ri extends $t {}\r\n (ri.matches = /^(bg|background):transparent(?!\\|)/),\r\n (ri.colorStarts = \"(bg|background):\"),\r\n (ri.key = o(W, C)),\r\n (ri.unit = \"\"),\r\n (ri.colorful = !0),\r\n (ri.values = { current: p });\r\n class ni extends $t {}\r\n (ni.matches = /^(bg|background):(content|border|padding)(?!\\|)/),\r\n (ni.key = o(W, H)),\r\n (ni.values = {\r\n content: o(N, ne),\r\n border: o(d, ne),\r\n padding: o(f, ne),\r\n });\r\n class ai extends $t {}\r\n (ai.matches = /^(bg|background):(top|bottom|right|left|center)(?!\\|)/),\r\n (ai.key = o(W, ve)),\r\n (ai.unit = \"px\");\r\n class ci extends $t {}\r\n (ci.matches =\r\n /^(bg|background):(space|round|repeat|no-repeat|repeat-x|repeat-y)(?![;a-zA-Z])/),\r\n (ci.key = o(W, A));\r\n class li extends $t {}\r\n (li.matches =\r\n /^(bg|background):((auto|cover|contain)(?!\\|)|\\.?\\d((?!\\|).)*$)/),\r\n (li.key = o(W, be));\r\n class oi extends $t {}\r\n (oi.matches =\r\n /^(bg|background):(url|linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient|conic-gradient)\\(.*\\)((?!\\|).)*$/),\r\n (oi.key = o(W, $)),\r\n (oi.colorful = !0);\r\n class di extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n (di.matches = /^bg:./), (di.key = W), (di.colorful = !0);\r\n class hi extends $t {}\r\n (hi.matches = /^blend:./), (hi.key = o(\"mix\", z, _));\r\n class ui extends $t {}\r\n (ui.key = ve),\r\n (ui.values = { abs: \"absolute\", rel: \"relative\" }),\r\n (ui.semantics = {\r\n static: \"static\",\r\n fixed: \"fixed\",\r\n abs: \"absolute\",\r\n rel: \"relative\",\r\n sticky: \"sticky\",\r\n });\r\n class fi extends $t {\r\n get props() {\r\n const e = this.prefix.slice(0, -1);\r\n switch (e) {\r\n case Lt:\r\n case qt:\r\n case Pt:\r\n case Tt:\r\n return { [e]: this };\r\n case \"center\":\r\n return {\r\n left: this,\r\n right: this,\r\n \"margin-left\": Object.assign(Object.assign({}, this), {\r\n unit: \"\",\r\n }),\r\n \"margin-right\": Object.assign(Object.assign({}, this), {\r\n unit: \"\",\r\n }),\r\n };\r\n case \"middle\":\r\n return {\r\n top: this,\r\n bottom: this,\r\n \"margin-top\": Object.assign(Object.assign({}, this), {\r\n unit: \"\",\r\n }),\r\n \"margin-bottom\": Object.assign(Object.assign({}, this), {\r\n unit: \"\",\r\n }),\r\n };\r\n }\r\n }\r\n }\r\n function mi(e, t) {\r\n let s = \"\",\r\n i = 0;\r\n return (\r\n (function r(n, a) {\r\n let c = \"\";\r\n const l = a ? t(a) : \"\",\r\n o = () => {\r\n c &&\r\n ((s +=\r\n !l || Number.isNaN(+c)\r\n ? c\r\n : +c / (l === we ? 16 : 1) + l),\r\n (c = \"\"));\r\n };\r\n for (; i < e.length; i++) {\r\n const t = e[i];\r\n if (t === n && (\"'\" !== n || \")\" === e[i + 1])) {\r\n o(), (s += t);\r\n break;\r\n }\r\n \",\" === t || \" \" === t\r\n ? (o(), (s += t))\r\n : c || \"'\" !== t\r\n ? c && \"(\" === t\r\n ? ((s += c + t), i++, r(\")\", c), (c = \"\"))\r\n : (c += t)\r\n : ((s += t), i++, r(t), (c = \"\"));\r\n }\r\n o();\r\n })(),\r\n s\r\n );\r\n }\r\n fi.matches = /^(top|left|right|bottom|center|middle):./;\r\n class pi extends $t {\r\n get props() {\r\n return {\r\n \"backdrop-filter\": this,\r\n \"-webkit-backdrop-filter\": this,\r\n };\r\n }\r\n get parseValue() {\r\n return mi(this.value, (e) => {\r\n switch (e) {\r\n case De:\r\n case o(Ge, j):\r\n return we;\r\n case o(\"hue\", K):\r\n return ee;\r\n }\r\n return \"\";\r\n });\r\n }\r\n }\r\n (pi.matches = /^bd:./), (pi.key = o(\"backdrop\", R)), (pi.colorful = !0);\r\n class xi extends $t {}\r\n (xi.key = ae),\r\n (xi.colorStarts = \"fill:\"),\r\n (xi.colorful = !0),\r\n (xi.values = { current: p });\r\n class bi extends $t {}\r\n (bi.key = I), (bi.colorful = !0);\r\n class gi extends $t {}\r\n (gi.matches = /^stroke:([0-9]|(max|min|calc|clamp)\\(.*\\))((?!\\|).)*$/),\r\n (gi.key = o(I, F));\r\n class yi extends $t {\r\n get parseValue() {\r\n return mi(this.value, (e) => {\r\n switch (e) {\r\n case De:\r\n case o(Ge, j):\r\n return we;\r\n case o(\"hue\", K):\r\n return ee;\r\n }\r\n return \"\";\r\n });\r\n }\r\n }\r\n (yi.matches =\r\n /^(blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|opacity|saturate|sepia)\\(/),\r\n (yi.key = R),\r\n (yi.colorful = !0);\r\n class ki extends $t {}\r\n ki.key = \"cursor\";\r\n class vi extends $t {}\r\n (vi.key = o(\"pointer\", \"events\")),\r\n (vi.semantics = { untouchable: \"none\" });\r\n class wi extends $t {}\r\n wi.key = \"resize\";\r\n class Oi extends $t {}\r\n Oi.key = o(\"touch\", \"action\");\r\n class ji extends $t {\r\n get props() {\r\n return { \"user-drag\": this, \"-webkit-user-drag\": this };\r\n }\r\n }\r\n ji.key = o(S, \"drag\");\r\n class Si extends $t {\r\n get props() {\r\n return {\r\n \"user-select\": this,\r\n \"-webkit-user-select\": this,\r\n };\r\n }\r\n }\r\n Si.key = o(S, \"select\");\r\n class Ni extends $t {}\r\n (Ni.matches = /^s(?:hadow)?:./),\r\n (Ni.key = o(ne, j)),\r\n (Ni.colorful = !0);\r\n class $i extends $t {}\r\n ($i.key = o(oe, j)), ($i.colorful = !0);\r\n class Ii extends $t {\r\n get props() {\r\n return {\r\n \"font-size\": this,\r\n \"line-height\": Object.assign(Object.assign({}, this), {\r\n value:\r\n this.unit === we\r\n ? this.value + 0.375 + this.unit\r\n : \"calc(\" + this.value + this.unit + \" + .375rem)\",\r\n unit: \"\",\r\n }),\r\n };\r\n }\r\n }\r\n (Ii.id = \"textSize\"),\r\n (Ii.matches =\r\n /^t(ext)?:([0-9]|(max|min|calc|clamp)\\(.*\\))((?!\\|).)*$/);\r\n class Ri extends $t {}\r\n (Ri.key = o(fe, xe)), (Ri.unit = \"\");\r\n class zi extends $t {\r\n get props() {\r\n return {\r\n [ie]: Object.assign(Object.assign({}, this), {\r\n value: D,\r\n }),\r\n [o(D, g, k)]: Object.assign(Object.assign({}, this), {\r\n value: \"repeat(\" + this.value + x + U + \"max(0\" + \",1fr))\",\r\n }),\r\n };\r\n }\r\n }\r\n (zi.matches = /^grid-cols:./), (zi.key = o(D, k)), (zi.unit = \"\");\r\n class Wi extends $t {\r\n get props() {\r\n return {\r\n [ie]: Object.assign(Object.assign({}, this), {\r\n value: D,\r\n }),\r\n [o(D, ge, b)]: Object.assign(Object.assign({}, this), {\r\n value: y,\r\n }),\r\n [o(D, g, O)]: Object.assign(Object.assign({}, this), {\r\n value: \"repeat(\" + this.value + x + U + \"max(0\" + \",1fr))\",\r\n }),\r\n };\r\n }\r\n }\r\n (Wi.key = o(D, O)), (Wi.unit = \"\");\r\n class Ai extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n get props() {\r\n switch (this.prefix[4]) {\r\n case P:\r\n return { [o(y, v)]: this };\r\n case q:\r\n return { [o(w, v)]: this };\r\n default:\r\n return { [v]: this };\r\n }\r\n }\r\n }\r\n (Ai.id = \"gap\"), (Ai.matches = /^gap(-x|-y)?:./);\r\n class Ci extends $t {}\r\n Ci.key = o(fe, Ne);\r\n class Ei extends $t {\r\n get props() {\r\n return { [\"--\" + this.prefix.slice(1, -1)]: this };\r\n }\r\n }\r\n (Ei.id = \"variable\"), (Ei.matches = /^\\$.+:./), (Ei.unit = \"\");\r\n class Mi extends $t {}\r\n (Mi.matches = /^aspect:./),\r\n (Mi.key = o(\"aspect\", \"ratio\")),\r\n (Mi.unit = \"\"),\r\n (Mi.semantics = { square: \"1/1\", video: \"16/9\" });\r\n class Vi extends $t {\r\n get props() {\r\n return {\r\n \"box-decoration-break\": this,\r\n \"-webkit-box-decoration-break\": this,\r\n };\r\n }\r\n }\r\n (Vi.matches = /^box:(slice|clone)(?!\\|)/), (Vi.key = o(ne, pe, xe));\r\n class _i extends $t {}\r\n _i.key = o(xe, \"after\");\r\n class Li extends $t {}\r\n Li.key = o(xe, \"before\");\r\n class Ti extends $t {}\r\n Ti.key = o(xe, \"inside\");\r\n class qi extends $t {}\r\n (qi.key = o(B, \"shrink\")), (qi.unit = \"\");\r\n class Pi extends $t {}\r\n (Pi.matches = /^flex:((row|col|column)(-reverse)?)(?!\\|)/),\r\n (Pi.key = o(B, V)),\r\n (Pi.values = { col: y, \"col-reverse\": o(y, \"reverse\") });\r\n class Zi extends $t {}\r\n (Zi.key = o(B, \"grow\")), (Zi.unit = \"\");\r\n class Fi extends $t {}\r\n (Fi.matches = /^flex:(wrap(-reverse)?|nowrap)(?!\\|)/),\r\n (Fi.key = o(B, \"wrap\"));\r\n class Qi extends $t {}\r\n (Qi.key = o(B, \"basis\")), (Qi.values = He);\r\n class Ui extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n (Ui.key = B), (Ui.unit = \"\");\r\n const Xi = \"999999\";\r\n class Yi extends $t {}\r\n (Yi.matches = /^o:./),\r\n (Yi.key = \"order\"),\r\n (Yi.values = { first: \"-999999\", last: Xi }),\r\n (Yi.unit = \"\");\r\n class Bi extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n get parseValue() {\r\n return \"span\" === this.prefix.slice(-5, -1) && \"auto\" !== this.value\r\n ? \"span \" + this.value + \"/\" + \"span \" + this.value\r\n : this.value;\r\n }\r\n }\r\n (Bi.matches = /^grid-col(?:umn)?(?:-span)?:./),\r\n (Bi.key = o(D, y)),\r\n (Bi.unit = \"\");\r\n class Di extends $t {}\r\n (Di.matches = /^col-span:./), (Di.key = o(y, Ve));\r\n class Gi extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n get parseValue() {\r\n return \"span\" === this.prefix.slice(-5, -1) && \"auto\" !== this.value\r\n ? \"span \" + this.value + \"/\" + \"span \" + this.value\r\n : this.value;\r\n }\r\n }\r\n (Gi.matches = /^grid-row-span:./), (Gi.key = o(D, w)), (Gi.unit = \"\");\r\n class Hi extends $t {}\r\n (Hi.matches = /^(font-color:.|font:current)/),\r\n (Hi.colorStarts = \"(?:f(ont)?|color):\"),\r\n (Hi.colorful = !0),\r\n (Hi.key = C),\r\n (Hi.unit = \"\"),\r\n (Hi.values = { current: p });\r\n class Ji extends $t {}\r\n (Ji.matches = /^ac:./), (Ji.key = o(de, N));\r\n class Ki extends $t {}\r\n (Ki.matches = /^ai:./), (Ki.key = o(de, Le));\r\n class er extends $t {}\r\n (er.matches = /^as:./), (er.key = o(de, Te));\r\n class tr extends $t {}\r\n (tr.matches = /^grid-auto-cols:./),\r\n (tr.key = o(D, ge, k)),\r\n (tr.values = { min: o(U, N), max: o(Q, N) });\r\n class sr extends $t {}\r\n (sr.matches = /^grid-flow:./), (sr.key = o(D, ge, b));\r\n class ir extends $t {}\r\n (ir.key = o(D, ge, O)), (ir.values = { min: o(U, N), max: o(Q, N) });\r\n class rr extends $t {}\r\n (rr.matches = /^jc:./), (rr.key = o(_e, N));\r\n class nr extends $t {}\r\n (nr.matches = /^ji:./), (nr.key = o(_e, Le));\r\n class ar extends $t {}\r\n (ar.matches = /^js:./), (ar.key = o(_e, Te));\r\n class cr extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n cr.key = o(qe, N);\r\n class lr extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n lr.key = o(qe, Le);\r\n class or extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n or.key = o(qe, Te);\r\n class dr extends $t {\r\n get props() {\r\n return { [this.prefix.slice(0, -1)]: this };\r\n }\r\n get order() {\r\n return \"padding:\" === this.prefix ? -1 : 0;\r\n }\r\n }\r\n (dr.id = \"padding\"),\r\n (dr.matches = /^padding(?:-(?:left|right|top|bottom))?:./);\r\n class hr extends $t {\r\n get props() {\r\n return { [this.prefix.slice(0, -1)]: this };\r\n }\r\n get order() {\r\n return \"margin:\" === this.prefix ? -1 : 0;\r\n }\r\n }\r\n (hr.id = \"margin\"),\r\n (hr.matches = /^margin(-(left|right|top|bottom))?:./);\r\n class ur extends $t {}\r\n (ur.matches = /^(text-(overflow|ovf):.|t(ext)?:(ellipsis|clip)(?!\\|))/),\r\n (ur.key = o(oe, \"overflow\"));\r\n class fr extends $t {}\r\n (fr.matches = /^list-style:(inside|outside)(?!\\|)/),\r\n (fr.key = o(Ee, Oe, ve));\r\n class mr extends $t {}\r\n (mr.matches = /^list-style:(disc|decimal)(?!\\|)/),\r\n (mr.key = o(Ee, Oe, Pe));\r\n class pr extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n pr.key = o(Ee, Oe);\r\n class xr extends $t {}\r\n (xr.key = o(oe, pe, C)),\r\n (xr.colorStarts = \"text-decoration:\"),\r\n (xr.colorful = !0),\r\n (xr.values = { current: p });\r\n class br extends $t {}\r\n (br.matches = /^t(ext)?:(solid|double|dotted|dashed|wavy)(?!\\|)/),\r\n (br.key = o(oe, pe, Oe));\r\n class gr extends $t {}\r\n (gr.matches =\r\n /^text-decoration:(from-font(?!\\|)|([0-9]|(max|min|calc|clamp)\\(.*\\))((?!\\|).)*$)/),\r\n (gr.key = o(oe, pe, \"thickness\")),\r\n (gr.unit = \"em\");\r\n class yr extends $t {}\r\n yr.key = o(oe, \"indent\");\r\n class kr extends $t {}\r\n kr.key = N;\r\n class vr extends $t {}\r\n (vr.key = o(Fe, C)),\r\n (vr.colorStarts = \"outline:\"),\r\n (vr.colorful = !0),\r\n (vr.values = { current: p });\r\n class wr extends $t {}\r\n wr.key = o(Fe, Ze);\r\n class Or extends $t {}\r\n (Or.matches =\r\n /^outline:(none|dotted|dashed|solid|double|groove|ridge|inset|outset)(?!\\|)/),\r\n (Or.key = o(Fe, Oe));\r\n class jr extends $t {}\r\n (jr.matches =\r\n /^outline:(medium|thick|thin|[0-9]|(max|min|calc|clamp)\\(.*\\))((?!\\|).)*$/),\r\n (jr.key = o(Fe, F));\r\n class Sr extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n (Sr.key = Fe), (Sr.colorful = !0);\r\n class Nr extends $t {}\r\n (Nr.matches = /^b(order)?:(collapse|separate)(?!\\|)/),\r\n (Nr.key = o(d, \"collapse\"));\r\n class $r extends $t {}\r\n $r.key = o(d, Ne);\r\n class Ir extends $t {}\r\n Ir.key = o(Ae, \"layout\");\r\n class Rr extends $t {}\r\n (Rr.key = o(\"accent\", C)),\r\n (Rr.colorStarts = \"accent:\"),\r\n (Rr.colorful = !0);\r\n class zr extends $t {}\r\n zr.key = \"appearance\";\r\n class Wr extends $t {}\r\n (Wr.key = o(\"caret\", C)),\r\n (Wr.matches = /^caret:transparent(?!\\|)/),\r\n (Wr.colorStarts = \"caret:\"),\r\n (Wr.colorful = !0),\r\n (Wr.values = { current: p });\r\n class Ar extends $t {}\r\n Ar.key = o(E, L);\r\n class Cr extends $t {\r\n get props() {\r\n if (\"m\" !== this.prefix.slice(-3, -2))\r\n return {\r\n [this.prefix.replace(/-m(?!argin)/, \"-margin\").slice(0, -1)]:\r\n this,\r\n };\r\n {\r\n const e = o(E, u) + \"-\",\r\n t = e + qt,\r\n s = e + Pt,\r\n i = e + Lt,\r\n r = e + Tt;\r\n switch (this.prefix.slice(-2, -1)) {\r\n case Xt:\r\n return { [t]: this, [s]: this };\r\n case Yt:\r\n return { [i]: this, [r]: this };\r\n case Zt:\r\n return { [t]: this };\r\n case Ft:\r\n return { [s]: this };\r\n case Qt:\r\n return { [i]: this };\r\n case Ut:\r\n return { [r]: this };\r\n }\r\n }\r\n }\r\n get order() {\r\n return this.prefix === o(E, u) + \":\" || this.prefix === o(E, \"m:\")\r\n ? -1\r\n : 0;\r\n }\r\n }\r\n (Cr.id = \"scrollMargin\"),\r\n (Cr.matches =\r\n /^scroll-m([xytblr]|argin(-(top|bottom|left|right))?)?:./);\r\n class Er extends $t {\r\n get props() {\r\n if (\"p\" !== this.prefix.slice(-3, -2))\r\n return {\r\n [this.prefix.replace(/-p(?!adding)/, \"-padding\").slice(0, -1)]:\r\n this,\r\n };\r\n {\r\n const e = o(E, f) + \"-\",\r\n t = e + qt,\r\n s = e + Pt,\r\n i = e + Lt,\r\n r = e + Tt;\r\n switch (this.prefix.slice(-2, -1)) {\r\n case Xt:\r\n return { [t]: this, [s]: this };\r\n case Yt:\r\n return { [i]: this, [r]: this };\r\n case Zt:\r\n return { [t]: this };\r\n case Ft:\r\n return { [s]: this };\r\n case Qt:\r\n return { [i]: this };\r\n case Ut:\r\n return { [r]: this };\r\n }\r\n }\r\n }\r\n get order() {\r\n return this.prefix === o(E, f) + \":\" || this.prefix === o(E, \"p:\")\r\n ? -1\r\n : 0;\r\n }\r\n }\r\n (Er.id = \"scrollPadding\"),\r\n (Er.matches =\r\n /^scroll-p([xytblr]|adding(-(top|bottom|left|right))?)?:./);\r\n class Mr extends $t {}\r\n (Mr.matches = /^scroll-snap:(start|end|center)/),\r\n (Mr.key = o(E, Qe, de));\r\n class Vr extends $t {}\r\n (Vr.matches = /^scroll-snap:(normal|always)(?!\\|)/),\r\n (Vr.key = o(E, Qe, \"stop\"));\r\n class _r extends $t {}\r\n (_r.matches =\r\n /^scroll-snap:(([xy]|block|inline|both)(\\|(proximity|mandatory))?)(?!\\|)/),\r\n (_r.key = o(E, Qe, Pe));\r\n class Lr extends $t {}\r\n Lr.key = \"will-change\";\r\n class Tr extends $t {}\r\n Tr.key = o(oe, \"underline\", Ze);\r\n class qr extends $t {\r\n get props() {\r\n return { [this.prefix.slice(0, -1)]: this };\r\n }\r\n }\r\n (qr.matches = /^(?:top|bottom|left|right):./), (qr.key = \"inset\");\r\n class Pr extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n (Pr.matches = /^(columns|cols):./), (Pr.key = k), (Pr.unit = \"\");\r\n class Zr extends $t {}\r\n (Zr.key = o(\"white\", me)), (Zr.unit = \"\");\r\n class Fr extends $t {}\r\n (Fr.matches =\r\n /^t(ext)?:(mixed|upright|sideways-right|sideways|use-glyph-orientation)(?!\\|)/),\r\n (Fr.key = o(oe, \"orientation\"));\r\n class Qr extends $t {}\r\n (Qr.matches = /^writing:./), (Qr.key = o(\"writing\", _));\r\n class Ur extends $t {}\r\n Ur.key = \"contain\";\r\n class Xr extends $t {}\r\n (Xr.matches = /^\\@duration:./), (Xr.key = o(M, se)), (Xr.unit = \"ms\");\r\n class Yr extends $t {}\r\n (Yr.matches =\r\n /^t(ext)?:(optimizeSpeed|optimizeLegibility|geometricPrecision)(?!\\|)/),\r\n (Yr.key = o(oe, \"rendering\"));\r\n class Br extends $t {}\r\n Br.key = V;\r\n class Dr extends $t {}\r\n (Dr.matches = /^t(ext)?:(none|underline|overline|line-through)(?!\\|)/),\r\n (Dr.key = o(oe, pe, ye));\r\n class Gr extends $t {}\r\n (Gr.matches = /^grid-col-start:./),\r\n (Gr.key = o(D, y, Be)),\r\n (Gr.unit = \"\");\r\n class Hr extends $t {}\r\n (Hr.matches =\r\n /^list-style:(url|linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient|conic-gradient)\\(.*\\)((?!\\|).)*$/),\r\n (Hr.key = o(Ee, Oe, $));\r\n class Jr extends $t {}\r\n (Jr.matches =\r\n /^shape:((margin|content|border|padding)(?!\\|)|(inset|circle|ellipse|polygon|url|linear-gradient)\\(.*\\)((?!\\|).)*$)/),\r\n (Jr.key = o(Ue, \"outside\")),\r\n (Jr.values = {\r\n content: o(N, ne),\r\n border: o(d, ne),\r\n padding: o(f, ne),\r\n margin: o(u, ne),\r\n });\r\n class Kr extends $t {}\r\n (Kr.matches = /^shape:([0-9]|(max|min|calc|clamp)\\(.*\\))((?!\\|).)*$/),\r\n (Kr.key = o(Ue, u));\r\n class en extends $t {}\r\n (en.key = o(Ue, $, \"threshold\")), (en.unit = \"\");\r\n class tn extends $t {}\r\n (tn.matches = /^clip:./),\r\n (tn.key = o(ce, \"path\")),\r\n (tn.values = {\r\n content: o(N, ne),\r\n border: o(d, ne),\r\n padding: o(f, ne),\r\n margin: o(u, ne),\r\n fill: o(ae, ne),\r\n stroke: o(I, ne),\r\n view: o(Xe, ne),\r\n });\r\n class sn extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n sn.key = D;\r\n class rn extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n (rn.matches = /^f:./), (rn.key = m), (rn.unit = \"\"), (rn.colorful = !0);\r\n class nn extends $t {}\r\n nn.key = \"quotes\";\r\n class an extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n an.key = o(D, g);\r\n class cn extends $t {}\r\n (cn.key = o(D, w, Be)), (cn.unit = \"\");\r\n class ln extends $t {}\r\n ln.key = o(D, g, Ye) + \"s\";\r\n class on extends $t {}\r\n (on.matches = /^grid-template-cols:./),\r\n (on.key = o(D, g, k)),\r\n (on.values = { min: o(U, N), max: o(Q, N) });\r\n class dn extends $t {}\r\n (dn.key = o(D, g, O)), (dn.values = { min: o(U, N), max: o(Q, N) });\r\n class hn extends $t {\r\n constructor() {\r\n super(...arguments), (this.order = -1);\r\n }\r\n }\r\n (hn.key = o(D, Ye)), (hn.unit = \"\");\r\n class un extends $t {}\r\n (un.matches = /^grid-col-end:./),\r\n (un.key = o(D, y, \"end\")),\r\n (un.unit = \"\");\r\n class fn extends $t {}\r\n (fn.key = o(D, w, \"end\")), (fn.unit = \"\");\r\n class mn extends $t {\r\n get props() {\r\n return {\r\n \"mask-image\": this,\r\n \"-webkit-mask-image\": this,\r\n };\r\n }\r\n }\r\n mn.key = o(\"mask\", $);\r\n class pn extends $t {\r\n get props() {\r\n return { \"-webkit-text-fill-color\": this };\r\n }\r\n }\r\n (pn.id = \"textFillColor\"),\r\n (pn.matches = /^text-fill-color:./),\r\n (pn.colorStarts = \"text-fill:\"),\r\n (pn.colorful = !0),\r\n (pn.values = { current: p });\r\n class xn extends $t {\r\n get props() {\r\n return { \"-webkit-text-stroke\": this };\r\n }\r\n }\r\n (xn.id = \"textStroke\"), (xn.matches = /^text-stroke:./);\r\n class bn extends $t {\r\n get props() {\r\n return { \"-webkit-text-stroke-width\": this };\r\n }\r\n }\r\n (bn.id = \"textStrokeWidth\"),\r\n (bn.matches =\r\n /^text-stroke(:((thin|medium|thick)(?!\\|)|\\.?\\d((?!\\|).)*$)|-width:.)/);\r\n class gn extends $t {\r\n get props() {\r\n return { \"-webkit-text-stroke-color\": this };\r\n }\r\n }\r\n (gn.id = \"textStrokeColor\"),\r\n (gn.matches = /^text-stroke-color:./),\r\n (gn.colorStarts = \"text-stroke:\"),\r\n (gn.colorful = !0),\r\n (gn.values = { current: p });\r\n class yn extends $t {}\r\n yn.key = o(I, \"dasharray\");\r\n class kn extends $t {}\r\n kn.key = o(I, \"dash\") + Ze;\r\n class vn extends $t {}\r\n (vn.key = \"x\"), (vn.unit = \"\");\r\n class wn extends $t {}\r\n (wn.key = \"y\"), (wn.unit = \"\");\r\n class On extends $t {}\r\n (On.key = \"cx\"), (On.unit = \"\");\r\n class jn extends $t {}\r\n (jn.key = \"cy\"), (jn.unit = \"\");\r\n class Sn extends $t {}\r\n (Sn.key = \"rx\"), (Sn.unit = \"\");\r\n class Nn extends $t {}\r\n (Nn.key = \"ry\"), (Nn.unit = \"\");\r\n class $n extends $t {}\r\n $n.key = o(d, $, \"outset\");\r\n class In extends $t {}\r\n (In.matches =\r\n /^border-image:(?:stretch|repeat|round|space)(?:(?!\\|).)*$/),\r\n (In.key = o(d, $, A));\r\n class Rn extends $t {}\r\n (Rn.key = o(d, $, \"slice\")), (Rn.unit = \"\");\r\n class zn extends $t {}\r\n (zn.matches =\r\n /^border-image:(?:url|linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient|conic-gradient)\\(.*\\)(?:(?!\\|).)*$/),\r\n (zn.key = o(d, $, \"source\"));\r\n class Wn extends $t {}\r\n (Wn.matches =\r\n /^border-image:(?:\\.?[0-9]|(max|min|calc|clamp)\\(.*\\))(?:(?!\\|).)*$/),\r\n (Wn.key = o(d, $, F));\r\n class An extends $t {}\r\n (An.key = o(d, $)), (An.unit = \"\");\r\n const Cn = /\\{(.*)\\}/;\r\n class En extends $t {\r\n get props() {\r\n const e = {},\r\n t = (t) => {\r\n const s = t.indexOf(\":\");\r\n if (-1 !== s) {\r\n const i = t.slice(0, s);\r\n i in e || (e[i] = { value: t.slice(s + 1) });\r\n }\r\n },\r\n s = (e) => {\r\n const s = e.text\r\n .slice(CSS.escape(e.name).length)\r\n .match(Cn)[1]\r\n .split(\";\");\r\n for (const e of s) t(e);\r\n },\r\n i = [];\r\n let r = \"\";\r\n const n = () => {\r\n r && (i.push(r), (r = \"\"));\r\n };\r\n let c = 1;\r\n const l = (e) => {\r\n for (; c < this.value.length; c++) {\r\n const t = this.value[c];\r\n if (!e) {\r\n if (\";\" === t) {\r\n n();\r\n continue;\r\n }\r\n if (\"}\" === t) break;\r\n }\r\n if (((r += t), e === t)) {\r\n if (\"'\" === e) {\r\n let e = 0;\r\n for (let t = r.length - 2; \"\\\\\" === r[t]; t--) e++;\r\n if (e % 2) continue;\r\n }\r\n break;\r\n }\r\n t in a && \"'\" !== e && (c++, l(a[t]));\r\n }\r\n };\r\n l(void 0), n();\r\n for (const e of i) {\r\n const i = Ct.findAndNew(e);\r\n if (Array.isArray(i)) for (const e of i) s(e);\r\n else i ? s(i) : t(e);\r\n }\r\n return e;\r\n }\r\n }\r\n (En.id = Ce), (En.matches = /^(?:.+?[*_>~+])?\\{.+?\\}/), (En.unit = \"\");\r\n class Mn extends $t {}\r\n (Mn.key = \"counter-increment\"), (Mn.unit = \"\");\r\n var Vn = s(580),\r\n _n = s.n(Vn);\r\n class Ln extends $t {}\r\n Ln.semantics = {\r\n \"center-content\": {\r\n \"justify-content\": \"center\",\r\n \"align-items\": \"center\",\r\n },\r\n \"sr-only\": {\r\n position: \"absolute\",\r\n width: \"1px\",\r\n height: \"1px\",\r\n padding: \"0\",\r\n margin: \"-1px\",\r\n overflow: \"hidden\",\r\n clip: \"rect(0,0,0,0)\",\r\n \"white-space\": \"nowrap\",\r\n \"border-width\": \"0\",\r\n },\r\n full: { width: \"100%\", height: \"100%\" },\r\n center: {\r\n left: 0,\r\n right: 0,\r\n \"margin-left\": ge,\r\n \"margin-right\": ge,\r\n },\r\n middle: {\r\n top: 0,\r\n bottom: 0,\r\n \"margin-top\": ge,\r\n \"margin-bottom\": ge,\r\n },\r\n \"break-spaces\": { \"white-space\": o(xe, me) + \"s\" },\r\n \"break-word\": { \"overflow-wrap\": o(xe, fe), overflow: re },\r\n };\r\n const Tn = \"undefined\" != typeof window,\r\n qn = [\r\n Ln,\r\n En,\r\n Ei,\r\n Et,\r\n Vt,\r\n Hi,\r\n Bt,\r\n hr,\r\n dr,\r\n _t,\r\n Qi,\r\n Fi,\r\n Zi,\r\n qi,\r\n Pi,\r\n Ui,\r\n Ss,\r\n Dt,\r\n Gt,\r\n Ht,\r\n Jt,\r\n Ur,\r\n kr,\r\n Mn,\r\n Kt,\r\n is,\r\n rs,\r\n ns,\r\n rn,\r\n as,\r\n cs,\r\n ls,\r\n os,\r\n xr,\r\n br,\r\n gr,\r\n Dr,\r\n ds,\r\n Tr,\r\n ur,\r\n Fr,\r\n hs,\r\n Yr,\r\n yr,\r\n us,\r\n Pr,\r\n Zr,\r\n qr,\r\n fs,\r\n Os,\r\n js,\r\n Ns,\r\n $s,\r\n Is,\r\n Rs,\r\n zs,\r\n Ws,\r\n As,\r\n Cs,\r\n Es,\r\n ui,\r\n fi,\r\n ki,\r\n vi,\r\n wi,\r\n Oi,\r\n Ri,\r\n Ci,\r\n ji,\r\n Si,\r\n $i,\r\n Ii,\r\n pn,\r\n bn,\r\n gn,\r\n xn,\r\n Ni,\r\n Ir,\r\n xs,\r\n ps,\r\n ms,\r\n bs,\r\n vs,\r\n ws,\r\n ks,\r\n ys,\r\n gs,\r\n Ms,\r\n Vs,\r\n Xr,\r\n _s,\r\n Ls,\r\n Ts,\r\n qs,\r\n Ps,\r\n Zs,\r\n Qs,\r\n Hs,\r\n Js,\r\n Ks,\r\n Nr,\r\n $r,\r\n ei,\r\n $n,\r\n In,\r\n Rn,\r\n zn,\r\n Wn,\r\n An,\r\n ti,\r\n si,\r\n ii,\r\n ri,\r\n ni,\r\n ai,\r\n ci,\r\n li,\r\n oi,\r\n di,\r\n hi,\r\n pi,\r\n yi,\r\n xi,\r\n yn,\r\n kn,\r\n gi,\r\n bi,\r\n vn,\r\n wn,\r\n On,\r\n jn,\r\n Sn,\r\n Nn,\r\n Gr,\r\n un,\r\n Bi,\r\n zi,\r\n cn,\r\n fn,\r\n Gi,\r\n Wi,\r\n tr,\r\n sr,\r\n ir,\r\n ln,\r\n on,\r\n dn,\r\n an,\r\n hn,\r\n sn,\r\n Ai,\r\n Yi,\r\n Ti,\r\n Li,\r\n _i,\r\n Vi,\r\n Mi,\r\n Di,\r\n Ji,\r\n Ki,\r\n er,\r\n rr,\r\n nr,\r\n ar,\r\n cr,\r\n lr,\r\n or,\r\n fr,\r\n mr,\r\n Hr,\r\n pr,\r\n vr,\r\n wr,\r\n Or,\r\n jr,\r\n Sr,\r\n Rr,\r\n zr,\r\n Wr,\r\n Ar,\r\n Cr,\r\n Er,\r\n Mr,\r\n Vr,\r\n _r,\r\n Lr,\r\n Qr,\r\n Br,\r\n Jr,\r\n Kr,\r\n en,\r\n tn,\r\n nn,\r\n mn,\r\n ],\r\n Pn = (qn.get = (e) =>\r\n qn.find((t) => {\r\n var s;\r\n return (\r\n e === t.id ||\r\n e ===\r\n (null === (s = t.key) || void 0 === s\r\n ? void 0\r\n : s.replace(/-./g, (e) => e[1].toUpperCase())) ||\r\n e === t.key\r\n );\r\n }));\r\n function Zn() {\r\n if (Tn) {\r\n const e = new Ct(document.head);\r\n (Ct.root = e), e.observe(document.documentElement);\r\n }\r\n }\r\n (qn.extend = function (e, ...t) {\r\n const s = Object.assign({}, ...t);\r\n for (const t in s) {\r\n const i = Pn(t);\r\n if (i) {\r\n const r = s[t];\r\n i.extend(e, r);\r\n }\r\n }\r\n return this;\r\n }),\r\n $t.extend(\"colors\", _n()).extend(\"breakpoints\", l()),\r\n Ct.Styles.push(...qn);\r\n Tn &&\r\n ((window.initMasterCSS = Zn),\r\n (window.MasterStyles = qn),\r\n window.MasterCSSManual || Zn());\r\n const Fn = s(580),\r\n Qn = s(642);\r\n })(),\r\n i\r\n );\r\n })();\r\n});\r\n","var $globalHeader = $(\".global-header\");\r\n\r\n$(function () {\r\n\tlet headerHeight = $globalHeader.outerHeight();\r\n\t$(\"body\").css({\r\n\t\t\"--header-height\": headerHeight + \"px\",\r\n\t});\r\n\t$(window).resize(() => {\r\n\t\t$(\"body\").css({\r\n\t\t\t\"--header-height\": headerHeight + \"px\",\r\n\t\t});\r\n\t});\r\n\twindow.headerHeight = headerHeight;\r\n});\r\n\r\nlet headerPositionCss = $globalHeader.css(\"position\");\r\n\r\nif (headerPositionCss === \"relative\") {\r\n\t$globalHeader.sticky({\r\n\t\ttop: 0,\r\n\t\tzIndex: 100,\r\n\t});\r\n}\r\n\r\n$(window).on(\"scroll\", function () {\r\n\tvar scrollTop = window.pageYOffset || $(document).scrollTop();\r\n\t$globalHeader.toggleClass(\"scrolling\", scrollTop > 0);\r\n});\r\n\r\n$globalHeader.on(\"sticky-end\", function () {\r\n\t$(\"#sticky-wrapper\").css({\r\n\t\theight: headerHeight,\r\n\t});\r\n});\r\ntry {\r\n\tconst externalLinkMapping = new MappingListener({\r\n\t\tselector: \".external-wrapper\",\r\n\t\tmobileWrapper: \".social-list\",\r\n\t\tmobileMethod: \"insertAfter\",\r\n\t\tdesktopWrapper: \".search-wrapper\",\r\n\t\tdesktopMethod: \"insertAfter\",\r\n\t\tbreakpoint: 1025,\r\n\t}).watch();\r\n\tconst jciWrapper = new MappingListener({\r\n\t\tselector: \".jci-wrapper\",\r\n\t\tmobileWrapper: \".menu-toggle\",\r\n\t\tmobileMethod: \"insertAfter\",\r\n\t\tdesktopWrapper: \".header-right-wrapper\",\r\n\t\tdesktopMethod: \"prependTo\",\r\n\t}).watch();\r\n} catch (error) {}\r\n\r\n$(\".menu-toggle\").on(\"click\", function () {\r\n\t$(\".global-menu\").toggleClass(\"show\");\r\n\t$(\"body\").toggleClass(\"overflow-hidden\");\r\n\t$(this).find(\"span\").toggleClass(\"fa-bars fa-xmark\");\r\n});\r\n\r\n$(\".search-toggle\").on(\"click\", function (e) {\r\n\te.preventDefault();\r\n\t$(this).find(\"span\").toggleClass(\"fa-search fa-xmark\");\r\n\t$(\".search-container\").toggleClass(\"open\").slideToggleLeftRight(500);\r\n\t$(\".searchinput\").focus();\r\n\t$(\".searchinput\").val(\"\");\r\n\t$(\".suggestsearch\").remove();\r\n});\r\n$(document).on(\"click\", function (event) {\r\n\tif (!$(event.target).closest(\".search-toggle, .search-container\").length) {\r\n\t\t$(\".searchinput\").val(\"\");\r\n\t\t$(\".suggestsearch\").remove();\r\n\t\t$(\".search-container\").slideUp();\r\n\t\t$(\".search-toggle span\").removeClass(\"fa-xmark\").addClass(\"fa-search\");\r\n\t}\r\n});\r\n\r\n$(\".toggle-sub-menu\").each(function (index, el) {\r\n\t$(el).on(\"click\", function () {\r\n\t\t$(el).next().slideToggle();\r\n\t});\r\n});\r\n\r\n$(\".toggle-mega\").each(function (index, el) {\r\n\t$(el).on(\"click\", function () {\r\n\t\t$(el).next().toggleClass(\"show\");\r\n\t});\r\n});\r\n\r\n$(\".toggle-mega-sub-menu\").each(function (index, el) {\r\n\t$(el).on(\"click\", function () {\r\n\t\tvar targetMenu = $(el).parent().next();\r\n\r\n\t\t// Slide up all the other .mega-menu-lv2 elements\r\n\t\t$(\".mega-menu-lv2\").not(targetMenu).slideUp();\r\n\t\t$(\".toggle-mega-sub-menu\").not($(el)).removeClass(\"fa-rotate-180\");\r\n\r\n\t\t// Toggle the clicked element\r\n\t\ttargetMenu.slideToggle();\r\n\t\t$(el).toggleClass(\"fa-rotate-180\");\r\n\t});\r\n});\r\n\r\n$(\".close-mega\").each(function (index, el) {\r\n\t$(el).on(\"click\", function () {\r\n\t\t$(el).parent().removeClass(\"show\");\r\n\t});\r\n});\r\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, elementStyle as o, elementNextAll as p, elementPrevAll as q, animateCSSModeScroll as r, setCSSProperty as s, showWarning as t, extend as u, deleteProps as v };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, o as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, p as elementNextAll, q as elementPrevAll, j as getTranslate, r as animateCSSModeScroll, n as nextTick, t as showWarning, c as createElement, d as now, u as extend, h as elementIndex, v as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slides => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = () => {\n if (swiper.slides) {\n swiper.slides.forEach(slide => {\n if (slide.swiperSlideGridSet) {\n slide.style.height = '';\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\n }\n });\n }\n };\n const updateSlide = (i, slide, slides) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n unsetSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","import Swiper from \"swiper\";\r\nimport { Navigation, Pagination } from \"swiper/modules\";\r\n\r\nclass LoopSlider {\r\n\tconstructor(sliderClass, breakpoints, options = {}) {\r\n\t\tthis.sliderClass = sliderClass;\r\n\t\tthis.breakpoints = breakpoints;\r\n\t\tthis.options = options;\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tinit() {\r\n\t\t$(this.sliderClass).each((index, element) => {\r\n\t\t\tconst $this = $(element);\r\n\t\t\tconst swiperContainer = $(element).find(\".swiper\")[0];\r\n\t\t\tconst swiperBtnPrev = $(element).find(\".swiper-prev\")[0];\r\n\t\t\tconst swiperBtnNext = $(element).find(\".swiper-next\")[0];\r\n\t\t\tconst swiperPagination = $(element).find(\".swiper-pagination\")[0];\r\n\t\t\tconst swiper = new Swiper(swiperContainer, {\r\n\t\t\t\tmodules: [Navigation, Pagination],\r\n\t\t\t\tslidesPerView: 1.5,\r\n\t\t\t\tspaceBetween: 16,\r\n\t\t\t\twatchSlidesVisibility: true,\r\n\t\t\t\tnavigation: {\r\n\t\t\t\t\tprevEl: swiperBtnPrev,\r\n\t\t\t\t\tnextEl: swiperBtnNext,\r\n\t\t\t\t},\r\n\t\t\t\tpagination: {\r\n\t\t\t\t\tel: swiperPagination,\r\n\t\t\t\t\tclickable: true,\r\n\t\t\t\t},\r\n\t\t\t\tbreakpoints: this.breakpoints,\r\n\t\t\t\t...this.options,\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport default LoopSlider;\r\n","import LoopSlider from \"./LoopSlider\";\r\nimport Swiper from \"swiper\";\r\nimport { Navigation, Pagination, Autoplay } from \"swiper/modules\";\r\n\r\nlet homeBannerSlider = new Swiper(\".home-banner-slider .swiper\", {\r\n\tslidesPerView: 1,\r\n\tspaceBetween: 12,\r\n\tloop: true,\r\n\tautoplay: {\r\n\t\tdelay: 4000,\r\n\t},\r\n\tpagination: {\r\n\t\tel: \".home-banner-slider .swiper-pagination\",\r\n\t\tclickable: true,\r\n\t},\r\n\tmodules: [Pagination, Autoplay],\r\n});\r\n\r\nlet communitySlider = new Swiper(\".community-slider .swiper\", {\r\n\tslidesPerView: 1.25,\r\n\tspaceBetween: 16,\r\n\tnavigation: {\r\n\t\tnextEl: \".community-slider .swiper-next\",\r\n\t\tprevEl: \".community-slider .swiper-prev\",\r\n\t},\r\n\tbreakpoints: {\r\n\t\t768: {\r\n\t\t\tslidesPerView: 1,\r\n\t\t\tspaceBetween: 32,\r\n\t\t},\r\n\t},\r\n\tmodules: [Navigation],\r\n});\r\n\r\nconst newsSlider = new LoopSlider(\".news-slider\", {\r\n\t576: {\r\n\t\tspaceBetween: 16,\r\n\t\tslidesPerView: 2.5,\r\n\t},\r\n\t768: {\r\n\t\tspaceBetween: 16,\r\n\t\tslidesPerView: 3.5,\r\n\t},\r\n\t1024: {\r\n\t\tspaceBetween: 20,\r\n\t\tslidesPerView: 4,\r\n\t},\r\n});\r\n\r\nconst trainingSlider = new LoopSlider(\".training-slider\", {\r\n\t576: {\r\n\t\tspaceBetween: 16,\r\n\t\tslidesPerView: 2.5,\r\n\t},\r\n\t768: {\r\n\t\tspaceBetween: 16,\r\n\t\tslidesPerView: 3.5,\r\n\t},\r\n\t1024: {\r\n\t\tspaceBetween: 32,\r\n\t\tslidesPerView: 3,\r\n\t},\r\n});\r\n\r\nconst generalSlider = new LoopSlider(\".general-slider\", {\r\n\t576: {\r\n\t\tspaceBetween: 16,\r\n\t\tslidesPerView: 2,\r\n\t},\r\n\t768: {\r\n\t\tspaceBetween: 16,\r\n\t\tslidesPerView: 3,\r\n\t},\r\n\t1024: {\r\n\t\tspaceBetween: 32,\r\n\t\tslidesPerView: 1,\r\n\t},\r\n});\r\n","function collapseComponent() {\r\n $(\".accordion-item\").each(function () {\r\n let _this = $(this);\r\n let otherList = _this.siblings();\r\n let bodyItem = _this.find(\".accordion-body\");\r\n let otherBody = $(otherList).find(\".accordion-body\")\r\n\r\n _this.on(\"click\", function () {\r\n $(bodyItem).slideToggle();\r\n $(otherBody).slideUp();\r\n _this.toggleClass(\"active\");\r\n $(otherList).removeClass(\"active\");\r\n });\r\n });\r\n\t$(\".accordion-item\").eq(0).trigger(\"click\")\r\n}\r\n\r\ncollapseComponent()","$('.back-to-top').fadeOut();\r\n$(window).scroll(function(){\r\n if ($(this).scrollTop() > 0) {\r\n $('.back-to-top').fadeIn();\r\n } else {\r\n $('.back-to-top').fadeOut();\r\n }\r\n});\r\n\r\n// Click event to scroll to top\r\n$('.back-to-top').click(function(){\r\n $('html, body').animate({scrollTop : 0},800);\r\n return false;\r\n});","$(function () {\r\n\t$(\".key-item\").each(function (index) {\r\n\t\tlet _this = $(this);\r\n\t\t_this.mouseenter(function () {\r\n\t\t\t$(\".key-background-item\").eq(index).addClass(\"show\");\r\n\t\t});\r\n\t\t_this.mouseleave(function () {\r\n\t\t\t$(\".key-background-item\").eq(index).removeClass(\"show\");\r\n\t\t});\r\n\t});\r\n\r\n\t$(\".key-item\").each(function (index, element) {\r\n\t\t$(element)\r\n\t\t\t.find(\".key-item-content\")\r\n\t\t\t.css({\r\n\t\t\t\t\"--content-height\":\r\n\t\t\t\t\t$(element).find(\".key-item-content-inner\").outerHeight() +\r\n\t\t\t\t\t\"px\",\r\n\t\t\t});\r\n\t});\r\n\t$(window).resize(function () {\r\n\t\t$(\".key-item\").each(function (index, element) {\r\n\t\t\t$(element)\r\n\t\t\t\t.find(\".key-item-content\")\r\n\t\t\t\t.css({\r\n\t\t\t\t\t\"--content-height\":\r\n\t\t\t\t\t\t$(element)\r\n\t\t\t\t\t\t\t.find(\".key-item-content-inner\")\r\n\t\t\t\t\t\t\t.outerHeight() + \"px\",\r\n\t\t\t\t});\r\n\t\t});\r\n\t});\r\n\r\n\t$(\".home-section-6 .item\").each(function (index) {\r\n\t\tlet _this = $(this);\r\n\t\t_this.mouseenter(function () {\r\n\t\t\t$(\".home-section-6 .background-item\").removeClass(\"show\");\r\n\t\t\t$(\".home-section-6 .background-item\").eq(index).addClass(\"show\");\r\n\t\t});\r\n\t});\r\n\r\n\t$(\".home-section-8 .item\").each(function (index, element) {\r\n\t\t$(element).on(\"mouseenter\", function () {\r\n\t\t\t$(\".home-section-8 .item\").removeClass(\"active\");\r\n\t\t\t$(this).addClass(\"active\");\r\n\t\t\t$(\".home-section-8 .img-hover img\").attr(\r\n\t\t\t\t\"src\",\r\n\t\t\t\t$(this).find(\".img-wrap img\").attr(\"data-src\")\r\n\t\t\t);\r\n\t\t});\r\n\t});\r\n\t$(\".home-section-8 .item\").eq(0).trigger(\"mouseenter\");\r\n});\r\n","(function ($) {\r\n\t$.fn.expandContent = function () {\r\n\t\tconst updateHeight = ($elem) => {\r\n\t\t\tlet $expandContent = $elem.find(\".expand-content\");\r\n\t\t\tlet innerHeight = $elem.find(\".expand-content-inner\").outerHeight();\r\n\r\n\t\t\t$expandContent.css({\r\n\t\t\t\t\"--orginal-content-height\": innerHeight + \"px\",\r\n\t\t\t});\r\n\r\n\t\t\t// Check if wrapper height equals inner height\r\n\t\t\tif ($expandContent.outerHeight() >= innerHeight) {\r\n\t\t\t\t$elem.find(\".expand-trigger\").hide();\r\n\t\t\t\t$elem.find(\".expand-content-mask\").hide();\r\n\t\t\t} else {\r\n\t\t\t\t$elem.find(\".expand-trigger\").show();\r\n\t\t\t\t$elem.find(\".expand-content-mask\").show();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn this.each(function () {\r\n\t\t\tlet $elem = $(this);\r\n\t\t\tlet $trigger = $elem.find(\".expand-trigger\");\r\n\t\t\tconsole.log($elem.is(\":visible\"));\r\n\t\t\t$elem.addClass(\"expand-content-item\");\r\n\r\n\t\t\tupdateHeight($elem);\r\n\t\t\t$(window).on(\"resize\", function () {\r\n\t\t\t\tupdateHeight($elem);\r\n\t\t\t});\r\n\r\n\t\t\t$elem.on(\"updateExpandContent\", function () {\r\n\t\t\t\tupdateHeight($elem);\r\n\t\t\t});\r\n\r\n\t\t\t$trigger.on(\"click\", function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\t$trigger.toggleClass(\"active\");\r\n\t\t\t\t$elem.find(\".expand-content\").toggleClass(\"expanded\");\r\n\r\n\t\t\t\tlet text = $trigger.hasClass(\"active\")\r\n\t\t\t\t\t? $trigger.attr(\"data-less-text\")\r\n\t\t\t\t\t: $trigger.attr(\"data-more-text\");\r\n\t\t\t\t$trigger.find(\"span\").text(text);\r\n\t\t\t});\r\n\t\t});\r\n\t};\r\n})(jQuery);\r\n\r\n$(document).ready(function () {\r\n\t$(\".detail-attributes .tabs\").tabslet();\r\n\t$(\".expand-content-item\").expandContent();\r\n\t$(\".detail-attributes .tabs\").on(\"_after\", function () {\r\n\t\t$(\".expand-content-item\").trigger(\"updateExpandContent\");\r\n\t});\r\n});\r\n","const productDetailSlider = () => {\r\n\tconst productDetailThumbnailSlider = new Swiper(\r\n\t\t\".product-detail-thumbnail .swiper\",\r\n\t\t{\r\n\t\t\tspaceBetween: 16,\r\n\t\t\tslidesPerView: 2.5,\r\n\t\t\tobserver: true,\r\n\t\t\tobserveParents: true,\r\n\t\t\tslideToClickedSlide: true,\r\n\t\t\twatchSlidesVisibility: true,\r\n\t\t\twatchSlidesProgress: true,\r\n\t\t\tbreakpoints: {\r\n\t\t\t\t768: {\r\n\t\t\t\t\tslidesPerView: 3.5,\r\n\t\t\t\t\tspaceBetween: 16,\r\n\t\t\t\t},\r\n\t\t\t\t1024: {\r\n\t\t\t\t\tslidesPerView: 4,\r\n\t\t\t\t\tspaceBetween: 20,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t}\r\n\t);\r\n\tconst productDetailImageSlider = new Swiper(\r\n\t\t\".product-detail-images .swiper\",\r\n\t\t{\r\n\t\t\teffect: \"fade\",\r\n\t\t\tfadeEffect: { crossFade: true },\r\n\t\t\tobserver: true,\r\n\t\t\tobserveParents: true,\r\n\t\t\tthumbs: {\r\n\t\t\t\tswiper: productDetailThumbnailSlider,\r\n\t\t\t},\r\n\t\t\tnavigation: {\r\n\t\t\t\tprevEl: \".product-detail-thumbnail .swiper-prev\",\r\n\t\t\t\tnextEl: \".product-detail-thumbnail .swiper-next\",\r\n\t\t\t},\r\n\t\t\ton: {\r\n\t\t\t\tslideChange: function () {\r\n\t\t\t\t\tlet activeIndex = this.activeIndex + 1;\r\n\r\n\t\t\t\t\tlet nextSlide = $(\r\n\t\t\t\t\t\t`.product-detail-thumbnail .swiper-slide:nth-child(${\r\n\t\t\t\t\t\t\tactiveIndex + 1\r\n\t\t\t\t\t\t})`\r\n\t\t\t\t\t);\r\n\t\t\t\t\tlet prevSlide = $(\r\n\t\t\t\t\t\t`.product-detail-thumbnail .swiper-slide:nth-child(${\r\n\t\t\t\t\t\t\tactiveIndex - 1\r\n\t\t\t\t\t\t})`\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tnextSlide &&\r\n\t\t\t\t\t\t!nextSlide.hasClass(\"swiper-slide-visible\")\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tthis.thumbs.swiper.slideNext();\r\n\t\t\t\t\t} else if (\r\n\t\t\t\t\t\tprevSlide &&\r\n\t\t\t\t\t\t!prevSlide.hasClass(\"swiper-slide-visible\")\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tthis.thumbs.swiper.slidePrev();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t}\r\n\t);\r\n};\r\n\r\nproductDetailSlider();\r\n","const clickMapResult = () => {\r\n\tconst iframe = $(\"#dealerMap\");\r\n\t$(\".contact-info-item\").each(function () {\r\n\t\tlet _this = $(this);\r\n\t\tlet src = _this.data(\"map\");\r\n\t\t$(_this).on(\"click\", function () {\r\n\t\t\t$(\".contact-info-item\").not(_this).removeClass(\"active\");\r\n\t\t\t_this.addClass(\"active\");\r\n\t\t\tiframe.attr(\"src\", src);\r\n\t\t});\r\n\t});\r\n\t$(\".contact-info-item\").eq(0).trigger(\"click\");\r\n};\r\n\r\nclickMapResult();\r\n","import scrollToElement from \"./ScrollElement\";\r\nimport Swiper from \"swiper\";\r\nimport { Navigation, Pagination, Autoplay, Grid } from \"swiper/modules\";\r\n\r\n$(function () {\r\n\t$(\".miss-pc-header-toggle\").on(\"click\", function () {\r\n\t\t$(\".miss-pc-header-menu\").slideToggle();\r\n\t\t$(this).find(\"span\").toggleClass(\"fa-bars fa-xmark\");\r\n\t});\r\n\t$(window).on(\"scroll\", function () {\r\n\t\tvar scrollTop = window.pageYOffset || $(document).scrollTop();\r\n\t\t$(\".miss-pc-header\").toggleClass(\"scrolling\", scrollTop > 0);\r\n\t});\r\n\r\n\t$(\".candidate-slider\").each(function () {\r\n\t\tlet $this = $(this);\r\n\t\tlet $slider = $this.find(\".swiper\");\r\n\t\tlet $prev = $this.find(\".swiper-prev\");\r\n\t\tlet $next = $this.find(\".swiper-next\");\r\n\t\tlet pagination = $this.find(\".swiper-pagination\");\r\n\r\n\t\tlet missCandidateSlider = new Swiper($slider[0], {\r\n\t\t\tmodules: [Navigation, Pagination, Grid],\r\n\t\t\tslidesPerView: 2.25,\r\n\t\t\tspaceBetween: 16,\r\n\t\t\tnavigation: {\r\n\t\t\t\tnextEl: $next[0],\r\n\t\t\t\tprevEl: $prev[0],\r\n\t\t\t},\r\n\t\t\tpagination: {\r\n\t\t\t\tel: pagination[0],\r\n\t\t\t\tclickable: true,\r\n\t\t\t},\r\n\t\t\tbreakpoints: {\r\n\t\t\t\t1024: {\r\n\t\t\t\t\tslidesPerView: 4,\r\n\t\t\t\t\tspaceBetween: 70,\r\n\t\t\t\t\tgrid: {\r\n\t\t\t\t\t\trows: 2,\r\n\t\t\t\t\t\tfill: \"row\",\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\t});\r\n\r\n\t$(\".candidate-tab\").tabslet({\r\n\t\tcontainer: \"#candidateContainer\",\r\n\t});\r\n\r\n\tlet missPartnerSlider = new Swiper(\".miss-partner-slider .swiper\", {\r\n\t\tmodules: [Navigation, Autoplay],\r\n\t\tslidesPerView: 2.5,\r\n\t\tspaceBetween: 16,\r\n\t\tnavigation: {\r\n\t\t\tnextEl: \".miss-partner-slider .swiper-next\",\r\n\t\t\tprevEl: \".miss-partner-slider .swiper-prev\",\r\n\t\t},\r\n\t\tloop: true,\r\n\t\trewind: true,\r\n\t\tautoplay: {\r\n\t\t\tdelay: 4000,\r\n\t\t},\r\n\t\tbreakpoints: {\r\n\t\t\t576: {\r\n\t\t\t\tslidesPerView: 4.5,\r\n\t\t\t\tspaceBetween: 16,\r\n\t\t\t},\r\n\t\t\t768: {\r\n\t\t\t\tslidesPerView: 4.5,\r\n\t\t\t\tspaceBetween: 32,\r\n\t\t\t},\r\n\t\t\t1024: {\r\n\t\t\t\tslidesPerView: 6,\r\n\t\t\t\tspaceBetween: 32,\r\n\t\t\t},\r\n\t\t},\r\n\t});\r\n\r\n\tif ($(\"body\").hasClass(\"miss-phuong-chau-landing\")) {\r\n\t\tAOS.init({\r\n\t\t\teasing: \"ease-out-back\",\r\n\t\t\tduration: 1000,\r\n\t\t\t// disable: \"mobile\",\r\n\t\t});\r\n\t}\r\n\r\n\t$(\".anchor-link\").on(\"click\", function (e) {\r\n\t\te.preventDefault();\r\n\t\tlet target = $(this).attr(\"href\");\r\n\t\tscrollToElement(target, 750, $(\".miss-pc-header\").outerHeight() + 20);\r\n\t});\r\n});\r\n","var scrollToElement = function (el, ms, height) {\r\n\tvar speed = ms ? ms : 5000;\r\n\tlet scrollHeight = $(el).offset().top - height;\r\n\t$(\"html,body\").animate(\r\n\t\t{\r\n\t\t\tscrollTop: scrollHeight,\r\n\t\t},\r\n\t\tspeed\r\n\t);\r\n};\r\n\r\nexport default scrollToElement;\r\n"]}