PageSourceSearch

https://byd-egypt.com/front-assets/js/clientlib-service-swiper.min.75f5f6c8cf43a471ce8369e0942f0d21.js

js byd-egypt.com collected 2026-10-05 03:27:11 UTC 185,820 bytes, 4,746 lines download raw bytes

vendor: 4,536 bytes, lines 1-182
1(function(){
2    var __pow = Math.pow;
3    function isObject$1(obj) {
4        return obj !== null && typeof obj === "object" && "constructor" in obj && obj.constructor === Object;
5    }
6    function extend$1(target = {}, src = {}) {
7        Object.keys(src).forEach((key) => {
8            if (typeof target[key] === "undefined")
9                target[key] = src[key];
10            else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) {
11                extend$1(target[key], src[key]);
12            }
13        });
14    }
15    const ssrDocument = {
16        body: {},
17        addEventListener() {
18        },
19        removeEventListener() {
20        },
21        activeElement: {
22            blur() {
23            },
24            nodeName: ""
25        },
26        querySelector() {
27            return null;
28        },
29        querySelectorAll() {
30            return [];
31        },
32        getElementById() {
33            return null;
34        },
35        createEvent() {
36            return {
37                initEvent() {
38                }
39            };
40        },
41        createElement() {
42            return {
43                children: [],
44                childNodes: [],
45                style: {},
46                setAttribute() {
47                },
48                getElementsByTagName() {
49                    return [];
50                }
51            };
52        },
53        createElementNS() {
54            return {};
55        },
56        importNode() {
57            return null;
58        },
59        location: {
60            hash: "",
61            host: "",
62            hostname: "",
63            href: "",
64            origin: "",
65            pathname: "",
66            protocol: "",
67            search: ""
68        }
69    };
70    function getDocument() {
71        const doc = typeof document !== "undefined" ? document : {};
72        extend$1(doc, ssrDocument);
73        return doc;
74    }
75    const ssrWindow = {
76        document: ssrDocument,
77        navigator: {
78            userAgent: ""
79        },
80        location: {
81            hash: "",
82            host: "",
83            hostname: "",
84            href: "",
85            origin: "",
86            pathname: "",
87            protocol: "",
88            search: ""
89        },
90        history: {
91            replaceState() {
92            },
93            pushState() {
94            },
95            go() {
96            },
97            back() {
98            }
99        },
100        CustomEvent: function CustomEvent() {
101            return this;
102        },
103        addEventListener() {
104        },
105        removeEventListener() {
106        },
107        getComputedStyle() {
108            return {
109                getPropertyValue() {
110                    return "";
111                }
112            };
113        },
114        Image() {
115        },
116        Date() {
117        },
118        screen: {},
119        setTimeout() {
120        },
121        clearTimeout() {
122        },
123        matchMedia() {
124            return {};
125        },
126        requestAnimationFrame(callback) {
127            if (typeof setTimeout === "undefined") {
128                callback();
129                return null;
130            }
131            return setTimeout(callback, 0);
132        },
133        cancelAnimationFrame(id) {
134            if (typeof setTimeout === "undefined") {
135                return;
136            }
137            clearTimeout(id);
138        }
139    };
140    function getWindow() {
141        const win = typeof window !== "undefined" ? window : {};
142        extend$1(win, ssrWindow);
143        return win;
144    }
145    function makeReactive(obj) {
146        const proto = obj.__proto__;
147        Object.defineProperty(obj, "__proto__", {
148            get() {
149                return proto;
150            },
151            set(value) {
152                proto.__proto__ = value;
153            }
154        });
155    }
156    class Dom7 extends Array {
157        constructor(items) {
158            if (typeof items === "number") {
159                super(items);
160            } else {
161                super(...items || []);
162                makeReactive(this);
163            }
164        }
165    }
166    function arrayFlat(arr = []) {
167        const res = [];
168        arr.forEach((el) => {
169            if (Array.isArray(el)) {
170                res.push(...arrayFlat(el));
171            } else {
172                res.push(el);
173            }
174        });
175        return res;
176    }
177    function arrayFilter(arr, callback) {
178        return Array.prototype.filter.call(arr, callback);
179    }
180    function arrayUnique(arr) {
181        const uniqueArray = [];
182        for (let i = 0; i < arr.length; i += 1) {
183            if (uniqueArray.indexOf(arr[i]) === -1)
184                uniqueArray.push(arr[i]);
185        }
186        return uniqueArray;
187    }
188    function qsa(selector, context) {
189        if (typeof selector !== "string") {
190            return [selector];
191        }
192        const a = [];
193        const res = context.querySelectorAll(selector);
194        for (let i = 0; i < res.length; i += 1) {
195            a.push(res[i]);
196        }
197        return a;
198    }
199    function $(selector, context) {
200        const window2 = getWindow();
201        const document2 = getDocument();
202        let arr = [];
203        if (!context && selector instanceof Dom7) {
204            return selector;
205        }
206        if (!selector) {
207            return new Dom7(arr);
208        }
209        if (typeof selector === "string") {
210            const html2 = selector.trim();
211            if (html2.indexOf("<") >= 0 && html2.indexOf(">") >= 0) {
212                let toCreate = "div";
213                if (html2.indexOf("<li") === 0)
214                    toCreate = "ul";
215                if (html2.indexOf("<tr") === 0)
216                    toCreate = "tbody";
217                if (html2.indexOf("<td") === 0 || html2.indexOf("<th") === 0)
218                    toCreate = "tr";
219                if (html2.indexOf("<tbody") === 0)
220                    toCreate = "table";
221                if (html2.indexOf("<option") === 0)
222                    toCreate = "select";
223                const tempParent = document2.createElement(toCreate);
224                tempParent.innerHTML = html2;
225                for (let i = 0; i < tempParent.childNodes.length; i += 1) {
226                    arr.push(tempParent.childNodes[i]);
227                }
228            } else {
229                arr = qsa(selector.trim(), context || document2);
230            }
231        } else if (selector.nodeType || selector === window2 || selector === document2) {
232            arr.push(selector);
233        } else if (Array.isArray(selector)) {
234            if (selector instanceof Dom7)
235                return selector;
236            arr = selector;
237        }
238        return new Dom7(arrayUnique(arr));
239    }
240    $.fn = Dom7.prototype;
241    function addClass(...classes2) {
242        const classNames = arrayFlat(classes2.map((c) => c.split(" ")));
243        this.forEach((el) => {
244            el.classList.add(...classNames);
245        });
246        return this;
247    }
248    function removeClass(...classes2) {
249        const classNames = arrayFlat(classes2.map((c) => c.split(" ")));
250        this.forEach((el) => {
251            el.classList.remove(...classNames);
252        });
253        return this;
254    }
255    function toggleClass(...classes2) {
256        const classNames = arrayFlat(classes2.map((c) => c.split(" ")));
257        this.forEach((el) => {
258            classNames.forEach((className) => {
259                el.classList.toggle(className);
260            });
261        });
262    }
263    function hasClass(...classes2) {
264        const classNames = arrayFlat(classes2.map((c) => c.split(" ")));
265        return arrayFilter(this, (el) => {
266            return classNames.filter((className) => el.classList.contains(className)).length > 0;
267        }).length > 0;
268    }
269    function attr(attrs, value) {
270        if (arguments.length === 1 && typeof attrs === "string") {
271            if (this[0])
272                return this[0].getAttribute(attrs);
273            return void 0;
274        }
275        for (let i = 0; i < this.length; i += 1) {
276            if (arguments.length === 2) {
277                this[i].setAttribute(attrs, value);
278            } else {
279                for (const attrName in attrs) {
280                    this[i][attrName] = attrs[attrName];
281                    this[i].setAttribute(attrName, attrs[attrName]);
282                }
283            }
284        }
285        return this;
286    }
287    function removeAttr(attr2) {
288        for (let i = 0; i < this.length; i += 1) {
289            this[i].removeAttribute(attr2);
290        }
291        return this;
292    }
293    function transform(transform2) {
294        for (let i = 0; i < this.length; i += 1) {
295            this[i].style.transform = transform2;
296        }
297        return this;
298    }
299    function transition$1(duration) {
300        for (let i = 0; i < this.length; i += 1) {
301            this[i].style.transitionDuration = typeof duration !== "string" ? `${duration}ms` : duration;
302        }
303        return this;
304    }
305    function on(...args) {
306        let [eventType, targetSelector, listener, capture] = args;
307        if (typeof args[1] === "function") {
308            [eventType, listener, capture] = args;
309            targetSelector = void 0;
310        }
311        if (!capture)
312            capture = false;
vendor: 15,489 bytes, lines 313-749
313        function handleLiveEvent(e) {
314            const target = e.target;
315            if (!target)
316                return;
317            const eventData = e.target.dom7EventData || [];
318            if (eventData.indexOf(e) < 0) {
319                eventData.unshift(e);
320            }
321            if ($(target).is(targetSelector))
322                listener.apply(target, eventData);
323            else {
324                const parents2 = $(target).parents();
325                for (let k = 0; k < parents2.length; k += 1) {
326                    if ($(parents2[k]).is(targetSelector))
327                        listener.apply(parents2[k], eventData);
328                }
329            }
330        }
331        function handleEvent(e) {
332            const eventData = e && e.target ? e.target.dom7EventData || [] : [];
333            if (eventData.indexOf(e) < 0) {
334                eventData.unshift(e);
335            }
336            listener.apply(this, eventData);
337        }
338        const events2 = eventType.split(" ");
339        let j;
340        for (let i = 0; i < this.length; i += 1) {
341            const el = this[i];
342            if (!targetSelector) {
343                for (j = 0; j < events2.length; j += 1) {
344                    const event = events2[j];
345                    if (!el.dom7Listeners)
346                        el.dom7Listeners = {};
347                    if (!el.dom7Listeners[event])
348                        el.dom7Listeners[event] = [];
349                    el.dom7Listeners[event].push({
350                        listener,
351                        proxyListener: handleEvent
352                    });
353                    el.addEventListener(event, handleEvent, capture);
354                }
355            } else {
356                for (j = 0; j < events2.length; j += 1) {
357                    const event = events2[j];
358                    if (!el.dom7LiveListeners)
359                        el.dom7LiveListeners = {};
360                    if (!el.dom7LiveListeners[event])
361                        el.dom7LiveListeners[event] = [];
362                    el.dom7LiveListeners[event].push({
363                        listener,
364                        proxyListener: handleLiveEvent
365                    });
366                    el.addEventListener(event, handleLiveEvent, capture);
367                }
368            }
369        }
370        return this;
371    }
372    function off(...args) {
373        let [eventType, targetSelector, listener, capture] = args;
374        if (typeof args[1] === "function") {
375            [eventType, listener, capture] = args;
376            targetSelector = void 0;
377        }
378        if (!capture)
379            capture = false;
380        const events2 = eventType.split(" ");
381        for (let i = 0; i < events2.length; i += 1) {
382            const event = events2[i];
383            for (let j = 0; j < this.length; j += 1) {
384                const el = this[j];
385                let handlers;
386                if (!targetSelector && el.dom7Listeners) {
387                    handlers = el.dom7Listeners[event];
388                } else if (targetSelector && el.dom7LiveListeners) {
389                    handlers = el.dom7LiveListeners[event];
390                }
391                if (handlers && handlers.length) {
392                    for (let k = handlers.length - 1; k >= 0; k -= 1) {
393                        const handler = handlers[k];
394                        if (listener && handler.listener === listener) {
395                            el.removeEventListener(event, handler.proxyListener, capture);
396                            handlers.splice(k, 1);
397                        } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
398                            el.removeEventListener(event, handler.proxyListener, capture);
399                            handlers.splice(k, 1);
400                        } else if (!listener) {
401                            el.removeEventListener(event, handler.proxyListener, capture);
402                            handlers.splice(k, 1);
403                        }
404                    }
405                }
406            }
407        }
408        return this;
409    }
410    function trigger(...args) {
411        const window2 = getWindow();
412        const events2 = args[0].split(" ");
413        const eventData = args[1];
414        for (let i = 0; i < events2.length; i += 1) {
415            const event = events2[i];
416            for (let j = 0; j < this.length; j += 1) {
417                const el = this[j];
418                if (window2.CustomEvent) {
419                    const evt = new window2.CustomEvent(event, {
420                        detail: eventData,
421                        bubbles: true,
422                        cancelable: true
423                    });
424                    el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);
425                    el.dispatchEvent(evt);
426                    el.dom7EventData = [];
427                    delete el.dom7EventData;
428                }
429            }
430        }
431        return this;
432    }
433    function transitionEnd$1(callback) {
434        const dom = this;
435        function fireCallBack(e) {
436            if (e.target !== this)
437                return;
438            callback.call(this, e);
439            dom.off("transitionend", fireCallBack);
440        }
441        if (callback) {
442            dom.on("transitionend", fireCallBack);
443        }
444        return this;
445    }
446    function outerWidth(includeMargins) {
447        if (this.length > 0) {
448            if (includeMargins) {
449                const styles2 = this.styles();
450                return this[0].offsetWidth + parseFloat(styles2.getPropertyValue("margin-right")) + parseFloat(styles2.getPropertyValue("margin-left"));
451            }
452            return this[0].offsetWidth;
453        }
454        return null;
455    }
456    function outerHeight(includeMargins) {
457        if (this.length > 0) {
458            if (includeMargins) {
459                const styles2 = this.styles();
460                return this[0].offsetHeight + parseFloat(styles2.getPropertyValue("margin-top")) + parseFloat(styles2.getPropertyValue("margin-bottom"));
461            }
462            return this[0].offsetHeight;
463        }
464        return null;
465    }
466    function offset() {
467        if (this.length > 0) {
468            const window2 = getWindow();
469            const document2 = getDocument();
470            const el = this[0];
471            const box = el.getBoundingClientRect();
472            const body = document2.body;
473            const clientTop = el.clientTop || body.clientTop || 0;
474            const clientLeft = el.clientLeft || body.clientLeft || 0;
475            const scrollTop = el === window2 ? window2.scrollY : el.scrollTop;
476            const scrollLeft = el === window2 ? window2.scrollX : el.scrollLeft;
477            return {
478                top: box.top + scrollTop - clientTop,
479                left: box.left + scrollLeft - clientLeft
480            };
481        }
482        return null;
483    }
484    function styles() {
485        const window2 = getWindow();
486        if (this[0])
487            return window2.getComputedStyle(this[0], null);
488        return {};
489    }
490    function css(props, value) {
491        const window2 = getWindow();
492        let i;
493        if (arguments.length === 1) {
494            if (typeof props === "string") {
495                if (this[0])
496                    return window2.getComputedStyle(this[0], null).getPropertyValue(props);
497            } else {
498                for (i = 0; i < this.length; i += 1) {
499                    for (const prop in props) {
500                        this[i].style[prop] = props[prop];
501                    }
502                }
503                return this;
504            }
505        }
506        if (arguments.length === 2 && typeof props === "string") {
507            for (i = 0; i < this.length; i += 1) {
508                this[i].style[props] = value;
509            }
510            return this;
511        }
512        return this;
513    }
514    function each(callback) {
515        if (!callback)
516            return this;
517        this.forEach((el, index2) => {
518            callback.apply(el, [el, index2]);
519        });
520        return this;
521    }
522    function filter(callback) {
523        const result = arrayFilter(this, callback);
524        return $(result);
525    }
526    function html(html2) {
527        if (typeof html2 === "undefined") {
528            return this[0] ? this[0].innerHTML : null;
529        }
530        for (let i = 0; i < this.length; i += 1) {
531            this[i].innerHTML = html2;
532        }
533        return this;
534    }
535    function text(text2) {
536        if (typeof text2 === "undefined") {
537            return this[0] ? this[0].textContent.trim() : null;
538        }
539        for (let i = 0; i < this.length; i += 1) {
540            this[i].textContent = text2;
541        }
542        return this;
543    }
544    function is(selector) {
545        const window2 = getWindow();
546        const document2 = getDocument();
547        const el = this[0];
548        let compareWith;
549        let i;
550        if (!el || typeof selector === "undefined")
551            return false;
552        if (typeof selector === "string") {
553            if (el.matches)
554                return el.matches(selector);
555            if (el.webkitMatchesSelector)
556                return el.webkitMatchesSelector(selector);
557            if (el.msMatchesSelector)
558                return el.msMatchesSelector(selector);
559            compareWith = $(selector);
560            for (i = 0; i < compareWith.length; i += 1) {
561                if (compareWith[i] === el)
562                    return true;
563            }
564            return false;
565        }
566        if (selector === document2) {
567            return el === document2;
568        }
569        if (selector === window2) {
570            return el === window2;
571        }
572        if (selector.nodeType || selector instanceof Dom7) {
573            compareWith = selector.nodeType ? [selector] : selector;
574            for (i = 0; i < compareWith.length; i += 1) {
575                if (compareWith[i] === el)
576                    return true;
577            }
578            return false;
579        }
580        return false;
581    }
582    function index() {
583        let child = this[0];
584        let i;
585        if (child) {
586            i = 0;
587            while ((child = child.previousSibling) !== null) {
588                if (child.nodeType === 1)
589                    i += 1;
590            }
591            return i;
592        }
593        return void 0;
594    }
595    function eq(index2) {
596        if (typeof index2 === "undefined")
597            return this;
598        const length = this.length;
599        if (index2 > length - 1) {
600            return $([]);
601        }
602        if (index2 < 0) {
603            const returnIndex = length + index2;
604            if (returnIndex < 0)
605                return $([]);
606            return $([this[returnIndex]]);
607        }
608        return $([this[index2]]);
609    }
610    function append(...els) {
611        let newChild;
612        const document2 = getDocument();
613        for (let k = 0; k < els.length; k += 1) {
614            newChild = els[k];
615            for (let i = 0; i < this.length; i += 1) {
616                if (typeof newChild === "string") {
617                    const tempDiv = document2.createElement("div");
618                    tempDiv.innerHTML = newChild;
619                    while (tempDiv.firstChild) {
620                        this[i].appendChild(tempDiv.firstChild);
621                    }
622                } else if (newChild instanceof Dom7) {
623                    for (let j = 0; j < newChild.length; j += 1) {
624                        this[i].appendChild(newChild[j]);
625                    }
626                } else {
627                    this[i].appendChild(newChild);
628                }
629            }
630        }
631        return this;
632    }
633    function prepend(newChild) {
634        const document2 = getDocument();
635        let i;
636        let j;
637        for (i = 0; i < this.length; i += 1) {
638            if (typeof newChild === "string") {
639                const tempDiv = document2.createElement("div");
640                tempDiv.innerHTML = newChild;
641                for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
642                    this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
643                }
644            } else if (newChild instanceof Dom7) {
645                for (j = 0; j < newChild.length; j += 1) {
646                    this[i].insertBefore(newChild[j], this[i].childNodes[0]);
647                }
648            } else {
649                this[i].insertBefore(newChild, this[i].childNodes[0]);
650            }
651        }
652        return this;
653    }
654    function next(selector) {
655        if (this.length > 0) {
656            if (selector) {
657                if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
658                    return $([this[0].nextElementSibling]);
659                }
660                return $([]);
661            }
662            if (this[0].nextElementSibling)
663                return $([this[0].nextElementSibling]);
664            return $([]);
665        }
666        return $([]);
667    }
668    function nextAll(selector) {
669        const nextEls = [];
670        let el = this[0];
671        if (!el)
672            return $([]);
673        while (el.nextElementSibling) {
674            const next2 = el.nextElementSibling;
675            if (selector) {
676                if ($(next2).is(selector))
677                    nextEls.push(next2);
678            } else
679                nextEls.push(next2);
680            el = next2;
681        }
682        return $(nextEls);
683    }
684    function prev(selector) {
685        if (this.length > 0) {
686            const el = this[0];
687            if (selector) {
688                if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
689                    return $([el.previousElementSibling]);
690                }
691                return $([]);
692            }
693            if (el.previousElementSibling)
694                return $([el.previousElementSibling]);
695            return $([]);
696        }
697        return $([]);
698    }
699    function prevAll(selector) {
700        const prevEls = [];
701        let el = this[0];
702        if (!el)
703            return $([]);
704        while (el.previousElementSibling) {
705            const prev2 = el.previousElementSibling;
706            if (selector) {
707                if ($(prev2).is(selector))
708                    prevEls.push(prev2);
709            } else
710                prevEls.push(prev2);
711            el = prev2;
712        }
713        return $(prevEls);
714    }
715    function parent(selector) {
716        const parents2 = [];
717        for (let i = 0; i < this.length; i += 1) {
718            if (this[i].parentNode !== null) {
719                if (selector) {
720                    if ($(this[i].parentNode).is(selector))
721                        parents2.push(this[i].parentNode);
722                } else {
723                    parents2.push(this[i].parentNode);
724                }
725            }
726        }
727        return $(parents2);
728    }
729    function parents(selector) {
730        const parents2 = [];
731        for (let i = 0; i < this.length; i += 1) {
732            let parent2 = this[i].parentNode;
733            while (parent2) {
734                if (selector) {
735                    if ($(parent2).is(selector))
736                        parents2.push(parent2);
737                } else {
738                    parents2.push(parent2);
739                }
740                parent2 = parent2.parentNode;
741            }
742        }
743        return $(parents2);
744    }
745    function closest(selector) {
746        let closest2 = this;
747        if (typeof selector === "undefined") {
748            return $([]);
749        }
vendor: 4,431 bytes, lines 750-896
750        if (!closest2.is(selector)) {
751            closest2 = closest2.parents(selector).eq(0);
752        }
753        return closest2;
754    }
755    function find(selector) {
756        const foundElements = [];
757        for (let i = 0; i < this.length; i += 1) {
758            const found = this[i].querySelectorAll(selector);
759            for (let j = 0; j < found.length; j += 1) {
760                foundElements.push(found[j]);
761            }
762        }
763        return $(foundElements);
764    }
765    function children(selector) {
766        const children2 = [];
767        for (let i = 0; i < this.length; i += 1) {
768            const childNodes = this[i].children;
769            for (let j = 0; j < childNodes.length; j += 1) {
770                if (!selector || $(childNodes[j]).is(selector)) {
771                    children2.push(childNodes[j]);
772                }
773            }
774        }
775        return $(children2);
776    }
777    function remove() {
778        for (let i = 0; i < this.length; i += 1) {
779            if (this[i].parentNode)
780                this[i].parentNode.removeChild(this[i]);
781        }
782        return this;
783    }
784    const Methods = {
785        addClass,
786        removeClass,
787        hasClass,
788        toggleClass,
789        attr,
790        removeAttr,
791        transform,
792        transition: transition$1,
793        on,
794        off,
795        trigger,
796        transitionEnd: transitionEnd$1,
797        outerWidth,
798        outerHeight,
799        styles,
800        offset,
801        css,
802        each,
803        html,
804        text,
805        is,
806        index,
807        eq,
808        append,
809        prepend,
810        next,
811        nextAll,
812        prev,
813        prevAll,
814        parent,
815        parents,
816        closest,
817        find,
818        children,
819        filter,
820        remove
821    };
822    Object.keys(Methods).forEach((methodName) => {
823        Object.defineProperty($.fn, methodName, {
824            value: Methods[methodName],
825            writable: true
826        });
827    });
828    function deleteProps(obj) {
829        const object = obj;
830        Object.keys(object).forEach((key) => {
831            try {
832                object[key] = null;
833            } catch (e) {
834            }
835            try {
836                delete object[key];
837            } catch (e) {
838            }
839        });
840    }
841    function nextTick(callback, delay = 0) {
842        return setTimeout(callback, delay);
843    }
844    function now() {
845        return Date.now();
846    }
847    function getComputedStyle$1(el) {
848        const window2 = getWindow();
849        let style;
850        if (window2.getComputedStyle) {
851            style = window2.getComputedStyle(el, null);
852        }
853        if (!style && el.currentStyle) {
854            style = el.currentStyle;
855        }
856        if (!style) {
857            style = el.style;
858        }
859        return style;
860    }
861    function getTranslate(el, axis = "x") {
862        const window2 = getWindow();
863        let matrix;
864        let curTransform;
865        let transformMatrix;
866        const curStyle = getComputedStyle$1(el);
867        if (window2.WebKitCSSMatrix) {
868            curTransform = curStyle.transform || curStyle.webkitTransform;
869            if (curTransform.split(",").length > 6) {
870                curTransform = curTransform.split(", ").map((a) => a.replace(",", ".")).join(", ");
871            }
872            transformMatrix = new window2.WebKitCSSMatrix(curTransform === "none" ? "" : curTransform);
873        } else {
874            transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,");
875            matrix = transformMatrix.toString().split(",");
876        }
877        if (axis === "x") {
878            if (window2.WebKitCSSMatrix)
879                curTransform = transformMatrix.m41;
880            else if (matrix.length === 16)
881                curTransform = parseFloat(matrix[12]);
882            else
883                curTransform = parseFloat(matrix[4]);
884        }
885        if (axis === "y") {
886            if (window2.WebKitCSSMatrix)
887                curTransform = transformMatrix.m42;
888            else if (matrix.length === 16)
889                curTransform = parseFloat(matrix[13]);
890            else
891                curTransform = parseFloat(matrix[5]);
892        }
893        return curTransform || 0;
894    }
895    function isObject(o) {
896        return typeof o === "object" && o !== null && o.constructor && Ob
vendor: 12,137 bytes, lines 896-1189
896ject.prototype.toString.call(o).slice(8, -1) === "Object";
897    }
898    function isNode(node) {
899        if (typeof window !== "undefined" && typeof window.HTMLElement !== "undefined") {
900            return node instanceof HTMLElement;
901        }
902        return node && (node.nodeType === 1 || node.nodeType === 11);
903    }
904    function extend(...args) {
905        const to = Object(args[0]);
906        const noExtend = ["__proto__", "constructor", "prototype"];
907        for (let i = 1; i < args.length; i += 1) {
908            const nextSource = args[i];
909            if (nextSource !== void 0 && nextSource !== null && !isNode(nextSource)) {
910                const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);
911                for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
912                    const nextKey = keysArray[nextIndex];
913                    const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
914                    if (desc !== void 0 && desc.enumerable) {
915                        if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
916                            if (nextSource[nextKey].__swiper__) {
917                                to[nextKey] = nextSource[nextKey];
918                            } else {
919                                extend(to[nextKey], nextSource[nextKey]);
920                            }
921                        } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
922                            to[nextKey] = {};
923                            if (nextSource[nextKey].__swiper__) {
924                                to[nextKey] = nextSource[nextKey];
925                            } else {
926                                extend(to[nextKey], nextSource[nextKey]);
927                            }
928                        } else {
929                            to[nextKey] = nextSource[nextKey];
930                        }
931                    }
932                }
933            }
934        }
935        return to;
936    }
937    function setCSSProperty(el, varName, varValue) {
938        el.style.setProperty(varName, varValue);
939    }
940    function animateCSSModeScroll({
941                                      swiper,
942                                      targetPosition,
943                                      side
944                                  }) {
945        const window2 = getWindow();
946        const startPosition = -swiper.translate;
947        let startTime = null;
948        let time;
949        const duration = swiper.params.speed;
950        swiper.wrapperEl.style.scrollSnapType = "none";
951        window2.cancelAnimationFrame(swiper.cssModeFrameID);
952        const dir = targetPosition > startPosition ? "next" : "prev";
953        const isOutOfBound = (current, target) => {
954            return dir === "next" && current >= target || dir === "prev" && current <= target;
955        };
956        const animate = () => {
957            time = new Date().getTime();
958            if (startTime === null) {
959                startTime = time;
960            }
961            const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
962            const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
963            let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);
964            if (isOutOfBound(currentPosition, targetPosition)) {
965                currentPosition = targetPosition;
966            }
967            swiper.wrapperEl.scrollTo({
968                [side]: currentPosition
969            });
970            if (isOutOfBound(currentPosition, targetPosition)) {
971                swiper.wrapperEl.style.overflow = "hidden";
972                swiper.wrapperEl.style.scrollSnapType = "";
973                setTimeout(() => {
974                    swiper.wrapperEl.style.overflow = "";
975                    swiper.wrapperEl.scrollTo({
976                        [side]: currentPosition
977                    });
978                });
979                window2.cancelAnimationFrame(swiper.cssModeFrameID);
980                return;
981            }
982            swiper.cssModeFrameID = window2.requestAnimationFrame(animate);
983        };
984        animate();
985    }
986    let support;
987    function calcSupport() {
988        const window2 = getWindow();
989        const document2 = getDocument();
990        return {
991            smoothScroll: document2.documentElement && "scrollBehavior" in document2.documentElement.style,
992            touch: !!("ontouchstart" in window2 || window2.DocumentTouch && document2 instanceof window2.DocumentTouch),
993            passiveListener: function checkPassiveListener() {
994                let supportsPassive = false;
995                try {
996                    const opts = Object.defineProperty({}, "passive", {
997                        get() {
998                            supportsPassive = true;
999                        }
1000                    });
1001                    window2.addEventListener("testPassiveListener", null, opts);
1002                } catch (e) {
1003                }
1004                return supportsPassive;
1005            }(),
1006            gestures: function checkGestures() {
1007                return "ongesturestart" in window2;
1008            }()
1009        };
1010    }
1011    function getSupport() {
1012        if (!support) {
1013            support = calcSupport();
1014        }
1015        return support;
1016    }
1017    let deviceCached;
1018    function calcDevice({
1019                            userAgent
1020                        } = {}) {
1021        const support2 = getSupport();
1022        const window2 = getWindow();
1023        const platform = window2.navigator.platform;
1024        const ua = userAgent || window2.navigator.userAgent;
1025        const device = {
1026            ios: false,
1027            android: false
1028        };
1029        const screenWidth = window2.screen.width;
1030        const screenHeight = window2.screen.height;
1031        const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
1032        let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
1033        const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
1034        const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
1035        const windows = platform === "Win32";
1036        let macos = platform === "MacIntel";
1037        const iPadScreens = ["1024x1366", "1366x1024", "834x1194", "1194x834", "834x1112", "1112x834", "768x1024", "1024x768", "820x1180", "1180x820", "810x1080", "1080x810"];
1038        if (!ipad && macos && support2.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {
1039            ipad = ua.match(/(Version)\/([\d.]+)/);
1040            if (!ipad)
1041                ipad = [0, 1, "13_0_0"];
1042            macos = false;
1043        }
1044        if (android && !windows) {
1045            device.os = "android";
1046            device.android = true;
1047        }
1048        if (ipad || iphone || ipod) {
1049            device.os = "ios";
1050            device.ios = true;
1051        }
1052        return device;
1053    }
1054    function getDevice(overrides = {}) {
1055        if (!deviceCached) {
1056            deviceCached = calcDevice(overrides);
1057        }
1058        return deviceCached;
1059    }
1060    let browser;
1061    function calcBrowser() {
1062        const window2 = getWindow();
1063        function isSafari() {
1064            const ua = window2.navigator.userAgent.toLowerCase();
1065            return ua.indexOf("safari") >= 0 && ua.indexOf("chrome") < 0 && ua.indexOf("android") < 0;
1066        }
1067        return {
1068            isSafari: isSafari(),
1069            isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window2.navigator.userAgent)
1070        };
1071    }
1072    function getBrowser() {
1073        if (!browser) {
1074            browser = calcBrowser();
1075        }
1076        return browser;
1077    }
1078    function Resize({
1079                        swiper,
1080                        on: on2,
1081                        emit
1082                    }) {
1083        const window2 = getWindow();
1084        let observer = null;
1085        const resizeHandler = () => {
1086            if (!swiper || swiper.destroyed || !swiper.initialized)
1087                return;
1088            emit("beforeResize");
1089            emit("resize");
1090        };
1091        const createObserver = () => {
1092            if (!swiper || swiper.destroyed || !swiper.initialized)
1093                return;
1094            observer = new ResizeObserver((entries) => {
1095                const {
1096                    width,
1097                    height
1098                } = swiper;
1099                let newWidth = width;
1100                let newHeight = height;
1101                entries.forEach(({
1102                                     contentBoxSize,
1103                                     contentRect,
1104                                     target
1105                                 }) => {
1106                    if (target && target !== swiper.el)
1107                        return;
1108                    newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
1109                    newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
1110                });
1111                if (newWidth !== width || newHeight !== height) {
1112                    resizeHandler();
1113                }
1114            });
1115            observer.observe(swiper.el);
1116        };
1117        const removeObserver = () => {
1118            if (observer && observer.unobserve && swiper.el) {
1119                observer.unobserve(swiper.el);
1120                observer = null;
1121            }
1122        };
1123        const orientationChangeHandler = () => {
1124            if (!swiper || swiper.destroyed || !swiper.initialized)
1125                return;
1126            emit("orientationchange");
1127        };
1128        on2("init", () => {
1129            if (swiper.params.resizeObserver && typeof window2.ResizeObserver !== "undefined") {
1130                createObserver();
1131                return;
1132            }
1133            window2.addEventListener("resize", resizeHandler);
1134            window2.addEventListener("orientationchange", orientationChangeHandler);
1135        });
1136        on2("destroy", () => {
1137            removeObserver();
1138            window2.removeEventListener("resize", resizeHandler);
1139            window2.removeEventListener("orientationchange", orientationChangeHandler);
1140        });
1141    }
1142    function Observer({
1143                          swiper,
1144                          extendParams,
1145                          on: on2,
1146                          emit
1147                      }) {
1148        const observers = [];
1149        const window2 = getWindow();
1150        const attach = (target, options = {}) => {
1151            const ObserverFunc = window2.MutationObserver || window2.WebkitMutationObserver;
1152            const observer = new ObserverFunc((mutations) => {
1153                if (mutations.length === 1) {
1154                    emit("observerUpdate", mutations[0]);
1155                    return;
1156                }
1157                const observerUpdate = function observerUpdate2() {
1158                    emit("observerUpdate", mutations[0]);
1159                };
1160                if (window2.requestAnimationFrame) {
1161                    window2.requestAnimationFrame(observerUpdate);
1162                } else {
1163                    window2.setTimeout(observerUpdate, 0);
1164                }
1165            });
1166            observer.observe(target, {
1167                attributes: typeof options.attributes === "undefined" ? true : options.attributes,
1168                childList: typeof options.childList === "undefined" ? true : options.childList,
1169                characterData: typeof options.characterData === "undefined" ? true : options.characterData
1170            });
1171            observers.push(observer);
1172        };
1173        const init = () => {
1174            if (!swiper.params.observer)
1175                return;
1176            if (swiper.params.observeParents) {
1177                const containerParents = swiper.$el.parents();
1178                for (let i = 0; i < containerParents.length; i += 1) {
1179                    attach(containerParents[i]);
1180                }
1181            }
1182            attach(swiper.$el[0], {
1183                childList: swiper.params.observeSlideChildren
1184            });
1185            attach(swiper.$wrapperEl[0], {
1186                attributes: false
1187            });
1188        };
1189        const destroy = () => {
vendor: 6,797 bytes, lines 1190-1365
1190            observers.forEach((observer) => {
1191                observer.disconnect();
1192            });
1193            observers.splice(0, observers.length);
1194        };
1195        extendParams({
1196            observer: false,
1197            observeParents: false,
1198            observeSlideChildren: false
1199        });
1200        on2("init", init);
1201        on2("destroy", destroy);
1202    }
1203    var eventsEmitter = {
1204        on(events2, handler, priority) {
1205            const self = this;
1206            if (typeof handler !== "function")
1207                return self;
1208            const method = priority ? "unshift" : "push";
1209            events2.split(" ").forEach((event) => {
1210                if (!self.eventsListeners[event])
1211                    self.eventsListeners[event] = [];
1212                self.eventsListeners[event][method](handler);
1213            });
1214            return self;
1215        },
1216        once(events2, handler, priority) {
1217            const self = this;
1218            if (typeof handler !== "function")
1219                return self;
1220            function onceHandler(...args) {
1221                self.off(events2, onceHandler);
1222                if (onceHandler.__emitterProxy) {
1223                    delete onceHandler.__emitterProxy;
1224                }
1225                handler.apply(self, args);
1226            }
1227            onceHandler.__emitterProxy = handler;
1228            return self.on(events2, onceHandler, priority);
1229        },
1230        onAny(handler, priority) {
1231            const self = this;
1232            if (typeof handler !== "function")
1233                return self;
1234            const method = priority ? "unshift" : "push";
1235            if (self.eventsAnyListeners.indexOf(handler) < 0) {
1236                self.eventsAnyListeners[method](handler);
1237            }
1238            return self;
1239        },
1240        offAny(handler) {
1241            const self = this;
1242            if (!self.eventsAnyListeners)
1243                return self;
1244            const index2 = self.eventsAnyListeners.indexOf(handler);
1245            if (index2 >= 0) {
1246                self.eventsAnyListeners.splice(index2, 1);
1247            }
1248            return self;
1249        },
1250        off(events2, handler) {
1251            const self = this;
1252            if (!self.eventsListeners)
1253                return self;
1254            events2.split(" ").forEach((event) => {
1255                if (typeof handler === "undefined") {
1256                    self.eventsListeners[event] = [];
1257                } else if (self.eventsListeners[event]) {
1258                    self.eventsListeners[event].forEach((eventHandler, index2) => {
1259                        if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
1260                            self.eventsListeners[event].splice(index2, 1);
1261                        }
1262                    });
1263                }
1264            });
1265            return self;
1266        },
1267        emit(...args) {
1268            const self = this;
1269            if (!self.eventsListeners)
1270                return self;
1271            let events2;
1272            let data;
1273            let context;
1274            if (typeof args[0] === "string" || Array.isArray(args[0])) {
1275                events2 = args[0];
1276                data = args.slice(1, args.length);
1277                context = self;
1278            } else {
1279                events2 = args[0].events;
1280                data = args[0].data;
1281                context = args[0].context || self;
1282            }
1283            data.unshift(context);
1284            const eventsArray = Array.isArray(events2) ? events2 : events2.split(" ");
1285            eventsArray.forEach((event) => {
1286                if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
1287                    self.eventsAnyListeners.forEach((eventHandler) => {
1288                        eventHandler.apply(context, [event, ...data]);
1289                    });
1290                }
1291                if (self.eventsListeners && self.eventsListeners[event]) {
1292                    self.eventsListeners[event].forEach((eventHandler) => {
1293                        eventHandler.apply(context, data);
1294                    });
1295                }
1296            });
1297            return self;
1298        }
1299    };
1300    function updateSize() {
1301        const swiper = this;
1302        let width;
1303        let height;
1304        const $el = swiper.$el;
1305        if (typeof swiper.params.width !== "undefined" && swiper.params.width !== null) {
1306            width = swiper.params.width;
1307        } else {
1308            width = $el[0].clientWidth;
1309        }
1310        if (typeof swiper.params.height !== "undefined" && swiper.params.height !== null) {
1311            height = swiper.params.height;
1312        } else {
1313            height = $el[0].clientHeight;
1314        }
1315        if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
1316            return;
1317        }
1318        width = width - parseInt($el.css("padding-left") || 0, 10) - parseInt($el.css("padding-right") || 0, 10);
1319        height = height - parseInt($el.css("padding-top") || 0, 10) - parseInt($el.css("padding-bottom") || 0, 10);
1320        if (Number.isNaN(width))
1321            width = 0;
1322        if (Number.isNaN(height))
1323            height = 0;
1324        Object.assign(swiper, {
1325            width,
1326            height,
1327            size: swiper.isHorizontal() ? width : height
1328        });
1329    }
1330    function updateSlides() {
1331        const swiper = this;
1332        function getDirectionLabel(property) {
1333            if (swiper.isHorizontal()) {
1334                return property;
1335            }
1336            return {
1337                "width": "height",
1338                "margin-top": "margin-left",
1339                "margin-bottom ": "margin-right",
1340                "margin-left": "margin-top",
1341                "margin-right": "margin-bottom",
1342                "padding-left": "padding-top",
1343                "padding-right": "padding-bottom",
1344                "marginRight": "marginBottom"
1345            }[property];
1346        }
1347        function getDirectionPropertyValue(node, label) {
1348            return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);
1349        }
1350        const params = swiper.params;
1351        const {
1352            $wrapperEl,
1353            size: swiperSize,
1354            rtlTranslate: rtl,
1355            wrongRTL
1356        } = swiper;
1357        const isVirtual = swiper.virtual && params.virtual.enabled;
1358        const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
1359        const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);
1360        const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
1361        let snapGrid = [];
1362        const slidesGrid = [];
1363        const slidesSizesGrid = [];
1364        let offsetBefore = params.slidesOffsetBefore;
1365        if (typeof offsetBefore === "function") {
vendor: 7,072 bytes, lines 1366-1513
1366            offsetBefore = params.slidesOffsetBefore.call(swiper);
1367        }
1368        let offsetAfter = params.slidesOffsetAfter;
1369        if (typeof offsetAfter === "function") {
1370            offsetAfter = params.slidesOffsetAfter.call(swiper);
1371        }
1372        const previousSnapGridLength = swiper.snapGrid.length;
1373        const previousSlidesGridLength = swiper.slidesGrid.length;
1374        let spaceBetween = params.spaceBetween;
1375        let slidePosition = -offsetBefore;
1376        let prevSlideSize = 0;
1377        let index2 = 0;
1378        if (typeof swiperSize === "undefined") {
1379            return;
1380        }
1381        if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) {
1382            spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiperSize;
1383        }
1384        swiper.virtualSize = -spaceBetween;
1385        if (rtl)
1386            slides.css({
1387                marginLeft: "",
1388                marginBottom: "",
1389                marginTop: ""
1390            });
1391        else
1392            slides.css({
1393                marginRight: "",
1394                marginBottom: "",
1395                marginTop: ""
1396            });
1397        if (params.centeredSlides && params.cssMode) {
1398            setCSSProperty(swiper.wrapperEl, "--swiper-centered-offset-before", "");
1399            setCSSProperty(swiper.wrapperEl, "--swiper-centered-offset-after", "");
1400        }
1401        const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
1402        if (gridEnabled) {
1403            swiper.grid.initSlides(slidesLength);
1404        }
1405        let slideSize;
1406        const shouldResetSlideSize = params.slidesPerView === "auto" && params.breakpoints && Object.keys(params.breakpoints).filter((key) => {
1407            return typeof params.breakpoints[key].slidesPerView !== "undefined";
1408        }).length > 0;
1409        for (let i = 0; i < slidesLength; i += 1) {
1410            slideSize = 0;
1411            const slide2 = slides.eq(i);
1412            if (gridEnabled) {
1413                swiper.grid.updateSlide(i, slide2, slidesLength, getDirectionLabel);
1414            }
1415            if (slide2.css("display") === "none")
1416                continue;
1417            if (params.slidesPerView === "auto") {
1418                if (shouldResetSlideSize) {
1419                    slides[i].style[getDirectionLabel("width")] = ``;
1420                }
1421                const slideStyles = getComputedStyle(slide2[0]);
1422                const currentTransform = slide2[0].style.transform;
1423                const currentWebKitTransform = slide2[0].style.webkitTransform;
1424                if (currentTransform) {
1425                    slide2[0].style.transform = "none";
1426                }
1427                if (currentWebKitTransform) {
1428                    slide2[0].style.webkitTransform = "none";
1429                }
1430                if (params.roundLengths) {
1431                    slideSize = swiper.isHorizontal() ? slide2.outerWidth(true) : slide2.outerHeight(true);
1432                } else {
1433                    const width = getDirectionPropertyValue(slideStyles, "width");
1434                    const paddingLeft = getDirectionPropertyValue(slideStyles, "padding-left");
1435                    const paddingRight = getDirectionPropertyValue(slideStyles, "padding-right");
1436                    const marginLeft = getDirectionPropertyValue(slideStyles, "margin-left");
1437                    const marginRight = getDirectionPropertyValue(slideStyles, "margin-right");
1438                    const boxSizing = slideStyles.getPropertyValue("box-sizing");
1439                    if (boxSizing && boxSizing === "border-box") {
1440                        slideSize = width + marginLeft + marginRight;
1441                    } else {
1442                        const {
1443                            clientWidth,
1444                            offsetWidth
1445                        } = slide2[0];
1446                        slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
1447                    }
1448                }
1449                if (currentTransform) {
1450                    slide2[0].style.transform = currentTransform;
1451                }
1452                if (currentWebKitTransform) {
1453                    slide2[0].style.webkitTransform = currentWebKitTransform;
1454                }
1455                if (params.roundLengths)
1456                    slideSize = Math.floor(slideSize);
1457            } else {
1458                slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
1459                if (params.roundLengths)
1460                    slideSize = Math.floor(slideSize);
1461                if (slides[i]) {
1462                    slides[i].style[getDirectionLabel("width")] = `${slideSize}px`;
1463                }
1464            }
1465            if (slides[i]) {
1466                slides[i].swiperSlideSize = slideSize;
1467            }
1468            slidesSizesGrid.push(slideSize);
1469            if (params.centeredSlides) {
1470                slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
1471                if (prevSlideSize === 0 && i !== 0)
1472                    slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
1473                if (i === 0)
1474                    slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
1475                if (Math.abs(slidePosition) < 1 / 1e3)
1476                    slidePosition = 0;
1477                if (params.roundLengths)
1478                    slidePosition = Math.floor(slidePosition);
1479                if (index2 % params.slidesPerGroup === 0)
1480                    snapGrid.push(slidePosition);
1481                slidesGrid.push(slidePosition);
1482            } else {
1483                if (params.roundLengths)
1484                    slidePosition = Math.floor(slidePosition);
1485                if ((index2 - Math.min(swiper.params.slidesPerGroupSkip, index2)) % swiper.params.slidesPerGroup === 0)
1486                    snapGrid.push(slidePosition);
1487                slidesGrid.push(slidePosition);
1488                slidePosition = slidePosition + slideSize + spaceBetween;
1489            }
1490            swiper.virtualSize += slideSize + spaceBetween;
1491            prevSlideSize = slideSize;
1492            index2 += 1;
1493        }
1494        swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
1495        if (rtl && wrongRTL && (params.effect === "slide" || params.effect === "coverflow")) {
1496            $wrapperEl.css({
1497                width: `${swiper.virtualSize + params.spaceBetween}px`
1498            });
1499        }
1500        if (params.setWrapperSize) {
1501            $wrapperEl.css({
1502                [getDirectionLabel("width")]: `${swiper.virtualSize + params.spaceBetween}px`
1503            });
1504        }
1505        if (gridEnabled) {
1506            swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);
1507        }
1508        if (!params.centeredSlides) {
1509            const newSlidesGrid = [];
1510            for (let i = 0; i < snapGrid.length; i += 1) {
1511                let slidesGridItem = snapGrid[i];
1512                if (params.roundLengths)
1513                    slidesGridItem = Math.floor(slidesGridItem);
1514                if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
1515                    newSlidesGrid.push(slidesGridItem);
1516                }
1517            }
1518            snapGrid = newSlidesGrid;
1519            if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
1520                snapGrid.push(swiper.virtualSize - swiperSize);
1521            }
1522        }
1523        if (snapGrid.length === 0)
1524            snapGrid = [0];
1525        if (params.spaceBetween !== 0) {
1526            const key = swiper.isHorizontal() && rtl ? "marginLeft" : getDirectionLabel("marginRight");
1527            slides.filter((_, slideIndex) => {
1528                if (!params.cssMode)
1529                    return true;
1530                if (slideIndex === slides.length - 1) {
1531                    return false;
1532                }
1533                return true;
1534            }).css({
1535                [key]: `${spaceBetween}px`
1536            });
1537        }
1538        if (params.centeredSlides && params.centeredSlidesBounds) {
1539            let allSlidesSize = 0;
1540            slidesSizesGrid.forEach((slideSizeValue) => {
1541                allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
1542            });
1543            allSlidesSize -= params.spaceBetween;
1544            const maxSnap = allSlidesSize - swiperSize;
1545            snapGrid = snapGrid.map((snap) => {
1546                if (snap < 0)
1547                    return -offsetBefore;
1548                if (snap > maxSnap)
1549                    return maxSnap + offsetAfter;
1550                return snap;
1551            });
1552        }
1553        if (params.centerInsufficientSlides) {
1554            let allSlidesSize = 0;
1555            slidesSizesGrid.forEach((slideSizeValue) => {
1556                allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
1557            });
1558            allSlidesSize -= params.spaceBetween;
1559            if (allSlidesSize < swiperSize) {
1560                const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
1561                snapGrid.forEach((snap, snapIndex) => {
1562                    snapGrid[snapIndex] = snap - allSlidesOffset;
1563                });
1564                slidesGrid.forEach((snap, snapIndex) => {
1565                    slidesGrid[snapIndex] = snap + allSlidesOffset;
1566                });
1567            }
1568        }
1569        Object.assign(swiper, {
1570            slides,
1571            snapGrid,
1572            slidesGrid,
1573            slidesSizesGrid
1574        });
1575        if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {
1576            setCSSProperty(swiper.wrapperEl, "--swiper-centered-offset-before", `${-snapGrid[0]}px`);
1577            setCSSProperty(swiper.wrapperEl, "--swiper-centered-offset-after", `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);
1578            const addToSnapGrid = -swiper.snapGrid[0];
1579            const addToSlidesGrid = -swiper.slidesGrid[0];
1580            swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);
1581            swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);
1582        }
1583        if (slidesLength !== previousSlidesLength) {
1584            swiper.emit("slidesLengthChange");
1585        }
1586        if (snapGrid.length !== previousSnapGridLength) {
1587            if (swiper.params.watchOverflow)
1588                swiper.checkOverflow();
1589            swiper.emit("snapGridLengthChange");
1590        }
1591        if (slidesGrid.length !== previousSlidesGridLength) {
1592            swiper.emit("slidesGridLengthChange");
1593        }
1594        if (params.watchSlidesProgress) {
1595            swiper.updateSlidesOffset();
1596        }
1597    }
1598    function updateAutoHeight(speed) {
1599        const swiper = this;
1600        const activeSlides = [];
1601        const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
1602        let newHeight = 0;
1603        let i;
1604        if (typeof speed === "number") {
1605            swiper.setTransition(speed);
1606        } else if (speed === true) {
1607            swiper.setTransition(swiper.params.speed);
1608        }
1609        const getSlideByIndex = (index2) => {
1610            if (isVirtual) {
1611                return swiper.slides.filter((el) => parseInt(el.getAttribute("data-swiper-slide-index"), 10) === index2)[0];
1612            }
1613            return swiper.slides.eq(index2)[0];
1614        };
1615        if (swiper.params.slidesPerView !== "auto" && swiper.params.slidesPerView > 1) {
1616            if (swiper.params.centeredSlides) {
1617                swiper.visibleSlides.each((slide2) => {
1618                    activeSlides.push(slide2);
1619                });
1620            } else {
1621                for (i = 0;
vendor: 7,643 bytes, lines 1621-1779
1621 i < Math.ceil(swiper.params.slidesPerView); i += 1) {
1622                    const index2 = swiper.activeIndex + i;
1623                    if (index2 > swiper.slides.length && !isVirtual)
1624                        break;
1625                    activeSlides.push(getSlideByIndex(index2));
1626                }
1627            }
1628        } else {
1629            activeSlides.push(getSlideByIndex(swiper.activeIndex));
1630        }
1631        for (i = 0; i < activeSlides.length; i += 1) {
1632            if (typeof activeSlides[i] !== "undefined") {
1633                const height = activeSlides[i].offsetHeight;
1634                newHeight = height > newHeight ? height : newHeight;
1635            }
1636        }
1637        if (newHeight || newHeight === 0)
1638            swiper.$wrapperEl.css("height", `${newHeight}px`);
1639    }
1640    function updateSlidesOffset() {
1641        const swiper = this;
1642        const slides = swiper.slides;
1643        for (let i = 0; i < slides.length; i += 1) {
1644            slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
1645        }
1646    }
1647    function updateSlidesProgress(translate2 = this && this.translate || 0) {
1648        const swiper = this;
1649        const params = swiper.params;
1650        const {
1651            slides,
1652            rtlTranslate: rtl,
1653            snapGrid
1654        } = swiper;
1655        if (slides.length === 0)
1656            return;
1657        if (typeof slides[0].swiperSlideOffset === "undefined")
1658            swiper.updateSlidesOffset();
1659        let offsetCenter = -translate2;
1660        if (rtl)
1661            offsetCenter = translate2;
1662        slides.removeClass(params.slideVisibleClass);
1663        swiper.visibleSlidesIndexes = [];
1664        swiper.visibleSlides = [];
1665        for (let i = 0; i < slides.length; i += 1) {
1666            const slide2 = slides[i];
1667            let slideOffset = slide2.swiperSlideOffset;
1668            if (params.cssMode && params.centeredSlides) {
1669                slideOffset -= slides[0].swiperSlideOffset;
1670            }
1671            const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide2.swiperSlideSize + params.spaceBetween);
1672            const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide2.swiperSlideSize + params.spaceBetween);
1673            const slideBefore = -(offsetCenter - slideOffset);
1674            const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
1675            const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
1676            if (isVisible) {
1677                swiper.visibleSlides.push(slide2);
1678                swiper.visibleSlidesIndexes.push(i);
1679                slides.eq(i).addClass(params.slideVisibleClass);
1680            }
1681            slide2.progress = rtl ? -slideProgress : slideProgress;
1682            slide2.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
1683        }
1684        swiper.visibleSlides = $(swiper.visibleSlides);
1685    }
1686    function updateProgress(translate2) {
1687        const swiper = this;
1688        if (typeof translate2 === "undefined") {
1689            const multiplier = swiper.rtlTranslate ? -1 : 1;
1690            translate2 = swiper && swiper.translate && swiper.translate * multiplier || 0;
1691        }
1692        const params = swiper.params;
1693        const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
1694        let {
1695            progress,
1696            isBeginning,
1697            isEnd
1698        } = swiper;
1699        const wasBeginning = isBeginning;
1700        const wasEnd = isEnd;
1701        if (translatesDiff === 0) {
1702            progress = 0;
1703            isBeginning = true;
1704            isEnd = true;
1705        } else {
1706            progress = (translate2 - swiper.minTranslate()) / translatesDiff;
1707            isBeginning = progress <= 0;
1708            isEnd = progress >= 1;
1709        }
1710        Object.assign(swiper, {
1711            progress,
1712            isBeginning,
1713            isEnd
1714        });
1715        if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight)
1716            swiper.updateSlidesProgress(translate2);
1717        if (isBeginning && !wasBeginning) {
1718            swiper.emit("reachBeginning toEdge");
1719        }
1720        if (isEnd && !wasEnd) {
1721            swiper.emit("reachEnd toEdge");
1722        }
1723        if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
1724            swiper.emit("fromEdge");
1725        }
1726        swiper.emit("progress", progress);
1727    }
1728    function updateSlidesClasses() {
1729        const swiper = this;
1730        const {
1731            slides,
1732            params,
1733            $wrapperEl,
1734            activeIndex,
1735            realIndex
1736        } = swiper;
1737        const isVirtual = swiper.virtual && params.virtual.enabled;
1738        slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);
1739        let activeSlide;
1740        if (isVirtual) {
1741            activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`);
1742        } else {
1743            activeSlide = slides.eq(activeIndex);
1744        }
1745        activeSlide.addClass(params.slideActiveClass);
1746        if (params.loop) {
1747            if (activeSlide.hasClass(params.slideDuplicateClass)) {
1748                $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass);
1749            } else {
1750                $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass);
1751            }
1752        }
1753        let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);
1754        if (params.loop && nextSlide.length === 0) {
1755            nextSlide = slides.eq(0);
1756            nextSlide.addClass(params.slideNextClass);
1757        }
1758        let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);
1759        if (params.loop && prevSlide.length === 0) {
1760            prevSlide = slides.eq(-1);
1761            prevSlide.addClass(params.slidePrevClass);
1762        }
1763        if (params.loop) {
1764            if (nextSlide.hasClass(params.slideDuplicateClass)) {
1765                $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr("data-swiper-slide-index")}"]`).addClass(params.slideDuplicateNextClass);
1766            } else {
1767                $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr("data-swiper-slide-index")}"]`).addClass(params.slideDuplicateNextClass);
1768            }
1769            if (prevSlide.hasClass(params.slideDuplicateClass)) {
1770                $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr("data-swiper-slide-index")}"]`).addClass(params.slideDuplicatePrevClass);
1771            } else {
1772                $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr("data-swiper-slide-index")}"]`).addClass(params.slideDuplicatePrevClass);
1773            }
1774        }
1775        swiper.emitSlidesClasses();
1776    }
1777    function updateActiveIndex(newActiveIndex) {
1778        const swiper = this;
1779        const translate2 = swiper.rtlTranslate ? swiper.translate : -swi
vendor: 11,220 bytes, lines 1779-2090
1779per.translate;
1780        const {
1781            slidesGrid,
1782            snapGrid,
1783            params,
1784            activeIndex: previousIndex,
1785            realIndex: previousRealIndex,
1786            snapIndex: previousSnapIndex
1787        } = swiper;
1788        let activeIndex = newActiveIndex;
1789        let snapIndex;
1790        if (typeof activeIndex === "undefined") {
1791            for (let i = 0; i < slidesGrid.length; i += 1) {
1792                if (typeof slidesGrid[i + 1] !== "undefined") {
1793                    if (translate2 >= slidesGrid[i] && translate2 < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
1794                        activeIndex = i;
1795                    } else if (translate2 >= slidesGrid[i] && translate2 < slidesGrid[i + 1]) {
1796                        activeIndex = i + 1;
1797                    }
1798                } else if (translate2 >= slidesGrid[i]) {
1799                    activeIndex = i;
1800                }
1801            }
1802            if (params.normalizeSlideIndex) {
1803                if (activeIndex < 0 || typeof activeIndex === "undefined")
1804                    activeIndex = 0;
1805            }
1806        }
1807        if (snapGrid.indexOf(translate2) >= 0) {
1808            snapIndex = snapGrid.indexOf(translate2);
1809        } else {
1810            const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
1811            snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
1812        }
1813        if (snapIndex >= snapGrid.length)
1814            snapIndex = snapGrid.length - 1;
1815        if (activeIndex === previousIndex) {
1816            if (snapIndex !== previousSnapIndex) {
1817                swiper.snapIndex = snapIndex;
1818                swiper.emit("snapIndexChange");
1819            }
1820            return;
1821        }
1822        const realIndex = parseInt(swiper.slides.eq(activeIndex).attr("data-swiper-slide-index") || activeIndex, 10);
1823        Object.assign(swiper, {
1824            snapIndex,
1825            realIndex,
1826            previousIndex,
1827            activeIndex
1828        });
1829        swiper.emit("activeIndexChange");
1830        swiper.emit("snapIndexChange");
1831        if (previousRealIndex !== realIndex) {
1832            swiper.emit("realIndexChange");
1833        }
1834        if (swiper.initialized || swiper.params.runCallbacksOnInit) {
1835            swiper.emit("slideChange");
1836        }
1837    }
1838    function updateClickedSlide(e) {
1839        const swiper = this;
1840        const params = swiper.params;
1841        const slide2 = $(e).closest(`.${params.slideClass}`)[0];
1842        let slideFound = false;
1843        let slideIndex;
1844        if (slide2) {
1845            for (let i = 0; i < swiper.slides.length; i += 1) {
1846                if (swiper.slides[i] === slide2) {
1847                    slideFound = true;
1848                    slideIndex = i;
1849                    break;
1850                }
1851            }
1852        }
1853        if (slide2 && slideFound) {
1854            swiper.clickedSlide = slide2;
1855            if (swiper.virtual && swiper.params.virtual.enabled) {
1856                swiper.clickedIndex = parseInt($(slide2).attr("data-swiper-slide-index"), 10);
1857            } else {
1858                swiper.clickedIndex = slideIndex;
1859            }
1860        } else {
1861            swiper.clickedSlide = void 0;
1862            swiper.clickedIndex = void 0;
1863            return;
1864        }
1865        if (params.slideToClickedSlide && swiper.clickedIndex !== void 0 && swiper.clickedIndex !== swiper.activeIndex) {
1866            swiper.slideToClickedSlide();
1867        }
1868    }
1869    var update = {
1870        updateSize,
1871        updateSlides,
1872        updateAutoHeight,
1873        updateSlidesOffset,
1874        updateSlidesProgress,
1875        updateProgress,
1876        updateSlidesClasses,
1877        updateActiveIndex,
1878        updateClickedSlide
1879    };
1880    function getSwiperTranslate(axis = this.isHorizontal() ? "x" : "y") {
1881        const swiper = this;
1882        const {
1883            params,
1884            rtlTranslate: rtl,
1885            translate: translate2,
1886            $wrapperEl
1887        } = swiper;
1888        if (params.virtualTranslate) {
1889            return rtl ? -translate2 : translate2;
1890        }
1891        if (params.cssMode) {
1892            return translate2;
1893        }
1894        let currentTranslate = getTranslate($wrapperEl[0], axis);
1895        if (rtl)
1896            currentTranslate = -currentTranslate;
1897        return currentTranslate || 0;
1898    }
1899    function setTranslate(translate2, byController) {
1900        const swiper = this;
1901        const {
1902            rtlTranslate: rtl,
1903            params,
1904            $wrapperEl,
1905            wrapperEl,
1906            progress
1907        } = swiper;
1908        let x = 0;
1909        let y = 0;
1910        const z = 0;
1911        if (swiper.isHorizontal()) {
1912            x = rtl ? -translate2 : translate2;
1913        } else {
1914            y = translate2;
1915        }
1916        if (params.roundLengths) {
1917            x = Math.floor(x);
1918            y = Math.floor(y);
1919        }
1920        if (params.cssMode) {
1921            wrapperEl[swiper.isHorizontal() ? "scrollLeft" : "scrollTop"] = swiper.isHorizontal() ? -x : -y;
1922        } else if (!params.virtualTranslate) {
1923            $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);
1924        }
1925        swiper.previousTranslate = swiper.translate;
1926        swiper.translate = swiper.isHorizontal() ? x : y;
1927        let newProgress;
1928        const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
1929        if (translatesDiff === 0) {
1930            newProgress = 0;
1931        } else {
1932            newProgress = (translate2 - swiper.minTranslate()) / translatesDiff;
1933        }
1934        if (newProgress !== progress) {
1935            swiper.updateProgress(translate2);
1936        }
1937        swiper.emit("setTranslate", swiper.translate, byController);
1938    }
1939    function minTranslate() {
1940        return -this.snapGrid[0];
1941    }
1942    function maxTranslate() {
1943        return -this.snapGrid[this.snapGrid.length - 1];
1944    }
1945    function translateTo(translate2 = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
1946        const swiper = this;
1947        const {
1948            params,
1949            wrapperEl
1950        } = swiper;
1951        if (swiper.animating && params.preventInteractionOnTransition) {
1952            return false;
1953        }
1954        const minTranslate2 = swiper.minTranslate();
1955        const maxTranslate2 = swiper.maxTranslate();
1956        let newTranslate;
1957        if (translateBounds && translate2 > minTranslate2)
1958            newTranslate = minTranslate2;
1959        else if (translateBounds && translate2 < maxTranslate2)
1960            newTranslate = maxTranslate2;
1961        else
1962            newTranslate = translate2;
1963        swiper.updateProgress(newTranslate);
1964        if (params.cssMode) {
1965            const isH = swiper.isHorizontal();
1966            if (speed === 0) {
1967                wrapperEl[isH ? "scrollLeft" : "scrollTop"] = -newTranslate;
1968            } else {
1969                if (!swiper.support.smoothScroll) {
1970                    animateCSSModeScroll({
1971                        swiper,
1972                        targetPosition: -newTranslate,
1973                        side: isH ? "left" : "top"
1974                    });
1975                    return true;
1976                }
1977                wrapperEl.scrollTo({
1978                    [isH ? "left" : "top"]: -newTranslate,
1979                    behavior: "smooth"
1980                });
1981            }
1982            return true;
1983        }
1984        if (speed === 0) {
1985            swiper.setTransition(0);
1986            swiper.setTranslate(newTranslate);
1987            if (runCallbacks) {
1988                swiper.emit("beforeTransitionStart", speed, internal);
1989                swiper.emit("transitionEnd");
1990            }
1991        } else {
1992            swiper.setTransition(speed);
1993            swiper.setTranslate(newTranslate);
1994            if (runCallbacks) {
1995                swiper.emit("beforeTransitionStart", speed, internal);
1996                swiper.emit("transitionStart");
1997            }
1998            if (!swiper.animating) {
1999                swiper.animating = true;
2000                if (!swiper.onTranslateToWrapperTransitionEnd) {
2001                    swiper.onTranslateToWrapperTransitionEnd = function transitionEnd2(e) {
2002                        if (!swiper || swiper.destroyed)
2003                            return;
2004                        if (e.target !== this)
2005                            return;
2006                        swiper.$wrapperEl[0].removeEventListener("transitionend", swiper.onTranslateToWrapperTransitionEnd);
2007                        swiper.$wrapperEl[0].removeEventListener("webkitTransitionEnd", swiper.onTranslateToWrapperTransitionEnd);
2008                        swiper.onTranslateToWrapperTransitionEnd = null;
2009                        delete swiper.onTranslateToWrapperTransitionEnd;
2010                        if (runCallbacks) {
2011                            swiper.emit("transitionEnd");
2012                        }
2013                    };
2014                }
2015                swiper.$wrapperEl[0].addEventListener("transitionend", swiper.onTranslateToWrapperTransitionEnd);
2016                swiper.$wrapperEl[0].addEventListener("webkitTransitionEnd", swiper.onTranslateToWrapperTransitionEnd);
2017            }
2018        }
2019        return true;
2020    }
2021    var translate = {
2022        getTranslate: getSwiperTranslate,
2023        setTranslate,
2024        minTranslate,
2025        maxTranslate,
2026        translateTo
2027    };
2028    function setTransition(duration, byController) {
2029        const swiper = this;
2030        if (!swiper.params.cssMode) {
2031            swiper.$wrapperEl.transition(duration);
2032        }
2033        swiper.emit("setTransition", duration, byController);
2034    }
2035    function transitionEmit({
2036                                swiper,
2037                                runCallbacks,
2038                                direction,
2039                                step
2040                            }) {
2041        const {
2042            activeIndex,
2043            previousIndex
2044        } = swiper;
2045        let dir = direction;
2046        if (!dir) {
2047            if (activeIndex > previousIndex)
2048                dir = "next";
2049            else if (activeIndex < previousIndex)
2050                dir = "prev";
2051            else
2052                dir = "reset";
2053        }
2054        swiper.emit(`transition${step}`);
2055        if (runCallbacks && activeIndex !== previousIndex) {
2056            if (dir === "reset") {
2057                swiper.emit(`slideResetTransition${step}`);
2058                return;
2059            }
2060            swiper.emit(`slideChangeTransition${step}`);
2061            if (dir === "next") {
2062                swiper.emit(`slideNextTransition${step}`);
2063            } else {
2064                swiper.emit(`slidePrevTransition${step}`);
2065            }
2066        }
2067    }
2068    function transitionStart(runCallbacks = true, direction) {
2069        const swiper = this;
2070        const {
2071            params
2072        } = swiper;
2073        if (params.cssMode)
2074            return;
2075        if (params.autoHeight) {
2076            swiper.updateAutoHeight();
2077        }
2078        transitionEmit({
2079            swiper,
2080            runCallbacks,
2081            direction,
2082            step: "Start"
2083        });
2084    }
2085    function transitionEnd(runCallbacks = true, direction) {
2086        const swiper = this;
2087        const {
2088            params
2089        } = swiper;
2090        swiper.animating = false;
vendor: 15,817 bytes, lines 2091-2451
2091        if (params.cssMode)
2092            return;
2093        swiper.setTransition(0);
2094        transitionEmit({
2095            swiper,
2096            runCallbacks,
2097            direction,
2098            step: "End"
2099        });
2100    }
2101    var transition = {
2102        setTransition,
2103        transitionStart,
2104        transitionEnd
2105    };
2106    function slideTo(index2 = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {
2107        if (typeof index2 !== "number" && typeof index2 !== "string") {
2108            throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index2}] given.`);
2109        }
2110        if (typeof index2 === "string") {
2111            const indexAsNumber = parseInt(index2, 10);
2112            const isValidNumber = isFinite(indexAsNumber);
2113            if (!isValidNumber) {
2114                throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index2}] given.`);
2115            }
2116            index2 = indexAsNumber;
2117        }
2118        const swiper = this;
2119        let slideIndex = index2;
2120        if (slideIndex < 0)
2121            slideIndex = 0;
2122        const {
2123            params,
2124            snapGrid,
2125            slidesGrid,
2126            previousIndex,
2127            activeIndex,
2128            rtlTranslate: rtl,
2129            wrapperEl,
2130            enabled
2131        } = swiper;
2132        if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {
2133            return false;
2134        }
2135        const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
2136        let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
2137        if (snapIndex >= snapGrid.length)
2138            snapIndex = snapGrid.length - 1;
2139        if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
2140            swiper.emit("beforeSlideChangeStart");
2141        }
2142        const translate2 = -snapGrid[snapIndex];
2143        swiper.updateProgress(translate2);
2144        if (params.normalizeSlideIndex) {
2145            for (let i = 0; i < slidesGrid.length; i += 1) {
2146                const normalizedTranslate = -Math.floor(translate2 * 100);
2147                const normalizedGrid = Math.floor(slidesGrid[i] * 100);
2148                const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
2149                if (typeof slidesGrid[i + 1] !== "undefined") {
2150                    if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {
2151                        slideIndex = i;
2152                    } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {
2153                        slideIndex = i + 1;
2154                    }
2155                } else if (normalizedTranslate >= normalizedGrid) {
2156                    slideIndex = i;
2157                }
2158            }
2159        }
2160        if (swiper.initialized && slideIndex !== activeIndex) {
2161            if (!swiper.allowSlideNext && translate2 < swiper.translate && translate2 < swiper.minTranslate()) {
2162                return false;
2163            }
2164            if (!swiper.allowSlidePrev && translate2 > swiper.translate && translate2 > swiper.maxTranslate()) {
2165                if ((activeIndex || 0) !== slideIndex)
2166                    return false;
2167            }
2168        }
2169        let direction;
2170        if (slideIndex > activeIndex)
2171            direction = "next";
2172        else if (slideIndex < activeIndex)
2173            direction = "prev";
2174        else
2175            direction = "reset";
2176        if (rtl && -translate2 === swiper.translate || !rtl && translate2 === swiper.translate) {
2177            swiper.updateActiveIndex(slideIndex);
2178            if (params.autoHeight) {
2179                swiper.updateAutoHeight();
2180            }
2181            swiper.updateSlidesClasses();
2182            if (params.effect !== "slide") {
2183                swiper.setTranslate(translate2);
2184            }
2185            if (direction !== "reset") {
2186                swiper.transitionStart(runCallbacks, direction);
2187                swiper.transitionEnd(runCallbacks, direction);
2188            }
2189            return false;
2190        }
2191        if (params.cssMode) {
2192            const isH = swiper.isHorizontal();
2193            const t = rtl ? translate2 : -translate2;
2194            if (speed === 0) {
2195                const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
2196                if (isVirtual) {
2197                    swiper.wrapperEl.style.scrollSnapType = "none";
2198                    swiper._immediateVirtual = true;
2199                }
2200                wrapperEl[isH ? "scrollLeft" : "scrollTop"] = t;
2201                if (isVirtual) {
2202                    requestAnimationFrame(() => {
2203                        swiper.wrapperEl.style.scrollSnapType = "";
2204                        swiper._swiperImmediateVirtual = false;
2205                    });
2206                }
2207            } else {
2208                if (!swiper.support.smoothScroll) {
2209                    animateCSSModeScroll({
2210                        swiper,
2211                        targetPosition: t,
2212                        side: isH ? "left" : "top"
2213                    });
2214                    return true;
2215                }
2216                wrapperEl.scrollTo({
2217                    [isH ? "left" : "top"]: t,
2218                    behavior: "smooth"
2219                });
2220            }
2221            return true;
2222        }
2223        swiper.setTransition(speed);
2224        swiper.setTranslate(translate2);
2225        swiper.updateActiveIndex(slideIndex);
2226        swiper.updateSlidesClasses();
2227        swiper.emit("beforeTransitionStart", speed, internal);
2228        swiper.transitionStart(runCallbacks, direction);
2229        if (speed === 0) {
2230            swiper.transitionEnd(runCallbacks, direction);
2231        } else if (!swiper.animating) {
2232            swiper.animating = true;
2233            if (!swiper.onSlideToWrapperTransitionEnd) {
2234                swiper.onSlideToWrapperTransitionEnd = function transitionEnd2(e) {
2235                    if (!swiper || swiper.destroyed)
2236                        return;
2237                    if (e.target !== this)
2238                        return;
2239                    swiper.$wrapperEl[0].removeEventListener("transitionend", swiper.onSlideToWrapperTransitionEnd);
2240                    swiper.$wrapperEl[0].removeEventListener("webkitTransitionEnd", swiper.onSlideToWrapperTransitionEnd);
2241                    swiper.onSlideToWrapperTransitionEnd = null;
2242                    delete swiper.onSlideToWrapperTransitionEnd;
2243                    swiper.transitionEnd(runCallbacks, direction);
2244                };
2245            }
2246            swiper.$wrapperEl[0].addEventListener("transitionend", swiper.onSlideToWrapperTransitionEnd);
2247            swiper.$wrapperEl[0].addEventListener("webkitTransitionEnd", swiper.onSlideToWrapperTransitionEnd);
2248        }
2249        return true;
2250    }
2251    function slideToLoop(index2 = 0, speed = this.params.speed, runCallbacks = true, internal) {
2252        const swiper = this;
2253        let newIndex = index2;
2254        if (swiper.params.loop) {
2255            newIndex += swiper.loopedSlides;
2256        }
2257        return swiper.slideTo(newIndex, speed, runCallbacks, internal);
2258    }
2259    function slideNext(speed = this.params.speed, runCallbacks = true, internal) {
2260        const swiper = this;
2261        const {
2262            animating,
2263            enabled,
2264            params
2265        } = swiper;
2266        if (!enabled)
2267            return swiper;
2268        let perGroup = params.slidesPerGroup;
2269        if (params.slidesPerView === "auto" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
2270            perGroup = Math.max(swiper.slidesPerViewDynamic("current", true), 1);
2271        }
2272        const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;
2273        if (params.loop) {
2274            if (animating && params.loopPreventsSlide)
2275                return false;
2276            swiper.loopFix();
2277            swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2278        }
2279        if (params.rewind && swiper.isEnd) {
2280            return swiper.slideTo(0, speed, runCallbacks, internal);
2281        }
2282        return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
2283    }
2284    function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {
2285        const swiper = this;
2286        const {
2287            params,
2288            animating,
2289            snapGrid,
2290            slidesGrid,
2291            rtlTranslate,
2292            enabled
2293        } = swiper;
2294        if (!enabled)
2295            return swiper;
2296        if (params.loop) {
2297            if (animating && params.loopPreventsSlide)
2298                return false;
2299            swiper.loopFix();
2300            swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2301        }
2302        const translate2 = rtlTranslate ? swiper.translate : -swiper.translate;
2303        function normalize(val) {
2304            if (val < 0)
2305                return -Math.floor(Math.abs(val));
2306            return Math.floor(val);
2307        }
2308        const normalizedTranslate = normalize(translate2);
2309        const normalizedSnapGrid = snapGrid.map((val) => normalize(val));
2310        let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
2311        if (typeof prevSnap === "undefined" && params.cssMode) {
2312            let prevSnapIndex;
2313            snapGrid.forEach((snap, snapIndex) => {
2314                if (normalizedTranslate >= snap) {
2315                    prevSnapIndex = snapIndex;
2316                }
2317            });
2318            if (typeof prevSnapIndex !== "undefined") {
2319                prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
2320            }
2321        }
2322        let prevIndex = 0;
2323        if (typeof prevSnap !== "undefined") {
2324            prevIndex = slidesGrid.indexOf(prevSnap);
2325            if (prevIndex < 0)
2326                prevIndex = swiper.activeIndex - 1;
2327            if (params.slidesPerView === "auto" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
2328                prevIndex = prevIndex - swiper.slidesPerViewDynamic("previous", true) + 1;
2329                prevIndex = Math.max(prevIndex, 0);
2330            }
2331        }
2332        if (params.rewind && swiper.isBeginning) {
2333            return swiper.slideTo(swiper.slides.length - 1, speed, runCallbacks, internal);
2334        }
2335        return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
2336    }
2337    function slideReset(speed = this.params.speed, runCallbacks = true, internal) {
2338        const swiper = this;
2339        return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
2340    }
2341    function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {
2342        const swiper = this;
2343        let index2 = swiper.activeIndex;
2344        const skip = Math.min(swiper.params.slidesPerGroupSkip, index2);
2345        const snapIndex = skip + Math.floor((index2 - skip) / swiper.params.slidesPerGroup);
2346        const translate2 = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
2347        if (translate2 >= swiper.snapGrid[snapIndex]) {
2348            const currentSnap = swiper.snapGrid[snapIndex];
2349            const nextSnap = swiper.snapGrid[snapIndex + 1];
2350            if (translate2 - currentSnap > (nextSnap - currentSnap) * threshold) {
2351                index2 += swiper.params.slidesPerGroup;
2352            }
2353        } else {
2354            const prevSnap = swiper.snapGrid[snapIndex - 1];
2355            const currentSnap = swiper.snapGrid[snapIndex];
2356            if (translate2 - prevSnap <= (currentSnap - prevSnap) * threshold) {
2357                index2 -= swiper.params.slidesPerGroup;
2358            }
2359        }
2360        index2 = Math.max(index2, 0);
2361        index2 = Math.min(index2, swiper.slidesGrid.length - 1);
2362        return swiper.slideTo(index2, speed, runCallbacks, internal);
2363    }
2364    function slideToClickedSlide() {
2365        const swiper = this;
2366        const {
2367            params,
2368            $wrapperEl
2369        } = swiper;
2370        const slidesPerView = params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : params.slidesPerView;
2371        let slideToIndex = swiper.clickedIndex;
2372        let realIndex;
2373        if (params.loop) {
2374            if (swiper.animating)
2375                return;
2376            realIndex = parseInt($(swiper.clickedSlide).attr("data-swiper-slide-index"), 10);
2377            if (params.centeredSlides) {
2378                if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
2379                    swiper.loopFix();
2380                    slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index();
2381                    nextTick(() => {
2382                        swiper.slideTo(slideToIndex);
2383                    });
2384                } else {
2385                    swiper.slideTo(slideToIndex);
2386                }
2387            } else if (slideToIndex > swiper.slides.length - slidesPerView) {
2388                swiper.loopFix();
2389                slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index();
2390                nextTick(() => {
2391                    swiper.slideTo(slideToIndex);
2392                });
2393            } else {
2394                swiper.slideTo(slideToIndex);
2395            }
2396        } else {
2397            swiper.slideTo(slideToIndex);
2398        }
2399    }
2400    var slide = {
2401        slideTo,
2402        slideToLoop,
2403        slideNext,
2404        slidePrev,
2405        slideReset,
2406        slideToClosest,
2407        slideToClickedSlide
2408    };
2409    function loopCreate() {
2410        const swiper = this;
2411        const document2 = getDocument();
2412        const {
2413            params,
2414            $wrapperEl
2415        } = swiper;
2416        const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;
2417        $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();
2418        let slides = $selector.children(`.${params.slideClass}`);
2419        if (params.loopFillGroupWithBlank) {
2420            const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
2421            if (blankSlidesNum !== params.slidesPerGroup) {
2422                for (let i = 0; i < blankSlidesNum; i += 1) {
2423                    const blankNode = $(document2.createElement("div")).addClass(`${params.slideClass} ${params.slideBlankClass}`);
2424                    $selector.append(blankNode);
2425                }
2426                slides = $selector.children(`.${params.slideClass}`);
2427            }
2428        }
2429        if (params.slidesPerView === "auto" && !params.loopedSlides)
2430            params.loopedSlides = slides.length;
2431        swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
2432        swiper.loopedSlides += params.loopAdditionalSlides;
2433        if (swiper.loopedSlides > slides.length) {
2434            swiper.loopedSlides = slides.length;
2435        }
2436        const prependSlides = [];
2437        const appendSlides = [];
2438        slides.each((el, index2) => {
2439            const slide2 = $(el);
2440            if (index2 < swiper.loopedSlides) {
2441                appendSlides.push(el);
2442            }
2443            if (index2 < slides.length && index2 >= slides.length - swiper.loopedSlides) {
2444                prependSlides.push(el);
2445            }
2446            slide2.attr("data-swiper-slide-index", index2);
2447        });
2448        for (let i = 0; i < appendSlides.length; i += 1) {
2449            $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
2450        }
2451        for (let i = prependSlides.length - 1; i >= 0; i -= 1) {
vendor: 4,079 bytes, lines 2452-2560
2452            $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
2453        }
2454    }
2455    function loopFix() {
2456        const swiper = this;
2457        swiper.emit("beforeLoopFix");
2458        const {
2459            activeIndex,
2460            slides,
2461            loopedSlides,
2462            allowSlidePrev,
2463            allowSlideNext,
2464            snapGrid,
2465            rtlTranslate: rtl
2466        } = swiper;
2467        let newIndex;
2468        swiper.allowSlidePrev = true;
2469        swiper.allowSlideNext = true;
2470        const snapTranslate = -snapGrid[activeIndex];
2471        const diff = snapTranslate - swiper.getTranslate();
2472        if (activeIndex < loopedSlides) {
2473            newIndex = slides.length - loopedSlides * 3 + activeIndex;
2474            newIndex += loopedSlides;
2475            const slideChanged = swiper.slideTo(newIndex, 0, false, true);
2476            if (slideChanged && diff !== 0) {
2477                swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
2478            }
2479        } else if (activeIndex >= slides.length - loopedSlides) {
2480            newIndex = -slides.length + activeIndex + loopedSlides;
2481            newIndex += loopedSlides;
2482            const slideChanged = swiper.slideTo(newIndex, 0, false, true);
2483            if (slideChanged && diff !== 0) {
2484                swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
2485            }
2486        }
2487        swiper.allowSlidePrev = allowSlidePrev;
2488        swiper.allowSlideNext = allowSlideNext;
2489        swiper.emit("loopFix");
2490    }
2491    function loopDestroy() {
2492        const swiper = this;
2493        const {
2494            $wrapperEl,
2495            params,
2496            slides
2497        } = swiper;
2498        $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();
2499        slides.removeAttr("data-swiper-slide-index");
2500    }
2501    var loop = {
2502        loopCreate,
2503        loopFix,
2504        loopDestroy
2505    };
2506    function setGrabCursor(moving) {
2507        const swiper = this;
2508        if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode)
2509            return;
2510        const el = swiper.params.touchEventsTarget === "container" ? swiper.el : swiper.wrapperEl;
2511        el.style.cursor = "move";
2512        el.style.cursor = moving ? "-webkit-grabbing" : "-webkit-grab";
2513        el.style.cursor = moving ? "-moz-grabbin" : "-moz-grab";
2514        el.style.cursor = moving ? "grabbing" : "grab";
2515    }
2516    function unsetGrabCursor() {
2517        const swiper = this;
2518        if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
2519            return;
2520        }
2521        swiper[swiper.params.touchEventsTarget === "container" ? "el" : "wrapperEl"].style.cursor = "";
2522    }
2523    var grabCursor = {
2524        setGrabCursor,
2525        unsetGrabCursor
2526    };
2527    function closestElement(selector, base = this) {
2528        function __closestFrom(el) {
2529            if (!el || el === getDocument() || el === getWindow())
2530                return null;
2531            if (el.assignedSlot)
2532                el = el.assignedSlot;
2533            const found = el.closest(selector);
2534            return found || __closestFrom(el.getRootNode().host);
2535        }
2536        return __closestFrom(base);
2537    }
2538    function onTouchStart(event) {
2539        const swiper = this;
2540        const document2 = getDocument();
2541        const window2 = getWindow();
2542        const data = swiper.touchEventsData;
2543        const {
2544            params,
2545            touches,
2546            enabled
2547        } = swiper;
2548        if (!enabled)
2549            return;
2550        if (swiper.animating && params.preventInteractionOnTransition) {
2551            return;
2552        }
2553        if (!swiper.animating && params.cssMode && params.loop) {
2554            swiper.loopFix();
2555        }
2556        let e = event;
2557        if (e.originalEvent)
2558            e = e.originalEvent;
2559        let $targetEl = $(e.target);
2560        if (params.touchEventsTarget === "wrapper") {
vendor: 18,391 bytes, lines 2561-3011
2561            if (!$targetEl.closest(swiper.wrapperEl).length)
2562                return;
2563        }
2564        data.isTouchEvent = e.type === "touchstart";
2565        if (!data.isTouchEvent && "which" in e && e.which === 3)
2566            return;
2567        if (!data.isTouchEvent && "button" in e && e.button > 0)
2568            return;
2569        if (data.isTouched && data.isMoved)
2570            return;
2571        const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== "";
2572        if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {
2573            $targetEl = $(event.path[0]);
2574        }
2575        const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;
2576        const isTargetShadow = !!(e.target && e.target.shadowRoot);
2577        if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {
2578            swiper.allowClick = true;
2579            return;
2580        }
2581        if (params.swipeHandler) {
2582            if (!$targetEl.closest(params.swipeHandler)[0])
2583                return;
2584        }
2585        touches.currentX = e.type === "touchstart" ? e.targetTouches[0].pageX : e.pageX;
2586        touches.currentY = e.type === "touchstart" ? e.targetTouches[0].pageY : e.pageY;
2587        const startX = touches.currentX;
2588        const startY = touches.currentY;
2589        const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
2590        const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
2591        if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window2.innerWidth - edgeSwipeThreshold)) {
2592            if (edgeSwipeDetection === "prevent") {
2593                event.preventDefault();
2594            } else {
2595                return;
2596            }
2597        }
2598        Object.assign(data, {
2599            isTouched: true,
2600            isMoved: false,
2601            allowTouchCallbacks: true,
2602            isScrolling: void 0,
2603            startMoving: void 0
2604        });
2605        touches.startX = startX;
2606        touches.startY = startY;
2607        data.touchStartTime = now();
2608        swiper.allowClick = true;
2609        swiper.updateSize();
2610        swiper.swipeDirection = void 0;
2611        if (params.threshold > 0)
2612            data.allowThresholdMove = false;
2613        if (e.type !== "touchstart") {
2614            let preventDefault = true;
2615            if ($targetEl.is(data.focusableElements))
2616                preventDefault = false;
2617            if (document2.activeElement && $(document2.activeElement).is(data.focusableElements) && document2.activeElement !== $targetEl[0]) {
2618                document2.activeElement.blur();
2619            }
2620            const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
2621            if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {
2622                e.preventDefault();
2623            }
2624        }
2625        swiper.emit("touchStart", e);
2626    }
2627    function onTouchMove(event) {
2628        const document2 = getDocument();
2629        const swiper = this;
2630        const data = swiper.touchEventsData;
2631        const {
2632            params,
2633            touches,
2634            rtlTranslate: rtl,
2635            enabled
2636        } = swiper;
2637        if (!enabled)
2638            return;
2639        let e = event;
2640        if (e.originalEvent)
2641            e = e.originalEvent;
2642        if (!data.isTouched) {
2643            if (data.startMoving && data.isScrolling) {
2644                swiper.emit("touchMoveOpposite", e);
2645            }
2646            return;
2647        }
2648        if (data.isTouchEvent && e.type !== "touchmove")
2649            return;
2650        const targetTouch = e.type === "touchmove" && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
2651        const pageX = e.type === "touchmove" ? targetTouch.pageX : e.pageX;
2652        const pageY = e.type === "touchmove" ? targetTouch.pageY : e.pageY;
2653        if (e.preventedByNestedSwiper) {
2654            touches.startX = pageX;
2655            touches.startY = pageY;
2656            return;
2657        }
2658        if (!swiper.allowTouchMove) {
2659            swiper.allowClick = false;
2660            if (data.isTouched) {
2661                Object.assign(touches, {
2662                    startX: pageX,
2663                    startY: pageY,
2664                    currentX: pageX,
2665                    currentY: pageY
2666                });
2667                data.touchStartTime = now();
2668            }
2669            return;
2670        }
2671        if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
2672            if (swiper.isVertical()) {
2673                if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
2674                    data.isTouched = false;
2675                    data.isMoved = false;
2676                    return;
2677                }
2678            } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
2679                return;
2680            }
2681        }
2682        if (data.isTouchEvent && document2.activeElement) {
2683            if (e.target === document2.activeElement && $(e.target).is(data.focusableElements)) {
2684                data.isMoved = true;
2685                swiper.allowClick = false;
2686                return;
2687            }
2688        }
2689        if (data.allowTouchCallbacks) {
2690            swiper.emit("touchMove", e);
2691        }
2692        if (e.targetTouches && e.targetTouches.length > 1)
2693            return;
2694        touches.currentX = pageX;
2695        touches.currentY = pageY;
2696        const diffX = touches.currentX - touches.startX;
2697        const diffY = touches.currentY - touches.startY;
2698        if (swiper.params.threshold && Math.sqrt(__pow(diffX, 2) + __pow(diffY, 2)) < swiper.params.threshold)
2699            return;
2700        if (typeof data.isScrolling === "undefined") {
2701            let touchAngle;
2702            if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
2703                data.isScrolling = false;
2704            } else {
2705                if (diffX * diffX + diffY * diffY >= 25) {
2706                    touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
2707                    data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
2708                }
2709            }
2710        }
2711        if (data.isScrolling) {
2712            swiper.emit("touchMoveOpposite", e);
2713        }
2714        if (typeof data.startMoving === "undefined") {
2715            if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
2716                data.startMoving = true;
2717            }
2718        }
2719        if (data.isScrolling) {
2720            data.isTouched = false;
2721            return;
2722        }
2723        if (!data.startMoving) {
2724            return;
2725        }
2726        swiper.allowClick = false;
2727        if (!params.cssMode && e.cancelable) {
2728            e.preventDefault();
2729        }
2730        if (params.touchMoveStopPropagation && !params.nested) {
2731            e.stopPropagation();
2732        }
2733        if (!data.isMoved) {
2734            if (params.loop && !params.cssMode) {
2735                swiper.loopFix();
2736            }
2737            data.startTranslate = swiper.getTranslate();
2738            swiper.setTransition(0);
2739            if (swiper.animating) {
2740                swiper.$wrapperEl.trigger("webkitTransitionEnd transitionend");
2741            }
2742            data.allowMomentumBounce = false;
2743            if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
2744                swiper.setGrabCursor(true);
2745            }
2746            swiper.emit("sliderFirstMove", e);
2747        }
2748        swiper.emit("sliderMove", e);
2749        data.isMoved = true;
2750        let diff = swiper.isHorizontal() ? diffX : diffY;
2751        touches.diff = diff;
2752        diff *= params.touchRatio;
2753        if (rtl)
2754            diff = -diff;
2755        swiper.swipeDirection = diff > 0 ? "prev" : "next";
2756        data.currentTranslate = diff + data.startTranslate;
2757        let disableParentSwiper = true;
2758        let resistanceRatio = params.resistanceRatio;
2759        if (params.touchReleaseOnEdges) {
2760            resistanceRatio = 0;
2761        }
2762        if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {
2763            disableParentSwiper = false;
2764            if (params.resistance)
2765                data.currentTranslate = swiper.minTranslate() - 1 + __pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);
2766        } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
2767            disableParentSwiper = false;
2768            if (params.resistance)
2769                data.currentTranslate = swiper.maxTranslate() + 1 - __pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);
2770        }
2771        if (disableParentSwiper) {
2772            e.preventedByNestedSwiper = true;
2773        }
2774        if (!swiper.allowSlideNext && swiper.swipeDirection === "next" && data.currentTranslate < data.startTranslate) {
2775            data.currentTranslate = data.startTranslate;
2776        }
2777        if (!swiper.allowSlidePrev && swiper.swipeDirection === "prev" && data.currentTranslate > data.startTranslate) {
2778            data.currentTranslate = data.startTranslate;
2779        }
2780        if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
2781            data.currentTranslate = data.startTranslate;
2782        }
2783        if (params.threshold > 0) {
2784            if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
2785                if (!data.allowThresholdMove) {
2786                    data.allowThresholdMove = true;
2787                    touches.startX = touches.currentX;
2788                    touches.startY = touches.currentY;
2789                    data.currentTranslate = data.startTranslate;
2790                    touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
2791                    return;
2792                }
2793            } else {
2794                data.currentTranslate = data.startTranslate;
2795                return;
2796            }
2797        }
2798        if (!params.followFinger || params.cssMode)
2799            return;
2800        if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {
2801            swiper.updateActiveIndex();
2802            swiper.updateSlidesClasses();
2803        }
2804        if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {
2805            swiper.freeMode.onTouchMove();
2806        }
2807        swiper.updateProgress(data.currentTranslate);
2808        swiper.setTranslate(data.currentTranslate);
2809    }
2810    function onTouchEnd(event) {
2811        const swiper = this;
2812        const data = swiper.touchEventsData;
2813        const {
2814            params,
2815            touches,
2816            rtlTranslate: rtl,
2817            slidesGrid,
2818            enabled
2819        } = swiper;
2820        if (!enabled)
2821            return;
2822        let e = event;
2823        if (e.originalEvent)
2824            e = e.originalEvent;
2825        if (data.allowTouchCallbacks) {
2826            swiper.emit("touchEnd", e);
2827        }
2828        data.allowTouchCallbacks = false;
2829        if (!data.isTouched) {
2830            if (data.isMoved && params.grabCursor) {
2831                swiper.setGrabCursor(false);
2832            }
2833            data.isMoved = false;
2834            data.startMoving = false;
2835            return;
2836        }
2837        if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
2838            swiper.setGrabCursor(false);
2839        }
2840        const touchEndTime = now();
2841        const timeDiff = touchEndTime - data.touchStartTime;
2842        if (swiper.allowClick) {
2843            const pathTree = e.path || e.composedPath && e.composedPath();
2844            swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);
2845            swiper.emit("tap click", e);
2846            if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
2847                swiper.emit("doubleTap doubleClick", e);
2848            }
2849        }
2850        data.lastClickTime = now();
2851        nextTick(() => {
2852            if (!swiper.destroyed)
2853                swiper.allowClick = true;
2854        });
2855        if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
2856            data.isTouched = false;
2857            data.isMoved = false;
2858            data.startMoving = false;
2859            return;
2860        }
2861        data.isTouched = false;
2862        data.isMoved = false;
2863        data.startMoving = false;
2864        let currentPos;
2865        if (params.followFinger) {
2866            currentPos = rtl ? swiper.translate : -swiper.translate;
2867        } else {
2868            currentPos = -data.currentTranslate;
2869        }
2870        if (params.cssMode) {
2871            return;
2872        }
2873        if (swiper.params.freeMode && params.freeMode.enabled) {
2874            swiper.freeMode.onTouchEnd({
2875                currentPos
2876            });
2877            return;
2878        }
2879        let stopIndex = 0;
2880        let groupSize = swiper.slidesSizesGrid[0];
2881        for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
2882            const increment2 = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
2883            if (typeof slidesGrid[i + increment2] !== "undefined") {
2884                if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment2]) {
2885                    stopIndex = i;
2886                    groupSize = slidesGrid[i + increment2] - slidesGrid[i];
2887                }
2888            } else if (currentPos >= slidesGrid[i]) {
2889                stopIndex = i;
2890                groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
2891            }
2892        }
2893        const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
2894        const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
2895        if (timeDiff > params.longSwipesMs) {
2896            if (!params.longSwipes) {
2897                swiper.slideTo(swiper.activeIndex);
2898                return;
2899            }
2900            if (swiper.swipeDirection === "next") {
2901                if (ratio >= params.longSwipesRatio)
2902                    swiper.slideTo(stopIndex + increment);
2903                else
2904                    swiper.slideTo(stopIndex);
2905            }
2906            if (swiper.swipeDirection === "prev") {
2907                if (ratio > 1 - params.longSwipesRatio)
2908                    swiper.slideTo(stopIndex + increment);
2909                else
2910                    swiper.slideTo(stopIndex);
2911            }
2912        } else {
2913            if (!params.shortSwipes) {
2914                swiper.slideTo(swiper.activeIndex);
2915                return;
2916            }
2917            const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
2918            if (!isNavButtonTarget) {
2919                if (swiper.swipeDirection === "next") {
2920                    swiper.slideTo(stopIndex + increment);
2921                }
2922                if (swiper.swipeDirection === "prev") {
2923                    swiper.slideTo(stopIndex);
2924                }
2925            } else if (e.target === swiper.navigation.nextEl) {
2926                swiper.slideTo(stopIndex + increment);
2927            } else {
2928                swiper.slideTo(stopIndex);
2929            }
2930        }
2931    }
2932    function onResize() {
2933        const swiper = this;
2934        const {
2935            params,
2936            el
2937        } = swiper;
2938        if (el && el.offsetWidth === 0)
2939            return;
2940        if (params.breakpoints) {
2941            swiper.setBreakpoint();
2942        }
2943        const {
2944            allowSlideNext,
2945            allowSlidePrev,
2946            snapGrid
2947        } = swiper;
2948        swiper.allowSlideNext = true;
2949        swiper.allowSlidePrev = true;
2950        swiper.updateSize();
2951        swiper.updateSlides();
2952        swiper.updateSlidesClasses();
2953        if ((params.slidesPerView === "auto" || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {
2954            swiper.slideTo(swiper.slides.length - 1, 0, false, true);
2955        } else {
2956            swiper.slideTo(swiper.activeIndex, 0, false, true);
2957        }
2958        if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
2959            swiper.autoplay.run();
2960        }
2961        swiper.allowSlidePrev = allowSlidePrev;
2962        swiper.allowSlideNext = allowSlideNext;
2963        if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
2964            swiper.checkOverflow();
2965        }
2966    }
2967    function onClick(e) {
2968        const swiper = this;
2969        if (!swiper.enabled)
2970            return;
2971        if (!swiper.allowClick) {
2972            if (swiper.params.preventClicks)
2973                e.preventDefault();
2974            if (swiper.params.preventClicksPropagation && swiper.animating) {
2975                e.stopPropagation();
2976                e.stopImmediatePropagation();
2977            }
2978        }
2979    }
2980    function onScroll() {
2981        const swiper = this;
2982        const {
2983            wrapperEl,
2984            rtlTranslate,
2985            enabled
2986        } = swiper;
2987        if (!enabled)
2988            return;
2989        swiper.previousTranslate = swiper.translate;
2990        if (swiper.isHorizontal()) {
2991            swiper.translate = -wrapperEl.scrollLeft;
2992        } else {
2993            swiper.translate = -wrapperEl.scrollTop;
2994        }
2995        if (swiper.translate === -0)
2996            swiper.translate = 0;
2997        swiper.updateActiveIndex();
2998        swiper.updateSlidesClasses();
2999        let newProgress;
3000        const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
3001        if (translatesDiff === 0) {
3002            newProgress = 0;
3003        } else {
3004            newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
3005        }
3006        if (newProgress !== swiper.progress) {
3007            swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
3008        }
3009        swiper.emit("setTranslate", swiper.translate, false);
3010    }
3011    let dummyEventAttached = false;
vendor: 5,698 bytes, lines 3012-3145
3012    function dummyEventListener() {
3013    }
3014    const events = (swiper, method) => {
3015        const document2 = getDocument();
3016        const {
3017            params,
3018            touchEvents,
3019            el,
3020            wrapperEl,
3021            device,
3022            support: support2
3023        } = swiper;
3024        const capture = !!params.nested;
3025        const domMethod = method === "on" ? "addEventListener" : "removeEventListener";
3026        const swiperMethod = method;
3027        if (!support2.touch) {
3028            el[domMethod](touchEvents.start, swiper.onTouchStart, false);
3029            document2[domMethod](touchEvents.move, swiper.onTouchMove, capture);
3030            document2[domMethod](touchEvents.end, swiper.onTouchEnd, false);
3031        } else {
3032            const passiveListener = touchEvents.start === "touchstart" && support2.passiveListener && params.passiveListeners ? {
3033                passive: true,
3034                capture: false
3035            } : false;
3036            el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);
3037            el[domMethod](touchEvents.move, swiper.onTouchMove, support2.passiveListener ? {
3038                passive: false,
3039                capture
3040            } : capture);
3041            el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);
3042            if (touchEvents.cancel) {
3043                el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);
3044            }
3045        }
3046        if (params.preventClicks || params.preventClicksPropagation) {
3047            el[domMethod]("click", swiper.onClick, true);
3048        }
3049        if (params.cssMode) {
3050            wrapperEl[domMethod]("scroll", swiper.onScroll);
3051        }
3052        if (params.updateOnWindowResize) {
3053            swiper[swiperMethod](device.ios || device.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", onResize, true);
3054        } else {
3055            swiper[swiperMethod]("observerUpdate", onResize, true);
3056        }
3057    };
3058    function attachEvents() {
3059        const swiper = this;
3060        const document2 = getDocument();
3061        const {
3062            params,
3063            support: support2
3064        } = swiper;
3065        swiper.onTouchStart = onTouchStart.bind(swiper);
3066        swiper.onTouchMove = onTouchMove.bind(swiper);
3067        swiper.onTouchEnd = onTouchEnd.bind(swiper);
3068        if (params.cssMode) {
3069            swiper.onScroll = onScroll.bind(swiper);
3070        }
3071        swiper.onClick = onClick.bind(swiper);
3072        if (support2.touch && !dummyEventAttached) {
3073            document2.addEventListener("touchstart", dummyEventListener);
3074            dummyEventAttached = true;
3075        }
3076        events(swiper, "on");
3077    }
3078    function detachEvents() {
3079        const swiper = this;
3080        events(swiper, "off");
3081    }
3082    var events$1 = {
3083        attachEvents,
3084        detachEvents
3085    };
3086    const isGridEnabled = (swiper, params) => {
3087        return swiper.grid && params.grid && params.grid.rows > 1;
3088    };
3089    function setBreakpoint() {
3090        const swiper = this;
3091        const {
3092            activeIndex,
3093            initialized,
3094            loopedSlides = 0,
3095            params,
3096            $el
3097        } = swiper;
3098        const breakpoints2 = params.breakpoints;
3099        if (!breakpoints2 || breakpoints2 && Object.keys(breakpoints2).length === 0)
3100            return;
3101        const breakpoint = swiper.getBreakpoint(breakpoints2, swiper.params.breakpointsBase, swiper.el);
3102        if (!breakpoint || swiper.currentBreakpoint === breakpoint)
3103            return;
3104        const breakpointOnlyParams = breakpoint in breakpoints2 ? breakpoints2[breakpoint] : void 0;
3105        const breakpointParams = breakpointOnlyParams || swiper.originalParams;
3106        const wasMultiRow = isGridEnabled(swiper, params);
3107        const isMultiRow = isGridEnabled(swiper, breakpointParams);
3108        const wasEnabled = params.enabled;
3109        if (wasMultiRow && !isMultiRow) {
3110            $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);
3111            swiper.emitContainerClasses();
3112        } else if (!wasMultiRow && isMultiRow) {
3113            $el.addClass(`${params.containerModifierClass}grid`);
3114            if (breakpointParams.grid.fill && breakpointParams.grid.fill === "column" || !breakpointParams.grid.fill && params.grid.fill === "column") {
3115                $el.addClass(`${params.containerModifierClass}grid-column`);
3116            }
3117            swiper.emitContainerClasses();
3118        }
3119        const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
3120        const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
3121        if (directionChanged && initialized) {
3122            swiper.changeDirection();
3123        }
3124        extend(swiper.params, breakpointParams);
3125        const isEnabled = swiper.params.enabled;
3126        Object.assign(swiper, {
3127            allowTouchMove: swiper.params.allowTouchMove,
3128            allowSlideNext: swiper.params.allowSlideNext,
3129            allowSlidePrev: swiper.params.allowSlidePrev
3130        });
3131        if (wasEnabled && !isEnabled) {
3132            swiper.disable();
3133        } else if (!wasEnabled && isEnabled) {
3134            swiper.enable();
3135        }
3136        swiper.currentBreakpoint = breakpoint;
3137        swiper.emit("_beforeBreakpoint", breakpointParams);
3138        if (needsReLoop && initialized) {
3139            swiper.loopDestroy();
3140            swiper.loopCreate();
3141            swiper.updateSlides();
3142            swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
3143        }
3144        swiper.emit("breakpoint", breakpointParams);
3145    }
3146    function getBreakpoint(breakpoints2, base = "window", containerEl) {
3147        if (!breakpoints2 || base === "container" && !containerEl)
3148            return void 0;
3149        let breakpoint = false;
3150        const window2 = getWindow();
3151        const currentHeight = base === "window" ? window2.innerHeight : containerEl.clientHeight;
3152        const points = Object.keys(breakpoints2).map((point) => {
3153            if (typeof point === "string" && point.indexOf("@") === 0) {
3154                const minRatio = parseFloat(point.substr(1));
3155                const value = currentHeight * minRatio;
3156                return {
3157                    value,
3158                    point
3159                };
3160            }
3161            return {
3162                value: point,
3163                point
3164            };
3165        });
3166        points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
3167        for (let i = 0; i < points.length; i += 1) {
3168            const {
3169                point,
3170                value
3171            } = points[i];
3172            if (base === "window") {
3173                if (window2.matchMedia(`(min-width: ${value}px)`).matches) {
3174                    breakpoint = point;
3175                }
3176            } else if (value <= containerEl.clientWidth) {
3177                breakpoint = point;
3178            }
3179        }
3180        return breakpoint || "max";
3181    }
3182    var breakpoints = {
3183        setBreakpoint,
3184        getBreakpoint
3185    };
3186    function prepareClasses(entries, prefix) {
3187        const resultClasses = [];
3188        entries.forEach((item) => {
3189            if (typeof item === "object") {
3190                Object.keys(item).forEach((classNames) => {
3191                    if (item[classNames]) {
3192                        resultClasses.push(prefix + classNames);
3193                    }
3194                });
3195            } else if (typeof item === "string") {
3196                resultClasses.push(prefix + item);
3197            }
3198        });
3199        return resultClasses;
3200    }
3201    function addClasses() {
3202        const swiper = this;
3203        const {
3204            classNames,
3205            params,
3206            rtl,
3207            $el,
3208            device,
3209            support: support2
3210        } = swiper;
3211        const suffixes = prepareClasses(["initialized", params.direction, {
3212            "pointer-events": !support2.touch
3213        }, {
3214            "free-mode": swiper.params.freeMode && params.freeMode.enabled
3215        }, {
3216            "autoheight": params.autoHeight
3217        }, {
3218            "rtl": rtl
3219        }, {
3220            "grid": params.grid && params.grid.rows > 1
3221        }, {
3222            "grid-column": params.grid && params.grid.rows > 1 && params.grid.fill === "column"
3223        }, {
3224            "android": device.android
3225        }, {
3226            "ios": device.ios
3227        }, {
3228            "css-mode": params.cssMode
3229        }, {
3230            "centered": params.cssMode && params.centeredSlides
3231        }], params.containerModifierClass);
3232        classNames.push(...suffixes);
3233        $el.addClass([...classNames].join(" "));
3234        swiper.emitContainerClasses();
3235    }
3236    function removeClasses() {
3237        const swiper = this;
3238        const {
3239            $el,
3240            classNames
3241        } = swiper;
3242        $el.removeClass(classNames.join(" "));
3243        swiper.emitContainerClasses();
3244    }
3245    var classes = {
3246        addClasses,
3247        removeClasses
3248    };
3249    function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {
3250        const window2 = getWindow();
3251        let image;
3252        function onReady() {
3253            if (callback)
3254                callback();
3255        }
3256        const isPicture = $(imageEl).parent("picture")[0];
3257        if (!isPicture && (!imageEl.complete || !checkForComplete)) {
3258            if (src) {
3259                image = new window2.Image();
3260                image.onload = onReady;
3261                image.onerror = onReady;
3262                if (sizes) {
3263                    image.sizes = sizes;
3264                }
3265                if (srcset) {
3266                    image.srcset = srcset;
3267                }
3268                if (src) {
3269                    image.src = src;
3270                }
3271            } else {
3272                onReady();
3273            }
3274        } else {
3275            onReady();
3276        }
3277    }
3278    function preloadImages() {
3279        const swiper = this;
3280        swiper.imagesToLoad = swiper.$el.find("img");
3281        function onReady() {
3282            if (typeof swiper === "undefined" || swiper === null || !swiper || swiper.destroyed)
3283                return;
3284            if (swiper.imagesLoaded !== void 0)
3285                swiper.imagesLoaded += 1;
3286            if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
3287                if (swiper.params.updateOnImagesReady)
vendor: 8,466 bytes, lines 3288-3523
3288                    swiper.update();
3289                swiper.emit("imagesReady");
3290            }
3291        }
3292        for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {
3293            const imageEl = swiper.imagesToLoad[i];
3294            swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute("src"), imageEl.srcset || imageEl.getAttribute("srcset"), imageEl.sizes || imageEl.getAttribute("sizes"), true, onReady);
3295        }
3296    }
3297    var images = {
3298        loadImage,
3299        preloadImages
3300    };
3301    function checkOverflow() {
3302        const swiper = this;
3303        const {
3304            isLocked: wasLocked,
3305            params
3306        } = swiper;
3307        const {
3308            slidesOffsetBefore
3309        } = params;
3310        if (slidesOffsetBefore) {
3311            const lastSlideIndex = swiper.slides.length - 1;
3312            const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
3313            swiper.isLocked = swiper.size > lastSlideRightEdge;
3314        } else {
3315            swiper.isLocked = swiper.snapGrid.length === 1;
3316        }
3317        if (params.allowSlideNext === true) {
3318            swiper.allowSlideNext = !swiper.isLocked;
3319        }
3320        if (params.allowSlidePrev === true) {
3321            swiper.allowSlidePrev = !swiper.isLocked;
3322        }
3323        if (wasLocked && wasLocked !== swiper.isLocked) {
3324            swiper.isEnd = false;
3325        }
3326        if (wasLocked !== swiper.isLocked) {
3327            swiper.emit(swiper.isLocked ? "lock" : "unlock");
3328        }
3329    }
3330    var checkOverflow$1 = {
3331        checkOverflow
3332    };
3333    var defaults = {
3334        init: true,
3335        direction: "horizontal",
3336        touchEventsTarget: "wrapper",
3337        initialSlide: 0,
3338        speed: 300,
3339        cssMode: false,
3340        updateOnWindowResize: true,
3341        resizeObserver: true,
3342        nested: false,
3343        createElements: false,
3344        enabled: true,
3345        focusableElements: "input, select, option, textarea, button, video, label",
3346        width: null,
3347        height: null,
3348        preventInteractionOnTransition: false,
3349        userAgent: null,
3350        url: null,
3351        edgeSwipeDetection: false,
3352        edgeSwipeThreshold: 20,
3353        autoHeight: false,
3354        setWrapperSize: false,
3355        virtualTranslate: false,
3356        effect: "slide",
3357        breakpoints: void 0,
3358        breakpointsBase: "window",
3359        spaceBetween: 0,
3360        slidesPerView: 1,
3361        slidesPerGroup: 1,
3362        slidesPerGroupSkip: 0,
3363        slidesPerGroupAuto: false,
3364        centeredSlides: false,
3365        centeredSlidesBounds: false,
3366        slidesOffsetBefore: 0,
3367        slidesOffsetAfter: 0,
3368        normalizeSlideIndex: true,
3369        centerInsufficientSlides: false,
3370        watchOverflow: true,
3371        roundLengths: false,
3372        touchRatio: 1,
3373        touchAngle: 45,
3374        simulateTouch: true,
3375        shortSwipes: true,
3376        longSwipes: true,
3377        longSwipesRatio: 0.5,
3378        longSwipesMs: 300,
3379        followFinger: true,
3380        allowTouchMove: true,
3381        threshold: 0,
3382        touchMoveStopPropagation: false,
3383        touchStartPreventDefault: true,
3384        touchStartForcePreventDefault: false,
3385        touchReleaseOnEdges: false,
3386        uniqueNavElements: true,
3387        resistance: true,
3388        resistanceRatio: 0.85,
3389        watchSlidesProgress: false,
3390        grabCursor: false,
3391        preventClicks: true,
3392        preventClicksPropagation: true,
3393        slideToClickedSlide: false,
3394        preloadImages: true,
3395        updateOnImagesReady: true,
3396        loop: false,
3397        loopAdditionalSlides: 0,
3398        loopedSlides: null,
3399        loopFillGroupWithBlank: false,
3400        loopPreventsSlide: true,
3401        rewind: false,
3402        allowSlidePrev: true,
3403        allowSlideNext: true,
3404        swipeHandler: null,
3405        noSwiping: true,
3406        noSwipingClass: "swiper-no-swiping",
3407        noSwipingSelector: null,
3408        passiveListeners: true,
3409        containerModifierClass: "swiper-",
3410        slideClass: "swiper-slide",
3411        slideBlankClass: "swiper-slide-invisible-blank",
3412        slideActiveClass: "swiper-slide-active",
3413        slideDuplicateActiveClass: "swiper-slide-duplicate-active",
3414        slideVisibleClass: "swiper-slide-visible",
3415        slideDuplicateClass: "swiper-slide-duplicate",
3416        slideNextClass: "swiper-slide-next",
3417        slideDuplicateNextClass: "swiper-slide-duplicate-next",
3418        slidePrevClass: "swiper-slide-prev",
3419        slideDuplicatePrevClass: "swiper-slide-duplicate-prev",
3420        wrapperClass: "swiper-wrapper",
3421        runCallbacksOnInit: true,
3422        _emitClasses: false
3423    };
3424    function moduleExtendParams(params, allModulesParams) {
3425        return function extendParams(obj = {}) {
3426            const moduleParamName = Object.keys(obj)[0];
3427            const moduleParams = obj[moduleParamName];
3428            if (typeof moduleParams !== "object" || moduleParams === null) {
3429                extend(allModulesParams, obj);
3430                return;
3431            }
3432            if (["navigation", "pagination", "scrollbar"].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {
3433                params[moduleParamName] = {
3434                    auto: true
3435                };
3436            }
3437            if (!(moduleParamName in params && "enabled" in moduleParams)) {
3438                extend(allModulesParams, obj);
3439                return;
3440            }
3441            if (params[moduleParamName] === true) {
3442                params[moduleParamName] = {
3443                    enabled: true
3444                };
3445            }
3446            if (typeof params[moduleParamName] === "object" && !("enabled" in params[moduleParamName])) {
3447                params[moduleParamName].enabled = true;
3448            }
3449            if (!params[moduleParamName])
3450                params[moduleParamName] = {
3451                    enabled: false
3452                };
3453            extend(allModulesParams, obj);
3454        };
3455    }
3456    const prototypes = {
3457        eventsEmitter,
3458        update,
3459        translate,
3460        transition,
3461        slide,
3462        loop,
3463        grabCursor,
3464        events: events$1,
3465        breakpoints,
3466        checkOverflow: checkOverflow$1,
3467        classes,
3468        images
3469    };
3470    const extendedDefaults = {};
3471    class Swiper {
3472        constructor(...args) {
3473            let el;
3474            let params;
3475            if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === "Object") {
3476                params = args[0];
3477            } else {
3478                [el, params] = args;
3479            }
3480            if (!params)
3481                params = {};
3482            params = extend({}, params);
3483            if (el && !params.el)
3484                params.el = el;
3485            if (params.el && $(params.el).length > 1) {
3486                const swipers = [];
3487                $(params.el).each((containerEl) => {
3488                    const newParams = extend({}, params, {
3489                        el: containerEl
3490                    });
3491                    swipers.push(new Swiper(newParams));
3492                });
3493                return swipers;
3494            }
3495            const swiper = this;
3496            swiper.__swiper__ = true;
3497            swiper.support = getSupport();
3498            swiper.device = getDevice({
3499                userAgent: params.userAgent
3500            });
3501            swiper.browser = getBrowser();
3502            swiper.eventsListeners = {};
3503            swiper.eventsAnyListeners = [];
3504            swiper.modules = [...swiper.__modules__];
3505            if (params.modules && Array.isArray(params.modules)) {
3506                swiper.modules.push(...params.modules);
3507            }
3508            const allModulesParams = {};
3509            swiper.modules.forEach((mod) => {
3510                mod({
3511                    swiper,
3512                    extendParams: moduleExtendParams(params, allModulesParams),
3513                    on: swiper.on.bind(swiper),
3514                    once: swiper.once.bind(swiper),
3515                    off: swiper.off.bind(swiper),
3516                    emit: swiper.emit.bind(swiper)
3517                });
3518            });
3519            const swiperParams = extend({}, defaults, allModulesParams);
3520            swiper.params = extend({}, swiperParams, extendedDefaults, params);
3521            swiper.originalParams = extend({}, swiper.params);
3522            swiper.passedParams = extend({}, params);
3523            if (swiper.params && swiper.params.on) {
3524                Object.keys(swiper.params.on).forEach((eventName) => {
3525                    swiper.on(eventName, swiper.params.on[eventName]);
3526                });
3527            }
3528            if (swiper.params && swiper.params.onAny) {
3529                swiper.onAny(swiper.params.onAny);
3530            }
3531            swiper.$ = $;
3532            Object.assign(swiper, {
3533                enabled: swiper.params.enabled,
3534                el,
3535                classNames: [],
3536                slides: $(),
3537                slidesGrid: [],
3538                snapGrid: [],
3539                slidesSizesGrid: [],
3540                isHorizontal() {
3541                    return swiper.params.direction === "horizontal";
3542                },
3543                isVertical() {
3544                    return swiper.params.direction === "vertical";
3545                },
3546                activeIndex: 0,
3547                realIndex: 0,
3548                isBeginning: true,
3549                isEnd: false,
3550                translate: 0,
3551                previousTranslate: 0,
3552                progress: 0,
3553                velocity: 0,
3554                animating: false,
3555                allowSlideNext: swiper.params.allowSlideNext,
3556                allowSlidePrev: swiper.params.allowSlidePrev,
3557                touchEvents: function touchEvents() {
3558                    const touch = ["touchstart", "touchmove", "touchend", "touchcancel"];
3559                    const desktop = ["pointerdown", "pointermove", "pointerup"];
3560                    swiper.touchEventsTouch = {
3561                        start: touch[0],
3562                        move: touch[1],
3563                        end: touch[2],
3564                        cancel: touch[3]
3565                    };
3566                    swiper.touchEventsDesktop = {
3567                        start: desktop[0],
3568                        move: desktop[1],
3569                        end: desktop[2]
3570                    };
3571                    return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
3572                }(),
3573                touchEventsData: {
3574                    isTouched: void 0,
3575                    isMoved: void 0,
3576                    allowTouchCallbacks: void 0,
3577                    touchStartTime: void 0,
3578                    isScrolling: void 0,
3579                    currentTranslate: void 0,
3580                    startTranslate: void 0,
3581                    allowThresholdMove: void 0,
3582                    focusableElements: swiper.params.focusableElements,
3583                    lastClickTime: now(),
3584                    clickTimeout: void 0,
3585                    velocities: [],
3586                    allowMomentumBounce: void 0,
3587                    isTouchEvent: void 0,
3588                    startMoving: void 0
3589                },
3590                allowClick: true,
3591                allowTouchMove: swiper.params.allowTouchMove,
3592                touches: {
3593                    startX: 0,
3594                    startY: 0,
3595                    currentX: 0,
3596                    currentY: 0,
3597                    diff: 0
3598                },
3599                imagesToLoad: [],
3600                imagesLoaded: 0
3601            });
3602            swiper.emit("_swiper");
3603            if (swiper.params.init) {
3604                swiper.init();
3605            }
3606            return swiper;
3607        }
3608        enable() {
3609            const swiper = this;
3610            if (swiper.enabled)
3611                return;
3612            swiper.enabled = true;
3613            if (swiper.params.grabCursor) {
3614                swiper.setGrabCursor();
3615            }
3616            swiper.emit("enable");
3617        }
3618        disable() {
3619            const swiper = this;
3620            if (!swiper.enabled)
3621                return;
3622            swiper.enabled = false;
3623            if (swiper.params.grabCursor) {
3624                swiper.unsetGrabCursor();
3625            }
3626            swiper.emit("disable");
3627        }
3628        setProgress(progress, speed) {
3629            const swiper = this;
3630            progress = Math.min(Math.max(progress, 0), 1);
3631            const min = swiper.minTranslate();
3632            const max = swiper.maxTranslate();
3633            const current = (max - min) * progress + min;
3634            swiper.translateTo(current, typeof speed === "undefined" ? 0 : speed);
3635            swiper.updateActiveIndex();
3636            swiper.updateSlidesClasses();
3637        }
3638        emitContainerClasses() {
3639            const swiper = this;
3640            if (!swiper.params._emitClasses || !swiper.el)
3641                return;
3642            const cls = swiper.el.className.split(" ").filter((className) => {
3643                return className.indexOf("swiper") === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
3644            });
3645            swiper.emit("_containerClasses", cls.join(" "));
3646        }
vendor: 10,069 bytes, lines 3647-3890
3647        getSlideClasses(slideEl) {
3648            const swiper = this;
3649            return slideEl.className.split(" ").filter((className) => {
3650                return className.indexOf("swiper-slide") === 0 || className.indexOf(swiper.params.slideClass) === 0;
3651            }).join(" ");
3652        }
3653        emitSlidesClasses() {
3654            const swiper = this;
3655            if (!swiper.params._emitClasses || !swiper.el)
3656                return;
3657            const updates = [];
3658            swiper.slides.each((slideEl) => {
3659                const classNames = swiper.getSlideClasses(slideEl);
3660                updates.push({
3661                    slideEl,
3662                    classNames
3663                });
3664                swiper.emit("_slideClass", slideEl, classNames);
3665            });
3666            swiper.emit("_slideClasses", updates);
3667        }
3668        slidesPerViewDynamic(view = "current", exact = false) {
3669            const swiper = this;
3670            const {
3671                params,
3672                slides,
3673                slidesGrid,
3674                slidesSizesGrid,
3675                size: swiperSize,
3676                activeIndex
3677            } = swiper;
3678            let spv = 1;
3679            if (params.centeredSlides) {
3680                let slideSize = slides[activeIndex].swiperSlideSize;
3681                let breakLoop;
3682                for (let i = activeIndex + 1; i < slides.length; i += 1) {
3683                    if (slides[i] && !breakLoop) {
3684                        slideSize += slides[i].swiperSlideSize;
3685                        spv += 1;
3686                        if (slideSize > swiperSize)
3687                            breakLoop = true;
3688                    }
3689                }
3690                for (let i = activeIndex - 1; i >= 0; i -= 1) {
3691                    if (slides[i] && !breakLoop) {
3692                        slideSize += slides[i].swiperSlideSize;
3693                        spv += 1;
3694                        if (slideSize > swiperSize)
3695                            breakLoop = true;
3696                    }
3697                }
3698            } else {
3699                if (view === "current") {
3700                    for (let i = activeIndex + 1; i < slides.length; i += 1) {
3701                        const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;
3702                        if (slideInView) {
3703                            spv += 1;
3704                        }
3705                    }
3706                } else {
3707                    for (let i = activeIndex - 1; i >= 0; i -= 1) {
3708                        const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;
3709                        if (slideInView) {
3710                            spv += 1;
3711                        }
3712                    }
3713                }
3714            }
3715            return spv;
3716        }
3717        update() {
3718            const swiper = this;
3719            if (!swiper || swiper.destroyed)
3720                return;
3721            const {
3722                snapGrid,
3723                params
3724            } = swiper;
3725            if (params.breakpoints) {
3726                swiper.setBreakpoint();
3727            }
3728            swiper.updateSize();
3729            swiper.updateSlides();
3730            swiper.updateProgress();
3731            swiper.updateSlidesClasses();
3732            function setTranslate2() {
3733                const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
3734                const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
3735                swiper.setTranslate(newTranslate);
3736                swiper.updateActiveIndex();
3737                swiper.updateSlidesClasses();
3738            }
3739            let translated;
3740            if (swiper.params.freeMode && swiper.params.freeMode.enabled) {
3741                setTranslate2();
3742                if (swiper.params.autoHeight) {
3743                    swiper.updateAutoHeight();
3744                }
3745            } else {
3746                if ((swiper.params.slidesPerView === "auto" || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
3747                    translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
3748                } else {
3749                    translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
3750                }
3751                if (!translated) {
3752                    setTranslate2();
3753                }
3754            }
3755            if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
3756                swiper.checkOverflow();
3757            }
3758            swiper.emit("update");
3759        }
3760        changeDirection(newDirection, needUpdate = true) {
3761            const swiper = this;
3762            const currentDirection = swiper.params.direction;
3763            if (!newDirection) {
3764                newDirection = currentDirection === "horizontal" ? "vertical" : "horizontal";
3765            }
3766            if (newDirection === currentDirection || newDirection !== "horizontal" && newDirection !== "vertical") {
3767                return swiper;
3768            }
3769            swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);
3770            swiper.emitContainerClasses();
3771            swiper.params.direction = newDirection;
3772            swiper.slides.each((slideEl) => {
3773                if (newDirection === "vertical") {
3774                    slideEl.style.width = "";
3775                } else {
3776                    slideEl.style.height = "";
3777                }
3778            });
3779            swiper.emit("changeDirection");
3780            if (needUpdate)
3781                swiper.update();
3782            return swiper;
3783        }
3784        mount(el) {
3785            const swiper = this;
3786            if (swiper.mounted)
3787                return true;
3788            const $el = $(el || swiper.params.el);
3789            el = $el[0];
3790            if (!el) {
3791                return false;
3792            }
3793            el.swiper = swiper;
3794            const getWrapperSelector = () => {
3795                return `.${(swiper.params.wrapperClass || "").trim().split(" ").join(".")}`;
3796            };
3797            const getWrapper = () => {
3798                if (el && el.shadowRoot && el.shadowRoot.querySelector) {
3799                    const res = $(el.shadowRoot.querySelector(getWrapperSelector()));
3800                    res.children = (options) => $el.children(options);
3801                    return res;
3802                }
3803                return $el.children(getWrapperSelector());
3804            };
3805            let $wrapperEl = getWrapper();
3806            if ($wrapperEl.length === 0 && swiper.params.createElements) {
3807                const document2 = getDocument();
3808                const wrapper = document2.createElement("div");
3809                $wrapperEl = $(wrapper);
3810                wrapper.className = swiper.params.wrapperClass;
3811                $el.append(wrapper);
3812                $el.children(`.${swiper.params.slideClass}`).each((slideEl) => {
3813                    $wrapperEl.append(slideEl);
3814                });
3815            }
3816            Object.assign(swiper, {
3817                $el,
3818                el,
3819                $wrapperEl,
3820                wrapperEl: $wrapperEl[0],
3821                mounted: true,
3822                rtl: el.dir.toLowerCase() === "rtl" || $el.css("direction") === "rtl",
3823                rtlTranslate: swiper.params.direction === "horizontal" && (el.dir.toLowerCase() === "rtl" || $el.css("direction") === "rtl"),
3824                wrongRTL: $wrapperEl.css("display") === "-webkit-box"
3825            });
3826            return true;
3827        }
3828        init(el) {
3829            const swiper = this;
3830            if (swiper.initialized)
3831                return swiper;
3832            const mounted = swiper.mount(el);
3833            if (mounted === false)
3834                return swiper;
3835            swiper.emit("beforeInit");
3836            if (swiper.params.breakpoints) {
3837                swiper.setBreakpoint();
3838            }
3839            swiper.addClasses();
3840            if (swiper.params.loop) {
3841                swiper.loopCreate();
3842            }
3843            swiper.updateSize();
3844            swiper.updateSlides();
3845            if (swiper.params.watchOverflow) {
3846                swiper.checkOverflow();
3847            }
3848            if (swiper.params.grabCursor && swiper.enabled) {
3849                swiper.setGrabCursor();
3850            }
3851            if (swiper.params.preloadImages) {
3852                swiper.preloadImages();
3853            }
3854            if (swiper.params.loop) {
3855                swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);
3856            } else {
3857                swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
3858            }
3859            swiper.attachEvents();
3860            swiper.initialized = true;
3861            swiper.emit("init");
3862            swiper.emit("afterInit");
3863            return swiper;
3864        }
3865        destroy(deleteInstance = true, cleanStyles = true) {
3866            const swiper = this;
3867            const {
3868                params,
3869                $el,
3870                $wrapperEl,
3871                slides
3872            } = swiper;
3873            if (typeof swiper.params === "undefined" || swiper.destroyed) {
3874                return null;
3875            }
3876            swiper.emit("beforeDestroy");
3877            swiper.initialized = false;
3878            swiper.detachEvents();
3879            if (params.loop) {
3880                swiper.loopDestroy();
3881            }
3882            if (cleanStyles) {
3883                swiper.removeClasses();
3884                $el.removeAttr("style");
3885                $wrapperEl.removeAttr("style");
3886                if (slides && slides.length) {
3887                    slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index");
3888                }
3889            }
3890            swiper.emit("destroy");
3891            Object.keys(swiper.eventsListeners).forEach((eventName) => {
3892                swiper.off(eventName);
3893            });
3894            if (deleteInstance !== false) {
3895                swiper.$el[0].swiper = null;
3896                deleteProps(swiper);
3897            }
3898            swiper.destroyed = true;
3899            return null;
3900        }
3901        static extendDefaults(newDefaults) {
3902            extend(extendedDefaults, newDefaults);
3903        }
3904        static get extendedDefaults() {
3905            return extendedDefaults;
3906        }
3907        static get defaults() {
3908            return defaults;
3909        }
3910        static installModule(mod) {
3911            if (!Swiper.prototype.__modules__)
3912                Swiper.prototype.__modules__ = [];
3913            const modules = Swiper.prototype.__modules__;
3914            if (typeof mod === "function" && modules.indexOf(mod) < 0) {
3915                modules.push(mod);
3916            }
3917        }
3918        static use(module) {
3919            if (Array.isArray(module)) {
3920                module.forEach((m) => Swiper.installModule(m));
3921                return Swiper;
3922            }
3923            Swiper.installModule(module);
3924            return Swiper;
3925        }
3926    }
3927    Object.keys(prototypes).forEach((prototypeGroup) => {
3928        Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {
3929            Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
3930        });
3931    });
3932    Swiper.use([Resize, Observer]);
3933    function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
3934        const document2 = getDocument();
3935        if (swiper.params.createElements) {
3936            Object.keys(checkProps).forEach((key) => {
3937                if (!params[key] && params.auto === true) {
3938                    let element = swiper.$el.children(`.${checkProps[key]}`)[0];
3939                    if (!element) {
3940                        element = document2.createElement("div");
3941                        element.className = checkProps[key];
3942                        swiper.$el.append(element);
3943                    }
3944                    params[key] = element;
3945                    originalParams[key] = element;
3946                }
3947            });
3948        }
3949        return params;
3950    }
3951    function Navigation({
3952                            swiper,
3953                            extendParams,
3954                            on: on2,
3955                            emit
3956                        }) {
3957        extendParams({
3958            navigation: {
3959                nextEl: null,
3960                prevEl: null,
3961                hideOnClick: false,
3962                disabledClass: "swiper-button-disabled",
3963                hiddenClass: "swiper-button-hidden",
3964                lockClass: "swiper-button-lock"
3965            }
3966        });
3967        swiper.navigation = {
3968            nextEl: null,
3969            $nextEl: null,
3970            prevEl: null,
3971            $prevEl: null
3972        };
3973        function getEl(el) {
3974            let $el;
3975            if (el) {
3976                $el = $(el);
3977                if (swiper.params.uniqueNavElements && typeof el === "string" && $el.length > 1 && swiper.$el.find(el).length === 1) {
3978                    $el = swiper.$el.find(el);
3979                }
3980            }
3981            return $el;
3982        }
3983        function toggleEl($el, disabled) {
3984            const params = swiper.params.navigation;
3985            if ($el && $el.length > 0) {
3986                $el[disabled ? "addClass" : "removeClass"](params.disabledClass);
3987                if ($el[0] && $el[0].tagName === "BUTTON")
3988                    $el[0].disabled = disabled;
3989                if (swiper.params.watchOverflow && swiper.enabled) {
3990                    $el[swiper.isLocked ? "addClass" : "removeClass"](params.lockClass);
3991                }
3992            }
3993        }
3994        function update2() {
3995            if (swiper.params.loop)
3996                return;
3997            const {
3998                $nextEl,
3999                $prevEl
4000            } = swiper.navigation;
4001            toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);
4002            toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);
4003        }
4004        function onPrevClick(e) {
4005            e.preventDefault();
4006            if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind)
4007                return;
4008            swiper.slidePrev();
4009        }
4010        function onNextClick(e) {
4011            e.preventDefault();
4012            if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind)
4013                return;
4014            swiper.slideNext();
4015        }
4016        function init() {
4017            const params = swiper.params.navigation;
4018            swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {
4019                nextEl: "swiper-button-next",
4020                prevEl: "swiper-button-prev"
4021            });
4022            if (!(params.nextEl || params.prevEl))
4023                return;
4024            const $nextEl = getEl(params.nextEl);
4025            const $prevEl = getEl(params.prevEl);
4026            if ($nextEl && $nextEl.length > 0) {
4027                $nextEl.on("click", onNextClick);
4028            }
4029            if ($prevEl && $prevEl.length > 0) {
4030                $prevEl.on("click", onPrevClick);
4031            }
4032            Object.assign(swiper.navigation, {
4033                $nextEl,
4034                nextEl: $nextEl && $nextEl[0],
4035                $prevEl,
4036                prevEl: $prevEl && $prevEl[0]
4037            });
4038            if (!swiper.enabled) {
4039                if ($nextEl)
4040                    $nextEl.addClass(params.lockClass);
4041                if ($prevEl)
4042                    $prevEl.addClass(params.lockClass);
4043            }
4044        }
4045        function destroy() {
4046            const {
4047                $nextEl,
4048                $prevEl
4049            } = swiper.navigation;
4050            if ($nextEl && $nextEl.length) {
4051                $nextEl.off("click", onNextClick);
4052                $nextEl.removeClass(swiper.params.navigation.disabledClass);
4053            }
4054            if ($prevEl && $prevEl.length) {
4055                $prevEl.off("click", onPrevClick);
4056                $prevEl.removeClass(swiper.params.navigation.disabledClass);
4057            }
4058        }
4059        on2("init", () => {
4060            init();
4061            update2();
4062        });
4063        on2("toEdge fromEdge lock unlock", () => {
4064            update2();
4065        });
4066        on2("destroy", () => {
4067            destroy();
4068        });
4069        on2("enable disable", () => {
4070            const {
4071                $nextEl,
4072                $prevEl
4073            } = swiper.navigation;
4074            if ($nextEl) {
4075                $nextEl[swiper.enabled ? "removeClass" : "addClass"](swiper.params.navigation.lockClass);
4076            }
4077            if ($prevEl) {
4078                $prevEl[swiper.enabled ? "removeClass" : "addClass"](swiper.params.navigation.lockClass);
4079            }
4080        });
4081        on2("click", (_s, e) => {
4082            const {
4083                $nextEl,
4084                $prevEl
4085            } = swiper.navigation;
4086            const targetEl = e.target;
4087            if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {
4088                if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl)))
4089                    return;
4090                let isHidden;
4091                if ($nextEl) {
4092                    isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
4093                } else if ($prevEl) {
4094                    isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
4095                }
4096                if (isHidden === true) {
4097                    emit("navigationShow");
4098                } else {
4099                    emit("navigationHide");
4100                }
4101                if ($nextEl) {
4102                    $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
4103                }
4104                if ($prevEl) {
4105                    $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
4106                }
4107            }
4108        });
4109        Object.assign(swiper.navigation, {
4110            update: update2,
4111            init,
4112            destroy
4113        });
4114    }
4115    function classesToSelector(classes2 = "") {
4116        return `.${classes2.trim().replace(/([\.:!\/])/g, "\\$1").replace(/ /g, ".")}`;
4117    }
4118    function Pagination({
4119                            swiper,
4120                            extendParams,
4121                            on: on2,
4122                            emit
4123                        }) {
4124        const pfx = "swiper-pagination";
4125        extendParams({
4126            pagination: {
4127                el: null,
4128                bulletElement: "span",
4129                clickable: false,
4130                hideOnClick: false,
4131                renderBullet: null,
4132                renderProgressbar: null,
4133                renderFraction: null,
4134                renderCustom: null,
4135                progressbarOpposite: false,
4136                type: "bullets",
4137                dynamicBullets: false,
4138                dynamicMainBullets: 1,
4139                formatFractionCurrent: (number) => number,
4140                formatFractionTotal: (number) => number,
4141                bulletClass: `${pfx}-bullet`,
4142                bulletActiveClass: `${pfx}-bullet-active`,
4143                modifierClass: `${pfx}-`,
4144                currentClass: `${pfx}-current`,
4145                totalClass: `${pfx}-total`,
4146                hiddenClass: `${pfx}-hidden`,
4147                progressbarFillClass: `${pfx}-progressbar-fill`,
4148                progressbarOppositeClass: `${pfx}-progressbar-opposite`,
4149                clickableClass: `${pfx}-clickable`,
4150                lockClass: `${pfx}-lock`,
4151                horizontalClass: `${pfx}-horizontal`,
4152                verticalClass: `${pfx}-vertical`
4153            }
4154        });
4155        swiper.pagination = {
4156            el: null,
4157            $el: null,
4158            bullets: []
4159        };
4160        let bulletSize;
4161        let dynamicBulletIndex = 0;
4162        function isPaginationDisabled() {
4163            return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;
4164        }
4165        function setSideBullets($bulletEl, position) {
4166            const {
4167                bulletActiveClass
4168            } = swiper.params.pagination;
4169            $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);
4170        }
4171        function update2() {
4172            const rtl = swiper.rtl;
4173            const params = swiper.params.pagination;
4174            if (isPaginationDisabled())
4175                return;
4176            const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
4177            const $el = swiper.pagination.$el;
4178            let current;
4179            const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
4180            if (swiper.params.loop) {
vendor: 6,201 bytes, lines 4181-4286
4181                current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
4182                if (current > slidesLength - 1 - swiper.loopedSlides * 2) {
4183                    current -= slidesLength - swiper.loopedSlides * 2;
4184                }
4185                if (current > total - 1)
4186                    current -= total;
4187                if (current < 0 && swiper.params.paginationType !== "bullets")
4188                    current = total + current;
4189            } else if (typeof swiper.snapIndex !== "undefined") {
4190                current = swiper.snapIndex;
4191            } else {
4192                current = swiper.activeIndex || 0;
4193            }
4194            if (params.type === "bullets" && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
4195                const bullets = swiper.pagination.bullets;
4196                let firstIndex;
4197                let lastIndex;
4198                let midIndex;
4199                if (params.dynamicBullets) {
4200                    bulletSize = bullets.eq(0)[swiper.isHorizontal() ? "outerWidth" : "outerHeight"](true);
4201                    $el.css(swiper.isHorizontal() ? "width" : "height", `${bulletSize * (params.dynamicMainBullets + 4)}px`);
4202                    if (params.dynamicMainBullets > 1 && swiper.previousIndex !== void 0) {
4203                        dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);
4204                        if (dynamicBulletIndex > params.dynamicMainBullets - 1) {
4205                            dynamicBulletIndex = params.dynamicMainBullets - 1;
4206                        } else if (dynamicBulletIndex < 0) {
4207                            dynamicBulletIndex = 0;
4208                        }
4209                    }
4210                    firstIndex = Math.max(current - dynamicBulletIndex, 0);
4211                    lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
4212                    midIndex = (lastIndex + firstIndex) / 2;
4213                }
4214                bullets.removeClass(["", "-next", "-next-next", "-prev", "-prev-prev", "-main"].map((suffix) => `${params.bulletActiveClass}${suffix}`).join(" "));
4215                if ($el.length > 1) {
4216                    bullets.each((bullet) => {
4217                        const $bullet = $(bullet);
4218                        const bulletIndex = $bullet.index();
4219                        if (bulletIndex === current) {
4220                            $bullet.addClass(params.bulletActiveClass);
4221                        }
4222                        if (params.dynamicBullets) {
4223                            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
4224                                $bullet.addClass(`${params.bulletActiveClass}-main`);
4225                            }
4226                            if (bulletIndex === firstIndex) {
4227                                setSideBullets($bullet, "prev");
4228                            }
4229                            if (bulletIndex === lastIndex) {
4230                                setSideBullets($bullet, "next");
4231                            }
4232                        }
4233                    });
4234                } else {
4235                    const $bullet = bullets.eq(current);
4236                    const bulletIndex = $bullet.index();
4237                    $bullet.addClass(params.bulletActiveClass);
4238                    if (params.dynamicBullets) {
4239                        const $firstDisplayedBullet = bullets.eq(firstIndex);
4240                        const $lastDisplayedBullet = bullets.eq(lastIndex);
4241                        for (let i = firstIndex; i <= lastIndex; i += 1) {
4242                            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);
4243                        }
4244                        if (swiper.params.loop) {
4245                            if (bulletIndex >= bullets.length) {
4246                                for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {
4247                                    bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);
4248                                }
4249                                bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);
4250                            } else {
4251                                setSideBullets($firstDisplayedBullet, "prev");
4252                                setSideBullets($lastDisplayedBullet, "next");
4253                            }
4254                        } else {
4255                            setSideBullets($firstDisplayedBullet, "prev");
4256                            setSideBullets($lastDisplayedBullet, "next");
4257                        }
4258                    }
4259                }
4260                if (params.dynamicBullets) {
4261                    const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
4262                    const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;
4263                    const offsetProp = rtl ? "right" : "left";
4264                    bullets.css(swiper.isHorizontal() ? offsetProp : "top", `${bulletsOffset}px`);
4265                }
4266            }
4267            if (params.type === "fraction") {
4268                $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));
4269                $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));
4270            }
4271            if (params.type === "progressbar") {
4272                let progressbarDirection;
4273                if (params.progressbarOpposite) {
4274                    progressbarDirection = swiper.isHorizontal() ? "vertical" : "horizontal";
4275                } else {
4276                    progressbarDirection = swiper.isHorizontal() ? "horizontal" : "vertical";
4277                }
4278                const scale = (current + 1) / total;
4279                let scaleX = 1;
4280                let scaleY = 1;
4281                if (progressbarDirection === "horizontal") {
4282                    scaleX = scale;
4283                } else {
4284                    scaleY = scale;
4285                }
4286                $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,
42860,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);
4287            }
4288            if (params.type === "custom" && params.renderCustom) {
4289                $el.html(params.renderCustom(swiper, current + 1, total));
4290                emit("paginationRender", $el[0]);
4291            } else {
4292                emit("paginationUpdate", $el[0]);
4293            }
4294            if (swiper.params.watchOverflow && swiper.enabled) {
4295                $el[swiper.isLocked ? "addClass" : "removeClass"](params.lockClass);
4296            }
4297        }
4298        function render() {
4299            const params = swiper.params.pagination;
4300            if (isPaginationDisabled())
4301                return;
4302            const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
4303            const $el = swiper.pagination.$el;
4304            let paginationHTML = "";
4305            if (params.type === "bullets") {
4306                let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
4307                if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {
4308                    numberOfBullets = slidesLength;
4309                }
4310                for (let i = 0; i < numberOfBullets; i += 1) {
4311                    if (params.renderBullet) {
4312                        paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
4313                    } else {
4314                        paginationHTML += `<${params.bulletElement} class="${params.bulletClass}"></${params.bulletElement}>`;
4315                    }
4316                }
4317                $el.html(paginationHTML);
4318                swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));
4319            }
4320            if (params.type === "fraction") {
4321                if (params.renderFraction) {
4322                    paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
4323                } else {
4324                    paginationHTML = `<span class="${params.currentClass}"></span> / <span class="${params.totalClass}"></span>`;
4325                }
4326                $el.html(paginationHTML);
4327            }
4328            if (params.type === "progressbar") {
4329                if (params.renderProgressbar) {
4330                    paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
4331                } else {
4332                    paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
4333                }
4334                $el.html(paginationHTML);
4335            }
4336            if (params.type !== "custom") {
4337                emit("paginationRender", swiper.pagination.$el[0]);
4338            }
4339        }
4340        function init() {
4341            swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {
4342                el: "swiper-pagination"
4343            });
4344            const params = swiper.params.pagination;
4345            if (!params.el)
4346                return;
4347            let $el = $(params.el);
4348            if ($el.length === 0)
4349                return;
4350            if (swiper.params.uniqueNavElements && typeof params.el === "string" && $el.length > 1) {
4351                $el = swiper.$el.find(params.el);
4352                if ($el.length > 1) {
4353                    $el = $el.filter((el) => {
4354                        if ($(el).parents(".swiper")[0] !== swiper.el)
4355                            return false;
4356                        return true;
4357                    });
4358                }
4359            }
4360            if (params.type === "bullets" && params.clickable) {
4361                $el.addClass(params.clickableClass);
4362            }
4363            $el.addClass(params.modifierClass + params.type);
4364            $el.addClass(params.modifierClass + swiper.params.direction);
4365            if (params.type === "bullets" && params.dynamicBullets) {
4366                $el.addClass(`${params.modifierClass}${params.type}-dynamic`);
4367                dynamicBulletIndex = 0;
4368                if (params.dynamicMainBullets < 1) {
4369                    params.dynamicMainBullets = 1;
4370                }
4371            }
4372            if (params.type === "progressbar" && params.progressbarOpposite) {
4373                $el.addClass(params.progressbarOppositeClass);
4374            }
4375            if (params.clickable) {
4376                $el.on("click", classesToSelector(params.bulletClass), function onClick2(e) {
4377                    e.preventDefault();
4378                    let index2 = $(this).index() * swiper.params.slidesPerGroup;
4379                    if (swiper.params.loop)
4380                        index2 += swiper.loopedSlides;
4381                    swiper.slideTo(index2);
4382                });
4383            }
4384            Object.assign(swiper.pagination, {
4385                $el,
4386                el: $el[0]
4387            });
4388            if (!swiper.enabled) {
4389                $el.addClass(params.lockClass);
4390            }
4391        }
4392        function destroy() {
4393            const params = swiper.params.pagination;
4394            if (isPaginationDisabled())
4395                return;
4396            const $el = swiper.pagination.$el;
4397            $el.removeClass(params.hiddenClass);
4398            $el.removeClass(params.modifierClass + params.type);
4399            $el.removeClass(params.modifierClass + swiper.params.direction);
4400            if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass)
4401                swiper.pagination.bullets.removeClass(params.bulletActiveClass);
4402            if (params.clickable) {
4403                $el.off("click", classesToSelector(params.bulletClass));
4404            }
4405        }
4406        on2("init", () => {
4407            init();
4408            render();
4409            update2();
4410        });
4411        on2("activeIndexChange", () => {
4412            if (swiper.params.loop) {
4413                update2();
4414            } else if (typeof swiper.snapIndex === "undefined") {
4415                update2();
4416            }
4417        });
4418        on2("snapIndexChange", () => {
4419            if (!swiper.params.loop) {
4420                update2();
4421            }
4422        });
4423        on2("slidesLengthChange", () => {
4424            if (swiper.params.loop) {
4425                render();
4426                update2();
4427            }
4428        });
4429        on2("snapGridLengthChange", () => {
4430            if (!swiper.params.loop) {
4431                render();
4432                update2();
4433            }
4434        });
4435        on2("destroy", () => {
4436            destroy();
4437        });
4438        on2("enable disable", () => {
4439            const {
4440                $el
4441            } = swiper.pagination;
4442            if ($el) {
4443                $el[swiper.enabled ? "removeClass" : "addClass"](swiper.params.pagination.lockClass);
4444            }
4445        });
4446        on2("lock unlock", () => {
4447            update2();
4448        });
4449        on2("click", (_s, e) => {
4450            const targetEl = e.target;
4451            const {
4452                $el
4453            } = swiper.pagination;
4454            if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {
4455                if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))
4456                    return;
4457                const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);
4458                if (isHidden === true) {
4459                    emit("paginationShow");
4460                } else {
4461                    emit("paginationHide");
4462                }
4463                $el.toggleClass(swiper.params.pagination.hiddenClass);
4464            }
4465        });
4466        Object.assign(swiper.pagination, {
4467            render,
4468            update: update2,
4469            init,
4470            destroy
4471        });
4472    }
4473    function Autoplay({
4474                          swiper,
4475                          extendParams,
4476                          on: on2,
4477                          emit
4478                      }) {
4479        let timeout;
4480        swiper.autoplay = {
4481            running: false,
4482            paused: false
4483        };
4484        extendParams({
4485            autoplay: {
4486                enabled: false,
4487                delay: 3e3,
4488                waitForTransition: true,
4489                disableOnInteraction: true,
4490                stopOnLastSlide: false,
4491                reverseDirection: false,
4492                pauseOnMouseEnter: false
4493            }
4494        });
4495        function run() {
4496            const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
4497            let delay = swiper.params.autoplay.delay;
4498            if ($activeSlideEl.attr("data-swiper-autoplay")) {
vendor: 4,734 bytes, lines 4499-4617
4499                delay = $activeSlideEl.attr("data-swiper-autoplay") || swiper.params.autoplay.delay;
4500            }
4501            clearTimeout(timeout);
4502            timeout = nextTick(() => {
4503                let autoplayResult;
4504                if (swiper.params.autoplay.reverseDirection) {
4505                    if (swiper.params.loop) {
4506                        swiper.loopFix();
4507                        autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
4508                        emit("autoplay");
4509                    } else if (!swiper.isBeginning) {
4510                        autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
4511                        emit("autoplay");
4512                    } else if (!swiper.params.autoplay.stopOnLastSlide) {
4513                        autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
4514                        emit("autoplay");
4515                    } else {
4516                        stop();
4517                    }
4518                } else if (swiper.params.loop) {
4519                    swiper.loopFix();
4520                    autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
4521                    emit("autoplay");
4522                } else if (!swiper.isEnd) {
4523                    autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
4524                    emit("autoplay");
4525                } else if (!swiper.params.autoplay.stopOnLastSlide) {
4526                    autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);
4527                    emit("autoplay");
4528                } else {
4529                    stop();
4530                }
4531                if (swiper.params.cssMode && swiper.autoplay.running)
4532                    run();
4533                else if (autoplayResult === false) {
4534                    run();
4535                }
4536            }, delay);
4537        }
4538        function start() {
4539            if (typeof timeout !== "undefined")
4540                return false;
4541            if (swiper.autoplay.running)
4542                return false;
4543            swiper.autoplay.running = true;
4544            emit("autoplayStart");
4545            run();
4546            return true;
4547        }
4548        function stop() {
4549            if (!swiper.autoplay.running)
4550                return false;
4551            if (typeof timeout === "undefined")
4552                return false;
4553            if (timeout) {
4554                clearTimeout(timeout);
4555                timeout = void 0;
4556            }
4557            swiper.autoplay.running = false;
4558            emit("autoplayStop");
4559            return true;
4560        }
4561        function pause(speed) {
4562            if (!swiper.autoplay.running)
4563                return;
4564            if (swiper.autoplay.paused)
4565                return;
4566            if (timeout)
4567                clearTimeout(timeout);
4568            swiper.autoplay.paused = true;
4569            if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
4570                swiper.autoplay.paused = false;
4571                run();
4572            } else {
4573                ["transitionend", "webkitTransitionEnd"].forEach((event) => {
4574                    swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);
4575                });
4576            }
4577        }
4578        function onVisibilityChange() {
4579            const document2 = getDocument();
4580            if (document2.visibilityState === "hidden" && swiper.autoplay.running) {
4581                pause();
4582            }
4583            if (document2.visibilityState === "visible" && swiper.autoplay.paused) {
4584                run();
4585                swiper.autoplay.paused = false;
4586            }
4587        }
4588        function onTransitionEnd(e) {
4589            if (!swiper || swiper.destroyed || !swiper.$wrapperEl)
4590                return;
4591            if (e.target !== swiper.$wrapperEl[0])
4592                return;
4593            ["transitionend", "webkitTransitionEnd"].forEach((event) => {
4594                swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);
4595            });
4596            swiper.autoplay.paused = false;
4597            if (!swiper.autoplay.running) {
4598                stop();
4599            } else {
4600                run();
4601            }
4602        }
4603        function onMouseEnter() {
4604            if (swiper.params.autoplay.disableOnInteraction) {
4605                stop();
4606            } else {
4607                pause();
4608            }
4609            ["transitionend", "webkitTransitionEnd"].forEach((event) => {
4610                swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);
4611            });
4612        }
4613        function onMouseLeave() {
4614            if (swiper.params.autoplay.disableOnInteraction) {
4615                return;
4616            }
4617            swiper.autoplay.paused = false;
4618            run();
4619        }
4620        function attachMouseEvents() {
4621            if (swiper.params.autoplay.pauseOnMouseEnter) {
4622                swiper.$el.on("mouseenter", onMouseEnter);
4623                swiper.$el.on("mouseleave", onMouseLeave);
4624            }
4625        }
4626        function detachMouseEvents() {
4627            swiper.$el.off("mouseenter", onMouseEnter);
4628            swiper.$el.off("mouseleave", onMouseLeave);
4629        }
4630        on2("init", () => {
4631            if (swiper.params.autoplay.enabled) {
4632                start();
4633                const document2 = getDocument();
4634                document2.addEventListener("visibilitychange", onVisibilityChange);
4635                attachMouseEvents();
4636            }
4637        });
4638        on2("beforeTransitionStart", (_s, speed, internal) => {
4639            if (swiper.autoplay.running) {
4640                if (internal || !swiper.params.autoplay.disableOnInteraction) {
4641                    swiper.autoplay.pause(speed);
4642                } else {
4643                    stop();
4644                }
4645            }
4646        });
4647        on2("sliderFirstMove", () => {
4648            if (swiper.autoplay.running) {
4649                if (swiper.params.autoplay.disableOnInteraction) {
4650                    stop();
4651                } else {
4652                    pause();
4653                }
4654            }
4655        });
4656        on2("touchEnd", () => {
4657            if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
4658                run();
4659            }
4660        });
4661        on2("destroy", () => {
4662            detachMouseEvents();
4663            if (swiper.autoplay.running) {
4664                stop();
4665            }
4666            const document2 = getDocument();
4667            document2.removeEventListener("visibilitychange", onVisibilityChange);
4668        });
4669        Object.assign(swiper.autoplay, {
4670            pause,
4671            run,
4672            start,
4673            stop
4674        });
4675    }
4676    Vue.createApp({
4677        setup() {
4678            let info = Vue.reactive({
4679                defaultNumber: 3,
4680                btnIsShow: false,
4681                clientWeight: window.screen.width,
4682                dataList: [],
4683                showContent: false
4684            });
4685            const showMore = () => {
4686                info.showContent = true;
4687                info.btnIsShow = false;
4688            };
4689            Vue.onMounted(() => {
4690                let cardInfo = document.querySelector(".service-info-card ul");
4691                if (cardInfo) {
4692                    let cardCount = cardInfo == null ? void 0 : cardInfo.children.length;
4693                    info.btnIsShow = cardCount > info.defaultNumber ? true : false;
4694                }
4695                window.onresize = () => {
4696                    info.clientWeight = window.screen.width;
4697                };
4698            });
4699            return {
4700                info,
4701                showMore
4702            };
4703        }
4704    }).mount(".byd-mul-swiper");
4705    let secSwiper = document.getElementById("pc-myswiper");
4706    if (secSwiper) {
4707        let length = secSwiper.children.length;
4708        var mySwiper = new Swiper(".byd-mul-swiper .mySwiper", {
4709            modules: [Navigation, Pagination, Autoplay],
4710            breakpoints: {
4711                320: {
4712                    slidesPerView: 2,
4713                    spaceBetween: 10
4714                },
4715                768: {
4716                    slidesPerView: 3,
4717                    spaceBetween: 20
4718                },
4719                1280: {
4720                    slidesPerView: 3,
4721                    spaceBetween: 30
4722                }
4723            },
4724            slidesPerGroup: 3,
4725            loop: true,
4726            autoplay: length > 3 ? true : false,
4727            lazy: true,
4728            loopFillGroupWithBlank: true,
4729            pagination: {
4730                el: ".swiper-pagination",
4731                clickable: true
4732            },
4733            navigation: {
4734                nextEl: ".swiper-button-next",
4735                prevEl: ".swiper-button-prev"
4736            },
4737            on: {
4738                resize: function() {
4739                    setTimeout(() => {
4740                        mySwiper.update();
4741                    }, 500);
4742                }
4743            }
4744        });
4745    }
4746})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.