PageSourceSearch

https://www.sunywcc.edu/wp-content/themes/lunawolf-child/build/theme/main.js?ver=9e3f9e79d3d8183482be

js sunywcc.edu collected 2026-10-02 04:25:03 UTC 647,622 bytes, 13,221 lines download raw bytes

1/******/ (function() { // webpackBootstrap
2/******/ 	var __webpack_modules__ = ({
3
4/***/ "./src/js/components/acalog/acalog.js":
5/*!********************************************!*\
6  !*** ./src/js/components/acalog/acalog.js ***!
7  \********************************************/
8/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9
10"use strict";
11__webpack_require__.r(__webpack_exports__);
12/* harmony import */ var _acalogAPI_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./acalogAPI.js */ "./src/js/components/acalog/acalogAPI.js");
13/* harmony import */ var _modules_courseMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/courseMap.js */ "./src/js/components/acalog/modules/courseMap.js");
14/* harmony import */ var _modules_overview__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/overview */ "./src/js/components/acalog/modules/overview.js");
15/* harmony import */ var _modules_aosCourses__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/aosCourses */ "./src/js/components/acalog/modules/aosCourses.js");
16/* harmony import */ var _modules_learningOutcomes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/learningOutcomes */ "./src/js/components/acalog/modules/learningOutcomes.js");
17/* harmony import */ var _modules_programReqs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/programReqs */ "./src/js/components/acalog/modules/programReqs.js");
18/* harmony import */ var _modules_programNote__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/programNote */ "./src/js/components/acalog/modules/programNote.js");
19/* harmony import */ var _modules_programAccreditation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/programAccreditation */ "./src/js/components/acalog/modules/programAccreditation.js");
20/* harmony import */ var _toggleCourseMap_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./toggleCourseMap.js */ "./src/js/components/acalog/toggleCourseMap.js");
21
22
23
24
25
26
27
28
29// import { processCareerPathways } from "./modules/careerPathways";
30
31(0,_toggleCourseMap_js__WEBPACK_IMPORTED_MODULE_8__.initCourseMapToggle)();
32function doACALogAPI() {
33  if (typeof window.$ === "undefined" && typeof window.jQuery !== "undefined") {
34    window.$ = window.jQuery;
35  }
36
37  // Program Data
38  $(function () {
39    var acalog = $(".acalog.js-hideAcalog");
40    if (!acalog.length) {
41      // console.error("No .acalog div found!");
42      return;
43    }
44    acalog.hide();
45    acalog.acalogWidgetize({
46      gateway: "https://catalog.sunywcc.edu"
47    });
48    var checkAcalogLoaded = setInterval(function () {
49      let acalog = $(".acalog.js-hideAcalog");
50      if (!acalog.length) {
51        return;
52      }
53      let sections = [{
54        selector: ".js-programCourseMap",
55        handler: _modules_courseMap_js__WEBPACK_IMPORTED_MODULE_1__.processCourseMap,
56        searchFor: 'h2.acalog-program-core-name:contains("Program Map")'
57      }, {
58        selector: ".js-overview",
59        handler: _modules_overview__WEBPACK_IMPORTED_MODULE_2__.processOverview,
60        searchFor: 'h2.acalog-program-core-name:contains("Program Description")'
61      }, {
62        selector: ".js-programLearningOutcomes",
63        handler: _modules_learningOutcomes__WEBPACK_IMPORTED_MODULE_4__.processProgramLearningOutcomes,
64        searchFor: 'h3.acalog-program-core-name:contains("Program Learning Outcomes")'
65      }, {
66        selector: ".js-programReqs",
67        handler: _modules_programReqs__WEBPACK_IMPORTED_MODULE_5__.processProgramReqs,
68        searchFor: 'h2.acalog-program-core-name:contains("Program Requirements")'
69      }, {
70        selector: ".js-programNotes",
71        handler: _modules_programNote__WEBPACK_IMPORTED_MODULE_6__.processProgramNotes,
72        searchFor: 'h2:contains("Program Note")'
73      }, {
74        selector: ".js-programAccreditation",
75        handler: _modules_programAccreditation__WEBPACK_IMPORTED_MODULE_7__.processProgramAccreditation,
76        searchFor: 'h2:contains("Accreditation")'
77      }
78      //TODO Doesnt exist { selector: ".js-careerPathways", handler: processCareerPathways, searchFor: 'h2.acalog-program-core-name:contains("Career Pathways")' },
79      ];
80      let foundSections = 0;
81      sections.forEach(_ref => {
82        let {
83          selector,
84          handler,
85          searchFor
86        } = _ref;
87        let module = $(selector);
88        if (!module.length) return;
89
90        // console.log('acalog', acalog[0].innerHTML);
91
92        let sectionTitle = acalog.find(searchFor).first();
93        if (!sectionTitle.length && foundSections !== 0) {
94          module.hide();
95          return;
96        }
97        let mapContainer = sectionTitle.closest(".acalog-program-core");
98
99        // console.log('mapContainer', mapContainer[0].innerHTML);
100        if (!mapContainer.length) {
101          return;
102        }
103        handler(module, mapContainer);
104        foundSections++;
105      });
106      if (foundSections > 0) {
107        clearInterval(checkAcalogLoaded);
108      }
109    }, 500);
110  });
111
112  // AOS Data
113  $(function () {
114    let programName = window.aosProgramName;
115    if (!programName) return;
116    var acalog = $(".acalog.js-hideAcalog");
117    if (!acalog.length) {
118      // console.error("No .acalog div found!");
119      return;
120    }
121    acalog.hide();
122    acalog.acalogWidgetize({
123      gateway: "https://catalog.sunywcc.edu",
124      data: 'programs',
125      catalogFilter: 'x',
126      programName
127    });
128    var checkAcalogLoaded = setInterval(function () {
129      let acalog = $(".acalog.js-hideAcalog");
130      if (!acalog.length) {
131        return;
132      }
133      let sections = [{
134        selector: ".js-aosOverview",
135        handler: _modules_overview__WEBPACK_IMPORTED_MODULE_2__.processAosOverview,
136        searchFor: 'div.acalog-program-description',
137        searchFor2: 'div.acalog-program-core-description'
138      }, {
139        selector: ".js-aosProgramCourse",
140        handler: _modules_aosCourses__WEBPACK_IMPORTED_MODULE_3__.processAosCourses,
141        searchFor: 'div.acalog-program-cores',
142        sectionFound: ''
143      }
144      //TODO Doesnt exist { selector: ".js-careerPathways", handler: processCareerPathways, searchFor: 'h2.acalog-program-core-name:contains("Career Pathways")' },
145      ];
146      let foundSections = 0;
147      sections.forEach(_ref2 => {
148        let {
149          selector,
150          handler,
151          searchFor,
152          searchFor2
153        } = _ref2;
154        let module = $(selector);
155        if (!module.length) return;
156        let sectionFound = acalog.find(searchFor).first();
157        if (!sectionFound.length || sectionFound.is(':empty')) {
158          sectionFound = acalog.find(searchFor2).first();
159          if (!sectionFound.length) return;
160        }
161        let mapContainer = sectionFound;
162        if (!mapContainer.length) {
163          return;
164        }
165        handler(module, mapContainer);
166        foundSections++;
167      });
168      if (foundSections > 0) {
169        clearInterval(checkAcalogLoaded);
170      }
171    }, 500);
172  });
173}
174(0,_acalogAPI_js__WEBPACK_IMPORTED_MODULE_0__.loadAcalogAPI)(doACALogAPI);
175
176/***/ }),
177
178/***/ "./src/js/components/acalog/acalogAPI.js":
179/*!***********************************************!*\
180  !*** ./src/js/components/acalog/acalogAPI.js ***!
181  \***********************************************/
182/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
183
184"use strict";
185__webpack_require__.r(__webpack_exports__);
186/* harmony export */ __webpack_require__.d(__webpack_exports__, {
187/* harmony export */   loadAcalogAPI: function() { return /* binding */ loadAcalogAPI; }
188/* harmony export */ });
189function loadAcalogAPI(callback) {
190  let reload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
191  const ID = "acalog-script";
192  if (reload) {
193    const existingScript = document.getElementById(ID);
194    if (existingScript) {
195      existingScript.parentNode.removeChild(existingScript);
196    }
197  }
198  if (typeof window.AcalogWidgetAPI !== "undefined") {
199    callback();
200    return;
201  }
202  var script = document.createElement("script");
203  script.src = "https://catalog.sunywcc.edu/widget-api/widget-api.min.js";
204  script.id = ID;
205  script.onload = callback;
206  document.head.appendChild(script);
207}
208
209/***/ }),
210
211/***/ "./src/js/components/acalog/modules/aosCourses.js":
212/*!********************************************************!*\
213  !*** ./src/js/components/acalog/modules/aosCourses.js ***!
214  \********************************************************/
215/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
216
217"use strict";
218__webpack_require__.r(__webpack_exports__);
219/* harmony export */ __webpack_require__.d(__webpack_exports__, {
220/* harmony export */   processAosCourses: function() { return /* binding */ processAosCourses; }
221/* harmony export */ });
222/* harmony import */ var _acalogAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../acalogAPI */ "./src/js/components/acalog/acalogAPI.js");
223
224function processAosCourses(module, mapContainer) {
225  let overviewDataContainer = module.find(".js-aosCourses");
226  overviewDataContainer.html(mapContainer);
227  (0,_acalogAPI__WEBPACK_IMPORTED_MODULE_0__.loadAcalogAPI)(fetchCourseDataAndInject, true);
228}
229function handleAcalogLinkClick(selector, getContainerCallback) {
230  // Hidden due to task request
231  // $(document).on("click", selector, function (e) {
232  //   e.preventDefault();
233  //
234  //   const $link = $(this);
235  //   const $container = getContainerCallback($link);
236  //
237  //   $('.acalog-permalink-container, .acalog-program-core-course-body').hide();
238  //
239  //   const catalogCourseUrl = $container.attr("data-acalog-ajax");
240  //
241  //   // Construct the API URL
242  //   const apiUrl = `https://catalog.sunywcc.edu/widget-api/${catalogCourseUrl}`;
243  //
244  //   if ($container.html()) {
245  //     $container.show();
246  //     return;
247  //   }
248  //
249  //   $.ajax({
250  //     url: apiUrl,
251  //     method: "GET",
252  //     beforeSend: function () {
253  //       $container.html(
254  //         "Loading... Depending on your internet speed, it could take up to 30 seconds...please be patient."
255  //       );
256  //       $container.show();
257  //     },
258  //     success: function (data) {
259  //       const content = `
260  //         <h1 class="acalog-course-title">${data.prefix} ${data.code}&nbsp;-&nbsp;${data.name}</h1>
261  //         <div class="acalog-course-body">${data.body}</div>
262  //         <a href="#" class="acalog-close" aria-label="Close acalog">Close</a>
263  //       `;
264  //
265  //       $container.html(content);
266  //     },
267  //     error: function (xhr, status, error) {
268  //       console.error("Error fetching course data:", error);
269  //       $container.html("Error loading course data. Please try again.");
270  //     },
271  //   });
272  // });
273}
274function fetchCourseDataAndInject() {
275  handleAcalogLinkClick(".js-aosProgramCourse .acalog-permalink a", function ($link) {
276    return $link.closest(".acalog-permalink").find(".acalog-permalink-container");
277  });
278  handleAcalogLinkClick(".js-aosProgramCourse .acalog-program-core-course a", function ($link) {
279    return $link.next().find(".acalog-program-core-course-body");
280  });
281
282  // Handle close button clicks using event delegation
283  $(document).on("click", ".acalog-close", function (e) {
284    e.preventDefault();
285    e.stopPropagation();
286    $(this).closest(".acalog-permalink-container").hide();
287  });
288}
289
290/***/ }),
291
292/***/ "./src/js/components/acalog/modules/courseMap.js":
293/*!*******************************************************!*\
294  !*** ./src/js/components/acalog/modules/courseMap.js ***!
295  \*******************************************************/
296/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
297
298"use strict";
299__webpack_require__.r(__webpack_exports__);
300/* harmony export */ __webpack_require__.d(__webpack_exports__, {
301/* harmony export */   processCourseMap: function() { return /* binding */ processCourseMap; }
302/* harmony export */ });
303/* harmony import */ var _acalogAPI_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../acalogAPI.js */ "./src/js/components/acalog/acalogAPI.js");
304/* harmony import */ var _toggleCourseMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../toggleCourseMap.js */ "./src/js/components/acalog/toggleCourseMap.js");
305
306
307function processCourseMap(module, mapContainer) {
308  let semesters = mapContainer.find("h3, h4").filter(function () {
309    let text = $(this).text().trim().toLowerCase();
310    return text.startsWith("semest") && !text.includes("minimum total credits") && !text.includes("total credits");
311  });
312  let isAos = false;
313  if (isAos) {
314    processAosMode(module, semesters);
315  } else {
316    processDefaultMode(module, semesters);
317  }
318  if (typeof _toggleCourseMap_js__WEBPACK_IMPORTED_MODULE_1__.initCourseMapToggle === "function") {
319    (0,_toggleCourseMap_js__WEBPACK_IMPORTED_MODULE_1__.initCourseMapToggle)();
320  }
321}
322function fetchCourseDataAndInject() {
323  // Hidden due to task request
324  // $(document).on("click", ".js-programCourseMap .acalog-permalink a", function (e) {
325  //   e.preventDefault();
326  //
327  //   const $link = $(this);
328  //   const href = $link.attr("href");
329  //   const $permalink = $link.closest(".acalog-permalink");
330  //
331  //   if (href.includes("preview_course_nopop.php")) {
332  //     // Find or create the container
333  //     let $container = $permalink.find(".acalog-permalink-container");
334  //     if (!$container.length) {
335  //       $container = $('<div class="acalog-permalink-container" style="display: none;"></div>');
336  //       $permalink.append($container);
337  //     }
338  //
339  //     // Hide all containers first
340  //     $('.acalog-permalink-container').hide();
341  //
342  //     // Determine the API URL
343  //     let apiUrl;
344  //     if ($container.attr("data-acalog-ajax")) {
345  //       // Use data attribute if available (already in correct format)
346  //       apiUrl = `https://catalog.sunywcc.edu/widget-api${$container.attr("data-acalog-ajax")}`;
347  //     } else {
348  //       // Transform the href URL from query params to path format
349  //       const url = new URL(href.startsWith('http') ? href : `https://catalog.sunywcc.edu${href}`);
350  //       const catoid = url.searchParams.get('catoid');
351  //       const coid = url.searchParams.get('coid');
352  //
353  //       if (catoid && coid) {
354  //         apiUrl = `https://catalog.sunywcc.edu/widget-api/catalog/${catoid}/course/${coid}/`;
355  //       } else {
356  //         // Fallback to original href if transformation fails
357  //         apiUrl = href.replace('preview_course_nopop.php', 'widget-api/preview_course_nopop.php');
358  //         if (!apiUrl.startsWith('https://catalog.sunywcc.edu')) {
359  //           apiUrl = `https://catalog.sunywcc.edu/widget-api${href}`;
360  //         }
361  //       }
362  //     }
363  //
364  //     // Check if content already loaded
365  //     if ($container.html()) {
366  //       $container.show();
367  //       return;
368  //     }
369  //
370  //     // Load the content
371  //     $.ajax({
372  //       url: apiUrl,
373  //       method: "GET",
374  //       beforeSend: function () {
375  //         $container.html(
376  //           "Loading... Depending on your internet speed, it could take up to 30 seconds...please be patient."
377  //         );
378  //         $container.show();
379  //       },
380  //       success: function (data) {
381  //         const content = `
382  //           <h1 class="acalog-course-title">${data.prefix} ${data.code}&nbsp;-&nbsp;${data.name}</h1>
383  //           <div class="acalog-course-body">${data.body}</div>
384  //           <a href="#" class="acalog-close" aria-label="Close acalog">Close</a>
385  //         `;
386  //         $container.html(content);
387  //       },
388  //       error: function (xhr, status, error) {
389  //         console.error("Error fetching course data:", error);
390  //         $container.html("Error loading course data. Please try again.");
391  //       },
392  //     });
393  //
394  //   } else if (href.includes("preview_program.php")) {
395  //     const cpProgramCourseMaps = '/cp-program-course-maps';
396  //     const cpId    = window._cpProgramId;
397  //     const cpTitle = window._cpProgramTitle;
398  //
399  //     const $link = $(this);
400  //     const href = $link.attr('href');
401  //
402  //     const encodedHref  = encodeURIComponent(href);
403  //     const encodedId    = encodeURIComponent(cpId);
404  //     const encodedTitle = encodeURIComponent(cpTitle);
405  //
406  //     const goToUrl = window.location.origin + cpProgramCourseMaps + '?cp_map_url=' + encodedHref + '&cp_map_id=' + encodedId + '&cp_map_title=' + encodedTitle;
407  //
408  //     if (!cpId || !cpTitle) return;
409  //
410  //     window.location.href = goToUrl;
411  //   }
412  // });
413
414  // Handle close button clicks using event delegation
415  // $(document).on("click", ".acalog-close", function (e) {
416  //   e.preventDefault();
417  //   e.stopPropagation();
418  //   $(this)
419  //     .closest(".acalog-permalink-container").hide();
420  // });
421}
422function processDefaultMode(module, semesters) {
423  let coursesMobile = module.find(".js-coursesMobile");
424  let coursesDesktop = module.find(".js-coursesDesktop");
425  coursesMobile.html("");
426  coursesDesktop.html("");
427  semesters.each(function (index) {
428    let semesterName = $(this).text().trim();
429    let nextElement = $(this).next();
430    let courses = [];
431    let multipleCourses = {};
432    while (nextElement.length && nextElement.prop("tagName") !== "H4") {
433      if (nextElement.prop("tagName") === "TABLE") {
434        let rows = nextElement.find("tr");
435        let multiLinkIndex = 0;
436        rows.each(function (rowIndex) {
437          if (rowIndex === 0) return;
438          let courseCell = $(this).find("td:first-child");
439          let creditsCell = $(this).find("td:nth-child(2)");
440          let credits = creditsCell.text().trim();
441          let links = courseCell.find("a.acalog-permalink-link");
442          if (links.length > 1) {
443            // Process each link while maintaining the surrounding HTML
444            let cellContent = courseCell.html();
445            let $temp = $('<div>').html(cellContent);
446
447            // Process each link in the cell
448            $temp.find('a.acalog-permalink-link').each(function () {
449              let $link = $(this);
450              let fullUrl = $link.attr('href');
451              let urlPath = fullUrl.replace("https://catalog.sunywcc.edu", "");
452              let acalogUrl = `https://sunywcc.acalogadmin.com/preview${urlPath}`;
453
454              // Replace with processed link
455              $link.replaceWith(`
456                <a href="${fullUrl}" class="acalog-permalink-link">
457                  ${$link.html()}
458                </a>
459                <div class="acalog-permalink-container" data-acalog-ajax="${fullUrl}" style="display: none;"></div>
460              `);
461            });
462
463            // Clean up any existing containers to avoid duplicates
464            $temp.find('.acalog-permalink-container').remove();
465
466            // Create mobile version
467            let mobileHTML = `
468              <div class="program__courseMap__semester__mobileCourses__course _12">
469                <div class="acalog-permalink acalog-permalink-tooltip -multipleLinks">
470                  ${$temp.html()}
471                </div>
472                <span class="credits">${credits}</span>
473              </div>
474            `;
475
476            // Create desktop version
477            let desktopHTML = `
478              <div class="program__courseMap__semesters__desktop__semester__course _12">
479                <div class="acalog-permalink acalog-permalink-tooltip -multipleLinks">
480                  ${$temp.html()}
481                </div>
482                <span class="credits">${credits}</span>
483              </div>
484            `;
485            multipleCourses[multiLinkIndex] = {
486              mobile: mobileHTML,
487              desktop: desktopHTML
488            };
489            courses.push({
490              isMultiLink: true,
491              multiLinkIndex: multiLinkIndex,
492              credits: credits
493            });
494            multiLinkIndex++;
495          } else if (links.length === 1) {
496            // Original single link processing
497            let link = links.first();
498            let linkContainer = courseCell.find("a + .acalog-permalink-container");
499            if (link.length) {
500              let fullUrl = link.attr("href");
501              let urlPath = fullUrl.replace("https://catalog.sunywcc.edu", "");
502              let acalogUrl = `https://sunywcc.acalogadmin.com/preview${urlPath}`;
503              let ajax_course_url = linkContainer.length ? linkContainer.attr('data-acalog-ajax') : fullUrl;
504              courses.push({
505                title: link.text().trim(),
506                url: fullUrl,
507                acalogUrl: acalogUrl,
508                ajax_course_url: ajax_course_url,
509                credits: credits,
510                isMultiLink: false
511              });
512            }
513          } else {
514            // Plain text
515
516            let textTitle = courseCell.text().trim();
517
518            // skip lines like “Semester Total Credits”
519            if (!/Semester/i.test(textTitle)) {
520              courses.push({
521                title: textTitle,
522                url: null,
523                credits: credits,
524                isMultiLink: false,
525                isPlainText: true
526              });
527            }
528          }
529        });
530        let totalCredits = courses.reduce((sum, c) => {
531          return sum + (parseInt(c.credits) || 0);
532        }, 0);
533        courses.push({
534          isTotal: true,
535          title: "Total",
536          credits: totalCredits
537        });
538      }
539      nextElement = nextElement.next();
540    }
541
542    // Generate semester HTML (same as before)
543    let semesterMobileHTML = `
544  <div class="program__courseMap__semester js-courseSemester ${index === 0 ? "-active" : ""}" data-action="s-${index + 1}">
545    <div class="program__courseMap__semester__title">
546      ${semesterName}
547      <div class="icon-mobile">
548        <div class="icon-mobile-close">
549          <svg width="16" height="10" viewBox="0 0 16 10" fill="none" xmlns="http://www.w3.org/2000/svg">
550            <path d="M1.5 1.63867L8 8.13867L14.5 1.63867" stroke="#55565a" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>
551          </svg>
552        </div>
553        <div class="icon-mobile-open">
554          <svg width="16" height="10" viewBox="0 0 16 10" fill="none" xmlns="http://www.w3.org/2000/svg">
555            <path d="M14 7.51855L8 1.51855L2 7.51855" stroke="#D69400" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>
556          </svg>
557        </div>
558      </div>
559      <div class="icon-desktop">
560        <div class="icon-mobile-close">
561          <svg width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg">
562            <path opacity="0.5" d="M2 13.5186L8 7.51855L2 1.51855" stroke="#55565A" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>
563          </svg>
564        </div>
565        <div class="icon-mobile-open">
566          <svg width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg">
567            <path d="M2 13.5186L8 7.51855L2 1.51855" stroke="#D69400" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>
568          </svg>
569        </div>
570      </div>
571    </div>
572    <div class="program__courseMap__semester__mobileCourses">
573      <div class="_title -color-baltic-blue -mb-1"><span>Course</span><span>Credits</span></div>
574      <div class="program__courseMap__semester__mobileCourses__courses _w -gap-y-1">
575        ${courses.map(c => {
576      if (c.isTotal) {
577        return `
578                <div class="program__courseMap__semester__mobileCourses__course _12 course--total">
579                  <div class="_value _body"><strong>${c.title}</strong></div>
580                  <div class="credits"><strong>${c.credits}</strong></div>
581                </div>
582              `;
583      } else if (c.isMultiLink) {
584        return multipleCourses[c.multiLinkIndex].mobile;
585      } else if (c.isPlainText) {
586        return `
587                <div class="program__courseMap__semester__mobileCourses__course _12">
588                  <div class="_value _body">${c.title}</div>
589                  <span class="credits">${c.credits}</span>
590                </div>
591              `;
592      } else {
593        return `
594              <div class="program__courseMap__semester__mobileCourses__course _12 acalog-permalink acalog-permalink-tooltip">
595                <a class="acalog-permalink-link" href="${c.url}"><div class="_value _body" aria-label="${c.title}">${c.title}</div></a>
596                <span class="credits">${c.credits}</span>
597                <div class="acalog-permalink-container" data-acalog-ajax="${c.ajax_course_url}" style="display: none;"></div>
598              </div>
599            `;
600      }
601    }).join('')}
602      </div>
603    </div>
604  </div>
605`;
606    coursesMobile.append(semesterMobileHTML);
607
608    // Desktop View
609    let semesterDesktopHTML = `
610  <div class="program__courseMap__semesters__desktop__semester js-desktopSemesters ${index === 0 ? "-active" : ""}" data-action="s-${index + 1}">
611    <div class="_title -color-baltic-blue -mb-2"><span>Course</span><span>Credits</span></div>
612    <div class="program__courseMap__semesters__desktop__semester__c
612ourses _w -gap-y-1">
613      ${courses.map(c => {
614      if (c.isTotal) {
615        return `
616                <div class="program__courseMap__semesters__desktop__semester__course _12 course--total">
617                  <div class="_value _body"><strong>${c.title}</strong></div>
618                  <div class="credits"><strong>${c.credits}</strong></div>
619                </div>
620              `;
621      } else if (c.isMultiLink) {
622        return multipleCourses[c.multiLinkIndex].desktop;
623      } else if (c.isPlainText) {
624        return `
625                <div class="program__courseMap__semesters__desktop__semester__course _12">
626                  <div class="_value _body">${c.title}</div>
627                  <span class="credits">${c.credits}</span>
628                </div>
629              `;
630      } else {
631        return `
632            <div class="program__courseMap__semesters__desktop__semester__course _12 acalog-permalink acalog-permalink-tooltip">
633              <a href="${c.url}" class="acalog-permalink-link"><div class="_value _body-sm" aria-label="${c.title}">${c.title}</div></a>
634              <span class="credits">${c.credits}</span>
635              <div class="acalog-permalink-container" data-acalog-ajax="${c.ajax_course_url}" style="display: none;"></div>
636            </div>
637          `;
638      }
639    }).join('')}
640    </div>
641  </div>
642`;
643    coursesDesktop.append(semesterDesktopHTML);
644  });
645  (0,_acalogAPI_js__WEBPACK_IMPORTED_MODULE_0__.loadAcalogAPI)(fetchCourseDataAndInject, true);
646}
647function processAosMode(module, semesters) {
648  let aosCoursesContainer = module.find(".js-aosCourses");
649  aosCoursesContainer.html("");
650  semesters.each(function (index) {
651    let semesterName = $(this).text().trim();
652    let nextElement = $(this).next();
653    let courses = [];
654    while (nextElement.length && nextElement.prop("tagName") !== "H4") {
655      if (nextElement.prop("tagName") === "TABLE") {
656        let rows = nextElement.find("tr");
657        rows.each(function (rowIndex) {
658          if (rowIndex === 0) return;
659          let courseCell = $(this).find("td:first-child");
660          let link = courseCell.find("a");
661          let linkContainer = courseCell.find("a + .acalog-permalink-container");
662          if (link.length) {
663            let fullUrl = link.attr("href");
664            let urlPath = fullUrl.replace("https://catalog.sunywcc.edu", "");
665            // urlPath = urlPath.replace("review_course_nopop.php", "review_course.php");
666            let acalogUrl = `https://sunywcc.acalogadmin.com/preview${urlPath}`;
667            let ajax_course_url = linkContainer.attr('data-acalog-ajax');
668            courses.push({
669              title: link.text().trim(),
670              url: fullUrl,
671              acalogUrl: acalogUrl,
672              ajax_course_url: ajax_course_url
673            });
674          }
675        });
676      }
677      nextElement = nextElement.next();
678    }
679    let semesterAosHTML = `
680      <div class="program__aosCourses__data__section _m6">
681        <h3 class="program__aosCourses__data__section__title _h3 -color-baltic-blue -mb-1">${semesterName}</h3>
682        <div class="program__aosCourses__data__section__courses _w -gap-y-1">
683          ${courses.map(c => `<div class="program__aosCourses__data__section__course _12 acalog-permalink acalog-permalink-tooltip">
684                <a href="${c.url}" class="acalog-permalink-link"><div class="_value _body" aria-label="${c.title}">${c.title}</div></a>
685                  <div class="acalog-permalink-container" data-acalog-ajax="${c.ajax_course_url}" style="display: none;"></div>
686              </div>`).join("")}
687        </div>
688      </div>
689    `;
690    aosCoursesContainer.append(semesterAosHTML);
691  });
692  (0,_acalogAPI_js__WEBPACK_IMPORTED_MODULE_0__.loadAcalogAPI)(fetchCourseDataAndInject, true);
693}
694
695/***/ }),
696
697/***/ "./src/js/components/acalog/modules/learningOutcomes.js":
698/*!**************************************************************!*\
699  !*** ./src/js/components/acalog/modules/learningOutcomes.js ***!
700  \**************************************************************/
701/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
702
703"use strict";
704__webpack_require__.r(__webpack_exports__);
705/* harmony export */ __webpack_require__.d(__webpack_exports__, {
706/* harmony export */   processProgramLearningOutcomes: function() { return /* binding */ processProgramLearningOutcomes; }
707/* harmony export */ });
708function processProgramLearningOutcomes(module, mapContainer) {
709  let outcomesTitle = mapContainer.find('h3.acalog-program-core-name:contains("Program Learning Outcomes")').first();
710  if (!outcomesTitle.length) {
711    return;
712  }
713  let descriptionContainer = outcomesTitle.next(".acalog-program-core-description");
714  if (!descriptionContainer.length) {
715    return;
716  }
717  let outcomesDataContainer = module.find(".js-learningOutcomesData");
718  outcomesDataContainer.html(descriptionContainer.html());
719}
720
721/***/ }),
722
723/***/ "./src/js/components/acalog/modules/overview.js":
724/*!******************************************************!*\
725  !*** ./src/js/components/acalog/modules/overview.js ***!
726  \******************************************************/
727/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
728
729"use strict";
730__webpack_require__.r(__webpack_exports__);
731/* harmony export */ __webpack_require__.d(__webpack_exports__, {
732/* harmony export */   processAosOverview: function() { return /* binding */ processAosOverview; },
733/* harmony export */   processOverview: function() { return /* binding */ processOverview; }
734/* harmony export */ });
735function processOverview(module, mapContainer) {
736  let overviewTitle = mapContainer.find('h2.acalog-program-core-name:contains("Program Description")').first();
737  if (!overviewTitle.length) {
738    return;
739  }
740  let descriptionContainer = overviewTitle.next(".acalog-program-core-description");
741  if (!descriptionContainer.length) {
742    return;
743  }
744  let overviewDataContainer = module.find(".js-overviewData");
745  overviewDataContainer.html(descriptionContainer.html());
746}
747function processAosOverview(module, mapContainer) {
748  let overviewDataContainer = module.find(".js-overviewData");
749  overviewDataContainer.html(mapContainer);
750}
751
752/***/ }),
753
754/***/ "./src/js/components/acalog/modules/overviewInProgramFinder.js":
755/*!*********************************************************************!*\
756  !*** ./src/js/components/acalog/modules/overviewInProgramFinder.js ***!
757  \*********************************************************************/
758/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
759
760"use strict";
761__webpack_require__.r(__webpack_exports__);
762/* harmony export */ __webpack_require__.d(__webpack_exports__, {
763/* harmony export */   overviewInProgramFinder: function() { return /* binding */ overviewInProgramFinder; }
764/* harmony export */ });
765/* harmony import */ var _acalogAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../acalogAPI */ "./src/js/components/acalog/acalogAPI.js");
766/* harmony import */ var _helpers_localStorage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../helpers/localStorage */ "./src/js/helpers/localStorage.js");
767
768
769const API_KEY = '77f07c6a693c4db31e55465a3a4f5a7d27deb458';
770const CATALOGS_STORAGE_KEY = 'sp451_acalog_catalogs';
771const CATALOGS_TTL_MS = 3 * 24 * 60 * 60 * 1000;
772function fetchCatalogs() {
773  let cachedCatalogs = (0,_helpers_localStorage__WEBPACK_IMPORTED_MODULE_1__.getLocalStorageWithExpiry)(CATALOGS_STORAGE_KEY);
774  if (cachedCatalogs && Array.isArray(cachedCatalogs) && cachedCatalogs.length) {
775    return Promise.resolve(cachedCatalogs);
776  }
777  const catalogsUrl = `https://sunywcc.apis.acalog.com/v1/content?key=${API_KEY}&format=xml&method=getCatalogs`;
778  return fetch(catalogsUrl).then(res => {
779    if (!res.ok) throw new Error('Failed to fetch catalogs');
780    return res.text();
781  }).then(xmlStr => {
782    const parser = new DOMParser();
783    const xmlDoc = parser.parseFromString(xmlStr, 'application/xml');
784    const catalogs = Array.from(xmlDoc.getElementsByTagName('catalog')).filter(catalog => {
785      const publishedNode = catalog.querySelector('state > published');
786      const archivedNode = catalog.querySelector('state > archived');
787      return publishedNode && archivedNode && publishedNode.textContent.trim().toLowerCase() === 'yes' && archivedNode.textContent.trim().toLowerCase() === 'no';
788    }).map(catalog => {
789      const idAttr = catalog.getAttribute('id') || '';
790      const match = idAttr.match(/acalog-catalog-(\d+)/);
791      return match ? Number(match[1]) : null;
792    }).filter(Boolean).sort((a, b) => b - a);
793    (0,_helpers_localStorage__WEBPACK_IMPORTED_MODULE_1__.setLocalStorageWithExpiry)(CATALOGS_STORAGE_KEY, catalogs, CATALOGS_TTL_MS);
794    return catalogs;
795  });
796}
797function processOverview(module, mapContainer) {
798  let overviewTitle = mapContainer.find('h2.acalog-program-core-name:contains("Program Description")').first();
799  if (!overviewTitle.length) {
800    return;
801  }
802  let descriptionContainer = overviewTitle.next(".acalog-program-core-description");
803  if (!descriptionContainer.length) {
804    return;
805  }
806  let overviewDataContainer = module.find(".js-overviewContainer");
807  overviewDataContainer.html(descriptionContainer.html());
808}
809function processAosOverview(module, mapContainer) {
810  let overviewDataContainer = module.find(".js-overviewContainer");
811  overviewDataContainer.html(mapContainer);
812}
813function fetchWithTimeout(url) {
814  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
815  let timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5000;
816  // 5 seconds timeout default
817  return new Promise((resolve, reject) => {
818    const timer = setTimeout(() => {
819      reject(new Error('Fetch timed out'));
820    }, timeout);
821    options.headers = {
822      ...options.headers,
823      'Access-Control-Allow-Origin': window.location.origin
824    };
825    fetch(url, options).then(response => {
826      clearTimeout(timer);
827      resolve(response);
828    }).catch(err => {
829      clearTimeout(timer);
830      reject(err);
831    });
832  });
833}
834function fetchProgramInCatalog(programName, catalogId) {
835  const query = encodeURIComponent(programName);
836  const url = `https://sunywcc.apis.acalog.com/v1/search/programs?key=${API_KEY}&format=xml&method=search&catalog=${catalogId}&query=${query}`;
837  return fetchWithTimeout(url, {}, 5000) // 5 sec timeout
838  .then(res => {
839    if (!res.ok) throw new Error(`Failed to fetch programs for catalog ${catalogId}`);
840    return res.text();
841  }).then(xmlStr => {
842    const parser = new DOMParser();
843    const xmlDoc = parser.parseFromString(xmlStr, 'application/xml');
844    const results = xmlDoc.getElementsByTagName('result');
845    for (let i = 0; i < results.length; i++) {
846      const nameNode = results[i].getElementsByTagName('name')[0];
847      if (!nameNode) continue;
848      if (nameNode.textContent.trim() === programName) {
849        const idNode = results[i].getElementsByTagName('id')[0];
850        if (!idNode) continue;
851        return {
852          catalogId,
853          programId: idNode.textContent.trim()
854        };
855      }
856    }
857    // no match found
858    return null;
859  });
860}
861function findProgramAcrossCatalogs(programName, catalogs) {
862  let idx = 0;
863  return new Promise((resolve, reject) => {
864    function tryNext() {
865      if (idx >= catalogs.length) {
866        resolve(null);
867        return;
868      }
869      const catalogId = catalogs[idx++];
870      fetchProgramInCatalog(programName, catalogId).then(res => {
871        if (res) {
872          resolve(res);
873        } else {
874          tryNext();
875        }
876      }).catch(() => {
877        // ignore errors, try next catalog
878        tryNext();
879      });
880    }
881    tryNext();
882  });
883}
884function fetchApiGoToProgram(programName, programBtn) {
885  if (!window.__openCatalogPrograms) {
886    console.warn('Open catalog programs mode disabled');
887    return;
888  }
889
890  // There is already hard coded URL in backend
891  if (programBtn.hasClass('no-ajax')) {
892    return;
893  }
894  fetchCatalogs().then(catalogs => {
895    if (!catalogs || catalogs.length === 0) {
896      console.error('No active catalogs found');
897      return;
898    }
899    return findProgramAcrossCatalogs(programName, catalogs);
900  }).then(result => {
901    if (!result) {
902      console.log('Program not found in any catalog');
903      return;
904    }
905    const {
906      catalogId,
907      programId
908    } = result;
909    const previewUrl = `https://catalog.sunywcc.edu/preview_program.php?catoid=${catalogId}&poid=${programId}`;
910    programBtn.attr('href', previewUrl);
911    programBtn.attr('target', '_blank');
912  }).catch(err => {
913    console.error('Error searching program:', err);
914  });
915}
916function doACALogAPI($module) {
917  let type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'program';
918  var calledFetch = false;
919  if (typeof window.$ === "undefined" && typeof window.jQuery !== "undefined") {
920    window.$ = window.jQuery;
921  }
922  var programBtn = $module.find('.js-overviewContainer + a.btn');
923  let programName = $module.data('program-name');
924  if ($module.hasClass('-active')) return;
925
926  // Program Data
927  if (type === 'program') {
928    $(function () {
929      var acalog = $module.find(".acalog.js-hideAcalog");
930      var container = $module.find('.js-overviewContainer');
931      if (!acalog.length) {
932        return;
933      }
934      const hasHtml = container.children().length > 0;
935      const textLength = $.trim(container.text()).length;
936      if (hasHtml || textLength > 20) {
937        return false;
938      }
939      acalog.hide();
940      acalog.acalogWidgetize({
941        gateway: "https://catalog.sunywcc.edu"
942      });
943      var checkAcalogLoaded = setInterval(function () {
944        let acalog = $module.find(".acalog.js-hideAcalog");
945        if (!acalog.length) {
946          return;
947        }
948        let sections = [{
949          handler: processOverview,
950          searchFor: 'h2.acalog-program-core-name:contains("Program Description")'
951        }];
952        let foundSections = 0;
953        sections.forEach(_ref => {
954          let {
955            handler,
956            searchFor
957          } = _ref;
958          let module = $module[0];
959          if (!module) return;
960          let sectionTitle = acalog.find(searchFor).first();
961          if (!sectionTitle.length) {
962            return;
963          }
964          let mapContainer = sectionTitle.closest(".acalog-program-core");
965          if (!mapContainer) {
966            return;
967          }
968          handler($module, mapContainer);
969          foundSections++;
970        });
971        if (!calledFetch) {
972          calledFetch = true;
973          fetchApiGoToProgram(programName, programBtn);
974        }
975        if (foundSections > 0) {
976          clearInterval(checkAcalogLoaded);
977        }
978      }, 500);
979    });
980  } else {
981    // AOS Data
982    $(function () {
983      var acalog = $module.find(".acalog.js-hideAcalog");
984      var container = $module.find('.js-overviewContainer');
985      const hasHtml = container.children().length > 0;
986      const textLength = $.trim(container.text()).length;
987      if (hasHtml || textLength > 20) {
988        return false;
989      }
990      if (!acalog.length) {
991        // console.error("No .acalog div found!");
992        return;
993      }
994      let programName = acalog.data('acalog-program-name');
995      if (!programName) return;
996      acalog.hide();
997      acalog.acalogWidgetize({
998        gateway: "https://catalog.sunywcc.edu",
999        data: 'programs',
1000        catalogFilter: 'x',
1001        programName
1002      });
1003      var checkAcalogLoaded = setInterval(function () {
1004        let acalog = $module.find(".acalog.js-hideAcalog");
1005        if (!acalog.length) {
1006          return;
1007        }
1008        let sections = [{
1009          handler: processAosOverview,
1010          searchFor: 'div.acalog-program-description',
1011          searchFor2: 'div.acalog-program-core-description'
1012        }];
1013        let foundSections = 0;
1014        sections.forEach(_ref2 => {
1015          let {
1016            handler,
1017            searchFor,
1018            searchFor2
1019          } = _ref2;
1020          let module = $module[0];
1021          if (!module) return;
1022          let sectionFound = acalog.find(searchFor).first();
1023          if (!sectionFound.length || !sectionFound[0].innerHTML || !$(searchFor).children().length > 0) {
1024            sectionFound = acalog.find(searchFor2).first();
1025            if (!sectionFound.length) return;
1026          }
1027          let mapContainer = sectionFound;
1028          if (!mapContainer) {
1029            return;
1030          }
1031          handler($module, mapContainer);
1032          foundSections++;
1033        });
1034        if (!calledFetch) {
1035          calledFetch = true;
1036          fetchApiGoToProgram(programName, programBtn);
1037        }
1038        if (foundSections > 0) {
1039          clearInterval(checkAcalogLoaded);
1040        }
1041      }, 500);
1042    });
1043  }
1044}
1045function overviewInProgramFinder() {
1046  let apiClickablePrograms = $('.js-soloProgramFetchOverview');
1047  apiClickablePrograms.click(function (e) {
1048    let _this = $(this);
1049    let type = _this.data('program-type');
1050    doACALogAPI(_this, type);
1051  });
1052}
1053
1054/***/ }),
1055
1056/***/ "./src/js/components/acalog/modules/programAccreditation.js":
1057/*!******************************************************************!*\
1058  !*** ./src/js/components/acalog/modules/programAccreditation.js ***!
1059  \******************************************************************/
1060/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1061
1062"use strict";
1063__webpack_require__.r(__webpack_exports__);
1064/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1065/* harmony export */   processProgramAccreditation: function() { return /* binding */ processProgramAccreditation; }
1066/* harmony export */ });
1067function processProgramAccreditation(module, mapContainer) {
1068  let programAccreditationTitle = mapContainer.find('h2:contains("Accreditation")').first();
1069  if (!programAccreditationTitle.length) {
1070    return;
1071  }
1072  let parentElement = programAccreditationTitle.parent();
1073  let otherChildren = parentElement.children().not(programAccreditationTitle);
1074  if (!otherChildren.length) {
1075    module.hide();
1076    return;
1077  }
1078  let programNoteDataContainer = module.find(".js-programAccreditationData");
1079  programNoteDataContainer.html(otherChildren.html());
1080}
1081
1082/***/ }),
1083
1084/***/ "./src/js/components/acalog/modules/programNote.js":
1085/*!*********************************************************!*\
1086  !*** ./src/js/components/acalog/modules/programNote.js ***!
1087  \*********************************************************/
1088/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1089
1090"use strict";
1091__webpack_require__.r(__webpack_exports__);
1092/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1093/* harmony export */   processProgramNotes: function() { return /* binding */ processProgramNotes; }
1094/* harmony export */ });
1095function processProgramNotes(module, mapContainer) {
1096  let programNoteTitle = mapContainer.find('h2:contains("Program Note")').first();
1097  if (!programNoteTitle.length) {
1098    return;
1099  }
1100  let parentElement = programNoteTitle.parent();
1101  let otherChildren = parentElement.children().not(programNoteTitle);
1102  if (!otherChildren.length) {
1103    module.hide();
1104    return;
1105  }
1106  let programNoteDataContainer = module.find(".js-programNotesData");
1107  programNoteDataContainer.html(otherChildren.html());
1108}
1109
1110/***/ }),
1111
1112/***/ "./src/js/components/acalog/modules/programReqs.js":
1113/*!*********************************************************!*\
1114  !*** ./src/js/components/acalog/modules/programReqs.js ***!
1115  \*********************************************************/
1116/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1117
1118"use strict";
1119__webpack_require__.r(__webpack_exports__);
1120/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1121/* harmony export */   processProgramReqs: function() { return /* binding */ processProgramReqs; }
1122/* harmony export */ });
1123/* harmony import */ var _acalogAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../acalogAPI */ "./src/js/components/acalog/acalogAPI.js");
1124
1125function processProgramReqs(module, mapContainer) {
1126  let programReqTitle = mapContainer.find('h2.acalog-program-core-name:contains("Program Requirements")').first();
1127  if (!programReqTitle.length) {
1128    return;
1129  }
1130  let descriptionContainer = programReqTitle.next(".acalog-program-core-description");
1131  if (!descriptionContainer.length) {
1132    return;
1133  }
1134  let programReqDataContainer = module.find(".js-programReqsData");
1135  programReqDataContainer.html(descriptionContainer.html());
1136}
1137function fetchCourseDataAndInject() {
1138  const cpProgramReqsUrl = '/cp-program-requirements';
1139  const cpId = window._cpProgramId;
1140  const cpTitle = window._cpProgramTitle;
1141  // Hidden due to task request
1142  // $(document).on("click", ".js-programReqs a.acalog-permalink-link", function (e) {
1143  //   const $link = $(this);
1144  //   const href = $link.attr('href');
1145  //
1146  //   const encodedHref  = encodeURIComponent(href);
1147  //   const encodedId    = encodeURIComponent(cpId);
1148  //   const encodedTitle = encodeURIComponent(cpTitle);
1149  //
1150  //   const goToUrl = window.location.origin + cpProgramReqsUrl + '?cp_url=' + encodedHref + '&cp_id=' + encodedId + '&cp_title=' + encodedTitle;
1151  //
1152  //   e.preventDefault();
1153  //
1154  //   if (!cpId || !cpTitle) return;
1155  //
1156  //   window.location.href = goToUrl;
1157  // });
1158
1159  // Handle close button clicks using event delegation
1160  // $(document).on("click", ".acalog-close", function (e) {
1161  //   e.preventDefault();
1162  //   e.stopPropagation();
1163  //   $(this)
1164  //     .closest(".acalog-permalink-container").hide();
1165  // });
1166}
1167(0,_acalogAPI__WEBPACK_IMPORTED_MODULE_0__.loadAcalogAPI)(fetchCourseDataAndInject, true);
1168
1169/***/ }),
1170
1171/***/ "./src/js/components/acalog/toggleCourseMap.js":
1172/*!*****************************************************!*\
1173  !*** ./src/js/components/acalog/toggleCourseMap.js ***!
1174  \*****************************************************/
1175/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1176
1177"use strict";
1178__webpack_require__.r(__webpack_exports__);
1179/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1180/* harmony export */   initCourseMapToggle: function() { return /* binding */ initCourseMapToggle; }
1181/* harmony export */ });
1182function initCourseMapToggle() {
1183  let parentSemesters = $(".program__courseMap");
1184  parentSemesters.each(function () {
1185    let semester = $(this);
1186    let semesterToggle = semester.find(".js-courseSemester");
1187    let desktopSemesters = semester.find(".js-desktopSemesters");
1188    semesterToggle.off("click").on("click", function (event) {
1189      let _this = $(this);
1190      let _thisAction = _this.data("action");
1191      if ($(event.target).closest(".program__courseMap__semester__mobileCourses").length) {
1192        return;
1193      }
1194      if (_this.hasClass("-active")) {
1195        _this.removeClass("-active");
1196        desktopSemesters.removeClass("-active");
1197      } else {
1198        semesterToggle.removeClass("-active");
1199        desktopSemesters.removeClass("-active");
1200        _this.addClass("-active");
1201        desktopSemesters.filter(`[data-action="${_thisAction}"]`).addClass("-active");
1202      }
1203    });
1204  });
1205}
1206
1207/***/ }),
1208
1209/***/ "./src/js/components/alerts/index.js":
1210/*!*******************************************!*\
1211  !*** ./src/js/components/alerts/index.js ***!
1212  \*******************************************/
1213/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1214
1215"use strict";
1216__webpack_require__.r(__webpack_exports__);
1217/* harmony default export */ __webpack_exports__["default"] = ($ => {
1218  $('.js-alert-trigger').on('click', function () {
1219    $(this).closest('.js-alert-bar').remove();
1220  });
1221});
1222
1223/***/ }),
1224
1225/***/ "./src/js/components/customSelect/index.js":
1226/*!*************************************************!*\
1227  !*** ./src/js/components/customSelect/index.js ***!
1228  \*************************************************/
1229/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1230
1231"use strict";
1232__webpack_require__.r(__webpack_exports__);
1233/* harmony default export */ __webpack_exports__["default"] = ($ => {
1234  $('select.custom').each(function () {
1235    let $this = $(this),
1236      numberOfOptions = $(this).children('option').length;
1237    let miniSelect = $this.hasClass('mini-select');
1238    let selectStyledClass = 'select-styled';
1239    if (miniSelect) {
1240      selectStyledClass = selectStyledClass + ' mini-styled btn arrow';
1241    }
1242    $this.wrap('<div class="select" tabindex="0"></div>');
1243    $this.closest('.select').addClass('custom');
1244    $this.addClass('select-hidden');
1245    $this.after('<div class="' + selectStyledClass + '"></div>');
1246    let $styledSelect = $this.next('div.select-styled');
1247    $styledSelect.text($this.children('option').eq(0).text());
1248    if (miniSelect) {
1249      $styledSelect.text($this.data('title'));
1250      $(this).val('').change();
1251    }
1252    let $list = $('<ul />', {
1253      'class': 'select-options js-' + $(this).attr('name')
1254    }).insertAfter($styledSelect);
1255    if (miniSelect) {
1256      $('<li />', {
1257        text: $this.data('title'),
1258        rel: ''
1259      }).appendTo($list);
1260    }
1261    for (let i = 0; i < numberOfOptions; i++) {
1262      let currentOption = $this.children('option').eq(i);
1263      $('<li />', {
1264        class: currentOption.prop('disabled') ? 'disabled' : '',
1265        text: currentOption.text(),
1266        rel: currentOption.val()
1267      }).appendTo($list);
1268    }
1269    let $listItems = $list.children('li');
1270    $list.hide();
1271    $styledSelect.click(function (e) {
1272      e.stopPropagation();
1273      $('.select-styled.active').not(this).removeClass('active').next('ul.select-options').hide();
1274      $(this).toggleClass('active').next('ul.select-options').toggle();
1275    });
1276    $this.val() ? $styledSelect.addClass('hasValue') : $styledSelect.removeClass('hasValue');
1277    $listItems.click(function (e) {
1278      e.stopPropagation();
1279      $styledSelect.text($(this).text()).removeClass('active');
1280      $list.hide();
1281      $this.val($(this).attr('rel')).change();
1282      $this.val() ? $styledSelect.addClass('hasValue') : $styledSelect.removeClass('hasValue');
1283    });
1284    $(document).click(function (event) {
1285      if (!$(event.target).closest($this).length) {
1286        $styledSelect.removeClass('active');
1287        $list.hide();
1288      }
1289    });
1290    $this.on('change', function () {
1291      const selectedValue = $this.val();
1292      const selectedText = $this.find(`option[value="${selectedValue}"]`).text();
1293      $styledSelect.text(selectedText);
1294      $listItems.removeClass('selected');
1295      $listItems.filter(`[rel="${selectedValue}"]`).addClass('selected');
1296      selectedValue ? $styledSelect.addClass('hasValue') : $styledSelect.removeClass('hasValue');
1297    });
1298    $this.removeClass('custom');
1299  });
1300});
1301(() => {
1302  let lookingForForm = $('.js-lfForm');
1303  let activateInterest = (selectJQElement, button) => {
1304    selectJQElement.on('change', function () {
1305      let $selected = $(this).find('option:selected');
1306      let currentVal = $selected.val();
1307      let target = $selected.data('target');
1308      let label = $.trim($selected.text());
1309      let isReal = !!currentVal && label !== 'Looking for...';
1310      button.attr('href', currentVal);
1311      button.attr('target', target);
1312      button.attr('disabled', !isReal);
1313      button.attr('aria-disabled', isReal ? 'false' : 'true');
1314      button.attr('aria-label', isReal ? 'Go to ' + label : 'Go');
1315    });
1316  };
1317  lookingForForm.each(function () {
1318    let _form = $(this);
1319    let categorySelect = _form.find('.js-lfFormCategory');
1320    let linksSelect = _form.find('.js-lfFormLinks');
1321    let button = _form.find('.js-learnMoreBtn');
1322    linksSelect.next('div').addClass('-disabled');
1323    categorySelect.on('change', function () {
1324      let currentLinks = $(this).find('option:selected').data('links');
1325      let styledSelect = linksSelect.next('.select-styled');
1326      let listBox = linksSelect.siblings('.select-options');
1327      linksSelect.next('div').removeClass('-disabled');
1328      button.attr('disabled', true);
1329      button.attr('aria-disabled', 'true');
1330      linksSelect.empty();
1331      listBox.empty();
1332      styledSelect.removeClass('hasValue');
1333      Array.prototype.forEach.call(currentLinks, function (item, index) {
1334        let text = item['title'] ? item['title'] : item['name'];
1335        let target = item['target'] ? item['target'] : '';
1336        if (index === 0) {
1337          styledSelect.text(text);
1338          button.attr('href', item['url']);
1339          button.attr('aria-label', 'Go');
1340        }
1341        $('<option />', {
1342          value: item['url'],
1343          text: text,
1344          'data-target': target
1345        }).appendTo(linksSelect);
1346        $('<li />', {
1347          text: text,
1348          rel: item['url'],
1349          class: text === 'Looking for...' ? 'disabled' : ''
1350        }).appendTo(listBox);
1351      });
1352      let $listItems = listBox.children('li');
1353      $listItems.click(function (e) {
1354        e.stopPropagation();
1355        styledSelect.text($(this).text()).removeClass('active');
1356        listBox.hide();
1357        linksSelect.val($(this).attr('rel')).change();
1358        linksSelect.val() ? styledSelect.addClass('hasValue') : styledSelect.removeClass('hasValue');
1359      });
1360      activateInterest(linksSelect, button);
1361    });
1362    activateInterest(linksSelect, button);
1363  });
1364})();
1365
1366/***/ }),
1367
1368/***/ "./src/js/components/filters/index.js":
1369/*!********************************************!*\
1370  !*** ./src/js/components/filters/index.js ***!
1371  \********************************************/
1372/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1373
1374"use strict";
1375__webpack_require__.r(__webpack_exports__);
1376/* harmony default export */ __webpack_exports__["default"] = ($ => {
1377  const INITIAL_VISIBLE_ITEMS = 1000;
1378  const LOAD_MORE_INCREMENT = 2;
1379  const initialParams = new URLSearchParams(window.location.search);
1380  const $filterForms = $('.js-filterForm');
1381  const $filterResults = $('.js-filterResults');
1382  if (!$filterForms.length || !$filterResults.length) return;
1383  $filterForms.each(function () {
1384    const $filterForm = $(this);
1385    const $filters = $filterForm.find('select, input[type=radio], input[type=checkbox]');
1386    const $filterSearch = $filterForm.find('input[name=search]');
1387    const $resetBtn = $filterForm.find('.js-filterReset');
1388    const $loadMoreBtn = $filterResults.find('.js-loadMoreFilters');
1389    const $filterItems = $filterResults.find('.js-filterItem');
1390    const facultyStaffFilter = $('.js-toggleSpecificFilter');
1391    const specificFilter = $('.js-specificFilter');
1392    let _filters = [];
1393    let visibleItems = INITIAL_VISIBLE_ITEMS;
1394    const NO_RESULTS_HTML = `
1395      <div class="_subhead no-results-message _12">
1396        No results. Try adapting or resetting filters.
1397      </div>
1398    `;
1399    let resetFilters = () => {
1400      const cleanUrl = window.location.origin + window.location.pathname;
1401      window.location.href = cleanUrl;
1402    };
1403    const initializeFiltersFromURL = () => {
1404      _filters = [];
1405      initialParams.forEach((value, name) => {
1406        if (value && value !== "") {
1407          _filters.push({
1408            name,
1409            value
1410          });
1411        }
1412      });
1413      $filters.each(function () {
1414        const $filter = $(this);
1415        const name = $filter.attr('name');
1416        const matchingFilter = _filters.find(filter => filter.name === name);
1417        if (matchingFilter) {
1418          if ($filter.is('select')) {
1419            $filter.val(matchingFilter.value);
1420          } else if ($filter.is(':radio, :checkbox')) {
1421            $filter.prop('checked', $filter.val() === matchingFilter.value);
1422          }
1423        }
1424      });
1425      const searchFilter = _filters.find(filter => filter.name === $filterSearch.attr('name'));
1426      if (searchFilter) {
1427        $filterSearch.val(searchFilter.value);
1428      }
1429    };
1430    initializeFiltersFromURL();
1431    const updateQueryParams = () => {
1432      const params = new URLSearchParams();
1433      _filters.forEach(filter => {
1434        if (filter.value) {
1435          params.set(filter.name, filter.value);
1436        }
1437      });
1438      if (params.toString()) {
1439        history.replaceState(null, '', `${window.location.pathname}?${params.toString()}`);
1440      } else {
1441        history.replaceState(null, '', window.location.pathname);
1442      }
1443    };
1444    const updateFilterState = $filter => {
1445      const name = $filter.attr('name');
1446      const value = $filter.is(':checkbox, :radio') ? $filter.is(':checked') ? $filter.val() : null : $filter.val();
1447      _filters = _filters.filter(f => f.name !== name);
1448      if (value && value !== '') {
1449        _filters.push({
1450          name,
1451          value
1452        });
1453      }
1454    };
1455    const applyFilters = () => {
1456      let totalMatchingCount = 0; // Track the number of items that match filters
1457      let visibleCount = 0; // Count items we are showing
1458
1459      // Remove any existing 'No Results' message
1460      $filterResults.find('.no-results-message').remove();
1461      $filterItems.each(function () {
1462        const $item = $(this);
1463        let matches = true;
1464
1465        // Check filters other than search
1466        _filters.forEach(filter => {
1467          if (filter.name !== 'search') {
1468            if (!$item.hasClass(filter.value)) {
1469              matches = false;
1470            }
1471          }
1472        });
1473
1474        // Check search filter
1475        const searchFilter = _filters.find(filter => filter.name === 'search');
1476        if (searchFilter) {
1477          const searchValue = searchFilter.value.toLowerCase();
1478          const itemText = $item.text().toLowerCase();
1479          if (!itemText.includes(searchValue)) {
1480            matches = false;
1481          }
1482        }
1483
1484        // Count total matching items
1485        if (matches) {
1486          totalMatchingCount++;
1487          if (visibleCount < visibleItems) {
1488            $item.show();
1489            visibleCount++;
1490          } else {
1491            $item.hide();
1492          }
1493        } else {
1494          $item.hide();
1495        }
1496      });
1497      if (totalMatchingCount === 0) {
1498        $filterResults.append(NO_RESULTS_HTML);
1499        $loadMoreBtn.hide();
1500      } else {
1501        if (visibleCount < totalMatchingCount) {
1502          $loadMoreBtn.show();
1503        } else {
1504          $loadMoreBtn.hide();
1505        }
1506      }
1507      updateQueryParams();
1508    };
1509    applyFilters();
1510    $loadMoreBtn.on('click', function () {
1511      visibleItems += LOAD_MORE_INCREMENT;
1512      applyFilters();
1513    });
1514    $filters.on('change', function () {
1515      updateFilterState($(this));
1516      applyFilters();
1517    });
1518    $filterSearch.on('input cut change keyup blur', function () {
1519      updateFilterState($(this));
1520      applyFilters();
1521    });
1522    $resetBtn.on('click', function (e) {
1523      e.preventDefault();
1524      resetFilters();
1525    });
1526    facultyStaffFilter.on('change', function () {
1527      let $_this = $(this);
1528      let $thisData = $_this.val();
1529      if (!$_this.is(':checked')) {
1530        $thisData = '';
1531      }
1532      specificFilter.hide().each(function () {
1533        let $firstDisabledLi = $(this).find('li.disabled').first();
1534        let selectStyled = $(this).find('div.select-styled').first();
1535        if ($firstDisabledLi.length) {
1536          $firstDisabledLi.trigger('click');
1537        }
1538        if (selectStyled.length) {
1539          selectStyled.removeClass('hasValue');
1540          selectStyled.text($thisData === 'faculty' ? 'Department' : 'Office');
1541        }
1542      });
1543      if (!$thisData) return;
1544      specificFilter.filter(`[data-specific="${$thisData}"]`).show();
1545    });
1546    let $selectedFilter = facultyStaffFilter.filter(':checked');
1547    if ($selectedFilter.length) {
1548      let $thisData = $selectedFilter.val();
1549      specificFilter.filter(`[data-specific="${$thisData}"]`).show();
1550    }
1551    $filterForm.on('submit', function (e) {
1552      e.preventDefault();
1553    });
1554  });
1555});
1556
1557/***/ }),
1558
1559/***/ "./src/js/components/firstSection/index.js":
1560/*!*************************************************!*\
1561  !*** ./src/js/components/firstSection/index.js ***!
1562  \*************************************************/
1563/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1564
1565"use strict";
1566__webpack_require__.r(__webpack_exports__);
1567/* harmony default export */ __webpack_exports__["default"] = ($ => {
1568  const firstModule = $('section.module').first();
1569  if (firstModule.css("padding-top") === "0px") {
1570    firstModule.css("padding-top", "40px");
1571  }
1572});
1573
1574/***/ }),
1575
1576/***/ "./src/js/components/loadMore/index.js":
1577/*!*********************************************!*\
1578  !*** ./src/js/components/loadMore/index.js ***!
1579  \*********************************************/
1580/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1581
1582"use strict";
1583__webpack_require__.r(__webpack_exports__);
1584/* harmony default export */ __webpack_exports__["default"] = ($ => {
1585  let loadMore = $('.js-loadMore');
1586  let loadMoreSearch = $('.js-loadMoreSearch');
1587  if (!loadMore.length && !loadMoreSearch.length) return;
1588  const {
1589    ajaxurl,
1590    current_page,
1591    found_posts,
1592    max_page,
1593    posts_per_page
1594  } = wp_params;
1595  if (parseInt(found_posts) <= parseInt(posts_per_page)) {
1596    loadMore.closest('div').remove();
1597    loadMoreSearch.closest('div').remove();
1598    return;
1599  }
1600  let isSearch = loadMore.data('search') || false;
1601  let searchQuery = loadMore.data('searchquery') || '';
1602  let action = isSearch ? 'load_more_search_posts' : 'load_more_posts';
1603  let postType = loadMore.data('type');
1604  let container = $(loadMore.data('container'));
1605  let term = loadMore.data('term');
1606  let termId = loadMore.data('termid');
1607  let template = loadMore.data('template');
1608  let page = current_page;
1609  loadMore.on('click', function (e) {
1610    e.preventDefault();
1611    if (page >= max_page) return;
1612    $.ajax({
1613      url: ajaxurl,
1614      type: 'POST',
1615      data: {
1616        action: action,
1617        page: parseInt(page) + 1,
1618        post_type: postType,
1619        term: term,
1620        termId: parseInt(termId),
1621        viewTemplate: template,
1622        search: isSearch,
1623        s: searchQuery
1624      },
1625      beforeSend: function () {
1626        loadMore.html('<span>Loading...</span>');
1627      },
1628      success: function (response) {
1629        if (response) {
1630          if (response?.data?.html) {
1631            container.append(response.data.html);
1632            page++;
1633            wp_params.current_page = page;
1634            if (page >= max_page) {
1635              loadMore.closest('div').remove();
1636            } else {
1637              loadMore.html('<span>Load More</span>');
1638            }
1639          } else {
1640            loadMore.closest('div').remove();
1641          }
1642        } else {
1643          loadMore.closest('div').remove();
1644        }
1645      },
1646      error: function () {
1647        loadMore.html('<span>Error. Please try later.</span>');
1648      }
1649    });
1650  });
1651  loadMoreSearch.click(function () {
1652    var btn = $(this);
1653    var page = parseInt(btn.data("page"));
1654    var query = btn.data("query");
1655    let container = $(btn.data('container'));
1656    $.ajax({
1657      type: "POST",
1658      url: ajaxurl,
1659      data: {
1660        action: "load_more_search_posts",
1661        paged: page,
1662        s: query
1663      },
1664      beforeSend: function () {
1665        btn.html('<span>Loading...</span>');
1666      },
1667      success: function (response) {
1668        if ($.trim(response) !== "") {
1669          container.append(response);
1670          btn.data("page", page + 1);
1671          btn.attr("data-page", page + 1);
1672          btn.html("<span>Load More</span>");
1673        } else {
1674          btn.remove();
1675        }
1676      },
1677      error: function () {
1678        loadMore.html('<span>Error. Please try later.</span>');
1679      }
1680    });
1681  });
1682});
1683
1684/***/ }),
1685
1686/***/ "./src/js/components/officeFilters/index.js":
1687/*!**************************************************!*\
1688  !*** ./src/js/components/officeFilters/index.js ***!
1689  \**************************************************/
1690/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1691
1692"use strict";
1693__webpack_require__.r(__webpack_exports__);
1694/* harmony default export */ __webpack_exports__["default"] = ($ => {
1695  const filterForm = document.querySelector(".js-officeFilterForm");
1696  if (!filterForm) return;
1697  const searchInput = filterForm.querySelector('input[name="search"]');
1698  const officeDivisions = document.querySelectorAll(".js-officeDivision");
1699
1700  // No Results HTML
1701  const NO_RESULTS_HTML = `
1702    <div class="_subhead no-results-message" style="margin-top: 40px;">
1703      No results. Try adapting or resetting filters.
1704    </div>
1705  `;
1706  searchInput.addEventListener("input", () => {
1707    const searchTerm = searchInput.value.trim().toLowerCase();
1708    let hasResults = false;
1709    officeDivisions.forEach(division => {
1710      let divisionVisible = false;
1711
1712      // Process each department inside the division
1713      const departments = division.querySelectorAll(".js-officeDepartment");
1714      departments.forEach(department => {
1715        let departmentVisible = false;
1716
1717        // Check the department link text
1718        const departmentLink = department.querySelector(".js-officeDepartmentLink");
1719        if (departmentLink && departmentLink.textContent.toLowerCase().includes(searchTerm)) {
1720          departmentVisible = true;
1721        }
1722
1723        // Check each child office inside the department
1724        const offices = department.querySelectorAll(".js-office");
1725        offices.forEach(office => {
1726          const officeText = office.textContent.toLowerCase();
1727          if (officeText.includes(searchTerm)) {
1728            departmentVisible = true;
1729          }
1730        });
1731
1732        // Show or hide the department based on matches
1733        if (departmentVisible) {
1734          department.style.display = "";
1735          divisionVisible = true; // Mark parent division as visible
1736        } else {
1737          department.style.display = "none";
1738        }
1739      });
1740
1741      // Show or hide the division based on department visibility
1742      if (divisionVisible) {
1743        division.style.display = "";
1744        hasResults = true; // At least one division is visible
1745      } else {
1746        division.style.display = "none";
1747      }
1748    });
1749
1750    // Handle "No Results" message
1751    const noResultsMessage = document.querySelector(".no-results-message");
1752    if (!hasResults) {
1753      if (!noResultsMessage) {
1754        filterForm.insertAdjacentHTML("afterend", NO_RESULTS_HTML);
1755      }
1756    } else {
1757      if (noResultsMessage) {
1758        noResultsMessage.remove();
1759      }
1760    }
1761  });
1762});
1763
1764/***/ }),
1765
1766/***/ "./src/js/components/pathways/index.js":
1767/*!*********************************************!*\
1768  !*** ./src/js/components/pathways/index.js ***!
1769  \*********************************************/
1770/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1771
1772"use strict";
1773__webpack_require__.r(__webpack_exports__);
1774/* harmony default export */ __webpack_exports__["default"] = ($ => {
1775  let pathways = $('._pathways');
1776  pathways.each((index, el) => {
1777    let _el = $(el);
1778    let triggers = _el.find('.js-pathwayTrigger');
1779    let targets = _el.find('.js-pathwayTarget');
1780    triggers.on('click', function (e) {
1781      e.preventDefault();
1782      let _this = $(this);
1783      if (_this.hasClass('-active')) return;
1784      targets.hide();
1785      triggers.removeClass('-active').attr('aria-pressed', 'false');
1786      _this.addClass('-active').attr('aria-pressed', 'true');
1787      let dataTarget = _this.data('trigger');
1788      targets.filter(`[data-trigger="${dataTarget}"]`).show();
1789    });
1790  });
1791});
1792
1793/***/ }),
1794
1795/***/ "./src/js/components/profilePopup/index.js":
1796/*!*************************************************!*\
1797  !*** ./src/js/components/profilePopup/index.js ***!
1798  \*************************************************/
1799/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1800
1801"use strict";
1802__webpack_require__.r(__webpack_exports__);
1803/* harmony import */ var glightbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! glightbox */ "./node_modules/glightbox/dist/js/glightbox.min.js");
1804/* harmony import */ var glightbox__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(glightbox__WEBPACK_IMPORTED_MODULE_0__);
1805
1806/* harmony default export */ __webpack_exports__["default"] = ($ => {
1807  const profilePopupTriggers = $('.js-fetchProfile');
1808  profilePopupTriggers.on('click', async function (e) {
1809    e.preventDefault();
1810    let _this = $(this);
1811    let ID = _this.data('id');
1812    const {
1813      ajaxurl
1814    } = wp_params;
1815    if (!ID) {
1816      console.error("No ID provided for the profile popup.");
1817      return;
1818    }
1819    try {
1820      const response = await $.ajax({
1821        url: ajaxurl,
1822        type: 'POST',
1823        data: {
1824          action: 'load_profile_popup',
1825          termId: ID
1826        }
1827      });
1828      const lightbox = glightbox__WEBPACK_IMPORTED_MODULE_0___default()({
1829        elements: [{
1830          content: response,
1831          type: 'inline'
1832        }],
1833        touchNavigation: false,
1834        width: "920px",
1835        height: "auto"
1836      });
1837      lightbox.open();
1838    } catch (error) {
1839      console.error("Error loading profile popup:", error);
1840      const lightbox = glightbox__WEBPACK_IMPORTED_MODULE_0___default()({
1841        elements: [{
1842          content: `<div>Error loading profile content. Please try again later.</div>`,
1843          type: 'inline'
1844        }]
1845      });
1846      lightbox.open();
1847    }
1848  });
1849});
1850
1851/***/ }),
1852
1853/***/ "./src/js/components/programFinder/index.js":
1854/*!**************************************************!*\
1855  !*** ./src/js/components/programFinder/index.js ***!
1856  \**************************************************/
1857/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1858
1859"use strict";
1860__webpack_require__.r(__webpack_exports__);
1861/* harmony import */ var _customSelect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../customSelect */ "./src/js/components/customSelect/index.js");
1862/* harmony import */ var _helpers_activeTrigger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../helpers/activeTrigger */ "./src/js/helpers/activeTrigger.js");
1863/* harmony import */ var _acalog_modules_overviewInProgramFinder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../acalog/modules/overviewInProgramFinder */ "./src/js/components/acalog/modules/overviewInProgramFinder.js");
1864
1865
1866
1867/* harmony default export */ __webpack_exports__["default"] = ($ => {
1868  const goals = $('[data-goal]');
1869  const goalsSelect = $('select[name="goalSelect"]');
1870  const filterGoals = $('.js-goalFilter');
1871  const toggleFilters = $('.toggle-filters');
1872  const contentBox = $('#content-box');
1873  const filtersBox = $('#filters-box');
1874  const url = new URL(window.location);
1875  const goalIdParam = url.searchParams.get('goalId');
1876  let initializedActiveFilters = getFiltersFromQueryParams();
1877  let isProgrammaticChange = false;
1878  if (!goals.length) return;
1879  async function fetchDegrees() {
1880    if (isProgrammaticChange) {
1881      isProgrammaticChange = false;
1882      return;
1883    }
1884    let _this = $(this);
1885    let ID;
1886    if (_this.is('select')) {
1887      ID = _this.val();
1888    } else if (_this.is('[data-goal]')) {
1889      ID = _this.data('goal');
1890      isProgrammaticChange = true;
1891      goalsSelect.val(ID).change();
1892    }
1893    if (ID) {
1894      url.searchParams.set('goalId', ID);
1895      window.history.pushState({}, '', url);
1896    }
1897    const {
1898      ajaxurl
1899    } = wp_params;
1900    if (!ID) {
1901      console.error("No ID provided for the profile popup.");
1902      return;
1903    }
1904    try {
1905      const response = await $.ajax({
1906        url: ajaxurl,
1907        type: 'POST',
1908        data: {
1909          action: 'load_degrees',
1910          goalId: ID
1911        }
1912      });
1913      const {
1914        html,
1915        degrees
1916      } = response?.data;
1917      contentBox.html(html);
1918      if (degrees.length === 1) {
1919        const degreeId = degrees[0].id;
1920        const $degreeItem = $(`[data-degree-id="${degreeId}"]`);
1921        $degreeItem.addClass('-active');
1922      }
1923      generateFilters(degrees);
1924      (0,_acalog_modules_overviewInProgramFinder__WEBPACK_IMPORTED_MODULE_2__.overviewInProgramFinder)();
1925      if (initializedActiveFilters) {
1926        preselectFilters(degrees);
1927        initializedActiveFilters = null;
1928      }
1929      (0,_customSelect__WEBPACK_IMPORTED_MODULE_0__["default"])($);
1930      (0,_helpers_activeTrigger__WEBPACK_IMPORTED_MODULE_1__["default"])();
1931      filterGoals.removeClass('hidden');
1932      toggleFilters.removeClass('hidden');
1933    } catch (error) {
1934      console.error("Error loading profile popup:", error);
1935    }
1936  }
1937  function generateFilters(degrees) {
1938    filtersBox.find('._programFinder__left__filter:not(.js-goalFilter)').remove();
1939    const filters = {
1940      degree_types: new Set(),
1941      preferred_learning: new Set(),
1942      locations: new Set(),
1943      area_of_study: new Set(),
1944      credentials: new Set()
1945    };
1946    degrees.forEach(degree => {
1947      if (degree.locations) {
1948        degree.locations.forEach(location => filters.locations.add(location));
1949      }
1950      if (degree.area_of_study) {
1951        degree.area_of_study.forEach(aos => filters.area_of_study.add(aos));
1952      }
1953      if (degree.credentials) {
1954        degree.credentials.forEach(cred => filters.credentials.add(cred));
1955      }
1956      if (degree.degree_types) {
1957        degree.degree_types.forEach(dt => filters.degree_types.add(dt));
1958      }
1959      if (degree.preferred_learning) {
1960        degree.preferred_learning.forEach(pl => filters.preferred_learning.add(pl));
1961      }
1962    });
1963    if (filters?.locations?.size) renderCheckboxFilter('locations', 'Locations', filters.locations);
1964    if (filters?.credentials?.size) renderCheckboxFilter('credentials', 'Credentials', filters.credentials);
1965    if (filters?.degree_types?.size) renderCheckboxFilter('degree_types', 'Degree Types', filters.degree_types);
1966    if (filters?.preferred_learning?.size) renderCheckboxFilter('preferred_learning', 'Preferred Learning', filters.preferred_learning);
1967    if (filters?.area_of_study?.size) createFilterDropdown('area_of_study', 'Area of Study', filters.area_of_study);
1968    renderResetBtn();
1969    filtersBox.find('input[type="checkbox"], select').on('change', function () {
1970      applyFilters(degrees);
1971    });
1972  }
1973  function renderResetBtn() {
1974    const resetBtn = `
1975    <div class="_programFinder__left__filter field field__reset" style="padding-top: 0;">
1976      <a href="${window.location.origin + window.location.pathname}" class="js-filterReset resetBtn" style="font-weight: 600;" aria-label="Click to reset filters">
1977        <svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
1978          <path d="M13.4844 6.50022H13.75C14.1657 6.50022 14.5 6.16585 14.5 5.75022V1.75022C14.5 1.4471 14.3188 1.1721 14.0375 1.05647C13.7563 0.940849 13.4344 1.00335 13.2188 1.21897L11.9
1978188 2.51897C9.1813 -0.184151 4.77192 -0.174776 2.05005 2.55022C-0.684326 5.2846 -0.684326 9.71585 2.05005 12.4502C4.78442 15.1846 9.21567 15.1846 11.95 12.4502C12.3407 12.0596 12.3407 11.4252 11.95 11.0346C11.5594 10.644 10.925 10.644 10.5344 11.0346C8.5813 12.9877 5.41567 12.9877 3.46255 11.0346C1.50942 9.08147 1.50942 5.91585 3.46255 3.96272C5.4063 2.01897 8.54692 2.0096 10.5032 3.93147L9.2188 5.21897C9.00317 5.4346 8.94067 5.75647 9.0563 6.03772C9.17192 6.31897 9.44692 6.50022 9.75005 6.50022H13.4844Z" fill="#005889"/>
1979        </svg>
1980        Reset
1981      </a>
1982    </div>`;
1983    filtersBox.append(resetBtn);
1984  }
1985  function renderCheckboxFilter(name, title, options) {
1986    const checkboxes = Array.from(options).map(option => `
1987      <label>
1988        <input type="checkbox" name="${name}" value="${option}">
1989        ${option}
1990      </label>
1991    `).join('');
1992    const filterHTML = `
1993    <div class="_programFinder__left__filter -checkbox">
1994      <div class="_programFinder__left__filter__title _filterTitle">${title}</div>
1995      <div class="_programFinder__left__filter__item -checkbox__boxes">
1996        ${checkboxes}
1997      </div>
1998    </div>
1999  `;
2000    filtersBox.append(filterHTML);
2001  }
2002  function createFilterDropdown(name, title, options) {
2003    const dropdown = Array.from(options).map(option => `<option value="${option}">${option}</option>`).join('');
2004    const filterHTML = `
2005    <div class="_programFinder__left__filter -select">
2006      <div class="_programFinder__left__filter__title _filterTitle">${title}</div>
2007      <div class="_programFinder__left__filter__item">
2008        <select name="${name}" class="custom" style="display: none;">
2009          <option value="">Select ${title}</option>
2010          ${dropdown}
2011        </select>
2012      </div>
2013    </div>
2014  `;
2015    filtersBox.append(filterHTML);
2016  }
2017  function applyFilters(degrees) {
2018    $('.-active').removeClass('-active');
2019    const activeFilters = {
2020      degree_types: getCheckedValues('degree_types'),
2021      preferred_learning: getCheckedValues('preferred_learning'),
2022      locations: getCheckedValues('locations'),
2023      area_of_study: getDropdownValue('area_of_study'),
2024      credentials: getCheckedValues('credentials')
2025    };
2026    updateQueryParams(activeFilters);
2027    degrees.forEach(degree => {
2028      let degreeMatches = false; // Flag to track if any program in this degree matches
2029
2030      degree.programs.forEach(program => {
2031        let programMatches = true; // Assume program matches by default
2032        let programId = program.id;
2033
2034        // Loop through all active filters
2035        for (let [filterName, filterValues] of Object.entries(activeFilters)) {
2036          if (filterValues.length > 0) {
2037            const programFilterValues = program[filterName];
2038
2039            // Check if the program matches the current filter
2040            if (!programFilterValues || !filterValues.some(value => programFilterValues.includes(value))) {
2041              programMatches = false; // Mark the program as non-matching
2042              break; // Stop checking filters if one doesn't match
2043            }
2044          }
2045        }
2046
2047        // Handle visibility of the program based on whether it matches
2048        if (programMatches) {
2049          $(`[data-program-id="${programId}"]`).show();
2050          degreeMatches = true; // Mark degree as matching if this program matches
2051        } else {
2052          $(`[data-program-id="${programId}"]`).hide();
2053        }
2054      });
2055      $(`[data-degree-id="${degree.id}"]`).toggle(degreeMatches);
2056      const visibleDegrees = $('[data-degree-id]:visible');
2057      if (visibleDegrees.length === 1) {
2058        const $degreeItem = visibleDegrees.first();
2059        $degreeItem.addClass('-active');
2060      }
2061    });
2062  }
2063  function getCheckedValues(filterName) {
2064    return filtersBox.find(`input[name="${filterName}"]:checked`).map((_, checkbox) => checkbox.value).get();
2065  }
2066  function getDropdownValue(filterName) {
2067    const value = filtersBox.find(`select[name="${filterName}"]`).val();
2068    return value ? [value] : [];
2069  }
2070  function getFiltersFromQueryParams() {
2071    const params = new URLSearchParams(window.location.search);
2072    const filters = {};
2073
2074    // Extract filters from query parameters
2075    const filterKeys = ['degree_types', 'preferred_learning', 'locations', 'area_of_study', 'credentials'];
2076    filterKeys.forEach(key => {
2077      const paramValue = params.get(key);
2078      if (paramValue) {
2079        filters[key] = paramValue.split(','); // Multiple values are separated by commas
2080      } else {
2081        filters[key] = [];
2082      }
2083    });
2084    return filters;
2085  }
2086  function preselectFilters(degrees) {
2087    // Pre-select checkboxes based on `initializedActiveFilters`
2088    let exists = false;
2089    if (!initializedActiveFilters) return;
2090    Object.keys(initializedActiveFilters).forEach(filterKey => {
2091      const filterValues = initializedActiveFilters[filterKey];
2092      if (filterKey === 'degree_types' || filterKey === 'preferred_learning' || filterKey === 'locations' || filterKey === 'credentials') {
2093        filterValues.forEach(value => {
2094          $(`input[name="${filterKey}"`).filter(`[value="${value}"]`).prop('checked', true);
2095        });
2096      }
2097
2098      // For dropdowns, select the option if it matches
2099      if (filterKey === 'area_of_study') {
2100        filterValues.forEach(value => {
2101          $(`select[name="${filterKey}"`).val(value).trigger('change'); // Select matching option in dropdown
2102        });
2103      }
2104      exists = true;
2105    });
2106    if (exists) {
2107      applyFilters(degrees);
2108    }
2109  }
2110  function updateQueryParams(activeFilters) {
2111    const url = new URL(window.location);
2112
2113    // Loop through each active filter and update the URL
2114    for (const [filterName, filterValues] of Object.entries(activeFilters)) {
2115      if (filterValues.length > 0) {
2116        // Set the filter in the URL with values joined by commas
2117        url.searchParams.set(filterName, filterValues.join(','));
2118      } else {
2119        // If no values are selected for the filter, remove the filter from the URL
2120        url.searchParams.delete(filterName);
2121      }
2122    }
2123
2124    // Update the URL without reloading the page
2125    window.history.pushState({}, '', url);
2126  }
2127  goals.on('click', fetchDegrees);
2128  goalsSelect.on('change', fetchDegrees);
2129  $(document).ready(() => {
2130    if (goalIdParam) {
2131      goalsSelect.val(goalIdParam).change();
2132    }
2133  });
2134});
2135
2136/***/ }),
2137
2138/***/ "./src/js/components/siteNav/index.js":
2139/*!********************************************!*\
2140  !*** ./src/js/components/siteNav/index.js ***!
2141  \********************************************/
2142/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2143
2144"use strict";
2145__webpack_require__.r(__webpack_exports__);
2146/* harmony import */ var _helpers_debounce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../helpers/debounce */ "./src/js/helpers/debounce.js");
2147
2148function getScrollXY() {
2149  let scrOfX = 0,
2150    scrOfY = 0;
2151  if (typeof window.pageYOffset == 'number') {
2152    //Netscape compliant
2153    scrOfY = window.pageYOffset;
2154    scrOfX = window.pageXOffset;
2155  } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
2156    //DOM compliant
2157    scrOfY = document.body.scrollTop;
2158    scrOfX = document.body.scrollLeft;
2159  } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
2160    //IE6 standards compliant mode
2161    scrOfY = document.documentElement.scrollTop;
2162    scrOfX = document.documentElement.scrollLeft;
2163  }
2164  return [scrOfX, scrOfY];
2165}
2166function getDocHeight() {
2167  let D = document;
2168  let _body = document.body;
2169  return Math.max(_body.scrollHeight, D.documentElement.scrollHeight, _body.offsetHeight, D.documentElement.offsetHeight, _body.clientHeight, D.documentElement.clientHeight);
2170}
2171function calculateFirstParents(elements) {
2172  if (!elements || !elements.length) return;
2173  let DISTANCE_CONST = 650;
2174  let elementsChildren = elements.find('> .menu.-submenu');
2175  let innerWidth = window.innerWidth;
2176  if (innerWidth < 1280) {
2177    elementsChildren.attr('style', '');
2178    return;
2179  }
2180  elements.each((index, el) => {
2181    let rect = el.getBoundingClientRect();
2182    let elWidth = rect.width;
2183    let distanceRight = innerWidth - rect.right;
2184    let childElSubmenu = $(el).find('> .menu.-submenu');
2185    if (distanceRight + elWidth < DISTANCE_CONST) {
2186      let value = index === elements.length - 1 ? '0' : '-18px';
2187      childElSubmenu.attr('style', `left: auto; right: ${value}`);
2188    } else {
2189      childElSubmenu.attr('style', '');
2190    }
2191  });
2192}
2193function positionSubmenu() {
2194  const menuItem = document.querySelectorAll('.js-moreTrigger');
2195  if (!menuItem) return;
2196  menuItem.forEach(el => {
2197    const subMenu = el.querySelector('.moreMenu');
2198    if (!subMenu) return;
2199    const menuItemRect = el.getBoundingClientRect();
2200    const viewportWidth = window.innerWidth;
2201    const rightOffset = viewportWidth - (menuItemRect.left + menuItemRect.width);
2202    subMenu.style.right = `-${rightOffset}px`;
2203  });
2204}
2205/* harmony default export */ __webpack_exports__["default"] = ($ => {
2206  let _body = document.body;
2207  let saved_scroll_position = 0;
2208  let current_scroll_position;
2209  let firstParentElements = $('.site__nav .menu > .menu-item-has-children');
2210  let doc = $(document);
2211  _body.classList.toggle('scroll', doc.scrollTop() > 50);
2212  window.addEventListener('scroll', function () {
2213    current_scroll_position = window.pageYOffset;
2214    if (saved_scroll_position < current_scroll_position && current_scroll_position > 50) {
2215      _body.classList.remove('slideDown');
2216      _body.classList.add('slideUp');
2217    } else if (saved_scroll_position > current_scroll_position && getDocHeight() - 50 > getScrollXY()[1] + window.innerHeight) {
2218      _body.classList.remove('slideUp');
2219      _body.classList.add('slideDown');
2220    }
2221    saved_scroll_position = current_scroll_position;
2222    if (window.pageYOffset >= 50) {
2223      _body.classList.add('fixed-nav', 'scrolled');
2224    } else {
2225      _body.classList.remove('fixed-nav');
2226    }
2227  });
2228  calculateFirstParents(firstParentElements);
2229  positionSubmenu();
2230  window.addEventListener('resize', (0,_helpers_debounce__WEBPACK_IMPORTED_MODULE_0__["default"])(function () {
2231    calculateFirstParents(firstParentElements);
2232    positionSubmenu();
2233  }, 500));
2234});
2235
2236/***/ }),
2237
2238/***/ "./src/js/components/swiper/index.js":
2239/*!*******************************************!*\
2240  !*** ./src/js/components/swiper/index.js ***!
2241  \*******************************************/
2242/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2243
2244"use strict";
2245__webpack_require__.r(__webpack_exports__);
2246/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "./node_modules/swiper/swiper.mjs");
2247/* harmony import */ var swiper_modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! swiper/modules */ "./node_modules/swiper/modules/index.mjs");
2248
2249
2250/* harmony default export */ __webpack_exports__["default"] = (() => {
2251  // Profile Spotlights carousel
2252  document.querySelectorAll('.js-profileSwiper').forEach(el => {
2253    new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](el, {
2254      modules: [swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Pagination, swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Navigation],
2255      slidesPerView: 'auto',
2256      spaceBetween: 16,
2257      pagination: {
2258        el: el.querySelector('.swiper_buttons_pagination'),
2259        clickable: true,
2260        dynamicBullets: true,
2261        dynamicMainBullets: 4
2262      },
2263      navigation: {
2264        nextEl: el.querySelector('.swiper_buttons_next'),
2265        prevEl: el.querySelector('.swiper_buttons_prev')
2266      }
2267    });
2268  });
2269
2270  // News / Events block carousels
2271  document.querySelectorAll('.js-newsEventsSwiper').forEach(el => {
2272    const isSideBySide = el.dataset.layout === 'side-by-side';
2273    const hasAutoplay = el.dataset.autoplay === '1';
2274    const totalSlides = el.querySelectorAll('.swiper-slide').length;
2275    const getDynamic = w => {
2276      const perPage = w >= 1024 ? 4 : w >= 768 ? 2 : 1;
2277      const pages = Math.ceil(totalSlides / perPage);
2278      return pages > 4;
2279    };
2280    const config = {
2281      modules: [swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Pagination, swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Navigation, swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Grid, swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Autoplay],
2282      slidesPerView: 1,
2283      spaceBetween: 24,
2284      autoHeight: true,
2285      grid: {
2286        rows: 1,
2287        fill: 'row'
2288      },
2289      ...(hasAutoplay && {
2290        autoplay: {
2291          delay: 5000,
2292          disableOnInteraction: false,
2293          pauseOnMouseEnter: true
2294        }
2295      }),
2296      breakpoints: {
2297        768: {
2298          slidesPerView: 2,
2299          spaceBetween: 24,
2300          grid: {
2301            rows: 1,
2302            fill: 'row'
2303          }
2304        },
2305        1024: isSideBySide ? {
2306          slidesPerView: 1,
2307          spaceBetween: 30,
2308          grid: {
2309            rows: 4,
2310            fill: 'row'
2311          },
2312          autoHeight: false
2313        } : {
2314          slidesPerView: 2,
2315          spaceBetween: 30,
2316          grid: {
2317            rows: 2,
2318            fill: 'row'
2319          },
2320          autoHeight: false
2321        }
2322      },
2323      navigation: {
2324        nextEl: el.querySelector('.swiper_buttons_next'),
2325        prevEl: el.querySelector('.swiper_buttons_prev')
2326      }
2327    };
2328    const init = dynamic => {
2329      return new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](el, {
2330        ...config,
2331        pagination: {
2332          el: el.querySelector('.swiper_buttons_pagination'),
2333          clickable: true,
2334          dynamicBullets: dynamic,
2335          dynamicMainBullets: 4
2336        }
2337      });
2338    };
2339    let dynamic = getDynamic(window.innerWidth);
2340    let swiper = init(dynamic);
2341    window.addEventListener('resize', () => {
2342      const next = getDynamic(window.innerWidth);
2343      if (next !== dynamic) {
2344        dynamic = next;
2345        swiper.destroy(true, true);
2346        swiper = init(dynamic);
2347      }
2348    });
2349  });
2350});
2351
2352/***/ }),
2353
2354/***/ "./src/js/components/teaserTabs/index.js":
2355/*!***********************************************!*\
2356  !*** ./src/js/components/teaserTabs/index.js ***!
2357  \***********************************************/
2358/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2359
2360"use strict";
2361__webpack_require__.r(__webpack_exports__);
2362/* harmony default export */ __webpack_exports__["default"] = ($ => {
2363  let teaserTabs = $('._teaserTabs');
2364  teaserTabs.each((index, tab) => {
2365    let _self = $(tab);
2366    let tabs = _self.find('.js-tab');
2367    let teasers = _self.find('.js-teaser');
2368    let select = _self.find('select');
2369    tabs.on('click', function () {
2370      let selectOptions = _self.find('.select-options');
2371      let _this = $(this);
2372      if (_this.hasClass('-active')) return;
2373      let dataTeaser = _this.data('teaser');
2374      selectOptions.find('li[rel="' + dataTeaser + '"]').click();
2375    });
2376    select.on('change', function () {
2377      let thisValue = $(this).val();
2378      tabs.removeClass('-active');
2379      teasers.removeClass('-active');
2380      _self.find('.js-tab[data-teaser="' + thisValue + '"]').addClass('-active');
2381      _self.find('.js-teaser[data-teaser="' + thisValue + '"]').addClass('-active');
2382    });
2383  });
2384});
2385
2386/***/ }),
2387
2388/***/ "./src/js/components/utilities/radioUncheck.js":
2389/*!*****************************************************!*\
2390  !*** ./src/js/components/utilities/radioUncheck.js ***!
2391  \*****************************************************/
2392/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2393
2394"use strict";
2395__webpack_require__.r(__webpack_exports__);
2396/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2397/* harmony export */   initializeRadioButtons: function() { return /* binding */ initializeRadioButtons; }
2398/* harmony export */ });
2399const initializeRadioButtons = cb => {
2400  const allowUncheckItems = document.querySelectorAll('.js-allowRadioUncheck');
2401  const checkedArray = [];
2402  allowUncheckItems.forEach((item, index) => {
2403    checkedArray[index] = false;
2404    item.addEventListener('click', function (e) {
2405      // Toggle the checked state
2406      if (checkedArray[index]) {
2407        this.checked = false;
2408        checkedArray[index] = false;
2409      } else {
2410        checkedArray[index] = true;
2411      }
2412
2413      // Update other radio buttons' checked state
2414      checkedArray.forEach((_, i) => {
2415        if (i !== index) checkedArray[i] = false;
2416      });
2417
2418      // Manually dispatch the 'change' event
2419      const changeEvent = new Event('change', {
2420        bubbles: true
2421      });
2422      this.dispatchEvent(changeEvent);
2423    });
2424  });
2425  document.querySelectorAll('.js-allowRadioUncheck').forEach(item => {
2426    item.addEventListener('change', function (e) {
2427      cb && cb();
2428    });
2429  });
2430};
2431
2432/***/ }),
2433
2434/***/ "./src/js/components/videos/index.js":
2435/*!*******************************************!*\
2436  !*** ./src/js/components/videos/index.js ***!
2437  \*******************************************/
2438/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2439
2440"use strict";
2441__webpack_require__.r(__webpack_exports__);
2442/* harmony import */ var plyr__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! plyr */ "./node_modules/plyr/dist/plyr.min.js");
2443/* harmony import */ var plyr__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(plyr__WEBPACK_IMPORTED_MODULE_0__);
2444
2445/* harmony default export */ __webpack_exports__["default"] = (() => {
2446  const player = new (plyr__WEBPACK_IMPORTED_MODULE_0___default())('#js-popupPlayer');
2447  const selectors = document.querySelectorAll('.js-player');
2448  selectors.forEach(selector => {
2449    const player = new (plyr__WEBPACK_IMPORTED_MODULE_0___default())(selector);
2450  });
2451});
2452
2453/***/ }),
2454
2455/***/ "./src/js/helpers/activeTrigger.js":
2456/*!*****************************************!*\
2457  !*** ./src/js/helpers/activeTrigger.js ***!
2458  \*****************************************/
2459/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2460
2461"use strict";
2462__webpack_require__.r(__webpack_exports__);
2463/* harmony default export */ __webpack_exports__["default"] = (() => {
2464  let activeTriggers = document.querySelectorAll('.js-activeTrigger');
2465  activeTriggers.forEach(trigger => {
2466    if (trigger.dataset.bound === 'true') return;
2467    trigger.addEventListener('click', e => {
2468      e.preventDefault();
2469      e.stopPropagation();
2470      let dataBody = trigger.dataset.body_class;
2471      let focusTarget = trigger.dataset.focus_target;
2472      let anchor = trigger.querySelector('a');
2473      if (anchor) {
2474        anchor.addEventListener('click', event => {
2475          event.stopPropagation();
2476        });
2477      }
2478      trigger.classList.remove('js-activeTrigger');
2479      const isOpening = !trigger.classList.contains('-active');
2480      if (isOpening && window.innerWidth < 1280) {
2481        const parentMenu = trigger.closest('.menu');
2482        if (parentMenu) {
2483          parentMenu.querySelectorAll(':scope > .menu-item > .triggerBtn.-active').forEach(other => {
2484            if (other !== trigger) other.classList.remove('-active');
2485          });
2486        }
2487      }
2488      trigger.classList.toggle('-active');
2489      if (trigger.hasAttribute('aria-expanded')) {
2490        trigger.setAttribute('aria-expanded', trigger.classList.contains('-active') ? 'true' : 'false');
2491      }
2492      if (dataBody) {
2493        document.body.classList.toggle(dataBody);
2494      }
2495      if (focusTarget && trigger.classList.contains('-active')) {
2496        setTimeout(() => {
2497          document.querySelector(focusTarget).focus();
2498        }, 300);
2499      }
2500    });
2501    trigger.dataset.bound = 'true';
2502  });
2503});
2504
2505/***/ }),
2506
2507/***/ "./src/js/helpers/debounce.js":
2508/*!************************************!*\
2509  !*** ./src/js/helpers/debounce.js ***!
2510  \************************************/
2511/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2512
2513"use strict";
2514__webpack_require__.r(__webpack_exports__);
2515/* harmony default export */ __webpack_exports__["default"] = ((func, wait, immediate) => {
2516  let timeout;
2517  let waitTime = wait || 100;
2518  return function () {
2519    let context = this,
2520      args = arguments;
2521    clearTimeout(timeout);
2522    timeout = setTimeout(function () {
2523      timeout = null;
2524      if (!immediate) {
2525        func.apply(context, args);
2526      }
2527    }, waitTime);
2528    if (immediate && !timeout) {
2529      func.apply(context, args);
2530    }
2531  };
2532});
2533
2534/***/ }),
2535
2536/***/ "./src/js/helpers/localStorage.js":
2537/*!****************************************!*\
2538  !*** ./src/js/helpers/localStorage.js ***!
2539  \****************************************/
2540/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2541
2542"use strict";
2543__webpack_require__.r(__webpack_exports__);
2544/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2545/* harmony export */   getLocalStorageWithExpiry: function() { return /* binding */ getLocalStorageWithExpiry; },
2546/* harmony export */   setLocalStorageWithExpiry: function() { return /* binding */ setLocalStorageWithExpiry; }
2547/* harmony export */ });
2548const setLocalStorageWithExpiry = (key, value, ttl) => {
2549  const data = {
2550    value,
2551    expiry: Date.now() + ttl
2552  };
2553  localStorage.setItem(key, JSON.stringify(data));
2554};
2555const getLocalStorageWithExpiry = key => {
2556  const itemStr = localStorage.getItem(key);
2557  if (!itemStr) return null;
2558  try {
2559    const data = JSON.parse(itemStr);
2560    if (Date.now() > data.expiry) {
2561      localStorage.removeItem(key);
2562      return null;
2563    }
2564    return data.value;
2565  } catch {
2566    localStorage.removeItem(key);
2567    return null;
2568  }
2569};
2570
2571/***/ }),
2572
vendor: 56,511 bytes, lines 2573-2582
2573/***/ "./node_modules/glightbox/dist/js/glightbox.min.js":
2574/*!*********************************************************!*\
2575  !*** ./node_modules/glightbox/dist/js/glightbox.min.js ***!
2576  \*********************************************************/
2577/***/ (function(module) {
2578
2579!function(e,t){ true?module.exports=t():0}(this,(function(){"use strict";function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,n(s.key),s)}}function i(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function n(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var l=Date.now();function o(){var e={},t=!0,i=0,n=arguments.length;"[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(t=arguments[0],i++);for(var s=function(i){for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t&&"[object Object]"===Object.prototype.toString.call(i[n])?e[n]=o(!0,e[n],i[n]):e[n]=i[n])};i<n;i++){var l=arguments[i];s(l)}return e}function r(e,t){if((E(e)||e===window||e===document)&&(e=[e]),L(e)||I(e)||(e=[e]),0!=M(e))if(L(e)&&!I(e))for(var i=e.length,n=0;n<i&&!1!==t.call(e[n],e[n],n,e);n++);else if(I(e))for(var s in e)if(P(e,s)&&!1===t.call(e[s],e[s],s,e))break}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=e[l]=e[l]||[],s={all:n,evt:null,found:null};return t&&i&&M(n)>0&&r(n,(function(e,n){if(e.eventName==t&&e.fn.toString()==i.toString())return s.found=!0,s.evt=n,!1})),s}function h(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.onElement,n=t.withCallback,s=t.avoidDuplicate,l=void 0===s||s,o=t.once,h=void 0!==o&&o,d=t.useCapture,c=void 0!==d&&d,u=arguments.length>2?arguments[2]:void 0,g=i||[];function v(e){C(n)&&n.call(u,e,this),h&&v.destroy()}return k(g)&&(g=document.querySelectorAll(g)),v.destroy=function(){r(g,(function(t){var i=a(t,e,v);i.found&&i.all.splice(i.evt,1),t.removeEventListener&&t.removeEventListener(e,v,c)}))},r(g,(function(t){var i=a(t,e,v);(t.addEventListener&&l&&!i.found||!l)&&(t.addEventListener(e,v,c),i.all.push({eventName:e,fn:v}))})),v}function d(e,t){r(t.split(" "),(function(t){return e.classList.add(t)}))}function c(e,t){r(t.split(" "),(function(t){return e.classList.remove(t)}))}function u(e,t){return e.classList.contains(t)}function g(e,t){for(;e!==document.body;){if(!(e=e.parentElement))return!1;if("function"==typeof e.matches?e.matches(t):e.msMatchesSelector(t))return e}}function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||""===t)return!1;if("none"===t)return C(i)&&i(),!1;var n=b(),s=t.split(" ");r(s,(function(t){d(e,"g"+t)})),h(n,{onElement:e,avoidDuplicate:!1,once:!0,withCallback:function(e,t){r(s,(function(e){c(t,"g"+e)})),C(i)&&i()}})}function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(""===t)return e.style.webkitTransform="",e.style.MozTransform="",e.style.msTransform="",e.style.OTransform="",e.style.transform="",!1;e.style.webkitTransform=t,e.style.MozTransform=t,e.style.msTransform=t,e.style.OTransform=t,e.style.transform=t}function p(e){e.style.display="block"}function m(e){e.style.display="none"}function y(e){var t=document.createDocumentFragment(),i=document.createElement("div");for(i.innerHTML=e;i.firstChild;)t.appendChild(i.firstChild);return t}function x(){return{width:window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,height:window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}}function b(){var e,t=document.createElement("fakeelement"),i={animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"animationend",WebkitAnimation:"webkitAnimationEnd"};for(e in i)if(void 0!==t.style[e])return i[e]}function S(e,t,i,n){if(e())t();else{var s;i||(i=100);var l=setInterval((function(){e()&&(clearInterval(l),s&&clearTimeout(s),t())}),i);n&&(s=setTimeout((function(){clearInterval(l)}),n))}}function w(e,t,i){if(O(e))console.error("Inject assets error");else if(C(t)&&(i=t,t=!1),k(t)&&t in window)C(i)&&i();else{var n;if(-1!==e.indexOf(".css")){if((n=document.querySelectorAll('link[href="'+e+'"]'))&&n.length>0)return void(C(i)&&i());var s=document.getElementsByTagName("head")[0],l=s.querySelectorAll('link[rel="stylesheet"]'),o=document.createElement("link");return o.rel="stylesheet",o.type="text/css",o.href=e,o.media="all",l?s.insertBefore(o,l[0]):s.appendChild(o),void(C(i)&&i())}if((n=document.querySelectorAll('script[src="'+e+'"]'))&&n.length>0){if(C(i)){if(k(t))return S((function(){return void 0!==window[t]}),(function(){i()})),!1;i()}}else{var r=document.createElement("script");r.type="text/javascript",r.src=e,r.onload=function(){if(C(i)){if(k(t))return S((function(){return void 0!==window[t]}),(function(){i()})),!1;i()}},document.body.appendChild(r)}}}function T(){return"navigator"in window&&window.navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i)}function C(e){return"function"==typeof e}function k(e){return"string"==typeof e}function E(e){return!(!e||!e.nodeType||1!=e.nodeType)}function A(e){return Array.isArray(e)}function L(e){return e&&e.length&&isFinite(e.length)}function I(e){return"object"===s(e)&&null!=e&&!C(e)&&!A(e)}function O(e){return null==e}function P(e,t){return null!==e&&hasOwnProperty.call(e,t)}function M(e){if(I(e)){if(e.keys)return e.keys().length;var t=0;for(var i in e)P(e,i)&&t++;return t}return e.length}function z(e){return!isNaN(parseFloat(e))&&isFinite(e)}function X(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,t=document.querySelectorAll(".gbtn[data-taborder]:not(.disabled)");if(!t.length)return!1;if(1==t.length)return t[0];"string"==typeof e&&(e=parseInt(e));var i=[];r(t,(function(e){i.push(e.getAttribute("data-taborder"))}));var n=Math.max.apply(Math,i.map((function(e){return parseInt(e)}))),s=e<0?1:e+1;s>n&&(s="1");var l=i.filter((function(e){return e>=parseInt(s)})),o=l.sort()[0];return document.querySelector('.gbtn[data-taborder="'.concat(o,'"]'))}function Y(e){if(e.events.hasOwnProperty("keyboard"))return!1;e.events.keyboard=h("keydown",{onElement:window,withCallback:function(t,i){var n=(t=t||window.event).keyCode;if(9==n){var s=document.querySelector(".gbtn.focused");if(!s){var l=!(!document.activeElement||!document.activeElement.nodeName)&&document.activeElement.nodeName.toLocaleLowerCase();if("input"==l||"textarea"==l||"button"==l)return}t.preventDefault();var o=document.querySelectorAll(".gbtn[data-taborder]");if(!o||o.length<=0)return;if(!s){var r=X();return void(r&&(r.focus(),d(r,"focused")))}var a=X(s.getAttribute("data-taborder"));c(s,"focused"),a&&(a.focus(),d(a,"focused"))}39==n&&e.nextSlide(),37==n&&e.prevSlide(),27==n&&e.close()}})}var q=i((function t(i,n){var s=this,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(e(this,t),this.img=i,this.slide=n,this.onclose=l,this.img.setZoomEvents)return!1;this.active=!1,this.zoomedIn=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.img.addEventListener("mousedown",(function(e){return s.dragStart(e)}),!1),this.img.addEventListener("mouseup",(function(e){return s.dragEnd(e)}),!1),this.img.addEventListener("mousemove",(function(e){return s.drag(e)}),!1),this.img.addEventListener("click",(function(e){return s.slide.classList.contains("dragging-nav")?(s.zoomOut(),!1):s.zoomedIn?void(s.zoomedIn&&!s.dragging&&s.zoomOut()):s.zoomIn()}),!1),this.img.setZoomEvents=!0}),[{key:"zoomIn",value:function(){var e=this.widowWidth();if(!(this.zoomedIn||e<=768)){var t=this.img;if(t.setAttribute("data-style",t.getAttribute("style")),t.style.maxWidth=t.naturalWidth+"px",t.style.maxHeight=t.naturalHeight+"px",t.naturalWidth>e){var i=e/2-t.naturalWidth/2;this.setTranslate(this.img.parentNode,i,0)}this.slide.classList.add("zoomed"),this.zoomedIn=!0}}},{key:"zoomOut",value:function(){this.img.parentNode.setAttribute("style",""),this.img.setAttribute("style",this.img.getAttribute("data-style")),this.slide.classList.remove("zoomed"),this.zoomedIn=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.onclose&&"function"==typeof this.onclose&&this.onclose()}},{key:"dragStart",value:function(e){e.preventDefault(),this.zoomedIn?("touchstart"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset),e.target===this.img&&(this.active=!0,this.img.classList.add("dragging"))):this.active=!1}},{key:"dragEnd",value:function(e){var t=this;e.preventDefault(),this.initialX=this.currentX,this.initialY=this.currentY,this.active=!1,setTimeout((function(){t.dragging=!1,t.img.isDragging=!1,t.img.classList.remove("dragging")}),100)}},{key:"drag",value:function(e){this.active&&(e.preventDefault(),"touchmove"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.img.isDragging=!0,this.dragging=!0,this.setTranslate(this.img,this.currentX,this.currentY))}},{key:"onMove",value:function(e){if(this.zoomedIn){var t=e.clientX-this.img.naturalWidth/2,i=e.clientY-this.img.naturalHeight/2;this.setTranslate(this.img,t,i)}}},{key:"setTranslate",value:function(e,t,i){e.style.transform="translate3d("+t+"px, "+i+"px, 0)"}},{key:"widowWidth",value:function(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}}]),N=i((function t(){var i=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,t);var s=n.dragEl,l=n.toleranceX,o=void 0===l?40:l,r=n.toleranceY,a=void 0===r?65:r,h=n.slide,d=void 0===h?null:h,c=n.instance,u=void 0===c?null:c;this.el=s,this.active=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.direction=null,this.lastDirection=null,this.toleranceX=o,this.toleranceY=a,this.toleranceReached=!1,this.dragContainer=this.el,this.slide=d,this.instance=u,this.el.addEventListener("mousedown",(function(e){return i.dragStart(e)}),!1),this.el.addEventListener("mouseup",(function(e){return i.dragEnd(e)}),!1),this.el.addEventListener("mousemove",(function(e){return i.drag(e)}),!1)}),[{key:"dragStart",value:function(e){if(this.slide.classList.contains("zoomed"))this.active=!1;else{"touchstart"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset);var t=e.target.nodeName.toLowerCase();e.target.classList.contains("nodrag")||g(e.target,".nodrag")||-1!==["input","select","textarea","button","a"].indexOf(t)?this.active=!1:(e.preventDefault(),(e.target===this.el||"img"!==t&&g(e.target,".gslide-inline"))&&(this.active=!0,this.el.classList.add("dragging"),this.dragContainer=g(e.target,".ginner-container")))}}},{key:"dragEnd",value:function(e){var t=this;e&&e.preventDefault(),this.initialX=0,this.initialY=0,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.active=!1,this.doSlideChange&&(this.instance.preventOutsideClick=!0,"right"==this.doSlideChange&&this.instance.prevSlide(),"left"==this.doSlideChange&&this.instance.nextSlide()),this.doSlideClose&&this.instance.close(),this.toleranceReached||this.setTranslate(this.dragContainer,0,0,!0),setTimeout((function(){t.instance.preventOutsideClick=!1,t.toleranceReached=!1,t.lastDirection=null,t.dragging=!1,t.el.isDragging=!1,t.el.classList.remove("dragging"),t.slide.classList.remove("dragging-nav"),t.dragContainer.style.transform="",t.dragContainer.style.transition=""}),100)}},{key:"drag",value:function(e){if(this.active){e.preventDefault(),this.slide.classList.add("dragging-nav"),"touchmove"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.el.isDragging=!0,this.dragging=!0,this.doSlideChange=!1,this.doSlideClose=!1;var t=Math.abs(this.currentX),i=Math.abs(this.currentY);if(t>0&&t>=Math.abs(this.currentY)&&(!this.lastDirection||"x"==this.lastDirection)){this.yOffset=0,this.lastDirection="x",this.setTranslate(this.dragContainer,this.currentX,0);var n=this.shouldChange();if(!this.instance.settings.dragAutoSnap&&n&&(this.doSlideChange=n),this.instance.settings.dragAutoSnap&&n)return this.instance.preventOutsideClick=!0,this.toleranceReached=!0,this.active=!1,this.instance.preventOutsideClick=!0,this.dragEnd(null),"right"==n&&this.instance.prevSlide(),void("left"==n&&this.instance.nextSlide())}if(this.toleranceY>0&&i>0&&i>=t&&(!this.lastDirection||"y"==this.lastDirection)){this.xOffset=0,this.lastDirection="y",this.setTranslate(this.dragContainer,0,this.currentY);var s=this.shouldClose();return!this.instance.settings.dragAutoSnap&&s&&(this.doSlideClose=!0),void(this.instance.settings.dragAutoSnap&&s&&this.instance.close())}}}},{key:"shouldChange",value:function(){var e=!1;if(Math.abs(this.currentX)>=this.toleranceX){var t=this.currentX>0?"right":"left";("left"==t&&this.slide!==this.slide.parentNode.lastChild||"right"==t&&this.slide!==this.slide.parentNode.firstChild)&&(e=t)}return e}},{key:"shouldClose",value:function(){var e=!1;return Math.abs(this.currentY)>=this.toleranceY&&(e=!0),e}},{key:"setTranslate",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e.style.transition=n?"all .2s ease":"",e.style.transform="translate3d(".concat(t,"px, ").concat(i,"px, 0)")}}]);function D(e,t,i,n){var s=e.querySelector(".gslide-media"),l=new Image,o="gSlideTitle_"+i,r="gSlideDesc_"+i;l.addEventListener("load",(function(){C(n)&&n()}),!1),l.src=t.href,""!=t.sizes&&""!=t.srcset&&(l.sizes=t.sizes,l.srcset=t.srcset),l.alt="",O(t.alt)||""===t.alt||(l.alt=t.alt),""!==t.title&&l.setAttribute("aria-labelledby",o),""!==t.description&&l.setAttribute("aria-describedby",r),t.hasOwnProperty("_hasCustomWidth")&&t._hasCustomWidth&&(l.style.width=t.width),t.hasOwnProperty("_hasCustomHeight")&&t._hasCustomHeight&&(l.style.height=t.height),s.insertBefore(l,s.firstChild)}function _(e,t,i,n){var s=this,l=e.querySelector(".ginner-container"),o="gvideo"+i,r=e.querySelector(".gslide-media"),a=this.getAllPlayers();d(l,"gvideo-container"),r.insertBefore(y('<div class="gvideo-wrapper"></div>'),r.firstChild);var h=e.querySelector(".gvideo-wrapper");w(this.settings.plyr.css,"Plyr");var c=t.href,u=null==t?void 0:t.videoProvider,g=!1;r.style.maxWidth=t.width,w(this.settings.plyr.js,"Plyr",(function(){if(!u&&c.match(/vimeo\.com\/([0-9]*)/)&&(u="vimeo"),!u&&(c.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/)||c.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/)||c.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/)||c.match(/(youtube\.com|youtube-nocookie\.com)\/shorts\/([a-zA-Z0-9\-_]+)/))&&(u="youtube"),"local"===u||!u){u="local";var l='<video id="'+o+'" ';l+='style="background:#000; max-width: '.concat(t.width,';" '),l+='preload="metadata" ',l+='x-webkit-airplay="allow" ',l+="playsinline ",l+="controls ",l+='class="gvideo-local">',l+='<source src="'.concat(c,'">'),g=y(l+="</video>")}var r=g||y('<div id="'.concat(o,'" data-plyr-provider="').concat(u,'" data-plyr-embed-id="').concat(c,'"></div>'));d(h,"".concat(u,"-video gvideo")),h.appendChild(r),h.setAttribute("data-id",o),h.setAttribute("data-index",i);var v=P(s.settings.plyr,"config")?s.settings.plyr.config:{},f=new Plyr("#"+o,v);f.on("ready",(function(e){a[o]=e.detail.plyr,C(n)&&n()})),S((function(){return e.querySelector("iframe")&&"true"==e.querySelector("iframe").dataset.ready}),(function(){s.resize(e)})),f.on("enterfullscreen",W),f.on("exitfullscreen",W)}))}function W(e){var t=g(e.target,".gslide-media");"enterfullscreen"===e.type&&d(t,"fullscreen"),"exitfullscreen"===e.type&&c(t,"fullscreen")}function B(e,t,i,n){var s,l=this,o=e.querySelector(".gslide-media"),r=!(!P(t,"href")||!t.href)&&t.href.split("#").pop().trim(),a=!(!P(t,"content")||!t.content)&&t.content;if(a&&(k(a)&&(s=y('<div class="ginlined-content">'.concat(a,"</div>"))),E(a))){"none"==a.style.display&&(a.style.display="block");var c=document.createElement("div");c.className="ginlined-content",c.appendChild(a),s=c}if(r){var u=document.getElementById(r);if(!u)return!1;var g=u.cloneNode(!0);g.style.height=t.height,g.style.maxWidth=t.width,d(g,"ginlined-content"),s=g}if(!s)return console.error("Unable to append inline slide content",t),!1;o.style.height=t.height,o.style.width=t.width,o.appendChild(s),this.events["inlineclose"+r]=h("click",{onElement:o.querySelectorAll(".gtrigger-close"),withCallback:function(e){e.preventDefault(),l.close()}}),C(n)&&n()}function H(e,t,i,n){var s=e.querySelector(".gslide-media"),l=function(e){var t=e.url,i=e.allow,n=e.callback,s=e.appendTo,l=document.createElement("iframe");return l.className="vimeo-video gvideo",l.src=t,l.style.width="100%",l.style.height="100%",i&&l.setAttribute("allow",i),l.onload=function(){l.onload=null,d(l,"node-ready"),C(n)&&n()},s&&s.appendChild(l),l}({url:t.href,callback:n});s.parentNode.style.maxWidth=t.width,s.parentNode.style.height=t.height,s.appendChild(l)}var j=i((function t(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,t),this.defaults={href:"",sizes:"",srcset:"",title:"",type:"",videoProvider:"",description:"",alt:"",descPosition:"bottom",effect:"",width:"",height:"",content:!1,zoomable:!0,draggable:!0},I(i)&&(this.defaults=o(this.defaults,i))}),[{key:"sourceType",value:function(e){var t=e;return null!==(e=e.toLowerCase()).match(/\.(jpeg|jpg|jpe|gif|png|apn|webp|avif|svg)/)?"image":e.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/)||e.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/)||e.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/)||e.match(/(youtube\.com|youtube-nocookie\.com)\/shorts\/([a-zA-Z0-9\-_]+)/)||e.match(/vimeo\.com\/([0-9]*)/)||null!==e.match(/\.(mp4|ogg|webm|mov)/)?"video":null!==e.match(/\.(mp3|wav|wma|aac|ogg)/)?"audio":e.indexOf("#")>-1&&""!==t.split("#").pop().trim()?"inline":e.indexOf("goajax=true")>-1?"ajax":"external"}},{key:"parseConfig",value:function(e,t){var i=this,n=o({descPosition:t.descPosition},this.defaults);if(I(e)&&!E(e)){P(e,"type")||(P(e,"content")&&e.content?e.type="inline":P(e,"href")&&(e.type=this.sourceType(e.href)));var s=o(n,e);return this.setSize(s,t),s}var l="",a=e.getAttribute("data-glightbox"),h=e.nodeName.toLowerCase();if("a"===h&&(l=e.href),"img"===h&&(l=e.src,n.alt=e.alt),n.href=l,r(n,(function(s,l){P(t,l)&&"width"!==l&&(n[l]=t[l]);var o=e.dataset[l];O(o)||(n[l]=i.sanitizeValue(o))})),n.content&&(n.type="inline"),!n.type&&l&&(n.type=this.sourceType(l)),O(a)){if(!n.title&&"a"==h){var d=e.title;O(d)||""===d||(n.title=d)}if(!n.title&&"img"==h){var c=e.alt;O(c)||""===c||(n.title=c)}}else{var u=[];r(n,(function(e,t){u.push(";\\s?"+t)})),u=u.join("\\s?:|"),""!==a.trim()&&r(n,(function(e,t){var s=a,l=new RegExp("s?"+t+"s?:s?(.*?)("+u+"s?:|$)"),o=s.match(l);if(o&&o.length&&o[1]){var r=o[1].trim().replace(/;\s*$/,"");n[t]=i.sanitizeValue(r)}}))}if(n.description&&"."===n.description.substring(0,1)){var g;try{g=document.querySelector(n.description).innerHTML}catch(e){if(!(e instanceof DOMException))throw e}g&&(n.description=g)}if(!n.description){var v=e.querySelector(".glightbox-desc");v&&(n.description=v.innerHTML)}return this.setSize(n,t,e),this.slideConfig=n,n}},{key:"setSize",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n="video"==e.type?this.checkSize(t.videosWidth):this.checkSize(t.width),s=this.checkSize(t.height);return e.width=P(e,"width")&&""!==e.width?this.checkSize(e.width):n,e.height=P(e,"height")&&""!==e.height?this.checkSize(e.height):s,i&&"image"==e.type&&(e._hasCustomWidth=!!i.dataset.width,e._hasCustomHeight=!!i.dataset.height),e}},{key:"checkSize",value:function(e){return z(e)?"".concat(e,"px"):e}},{key:"sanitizeValue",value:function(e){return"true"!==e&&"false"!==e?e:"true"===e}}]),V=i((function t(i,n,s){e(this,t),this.element=i,this.instance=n,this.index=s}),[{key:"setContent",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(u(t,"loaded"))return!1;var n=this.instance.settings,s=this.slideConfig,l=T();C(n.beforeSlideLoad)&&n.beforeSlideLoad({index:this.index,slide:t,player:!1});var o=s.type,r=s.descPosition,a=t.querySelector(".gslide-media"),h=t.querySelector(".gslide-title"),c=t.querySelector(".gslide-desc"),g=t.querySelector(".gdesc-inner"),v=i,f="gSlideTitle_"+this.index,p="gSlideDesc_"+this.index;if(C(n.afterSlideLoad)&&(v=function(){C(i)&&i(),n.afterSlideLoad({index:e.index,slide:t,player:e.instance.getSlidePlayerInstance(e.index)})}),""==s.title&&""==s.description?g&&g.parentNode.parentNode.removeChild(g.parentNode):(h&&""!==s.title?(h.id=f,h.innerHTML=s.title):h.parentNode.removeChild(h),c&&""!==s.description?(c.id=p,l&&n.moreLength>0?(s.smallDescription=this.slideShortDesc(s.description,n.moreLength,n.moreText),c.innerHTML=s.smallDescription,this.descriptionEvents(c,s)):c.innerHTML=s.description):c.parentNode.removeChild(c),d(a.parentNode,"desc-".concat(r)),d(g.parentNode,"description-".concat(r))),d(a,"gslide-".concat(o)),d(t,"loaded"),"video"!==o){if("external"!==o)return"inline"===o?(B.apply(this.instance,[t,s,this.index,v]),void(s.draggable&&new N({dragEl:t.querySelector(".gslide-inline"),toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:this.instance}))):void("image"!==o?C(v)&&v():D(t,s,this.index,(function(){var i=t.querySelector("img");s.draggable&&new N({dragEl:i,toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:e.instance}),s.zoomable&&i.naturalWidth>i.offsetWidth&&(d(i,"zoomable"),new q(i,t,(function(){e.instance.resize()}))),C(v)&&v()})));H.apply(this,[t,s,this.index,v])}else _.apply(this.instance,[t,s,this.index,v])}},{key:"slideShortDesc",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=document.createElement("div");n.innerHTML=e;var s=n.innerText,l=i;if((e=s.trim()).length<=t)return e;var o=e.substr(0,t-1);return l?(n=null,o+'... <a href="#" class="desc-more">'+i+"</a>"):o}},{key:"descriptionEvents",value:function(e,t){var i=this,n=e.querySelector(".desc-more");if(!n)return!1;h("click",{onElement:n,withCallback:function(e,n){e.preventDefault();var s=document.body,l=g(n,".gslide-desc");if(!l)return!1;l.innerHTML=t.description,d(s,"gdesc-open");var o=h("click",{onElement:[s,g(l,".gslide-description")],withCallback:function(e,n){"a"!==e.target.nodeName.toLowerCase()&&(c(s,"gdesc-open"),d(s,"gdesc-closed"),l.innerHTML=t.smallDescription,i.descriptionEvents(l,t),setTimeout((function(){c(s,"gdesc-closed")}),400),o.destroy())}})}})}},{key:"create",value:function(){return y(this.instance.settings.slideHTML)}},{key:"getConfig",value:function(){E(this.element)||this.element.hasOwnProperty("draggable")||(this.element.draggable=this.instance.settings.draggable);var e=new j(this.instance.settings.slideExtraAttributes);return this.slideConfig=e.parseConfig(this.element,this.instance.settings),this.slideConfig}}]);function F(e){return Math.sqrt(e.x*e.x+e.y*e.y)}function R(e,t){var i=function(e,t){var i=F(e)*F(t);if(0===i)return 0;var n=function(e,t){return e.x*t.x+e.y*t.y}(e,t)/i;return n>1&&(n=1),Math.acos(n)}(e,t);return function(e,t){return e.x*t.y-t.x*e.y}(e,t)>0&&(i*=-1),180*i/Math.PI}var G=i((function t(i){e(this,t),this.handlers=[],this.el=i}),[{key:"add",value:function(e){this.handlers.push(e)}},{key:"del",value:function(e){e||(this.handlers=[]);for(var t=this.handlers.length;t>=0;t--)this.handlers[t]===e&&this.handlers.splice(t,1)}},{key:"dispatch",value:function(){for(var e=0,t=this.handlers.length;e<t;e++){var i=this.handlers[e];"function"==typeof i&&i.apply(this.el,arguments)}}}]);function Z(e,t){var i=new G(e);return i.add(t),i}var U=i((function t(i,n){e(this,t),this.element="string"==typeof i?document.querySelector(i):i,this.start=this.start.bind(this),this.move=this.move.bind(this),this.end=this.end.bind(this),this.cancel=this.cancel.bind(this),this.element.addEventListener("touchstart",this.start,!1),this.element.addEventListener("touchmove",this.move,!1),this.element.addEventListener("touchend",this.end,!1),this.element.addEventListener("touchcancel",this.cancel,!1),this.preV={x:null,y:null},this.pinchStartLen=null,this.zoom=1,this.isDoubleTap=!1;var s=function(){};this.rotate=Z(this.element,n.rotate||s),this.touchStart=Z(this.element,n.touchStart||s),this.multipointStart=Z(this.element,n.multipointStart||s),this.multipointEnd=Z(this.element,n.multipointEnd||s),this.pinch=Z(this.element,n.pinch||s),this.swipe=Z(this.element,n.swipe||s),this.tap=Z(this.element,n.tap||s),this.doubleTap=Z(this.element,n.doubleTap||s),this.longTap=Z(this.element,n.longTap||s),this.singleTap=Z(this.element,n.singleTap||s),this.pressMove=Z(this.element,n.pressMove||s),this.twoFingerPressMove=Z(this.element,n.twoFingerPressMove||s),this.touchMove=Z(this.element,n.touchMove||s),this.touchEnd=Z(this.element,n.touchEnd||s),this.touchCancel=Z(this.element,n.touchCancel||s),this.translateContainer=this.element,this._cancelAllHandler=this.cancelAll.bind(this),window.addEventListener("scroll",this._cancelAllHandler),this.delta=null,this.last=null,this.now=null,this.tapTimeout=null,this.singleTapTimeout=null,this.longTapTimeout=null,this.swipeTimeout=null,this.x1=this.x2=this.y1=this.y2=null,this.preTapPosition={x:null,y:null}}),[{key:"start",value:function(e){if(e.touches)if(e.target&&e.target.nodeName&&["a","button","input"].indexOf(e.target.nodeName.toLowerCase())>=0)console.log("ignore drag for this touched element",e.target.nodeName.toLowerCase());else{this.now=Date.now(),this.x1=e.touches[0].pageX,this.y1=e.touches[0].pageY,this.delta=this.now-(this.last||this.now),this.touchStart.dispatch(e,this.element),null!==this.preTapPosition.x&&(this.isDoubleTap=this.delta>0&&this.delta<=250&&Math.abs(this.preTapPosition.x-this.x1)<30&&Math.abs(this.preTapPosition.y-this.y1)<30,this.isDoubleTap&&clearTimeout(this.singleTapTimeout)),this.preTapPosition.x=this.x1,this.preTapPosition.y=this.y1,this.last=this.now;var t=this.preV;if(e.touches.length>1){this._cancelLongTap(),this._cancelSingleTap();var i={x:e.touches[1].pageX-this.x1,y:e.touches[1].pageY-this.y1};t.x=i.x,t.y=i.y,this.pinchStartLen=F(t),this.multipointStart.dispatch(e,this.element)}this._preventTap=!1,this.longTapTimeout=setTimeout(function(){this.longTap.dispatch(e,this.element),this._preventTap=!0}.bind(this),750)}}},{key:"move",value:function(e){if(e.touches){var t=this.preV,i=e.touches.length,n=e.touches[0].pageX,s=e.touches[0].pageY;if(this.isDoubleTap=!1,i>1){var l=e.touches[1].pageX,o=e.touches[1].pageY,r={x:e.touches[1].pageX-n,y:e.touches[1].pageY-s};null!==t.x&&(this.pinchStartLen>0&&(e.zoom=F(r)/this.pinchStartLen,this.pinch.dispatch(e,this.element)),e.angle=R(r,t),this.rotate.dispatch(e,this.element)),t.x=r.x,t.y=r.y,null!==this.x2&&null!==this.sx2?(e.deltaX=(n-this.x2+l-this.sx2)/2,e.deltaY=(s-this.y2+o-this.sy2)/2):(e.deltaX=0,e.deltaY=0),this.twoFingerPressMove.dispatch(e,this.element),this.sx2=l,this.sy2=o}else{if(null!==this.x2){e.deltaX=n-this.x2,e.deltaY=s-this.y2;var a=Math.abs(this.x1-this.x2),h=Math.abs(this.y1-this.y2);(a>10||h>10)&&(this._preventTap=!0)}else e.deltaX=0,e.deltaY=0;this.pressMove.dispatch(e,this.element)}this.touchMove.dispatch(e,this.element),this._cancelLongTap(),this.x2=n,this.y2=s,i>1&&e.preventDefault()}}},{key:"end",value:function(e){if(e.changedTouches){this._cancelLongTap();var t=this;e.touches.length<2&&(this.multipointEnd.dispatch(e,this.element),this.sx2=this.sy2=null),this.x2&&Math.abs(this.x1-this.x2)>30||this.y2&&Math.abs(this.y1-this.y2)>30?(e.direction=this._swipeDirection(this.x1,this.x2,this.y1,this.y2),this.swipeTimeout=setTimeout((function(){t.swipe.dispatch(e,t.element)}),0)):(this.tapTimeout=setTimeout((function(){t._preventTap||t.tap.dispatch(e,t.element),t.isDoubleTap&&(t.doubleTap.dispatch(e,t.element),t.isDoubleTap=!1)}),0),t.isDoubleTap||(t.singleTapTimeout=setTimeout((function(){t.singleTap.dispatch(e,t.element)}),250))),this.touchEnd.dispatch(e,this.element),this.preV.x=0,this.preV.y=0,this.zoom=1,this.pinchStartLen=null,this.x1=this.x2=this.y1=this.y2=null}}},{key:"cancelAll",value:function(){this._preventTap=!0,clearTimeout(this.singleTapTimeout),clearTimeout(this.tapTimeout),clearTimeout(this.longTapTimeout),clearTimeout(this.swipeTimeout)}},{key:"cancel",value:function(e){this.cancelAll(),this.touchCancel.dispatch(e,this.element)}},{key:"_cancelLongTap",value:function(){clearTimeout(this.longTapTimeout)}},{key:"_cancelSingleTap",value:function(){clearTimeout(this.singleTapTimeout)}},{key:"_swipeDirection",value:function(e,t,i,n){return Math.abs(e-t)>=Math.abs(i-n)?e-t>0?"Left":"Right":i-n>0?"Up":"Down"}},{key:"on",value:function(e,t){this[e]&&this[e].add(t)}},{key:"off",value:function(e,t){this[e]&&this[e].del(t)}},{key:"destroy",value:function(){return this.singleTapTimeout&&clearTimeout(this.singleTapTimeout),this.tapTimeout&&clearTimeout(this.tapTimeout),this.longTapTimeout&&clearTimeout(this.longTapTimeout),this.swipeTimeout&&clearTimeout(this.swipeTimeout),this.element.removeEventListener("touchstart",this.start),this.element.removeEventListener("touchmove",this.move),this.element.removeEventListener("touchend",this.end),this.element.removeEventListener("touchcancel",this.cancel),this.rotate.del(),this.touchStart.del(),this.multipointStart.del(),this.multipointEnd.del(),this.pinch.del(),this.swipe.del(),this.tap.del(),this.doubleTap.del(),this.longTap.del(),this.singleTap.del(),this.pressMove.del(),this.twoFingerPressMove.del(),this.touchMove.del(),this.touchEnd.del(),this.touchCancel.del(),this.preV=this.pinchStartLen=this.zoom=this.isDoubleTap=this.delta=this.last=this.now=this.tapTimeout=this.singleTapTimeout=this.longTapTimeout=this.swipeTimeout=this.x1=this.x2=this.y1=this.y2=this.preTapPosition=this.rotate=this.touchStart=this.multipointStart=this.multipointEnd=this.pinch=this.swipe=this.tap=this.doubleTap=this.longTap=this.singleTap=this.pressMove=this.touchMove=this.touchEnd=this.touchCancel=this.twoFingerPressMove=null,window.removeEventListener("scroll",this._cancelAllHandler),null}}]);function $(e){var t=function(){var e,t=document.createElement("fakeelement"),i={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(e in i)if(void 0!==t.style[e])return i[e]}(),i=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,n=u(e,"gslide-media")?e:e.querySelector(".gslide-media"),s=g(n,".ginner-container"),l=e.querySelector(".gslide-description");i>769&&(n=s),d(n,"greset"),f(n,"translate3d(0, 0, 0)"),h(t,{onElement:n,once:!0,withCallback:function(e,t){c(n,"greset")}}),n.style.opacity="",l&&(l.style.opacity="")}function J(e){if(e.events.hasOwnProperty("touch"))return!1;var t,i,n,s=x(),l=s.width,o=s.height,r=!1,a=null,h=null,v=null,p=!1,m=1,y=1,b=!1,S=!1,w=null,T=null,C=null,k=null,E=0,A=0,L=!1,I=!1,O={},P={},M=0,z=0,X=document.getElementById("glightbox-slider"),Y=document.querySelector(".goverlay"),q=new U(X,{touchStart:function(t){if(r=!0,(u(t.targetTouches[0].target,"ginner-container")||g(t.targetTouches[0].target,".gslide-desc")||"a"==t.targetTouches[0].target.nodeName.toLowerCase())&&(r=!1),g(t.targetTouches[0].target,".gslide-inline")&&!u(t.targetTouches[0].target.parentNode,"gslide-inline")&&(r=!1),r){if(P=t.targetTouches[0],O.pageX=t.targetTouches[0].pageX,O.pageY=t.targetTouches[0].pageY,M=t.targetTouches[0].clientX,z=t.targetTouches[0].clientY,a=e.activeSlide,h=a.querySelector(".gslide-media"),n=a.querySelector(".gslide-inline"),v=null,u(h,"gslide-image")&&(v=h.querySelector("img")),(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)>769&&(h=a.querySelector(".ginner-container")),c(Y,"greset"),t.pageX>20&&t.pageX<window.innerWidth-20)return;t.preventDefault()}},touchMove:function(s){if(r&&(P=s.targetTouches[0],!b&&!S)){if(n&&n.offsetHeight>o){var a=O.pageX-P.pageX;if(Math.abs(a)<=13)return!1}p=!0;var d,c=s.targetTouches[0].clientX,u=s.targetTouches[0].clientY,g=M-c,m=z-u;if(Math.abs(g)>Math.abs(m)?(L=!1,I=!0):(I=!1,L=!0),t=P.pageX-O.pageX,E=100*t/l,i=P.pageY-O.pageY,A=100*i/o,L&&v&&(d=1-Math.abs(i)/o,Y.style.opacity=d,e.settings.touchFollowAxis&&(E=0)),I&&(d=1-Math.abs(t)/l,h.style.opacity=d,e.settings.touchFollowAxis&&(A=0)),!v)return f(h,"translate3d(".concat(E,"%, 0, 0)"));f(h,"translate3d(".concat(E,"%, ").concat(A,"%, 0)"))}},touchEnd:function(){if(r){if(p=!1,S||b)return C=w,void(k=T);var t=Math.abs(parseInt(A)),i=Math.abs(parseInt(E));if(!(t>29&&v))return t<29&&i<25?(d(Y,"greset"),Y.style.opacity=1,$(h)):void 0;e.close()}},multipointEnd:function(){setTimeout((function(){b=!1}),50)},multipointStart:function(){b=!0,m=y||1},pinch:function(e){if(!v||p)return!1;b=!0,v.scaleX=v.scaleY=m*e.zoom;var t=m*e.zoom;if(S=!0,t<=1)return S=!1,t=1,k=null,C=null,w=null,T=null,void v.setAttribute("style","");t>4.5&&(t=4.5),v.style.transform="scale3d(".concat(t,", ").concat(t,", 1)"),y=t},pressMove:function(e){if(S&&!b){var t=P.pageX-O.pageX,i=P.pageY-O.pageY;C&&(t+=C),k&&(i+=k),w=t,T=i;var n="translate3d(".concat(t,"px, ").concat(i,"px, 0)");y&&(n+=" scale3d(".concat(y,", ").concat(y,", 1)")),f(v,n)}},swipe:function(t){if(!S)if(b)b=!1;else{if("Left"==t.direction){if(e.index==e.elements.length-1)return $(h);e.nextSlide()}if("Right"==t.direction){if(0==e.index)return $(h);e.prevSlide()}}}});e.events.touch=q}var K=T(),Q=null!==T()||void 0!==document.createTouch||"ontouchstart"in window||"onmsgesturechange"in window||navigator.msMaxTouchPoints,ee=document.getElementsByTagName("html")[0],te={selector:".glightbox",elements:null,skin:"clean",theme:"clean",closeButton:!0,startAt:null,autoplayVideos:!0,autofocusVideos:!0,descPosition:"bottom",width:"900px",height:"506px",videosWidth:"960px",beforeSlideChange:null,afterSlideChange:null,beforeSlideLoad:null,afterSlideLoad:null,slideInserted:null,slideRemoved:null,slideExtraAttributes:null,onOpen:null,onClose:null,loop:!1,zoomable:!0,draggable:!0,dragAutoSnap:!1,dragToleranceX:40,dragToleranceY:65,preload:!0,oneSlidePerOpen:!1,touchNavigation:!0,touchFollowAxis:!0,keyboardNavigation:!0,closeOnOutsideClick:!0,plugins:!1,plyr:{css:"https://cdn.plyr.io/3.6.12/plyr.css",js:"https://cdn.plyr.io/3.6.12/plyr.js",config:{ratio:"16:9",fullscreen:{enabled:!0,iosNative:!0},youtube:{noCookie:!0,rel:0,showinfo:0,iv_load_policy:3},vimeo:{byline:!1,portrait:!1,title:!1,transparent:!1}}},openEffect:"zoom",closeEffect:"zoom",slideEffect:"slide",moreText:"See more",moreLength:60,cssEfects:{fade:{in:"fadeIn",out:"fadeOut"},zoom:{in:"zoomIn",out:"zoomOut"},slide:{in:"slideInRight",out:"slideOutLeft"},slideBack:{in:"slideInLeft",out:"slideOutRight"},none:{in:"none",out:"none"}},svg:{close:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M505.943,6.058c-8.077-8.077-21.172-8.077-29.249,0L6.058,476.693c-8.077,8.077-8.077,21.172,0,29.249C10.096,509.982,15.39,512,20.683,512c5.293,0,10.586-2.019,14.625-6.059L505.943,35.306C514.019,27.23,514.019,14.135,505.943,6.058z"/></g></g><g><g><path d="M505.942,476.694L35.306,6.059c-8.076-8.077-21.172-8.077-29.248,0c-8.077,8.076-8.077,21.171,0,29.248l470.636,470.636c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.624-6.057C514.018,497.866,514.018,484.771,505.942,476.694z"/></g></g></svg>',next:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"> <g><path d="M360.731,229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1,0s-5.3,13.8,0,19.1l215.5,215.5l-215.5,215.5c-5.3,5.3-5.3,13.8,0,19.1c2.6,2.6,6.1,4,9.5,4c3.4,0,6.9-1.3,9.5-4l225.1-225.1C365.931,242.875,365.931,234.275,360.731,229.075z"/></g></svg>',prev:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"><g><path d="M145.188,238.575l215.5-215.5c5.3-5.3,5.3-13.8,0-19.1s-13.8-5.3-19.1,0l-225.1,225.1c-5.3,5.3-5.3,13.8,0,19.1l225.1,225c2.6,2.6,6.1,4,9.5,4s6.9-1.3,9.5-4c5.3-5.3,5.3-13.8,0-19.1L145.188,238.575z"/></g></svg>'},slideHTML:'<div class="gslide">\n    <div class="gslide-inner-content">\n        <div class="ginner-container">\n            <div class="gslide-media">\n            </div>\n            <div class="gslide-description">\n                <div class="gdesc-inner">\n                    <h4 class="gslide-title"></h4>\n                    <div class="gslide-desc"></div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>',lightboxHTML:'<div id="glightbox-body" class="glightbox-container" tabindex="-1" role="dialog" aria-hidden="false">\n    <div class="gloader visible"></div>\n    <div class="goverlay"></div>\n    <div class="gcontainer">\n    <div id="glightbox-slider" class="gslider"></div>\n    <button class="gclose gbtn" aria-label="Close" data-taborder="3">{closeSVG}</button>\n    <button class="gprev gbtn" aria-label="Previous" data-taborder="2">{prevSVG}</button>\n    <button class="gnext gbtn" aria-label="Next" data-taborder="1">{nextSVG}</button>\n</div>\n</div>'},ie=i((function t(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,t),this.customOptions=i,this.settings=o(te,i),this.effectsClasses=this.getAnimationClasses(),this.videoPlayers={},this.apiEvents=[],this.fullElementsList=!1}),[{key:"init",value:function(){var e=this,t=this.getSelector();t&&(this.baseEvents=h("click",{onElement:t,withCallback:function(t,i){t.preventDefault(),e.open(i)}})),this.elements=this.getElements()}},{key:"open",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(0===this.elements.length)return!1;this.activeSlide=null,this.prevActiveSlideIndex=null,this.prevActiveSlide=null;var i=z(t)?t:this.settings.startAt;if(E(e)){var n=e.getAttribute("data-gallery");n&&(this.fullElementsList=this.elements,this.elements=this.getGalleryElements(this.elements,n)),O(i)&&(i=this.getElementIndex(e))<0&&(i=0)}z(i)||(i=0),this.build(),v(this.overlay,"none"===this.settings.openEffect?"none":this.settings.cssEfects.fade.in);var s=document.body,l=window.innerWidth-document.documentElement.clientWidth;if(l>0){var o=document.createElement("style");o.type="text/css",o.className="gcss-styles",o.innerText=".gscrollbar-fixer {margin-right: ".concat(l,"px}"),document.head.appendChild(o),d(s,"gscrollbar-fixer")}d(s,"glightbox-open"),d(ee,"glightbox-open"),K&&(d(document.body,"glightbox-mobile"),this.settings.slideEffect="slide"),this.showSlide(i,!0),1===this.elements.length?(d(this.prevButton,"glightbox-button-hidden"),d(this.nextButton,"glightbox-button-hidden")):(c(this.prevButton,"glightbox-button-hidden"),c(this.nextButton,"glightbox-button-hidden")),this.lightboxOpen=!0,this.trigger("open"),C(this.settings.onOpen)&&this.settings.onOpen(),Q&&this.settings.touchNavigation&&J(this),this.settings.keyboardNavigation&&Y(this)}},{key:"openAt",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.open(null,e)}},{key:"showSlide",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];p(this.loader),this.index=parseInt(t);var n=this.slidesContainer.querySelector(".current");n&&c(n,"current"),this.slideAnimateOut();var s=this.slidesContainer.querySelectorAll(".gslide")[t];if(u(s,"loaded"))this.slideAnimateIn(s,i),m(this.loader);else{p(this.loader);var l=this.elements[t],o={index:this.index,slide:s,slideNode:s,slideConfig:l.slideConfig,slideIndex:this.index,trigger:l.node,player:null};this.trigger("slide_before_load",o),l.instance.setContent(s,(function(){m(e.loader),e.resize(),e.slideAnimateIn(s,i),e.trigger("slide_after_load",o)}))}this.slideDescription=s.querySelector(".gslide-description"),this.slideDescriptionContained=this.slideDescription&&u(this.slideDescription.parentNode,"gslide-media"),this.settings.preload&&(this.preloadSlide(t+1),this.preloadSlide(t-1)),this.updateNavigationClasses(),this.activeSlide=s}},{key:"preloadSlide",value:function(e){var t=this;if(e<0||e>this.elements.length-1)return!1;if(O(this.elements[e]))return!1;var i=this.slidesContainer.querySelectorAll(".gslide")[e];if(u(i,"loaded"))return!1;var n=this.elements[e],s=n.type,l={index:e,slide:i,slideNode:i,slideConfig:n.slideConfig,slideIndex:e,trigger:n.node,player:null};this.trigger("slide_before_load",l),"video"===s||"external"===s?setTimeout((function(){n.instance.setContent(i,(function(){t.trigger("slide_after_load",l)}))}),200):n.instance.setContent(i,(function(){t.trigger("slide_after_load",l)}))}},{key:"prevSlide",value:function(){this.goToSlide(this.index-1)}},{key:"nextSlide",value:function(){this.goToSlide(this.index+1)}},{key:"goToSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.prevActiveSlide=this.activeSlide,this.prevActiveSlideIndex=this.index,!this.loop()&&(e<0||e>this.elements.length-1))return!1;e<0?e=this.elements.length-1:e>=this.elements.length&&(e=0),this.showSlide(e)}},{key:"insertSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;t<0&&(t=this.elements.length);var i=new V(e,this,t),n=i.getConfig(),s=o({},n),l=i.create(),r=this.elements.length-1;s.index=t,s.node=!1,s.instance=i,s.slideConfig=n,this.elements.splice(t,0,s);var a=null,h=null;if(this.slidesContainer){if(t>r)this.slidesContainer.appendChild(l);else{var d=this.slidesContainer.querySelectorAll(".gslide")[t];this.slidesContainer.insertBefore(l,d)}(this.settings.preload&&0==this.index&&0==t||this.index-1==t||this.index+1==t)&&this.preloadSlide(t),0===this.index&&0===t&&(this.index=1),this.updateNavigationClasses(),a=this.slidesContainer.querySelectorAll(".gslide")[t],h=this.getSlidePlayerInstance(t),s.slideNode=a}this.trigger("slide_inserted",{index:t,slide:a,slideNode:a,slideConfig:n,slideIndex:t,trigger:null,player:h}),C(this.settings.slideInserted)&&this.settings.slideInserted({index:t,slide:a,player:h})}},{key:"removeSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1;if(e<0||e>this.elements.length-1)return!1;var t=this.slidesContainer&&this.slidesContainer.querySelectorAll(".gslide")[e];t&&(this.getActiveSlideIndex()==e&&(e==this.elements.length-1?this.prevSlide():this.nextSlide()),t.parentNode.removeChild(t)),this.elements.splice(e,1),this.trigger("slide_removed",e),C(this.settings.slideRemoved)&&this.settings.slideRemoved(e)}},{key:"slideAnimateIn",value:function(e,t){var i=this,n=e.querySelector(".gslide-media"),s=e.querySelector(".gslide-description"),l={index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlide,slideConfig:O(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:O(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},o={index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideConfig:this.elements[this.index].slideConfig,slideIndex:this.index,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)};if(n.offsetWidth>0&&s&&(m(s),s.style.display=""),c(e,this.effectsClasses),t)v(e,this.settings.cssEfects[this.settings.openEffect].in,(function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger("slide_changed",{prev:l,current:o}),C(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[l,o])}));else{var r=this.settings.slideEffect,a="none"!==r?this.settings.cssEfects[r].in:r;this.prevActiveSlideIndex>this.index&&"slide"==this.settings.slideEffect&&(a=this.settings.cssEfects.slideBack.in),v(e,a,(function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger("slide_changed",{prev:l,current:o}),C(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[l,o])}))}setTimeout((function(){i.resize(e)}),100),d(e,"current")}},{key:"slideAnimateOut",value:function(){if(!this.prevActiveSlide)return!1;var e=this.prevActiveSlide;c(e,this.effectsClasses),d(e,"prev");var t=this.settings.slideEffect,i="none"!==t?this.settings.cssEfects[t].out:t;this.slidePlayerPause(e),this.trigger("slide_before_change",{prev:{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlideIndex,slideConfig:O(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:O(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},current:{index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideIndex:this.index,slideConfig:this.elements[this.index].slideConfig,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)}}),C(this.settings.beforeSlideChange)&&this.settings.beforeSlideChange.apply(this,[{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},{index:this.index,slide:this.activeSlide,player:this.getSlidePlayerInstance(this.index)}]),this.prevActiveSlideIndex>this.index&&"slide"==this.settings.slideEffect&&(i=this.settings.cssEfects.slideBack.out),v(e,i,(function(){var t=e.querySelector(".ginner-container"),i=e.querySelector(".gslide-media"),n=e.querySelector(".gslide-description");t.style.transform="",i.style.transform="",c(i,"greset"),i.style.opacity="",n&&(n.style.opacity=""),c(e,"prev")}))}},{key:"getAllPlayers",value:function(){return this.videoPlayers}},{key:"getSlidePlayerInstance",value:function(e){var t="gvideo"+e,i=this.getAllPlayers();return!(!P(i,t)||!i[t])&&i[t]}},{key:"stopSlideVideo",value:function(e){if(E(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}console.log("stopSlideVideo is deprecated, use slidePlayerPause");var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:"slidePlayerPause",value:function(e){if(E(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:"playSlideVideo",value:function(e){if(E(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}console.log("playSlideVideo is deprecated, use slidePlayerPlay");var i=this.getSlidePlayerInstance(e);i&&!i.playing&&i.play()}},{key:"slidePlayerPlay",value:function(e){var t;if(!K||null!==(t=this.settings.plyr.config)&&void 0!==t&&t.muted){if(E(e)){var i=e.querySelector(".gvideo-wrapper");i&&(e=i.getAttribute("data-index"))}var n=this.getSlidePlayerInstance(e);n&&!n.playing&&(n.play(),this.settings.autofocusVideos&&n.elements.container.focus())}}},{key:"setElements",value:function(e){var t=this;this.settings.elements=!1;var i=[];e&&e.length&&r(e,(function(e,n){var s=new V(e,t,n),l=s.getConfig(),r=o({},l);r.slideConfig=l,r.instance=s,r.index=n,i.push(r)})),this.elements=i,this.lightboxOpen&&(this.slidesContainer.innerHTML="",this.elements.length&&(r(this.elements,(function(){var e=y(t.settings.slideHTML);t.slidesContainer.appendChild(e)})),this.showSlide(0,!0)))}},{key:"getElementIndex",value:function(e){var t=!1;return r(this.elements,(function(i,n){if(P(i,"node")&&i.node==e)return t=n,!0})),t}},{key:"getElements",value:function(){var e=this,t=[];this.elements=this.elements?this.elements:[],!O(this.settings.elements)&&A(this.settings.elements)&&this.settings.elements.length&&r(this.settings.elements,(function(i,n){var s=new V(i,e,n),l=s.getConfig(),r=o({},l);r.node=!1,r.index=n,r.instance=s,r.slideConfig=l,t.push(r)}));var i=!1;return this.getSelector()&&(i=document.querySelectorAll(this.getSelector())),i?(r(i,(function(i,n){var s=new V(i,e,n),l=s.getConfig(),r=o({},l);r.node=i,r.index=n,r.instance=s,r.slideConfig=l,r.gallery=i.getAttribute("data-gallery"),t.push(r)})),t):t}},{key:"getGalleryElements",value:function(e,t){return e.filter((function(e){return e.gallery==t}))}},{key:"getSelector",value:function(){return!this.settings.elements&&(this.settings.selector&&"data-"==this.settings.selector.substring(0,5)?"*[".concat(this.settings.selector,"]"):this.settings.selector)}},{key:"getActiveSlide",value:function(){return this.slidesContainer.querySelectorAll(".gslide")[this.index]}},{key:"getActiveSlideIndex",value:function(){return this.index}},{key:"getAnimationClasses",value:function(){var e=[];for(var t in this.settings.cssEfects)if(this.settings.cssEfects.hasOwnProperty(t)){var i=this.settings.cssEfects[t];e.push("g".concat(i.in)),e.push("g".concat(i.out))}return e.join(" ")}},{key:"build",value:function(){var e=this;if(this.built)return!1;var t=document.body.childNodes,i=[];r(t,(function(e){e.parentNode==document.body&&"#"!==e.nodeName.charAt(0)&&e.hasAttribute&&!e.hasAttribute("aria-hidden")&&(i.push(e),e.setAttribute("aria-hidden","true"))}));var n=P(this.settings.svg,"next")?this.settings.svg.next:"",s=P(this.settings.svg,"prev")?this.settings.svg.prev:"",l=P(this.settings.svg,"close")?this.settings.svg.close:"",o=this.settings.lightboxHTML;o=y(o=(o=(o=o.replace(/{nextSVG}/g,n)).replace(/{prevSVG}/g,s)).replace(/{closeSVG}/g,l)),document.body.appendChild(o);var a=document.getElementById("glightbox-body");this.modal=a;var c=a.querySelector(".gclose");this.prevButton=a.querySelector(".gprev"),this.nextButton=a.querySelector(".gnext"),this.overlay=a.querySelector(".goverlay"),this.loader=a.querySelector(".gloader"),this.slidesContainer=document.getElementById("glightbox-slider"),this.bodyHiddenChildElms=i,this.events={},d(this.modal,"glightbox-"+this.settings.skin),this.settings.closeButton&&c&&(this.events.close=h("click",{onElement:c,withCallback:function(t,i){t.preventDefault(),e.close()}})),c&&!this.settings.closeButton&&c.parentNode.removeChild(c),this.nextButton&&(this.events.next=h("click",{onElement:this.nextButton,withCallback:function(t,i){t.preventDefault(),e.nextSlide()}})),this.prevButton&&(this.events.prev=h("click",{onElement:this.prevButton,withCallback:function(t,i){t.preventDefault(),e.prevSlide()}})),this.settings.closeOnOutsideClick&&(this.events.outClose=h("click",{onElement:a,withCallback:function(t,i){e.preventOutsideClick||u(document.body,"glightbox-mobile")||g(t.target,".ginner-container")||g(t.target,".gbtn")||u(t.target,"gnext")||u(t.target,"gprev")||e.close()}})),r(this.elements,(function(t,i){e.slidesContainer.appendChild(t.instance.create()),t.slideNode=e.slidesContainer.querySelectorAll(".gslide")[i]})),Q&&d(document.body,"glightbox-touch"),this.events.resize=h("resize",{onElement:window,withCallback:function(){e.resize()}}),this.built=!0}},{key:"resize",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if((e=e||this.activeSlide)&&!u(e,"zoomed")){var t=x(),i=e.querySelector(".gvideo-wrapper"),n=e.querySelector(".gslide-image"),s=this.slideDescription,l=t.width,o=t.height;if(l<=768?d(document.body,"glightbox-mobile"):c(document.body,"glightbox-mobile"),i||n){var r=!1;if(s&&(u(s,"description-bottom")||u(s,"description-top"))&&!u(s,"gabsolute")&&(r=!0),n)if(l<=768)n.querySelector("img");else if(r){var a,h,g=s.offsetHeight,v=n.querySelector("img"),f=null===(a=this.elements[this.index])||void 0===a?void 0:a.node,p="100vh";f&&(p=null!==(h=f.getAttribute("data-height"))&&void 0!==h?h:p),v.setAttribute("style","max-height: calc(".concat(p," - ").concat(g,"px)")),s.setAttribute("style","max-width: ".concat(v.offsetWidth,"px;"))}if(i){var m=P(this.settings.plyr.config,"ratio")?this.settings.plyr.config.ratio:"";if(!m){var y=i.clientWidth,b=i.clientHeight,S=y/b;m="".concat(y/S,":").concat(b/S)}var w=m.split(":"),T=this.settings.videosWidth,C=this.settings.videosWidth,k=(C=z(T)||-1!==T.indexOf("px")?parseInt(T):-1!==T.indexOf("vw")?l*parseInt(T)/100:-1!==T.indexOf("vh")?o*parseInt(T)/100:-1!==T.indexOf("%")?l*parseInt(T)/100:parseInt(i.clientWidth))/(parseInt(w[0])/parseInt(w[1]));if(k=Math.floor(k),r&&(o-=s.offsetHeight),C>l||k>o||o<k&&l>C){var E=i.offsetWidth,A=i.offsetHeight,L=o/A,I={width:E*L,height:A*L};i.parentNode.setAttribute("style","max-width: ".concat(I.width,"px")),r&&s.setAttribute("style","max-width: ".concat(I.width,"px;"))}else i.parentNode.style.maxWidth="".concat(T),r&&s.setAttribute("style","max-width: ".concat(T,";"))}}}}},{key:"reload",value:function(){this.init()}},{key:"updateNavigationClasses",value:function(){var e=this.loop();c(this.nextButton,"disabled"),c(this.prevButton,"disabled"),0==this.index&&this.elements.length-1==0?(d(this.prevButton,"disabled"),d(this.nextButton,"disabled")):0!==this.index||e?this.index!==this.elements.length-1||e||d(this.nextButton,"disabled"):d(this.prevButton,"disabled")}},{key:"loop",value:function(){var e=P(this.settings,"loopAtEnd")?this.settings.loopAtEnd:null;return e=P(this.settings,"loop")?this.settings.loop:e,e}},{key:"close",value:function(){var e=this;if(!this.lightboxOpen){if(this.events){for(var t in this.events)this.events.hasOwnProperty(t)&&this.events[t].destroy();this.events=null}return!1}if(this.closing)return!1;this.closing=!0,this.slidePlayerPause(this.activeSlide),this.fullElementsList&&(this.elements=this.fullElementsList),this.bodyHiddenChildElms.length&&r(this.bodyHiddenChildElms,(function(e){e.removeAttribute("aria-hidden")})),d(this.modal,"glightbox-closing"),v(this.overlay,"none"==this.settings.openEffect?"none":this.settings.cssEfects.fade.out),v(this.activeSlide,this.settings.cssEfects[this.settings.closeEffect].out,(function(){if(e.activeSlide=null,e.prevActiveSlideIndex=null,e.prevActiveSlide=null,e.built=!1,e.events){for(var t in e.events)e.events.hasOwnProperty(t)&&e.events[t].destroy();e.events=null}var i=document.body;c(ee,"glightbox-open"),c(i,"glightbox-open touching gdesc-open glightbox-touch glightbox-mobile gscrollbar-fixer"),e.modal.parentNode.removeChild(e.modal),e.trigger("close"),C(e.settings.onClose)&&e.settings.onClose();var n=document.querySelector(".gcss-styles");n&&n.parentNode.removeChild(n),e.lightboxOpen=!1,e.closing=null}))}},{key:"destroy",value:function(){this.close(),this.clearAllEvents(),this.baseEvents&&this.baseEvents.destroy()}},{key:"on",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||!C(t))throw new TypeError("Event name and callback must be defined");this.apiEvents.push({evt:e,once:i,callback:t})}},{key:"once",value:function(e,t){this.on(e,t,!0)}},{key:"trigger",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=[];r(this.apiEvents,(function(t,s){var l=t.evt,o=t.once,r=t.callback;l==e&&(r(i),o&&n.push(s))})),n.length&&r(n,(function(e){return t.apiEvents.splice(e,1)}))}},{key:"clearAllEvents",value:function(){this.apiEvents.splice(0,this.apiEvents.length)}},{key:"version",value:function(){return"3.3.1"}}]);return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new ie(e);return t.init(),t}}));
2580
2581/***/ }),
2582
2583/***/ "./src/sass/main.scss":
2584/*!****************************!*\
2585  !*** ./src/sass/main.scss ***!
2586  \****************************/
2587/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2588
2589"use strict";
2590__webpack_require__.r(__webpack_exports__);
2591// extracted by mini-css-extract-plugin
2592
2593
2594/***/ }),
2595
vendor: 113,336 bytes, lines 2596-2607
2596/***/ "./node_modules/plyr/dist/plyr.min.js":
2597/*!********************************************!*\
2598  !*** ./node_modules/plyr/dist/plyr.min.js ***!
2599  \********************************************/
2600/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2601
2602"object"==typeof navigator&&function(e,t){ true?module.exports=t():0}(this,(function(){"use strict";function e(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var s=i.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function t(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}function i(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function s(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,s)}return i}function n(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var a={addCSS:!0,thumbWidth:15,watch:!0};var l=function(e){return null!=e?e.constructor:null},r=function(e,t){return!!(e&&t&&e instanceof t)},o=function(e){return null==e},c=function(e){return l(e)===Object},u=function(e){return l(e)===String},h=function(e){return Array.isArray(e)},d=function(e){return r(e,NodeList)},m={nullOrUndefined:o,object:c,number:function(e){return l(e)===Number&&!Number.isNaN(e)},string:u,boolean:function(e){return l(e)===Boolean},function:function(e){return l(e)===Function},array:h,nodeList:d,element:function(e){return r(e,Element)},event:function(e){return r(e,Event)},empty:function(e){return o(e)||(u(e)||h(e)||d(e))&&!e.length||c(e)&&!Object.keys(e).length}};function p(e,t){if(1>t){var i=function(e){var t="".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(i))}return Math.round(e/t)*t}var g=function(){function e(t,i){(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,e),m.element(t)?this.element=t:m.string(t)&&(this.element=document.querySelector(t)),m.element(this.element)&&m.empty(this.element.rangeTouch)&&(this.config=n({},a,{},i),this.init())}return function(e,i,s){i&&t(e.prototype,i),s&&t(e,s)}(e,[{key:"init",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="none",this.element.style.webKitUserSelect="none",this.element.style.touchAction="manipulation"),this.listeners(!0),this.element.rangeTouch=this)}},{key:"destroy",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="",this.element.style.webKitUserSelect="",this.element.style.touchAction=""),this.listeners(!1),this.element.rangeTouch=null)}},{key:"listeners",value:function(e){var t=this,i=e?"addEventListener":"removeEventListener";["touchstart","touchmove","touchend"].forEach((function(e){t.element[i](e,(function(e){return t.set(e)}),!1)}))}},{key:"get",value:function(t){if(!e.enabled||!m.event(t))return null;var i,s=t.target,n=t.changedTouches[0],a=parseFloat(s.getAttribute("min"))||0,l=parseFloat(s.getAttribute("max"))||100,r=parseFloat(s.getAttribute("step"))||1,o=s.getBoundingClientRect(),c=100/o.width*(this.config.thumbWidth/2)/100;return 0>(i=100/o.width*(n.clientX-o.left))?i=0:100<i&&(i=100),50>i?i-=(100-2*i)*c:50<i&&(i+=2*(i-50)*c),a+p(i/100*(l-a),r)}},{key:"set",value:function(t){e.enabled&&m.event(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),function(e,t){if(e&&t){var i=new Event(t,{bubbles:!0});e.dispatchEvent(i)}}(t.target,"touchend"===t.type?"change":"input"))}}],[{key:"setup",value:function(t){var i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},s=null;if(m.empty(t)||m.string(t)?s=Array.from(document.querySelectorAll(m.string(t)?t:'input[type="range"]')):m.element(t)?s=[t]:m.nodeList(t)?s=Array.from(t):m.array(t)&&(s=t.filter(m.element)),m.empty(s))return null;var l=n({},a,{},i);if(m.string(t)&&l.watch){var r=new MutationObserver((function(i){Array.from(i).forEach((function(i){Array.from(i.addedNodes).forEach((function(i){m.element(i)&&function(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}(i,t)&&new e(i,l)}))}))}));r.observe(document.body,{childList:!0,subtree:!0})}return s.map((function(t){return new e(t,i)}))}},{key:"enabled",get:function(){return"ontouchstart"in document.documentElement}}]),e}();const f=e=>null!=e?e.constructor:null,y=(e,t)=>Boolean(e&&t&&e instanceof t),b=e=>null==e,v=e=>f(e)===Object,w=e=>f(e)===String,T=e=>"function"==typeof e,k=e=>Array.isArray(e),C=e=>y(e,NodeList),A=e=>b(e)||(w(e)||k(e)||C(e))&&!e.length||v(e)&&!Object.keys(e).length;var S={nullOrUndefined:b,object:v,number:e=>f(e)===Number&&!Number.isNaN(e),string:w,boolean:e=>f(e)===Boolean,function:T,array:k,weakMap:e=>y(e,WeakMap),nodeList:C,element:e=>null!==e&&"object"==typeof e&&1===e.nodeType&&"object"==typeof e.style&&"object"==typeof e.ownerDocument,textNode:e=>f(e)===Text,event:e=>y(e,Event),keyboardEvent:e=>y(e,KeyboardEvent),cue:e=>y(e,window.TextTrackCue)||y(e,window.VTTCue),track:e=>y(e,TextTrack)||!b(e)&&w(e.kind),promise:e=>y(e,Promise)&&T(e.then),url:e=>{if(y(e,window.URL))return!0;if(!w(e))return!1;let t=e;e.startsWith("http://")&&e.startsWith("https://")||(t=`http://${e}`);try{return!A(new URL(t).hostname)}catch(e){return!1}},empty:A};const E=(()=>{const e=document.createElement("span"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},i=Object.keys(t).find((t=>void 0!==e.style[t]));return!!S.string(i)&&t[i]})();function P(e,t){setTimeout((()=>{try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch(e){}}),t)}var M={isIE:Boolean(window.document.documentMode),isEdge:/Edge/g.test(navigator.userAgent),isWebKit:"WebkitAppearance"in document.documentElement.style&&!/Edge/g.test(navigator.userAgent),isIPhone:/iPhone|iPod/gi.test(navigator.userAgent)&&navigator.maxTouchPoints>1,isIPadOS:"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,isIos:/iPad|iPhone|iPod/gi.test(navigator.userAgent)&&navigator.maxTouchPoints>1};function N(e,t){return t.split(".").reduce(((e,t)=>e&&e[t]),e)}function x(e={},...t){if(!t.length)return e;const i=t.shift();return S.object(i)?(Object.keys(i).forEach((t=>{S.object(i[t])?(Object.keys(e).includes(t)||Object.assign(e,{[t]:{}}),x(e[t],i[t])):Object.assign(e,{[t]:i[t]})})),x(e,...t)):e}function L(e,t){const i=e.length?e:[e];Array.from(i).reverse().forEach(((e,i)=>{const s=i>0?t.cloneNode(!0):t,n=e.parentNode,a=e.nextSibling;s.appendChild(e),a?n.insertBefore(s,a):n.appendChild(s)}))}function I(e,t){S.element(e)&&!S.empty(t)&&Object.entries(t).filter((([,e])=>!S.nullOrUndefined(e))).forEach((([t,i])=>e.setAttribute(t,i)))}function $(e,t,i){const s=document.createElement(e);return S.object(t)&&I(s,t),S.string(i)&&(s.innerText=i),s}function _(e,t,i,s){S.element(t)&&t.appendChild($(e,i,s))}function O(e){S.nodeList(e)||S.array(e)?Array.from(e).forEach(O):S.element(e)&&S.element(e.parentNode)&&e.parentNode.removeChild(e)}function j(e){if(!S.element(e))return;let{length:t}=e.childNodes;for(;t>0;)e.removeChild(e.lastChild),t-=1}function q(e,t){return S.element(t)&&S.element(t.parentNode)&&S.element(e)?(t.parentNode.replaceChild(e,t),e):null}function D(e,t){if(!S.string(e)||S.empty(e))return{};const i={},s=x({},t);return e.split(",").forEach((e=>{const t=e.trim(),n=t.replace(".",""),a=t.replace(/[[\]]/g,"").split("="),[l]=a,r=a.length>1?a[1].replace(/["']/g,""):"";switch(t.charAt(0)){case".":S.string(s.class)?i.class=`${s.class} ${n}`:i.class=n;break;case"#":i.id=t.replace("#","");break;case"[":i[l]=r}})),x(s,i)}function H(e,t){if(!S.element(e))return;let i=t;S.boolean(i)||(i=!e.hidden),e.hidden=i}function R(e,t,i){if(S.nodeList(e))return Array.from(e).map((e=>R(e,t,i)));if(S.element(e)){let s="toggle";return void 0!==i&&(s=i?"add":"remove"),e.classList[s](t),e.classList.contains(t)}return!1}function F(e,t){return S.element(e)&&e.classList.contains(t)}function V(e,t){const{prototype:i}=Element;return(i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector||function(){return Array.from(document.querySelectorAll(t)).includes(this)}).call(e,t)}function U(e){return this.elements.container.querySelectorAll(e)}function B(e){return this.elements.container.querySelector(e)}function W(e=null,t=!1){S.element(e)&&e.focus({preventScroll:!0,focusVisible:t})}const z={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},K={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check(e,t){const i=K[e]||"html5"!==t;return{api:i,ui:i&&K.rangeInput}},pip:!(M.isIPhone||!S.function($("video").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||$("video").disablePictureInPicture)),airplay:S.function(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime(e){if(S.empty(e))return!1;const[t]=e.split("/");let i=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(z).includes(i)&&(i+=`; codecs="${z[e]}"`);try{return Boolean(i&&this.media.canPlayType(i).replace(/no/,""))}catch(e){return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(()=>{const e=document.createElement("input");return e.type="range","range"===e.type})(),touch:"ontouchstart"in document.documentElement,transitions:!1!==E,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches},Y=(()=>{let e=!1;try{const t=Object.defineProperty({},"passive",{get:()=>(e=!0,null)});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e})();function Q(e,t,i,s=!1,n=!0,a=!1){if(!e||!("addEventListener"in e)||S.empty(t)||!S.function(i))return;const l=t.split(" ");let r=a;Y&&(r={passive:n,capture:a}),l.forEach((t=>{this&&this.eventListeners&&s&&this.eventListeners.push({element:e,type:t,callback:i,options:r}),e[s?"addEventListener":"removeEventListener"](t,i,r)}))}function X(e,t="",i,s=!0,n=!1){Q.call(this,e,t,i,!0,s,n)}function J(e,t="",i,s=!0,n=!1){Q.call(this,e,t,i,!1,s,n)}function G(e,t="",i,s=!0,n=!1){const a=(...l)=>{J(e,t,a,s,n),i.apply(this,l)};Q.call(this,e,t,a,!0,s,n)}function Z(e,t="",i=!1,s={}){if(!S.element(e)||S.empty(t))return;const n=new CustomEvent(t,{bubbles:i,detail:{...s,plyr:this}});e.dispatchEvent(n)}function ee(){this&&this.eventListeners&&(this.eventListeners.forEach((e=>{const{element:t,type:i,callback:s,options:n}=e;t.removeEventListener(i,s,n)})),this.eventListeners=[])}function te(){return new Promise((e=>this.ready?setTimeout(e,0):X.call(this,this.elements.container,"ready",e))).then((()=>{}))}function ie(e){S.promise(e)&&e.then(null,(()=>{}))}function se(e){return S.array(e)?e.filter(((t,i)=>e.indexOf(t)===i)):e}function ne(e,t){return S.array(e)&&e.length?e.reduce(((e,i)=>Math.abs(i-t)<Math.abs(e-t)?i:e)):null}function ae(e){return!(!window||!window.CSS)&&window.CSS.supports(e)}const le=[[1,1],[4,3],[3,4],[5,4],[4,5],[3,2],[2,3],[16,10],[10,16],[16,9],[9,16],[21,9],[9,21],[32,9],[9,32]].reduce(((e,[t,i])=>({...e,[t/i]:[t,i]})),{});function re(e){if(!(S.array(e)||S.string(e)&&e.includes(":")))return!1;return(S.array(e)?e:e.split(":")).map(Number).every(S.number)}function oe(e){if(!S.array(e)||!e.every(S.number))return null;const[t,i]=e,s=(e,t)=>0===t?e:s(t,e%t),n=s(t,i);return[t/n,i/n]}function ce(e){const t=e=>re(e)?e.split(":").map(Number):null;let i=t(e);if(null===i&&(i=t(this.config.ratio)),null===i&&!S.empty(this.embed)&&S.array(this.embed.ratio)&&({ratio:i}=this.embed),null===i&&this.isHTML5){const{videoWidth:e,videoHeight:t}=this.media;i=[e,t]}return oe(i)}function ue(e){if(!this.isVideo)return{};const{wrapper:t}=this.elements,i=ce.call(this,e);if(!S.array(i))return{};const[s,n]=oe(i),a=100/s*n;if(ae(`aspect-ratio: ${s}/${n}`)?t.style.aspectRatio=`${s}/${n}`:t.style.paddingBottom=`${a}%`,this.isVimeo&&!this.config.vimeo.premium&&this.supported.ui){const e=100/this.media.offsetWidth*parseInt(window.getComputedStyle(this.media).paddingBottom,10),i=(e-a)/(e/50);this.fullscreen.active?t.style.paddingBottom=null:this.media.style.transform=`translateY(-${i}%)`}else this.isHTML5&&t.classList.add(this.config.classNames.videoFixedRatio);return{padding:a,ratio:i}}function he(e,t,i=.05){const s=e/t,n=ne(Object.keys(le),s);return Math.abs(n-s)<=i?le[n]:[e,t]}const de={getSources(){if(!this.isHTML5)return[];return Array.from(this.media.querySelectorAll("source")).filter((e=>{const t=e.getAttribute("type");return!!S.empty(t)||K.mime.call(this,t)}))},getQualityOptions(){return this.config.quality.forced?this.config.quality.options:de.getSources.call(this).map((e=>Number(e.getAttribute("size")))).filter(Boolean)},setup(){if(!this.isHTML5)return;const e=this;e.options.speed=e.config.speed.options,S.empty(this.config.ratio)||ue.call(e),Object.defineProperty(e.media,"quality",{get(){const t=de.getSources.call(e).find((t=>t.getAttribute("src")===e.source));return t&&Number(t.getAttribute("size"))},set(t){if(e.quality!==t){if(e.config.quality.forced&&S.function(e.config.quality.onChange))e.config.quality.onChange(t);else{const i=de.getSources.call(e).find((e=>Number(e.getAttribute("size"))===t));if(!i)return;const{currentTime:s,paused:n,preload:a,readyState:l,playbackRate:r}=e.media;e.media.src=i.getAttribute("src"),("none"!==a||l)&&(e.once("loadedmetadata",(()=>{e.speed=r,e.currentTime=s,n||ie(e.play())})),e.media.load())}Z.call(e,e.media,"qualitychange",!1,{quality:t})}}})},cancelRequests(){this.isHTML5&&(O(de.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};function me(e,...t){return S.empty(e)?e:e.toString().replace(/{(\d+)}/g,((e,i)=>t[i].toString()))}const pe=(e="",t="",i="")=>e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1"),"g"),i.toString()),ge=(e="")=>e.toString().replace(/\w\S*/g,(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()));function fe(e=""){let t=e.toString();return t=function(e=""){let t=e.toString();return t=pe(t,"-"," "),t=pe(t,"_"," "),t=ge(t),pe(t," ","")}(t),t.charAt(0).toLowerCase()+t.slice(1)}function ye(e){const t=document.createElement("div");return t.appendChild(e),t.innerHTML}const be={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},ve={get(e="",t={}){if(S.empty(e)||S.empty(t))return"";let i=N(t.i18n,e);if(S.empty(i))return Object.keys(be).includes(e)?be[e]:"";const s={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(s).forEach((([e,t])=>{i=pe(i,e,t)})),i}};class we{constructor(t){e(this,"get",(e=>{if(!we.supported||!this.enabled)return null;const t=window.localStorage.getItem(this.key);if(S.empty(t))return null;const i=JSON.parse(t);return S.string(e)&&e.length?i[e]:i})),e(this,"set",(e=>{if(!we.supported||!this.enabled)return;if(!S.object(e))return;let t=this.get();S.empty(t)&&(t={}),x(t,e);try{window.localStorage.setItem(this.key,JSON.stringify(t))}catch(e){}})),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}static get supported(){try{if(!("localStorage"in window))return!1;const e="___test";return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}}function Te(e,t="text"){return new Promise(((i,s)=>{try{const s=new XMLHttpRequest;if(!("withCredentials"in s))return;s.addEventListener("load",(()=>{if("text"===t)try{i(JSON.parse(s.responseText))}catch(e){i(s.responseText)}else i(s.response)})),s.addEventListener("error",(()=>{throw new Error(s.status)})),s.open("GET",e,!0),s.responseType=t,s.send()}catch(e){s(e)}}))}function ke(e,t){if(!S.string(e))return;const i="cache",s=S.string(t);let n=!1;const a=()=>null!==document.getElementById(t),l=(e,t)=>{e.innerHTML=t,s&&a()||document.body.insertAdjacentElement("afterbegin",e)};if(!s||!a()){const a=we.supported,r=document.createElement("div");if(r.setAttribute("hidden",""),s&&r.setAttribute("id",t),a){const e=window.localStorage.getItem(`${i}-${t}`);if(n=null!==e,n){const t=JSON.parse(e);l(r,t.content)}}Te(e).then((e=>{if(!S.empty(e)){if(a)try{window.localStorage.setItem(`${i}-${t}`,JSON.stringify({content:e}))}catch(e){}l(r,e)}})).catch((()=>{}))}}const Ce=e=>Math.trunc(e/60/60%60,10),Ae=e=>Math.trunc(e/60%60,10),Se=e=>Math.trunc(e%60,10);function Ee(e=0,t=!1,i=!1){if(!S.number(e))return Ee(void 0,t,i);const s=e=>`0${e}`.slice(-2);let n=Ce(e);const a=Ae(e),l=Se(e);return n=t||n>0?`${n}:`:"",`${i&&e>0?"-":""}${n}${s(a)}:${s(l)}`}const Pe={getIconUrl(){const e=new URL(this.config.iconUrl,window.location),t=window.location.host?window.location.host:window.top.location.host,i=e.host!==t||M.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:i}},findElements(){try{return this.elements.controls=B.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:U.call(this,this.config.selectors.buttons.play),pause:B.call(this,this.config.selectors.buttons.pause),restart:B.call(this,this.config.selectors.buttons.restart),rewind:B.call(this,this.config.selectors.buttons.rewind),fastForward:B.call(this,this.config.selectors.buttons.fastForward),mute:B.call(this,this.config.selectors.buttons.mute),pip:B.call(this,this.config.selectors.buttons.pip),airplay:B.call(this,this.config.selectors.buttons.airplay),settings:B.call(this,this.config.selectors.buttons.settings),captions:B.call(this,this.config.selectors.buttons.captions),fullscreen:B.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=B.call(this,this.config.selectors.progress),this.elements.inputs={seek:B.call(this,this.config.selectors.inputs.seek),volume:B.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:B.call(this,this.config.selectors.display.buffer),currentTime:B.call(this,this.config.selectors.display.currentTime),duration:B.call(this,this.config.selectors.display.duration)},S.element(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`)),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon(e,t){const i="http://www.w3.org/2000/svg",s=Pe.getIconUrl.call(this),n=`${s.cors?"":s.url}#${this.config.iconPrefix}`,a=document.createElementNS(i,"svg");I(a,x(t,{"aria-hidden":"true",focusable:"false"}));const l=document.createElementNS(i,"use"),r=`${n}-${e}`;return"href"in l&&l.setAttributeNS("http://www.w3.org/1999/xlink","href",r),l.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r),a.appendChild(l),a},createLabel(e,t={}){const i=ve.get(e,this.config);return $("span",{...t,class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")},i)},createBadge(e){if(S.empty(e))return null;const t=$("span",{class:this.config.classNames.menu.value});return t.appendChild($("span",{class:this.config.classNames.menu.badge},e)),t},createButton(e,t){const i=x({},t);let s=fe(e);const n={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach((e=>{Object.keys(i).includes(e)&&(n[e]=i[e],delete i[e])})),"button"!==n.element||Object.keys(i).includes("type")||(i.type="button"),Object.keys(i).includes("class")?i.class.split(" ").some((e=>e===this.config.classNames.control))||x(i,{class:`${i.class} ${this.config.classNames.control}`}):i.class=this.config.classNames.control,e){case"play":n.toggle=!0,n.label="play",n.labelPressed="pause",n.icon="play",n.iconPressed="pause";break;case"mute":n.toggle=!0,n.label="mute",n.labelPressed="unmute",n.icon="volume",n.iconPressed="muted";break;case"captions":n.toggle=!0,n.label="enableCaptions",n.labelPressed="disableCaptions",n.icon="captions-off",n.iconPressed="captions-on";break;case"fullscreen":n.toggle=!0,n.label="enterFullscreen",n.labelPressed="exitFullscreen",n.icon="enter-fullscreen",n.iconPressed="exit-fullscreen";break;case"play-large":i.class+=` ${this.config.classNames.control}--overlaid`,s="play",n.label="play",n.icon="play";break;default:S.empty(n.label)&&(n.label=s),S.empty(n.icon)&&(n.icon=e)}const a=$(n.element);return n.toggle?(a.appendChild(Pe.createIcon.call(this,n.iconPressed,{class:"icon--pressed"})),a.appendChild(Pe.createIcon.call(this,n.icon,{class:"icon--not-pressed"})),a.appendChild(Pe.createLabel.call(this,n.labelPressed,{class:"label--pressed"})),a.appendChild(Pe.createLabel.call(this,n.label,{class:"label--not-pressed"}))):(a.appendChild(Pe.createIcon.call(this,n.icon)),a.appendChild(Pe.createLabel.call(this,n.label))),x(i,D(this.config.selectors.buttons[s],i)),I(a,i),"play"===s?(S.array(this.elements.buttons[s])||(this.elements.buttons[s]=[]),this.elements.buttons[s].push(a)):this.elements.buttons[s]=a,a},createRange(e,t){const i=$("input",x(D(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":ve.get(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=i,Pe.updateRangeFill.call(this,i),g.setup(i),i},createProgress(e,t){const i=$("progress",x(D(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){i.appendChild($("span",null,"0"));const t={played:"played",buffer:"buffered"}[e],s=t?ve.get(t,this.config):"";i.innerText=`% ${s.toLowerCase()}`}return this.elements.display[e]=i,i},createTime(e,t){const i=D(this.config.selectors.display[e],t),s=$("div",x(i,{class:`${i.class?i.class:""} ${this.config.classNames.display.time} `.trim(),"aria-label":ve.get(e,this.config),role:"timer"}),"00:00");return this.elements.display[e]=s,s},bindMenuItemShortcuts(e,t){X.call(this,e,"keydown keyup",(i=>{if(![" ","ArrowUp","ArrowDown","ArrowRight"].includes(i.key))return;if(i.preventDefault(),i.stopPropagation(),"keydown"===i.type)return;const s=V(e,'[role="menuitemradio"]');if(!s&&[" ","ArrowRight"].includes(i.key))Pe.showMenuPanel.call(this,t,!0);else{let t;" "!==i.key&&("ArrowDown"===i.key||s&&"ArrowRight"===i.key?(t=e.nextElementSibling,S.element(t)||(t=e.parentNode.firstElementChild)):(t=e.previousElementSibling,S.element(t)||(t=e.parentNode.lastElementChild)),W.call(this,t,!0))}}),!1),X.call(this,e,"keyup",(e=>{"Return"===e.key&&Pe.focusFirstMenuItem.call(this,null,!0)}))},createMenuItem({value:e,list:t,type:i,title:s,badge:n=null,checked:a=!1}){const l=D(this.config.selectors.inputs[i]),r=$("button",x(l,{type:"button",role:"menuitemradio",class:`${this.config.classNames.control} ${l.class?l.class:""}`.trim(),"aria-checked":a,value:e})),o=$("span");o.innerHTML=s,S.element(n)&&o.appendChild(n),r.appendChild(o),Object.defineProperty(r,"checked",{enumerable:!0,get:()=>"true"===r.getAttribute("aria-checked"),set(e){e&&Array.from(r.parentNode.children).filter((e=>V(e,'[role="menuitemradio"]'))).forEach((e=>e.setAttribute("aria-checked","false"))),r.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(r,"click keyup",(t=>{if(!S.keyboardEvent(t)||" "===t.key){switch(t.preventDefault(),t.stopPropagation(),r.checked=!0,i){case"language":this.currentTrack=Number(e);break;case"quality":this.quality=e;break;case"speed":this.speed=parseFloat(e)}Pe.showMenuPanel.call(this,"home",S.keyboardEvent(t))}}),i,!1),Pe.bindMenuItemShortcuts.call(this,r,i),t.appendChild(r)},formatTime(e=0,t=!1){if(!S.number(e))return e;return Ee(e,Ce(this.duration)>0,t)},updateTimeDisplay(e=null,t=0,i=!1){S.element(e)&&S.number(t)&&(e.innerText=Pe.formatTime(t,i))},updateVolume(){this.supported.ui&&(S.element(this.elements.inputs.volume)&&Pe.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),S.element(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange(e,t=0){S.element(e)&&(e.value=t,Pe.updateRangeFill.call(this,e))},updateProgress(e){if(!this.supported.ui||!S.event(e))return;let t=0;const i=(e,t)=>{const i=S.number(t)?t:0,s=S.element(e)?e:this.elements.display.buffer;if(S.element(s)){s.value=i;const e=s.getElementsByTagName("span")[0];S.element(e)&&(e.childNodes[0].nodeValue=i)}};if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":s=this.currentTime,n=this.duration,t=0===s||0===n||Number.isNaN(s)||Number.isNaN(n)?0:(s/n*100).toFixed(2),"timeupdate"===e.type&&Pe.setRange.call(this,this.elements.inputs.seek,t);break;case"playing":case"progress":i(this.elements.display.buffer,100*this.buffered)}var s,n},updateRangeFill(e){const t=S.event(e)?e.target:e;if(S.element(t)&&"range"===t.getAttribute("type")){if(V(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);const e=Pe.formatTime(this.currentTime),i=Pe.formatTime(this.duration),s=ve.get("seekLabel",this.config);t.setAttribute("aria-valuetext",s.replace("{currentTime}",e).replace("{duration}",i))}else if(V(t,this.config.selectors.inputs.volume)){const e=100*t.value;t.setAttribute("aria-valuenow",e),t.setAttribute("aria-valuetext",`${e.toFixed(1)}%`)}else t.setAttribute("aria-valuenow",t.value);(M.isWebKit||M.isIPadOS)&&t.style.setProperty("--value",t.value/t.max*100+"%")}},updateSeekTooltip(e){var t,i;if(!this.config.tooltips.seek||!S.element(this.elements.inputs.seek)||!S.element(this.elements.display.seekTooltip)||0===this.duration)return;const s=this.elements.display.seekTooltip,n=`${this.config.classNames.tooltip}--visible`,a=e=>R(s,n,e);if(this.touch)return void a(!1);let l=0;const r=this.elements.progress.getBoundingClientRect();if(S.event(e))l=100/r.width*(e.pageX-r.left);else{if(!F(s,n))return;l=parseFloat(s.style.left,10)}l<0?l=0:l>100&&(l=100);const o=this.duration/100*l;s.innerText=Pe.formatTime(o);const c=null===(t=this.config.markers)||void 0===t||null===(i=t.points)||void 0===i?void 0:i.find((({time:e})=>e===Math.round(o)));c&&s.insertAdjacentHTML("afterbegin",`${c.label}<br>`),s.style.left=`${l}%`,S.event(e)&&["mouseenter","mouseleave"].includes(e.type)&&a("mouseenter"===e.type)},timeUpdate(e){const t=!S.element(this.elements.display.duration)&&this.config.invertTime;Pe.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||Pe.updateProgress.call(this,e)},durationUpdate(){if(!this.supported.ui||!this.config.invertTime&&this.currentTime)return;if(this.duration>=2**32)return H(this.elements.display.currentTime,!0),void H(this.elements.progress,!0);S.element(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);const e=S.element(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&Pe.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&Pe.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),this.config.markers.enabled&&Pe.setMarkers.call(this),Pe.updateSeekTooltip.call(this)},toggleMenuButton(e,t){H(this.elements.settings.buttons[e],!t)},updateSetting(e,t,i){const s=this.elements.settings.panels[e];let n=null,a=t;if("captions"===e)n=this.currentTrack;else{if(n=S.empty(i)?this[e]:i,S.empty(n)&&(n=this.config[e].default),!S.empty(this.options[e])&&!this.options[e].includes(n))return void this.debug.warn(`Unsupported value of '${n}' for ${e}`);if(!this.config[e].options.includes(n))return void this.debug.warn(`Disabled value of '${n}' for ${e}`)}if(S.element(a)||(a=s&&s.querySelector('[role="menu"]')),!S.element(a))return;this.elements.settings.buttons[e].querySelector(`.${this.config.classNames.menu.value}`).innerHTML=Pe.getLabel.call(this,e,n);const l=a&&a.querySelector(`[value="${n}"]`);S.element(l)&&(l.checked=!0)},getLabel(e,t){switch(e){case"speed":return 1===t?ve.get("normal",this.config):`${t}&times;`;case"quality":if(S.number(t)){const e=ve.get(`qualityLabel.${t}`,this.config);return e.length?e:`${t}p`}return ge(t);case"captions":return xe.getLabel.call(this);default:return null}},setQualityMenu(e){if(!S.element(this.elements.settings.panels.quality))return;const t="quality",i=this.elements.settings.panels.quality.querySelector('[role="menu"]');S.array(e)&&(this.options.quality=se(e).filter((e=>this.config.quality.options.includes(e))));const s=!S.empty(this.options.quality)&&this.options.quality.length>1;if(Pe.toggleMenuButton.call(this,t,s),j(i),Pe.checkMenu.call(this),!s)return;const n=e=>{const t=ve.get(`qualityBadge.${e}`,this.config);return t.length?Pe.createBadge.call(this,t):null};this.options.quality.sort(((e,t)=>{const i=this.config.quality.options;return i.indexOf(e)>i.indexOf(t)?1:-1})).forEach((e=>{Pe.createMenuItem.call(this,{value:e,list:i,type:t,title:Pe.getLabel.call(this,"quality",e),badge:n(e)})})),Pe.updateSetting.call(this,t,i)},setCaptionsMenu(){if(!S.element(this.elements.settings.panels.captions))return;const e="captions",t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),i=xe.getTracks.call(this),s=Boolean(i.length);if(Pe.toggleMenuButton.call(this,e,s),j(t),Pe.checkMenu.call(this),!s)return;const n=i.map(((e,i)=>({value:i,checked:this.captions.toggled&&this.currentTrack===i,title:xe.getLabel.call(this,e),badge:e.language&&Pe.createBadge.call(this,e.language.toUpperCase()),list:t,type:"language"})));n.unshift({value:-1,checked:!this.captions.toggled,title:ve.get("disabled",this.config),list:t,type:"language"}),n.forEach(Pe.createMenuItem.bind(this)),Pe.updateSetting.call(this,e,t)},setSpeedMenu(){if(!S.element(this.elements.settings.panels.speed))return;const e="speed",t=this.elements.settings.panels.speed.querySelector('[role="menu"]');this.options.speed=this.options.speed.filter((e=>e>=this.minimumSpeed&&e<=this.maximumSpeed));const i=!S.empty(this.options.speed)&&this.options.speed.length>1;Pe.toggleMenuButton.call(this,e,i),j(t),Pe.checkMenu.call(this),i&&(this.options.speed.forEach((i=>{Pe.createMenuItem.call(this,{value:i,list:t,type:e,title:Pe.getLabel.call(this,"speed",i)})})),Pe.updateSetting.call(this,e,t))},checkMenu(){const{buttons:e}=this.elements.settings,t=!S.empty(e)&&Object.values(e).some((e=>!e.hidden));H(this.elements.settings.menu,!t)},focusFirstMenuItem(e,t=!1){if(this.elements.settings.popup.hidden)return;let i=e;S.element(i)||(i=Object.values(this.elements.settings.panels).find((e=>!e.hidden)));const s=i.querySelector('[role^="menuitem"]');W.call(this,s,t)},toggleMenu(e){const{popup:t}=this.elements.settings,i=this.elements.buttons.settings;if(!S.element(t)||!S.element(i))return;const{hidden:s}=t;let n=s;if(S.boolean(e))n=e;else if(S.keyboardEvent(e)&&"Escape"===e.key)n=!1;else if(S.event(e)){const s=S.function(e.composedPath)?e.composedPath()[0]:e.target,a=t.contains(s);if(a||!a&&e.target!==i&&n)return}i.setAttribute("aria-expanded",n),H(t,!n),R(this.elements.container,this.config.classNames.menu.open,n),n&&S.keyboardEvent(e)?Pe.focusFirstMenuItem.call(this,null,!0):n||s||W.call(this,i,S.keyboardEvent(e))},getMenuSize(e){const t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);const i=t.scrollWidth,s=t.scrollHeight;return O(t),{width:i,height:s}},showMenuPanel(e="",t=!1){const i=this.elements.container.querySelector(`#plyr-settings-${this.id}-${e}`);if(!S.element(i))return;const s=i.parentNode,n=Array.from(s.children).find((e=>!e.hidden));if(K.transitions&&!K.reducedMotion){s.style.width=`${n.scrollWidth}px`,s.style.height=`${n.scrollHeight}px`;const e=Pe.getMenuSize.call(this,i),t=e=>{e.target===s&&["width","height"].includes(e.propertyName)&&(s.style.width="",s.style.height="",J.call(this,s,E,t))};X.call(this,s,E,t),s.style.width=`${e.width}px`,s.style.height=`${e.height}px`}H(n,!0),H(i,!1),Pe.focusFirstMenuItem.call(this,i,t)},setDownloadUrl(){const e=this.elements.buttons.download;S.element(e)&&e.setAttribute("href",this.download)},create(e){const{bindMenuItemShortcuts:t,createButton:i,createProgress:s,createRange:n,createTime:a,setQualityMenu:l,setSpeedMenu:r,showMenuPanel:o}=Pe;this.elements.controls=null,S.array(this.config.controls)&&this.config.controls.includes("play-large")&&this.elements.container.appendChild(i.call(this,"play-large"));const c=$("div",D(this.config.selectors.controls.wrapper));this.elements.controls=c;const u={class:"plyr__controls__item"};return se(S.array(this.config.controls)?this.config.controls:[]).forEach((l=>{if("restart"===l&&c.appendChild(i.call(this,"restart",u)),"rewind"===l&&c.appendChild(i.call(this,"rewind",u)),"play"===l&&c.appendChild(i.call(this,"play",u)),"fast-forward"===l&&c.appendChild(i.call(this,"fast-forward",u)),"progress"===l){const t=$("div",{class:`${u.class} plyr__progress__container`}),i=$("div",D(this.config.selectors.progress));if(i.appendChild(n.call(this,"seek",{id:`plyr-seek-${e.id}`})),i.appendChild(s.call(this,"buffer")),this.config.tooltips.seek){const e=$("span",{class:this.config.classNames.tooltip},"00:00");i.appendChild(e),this.elements.display.seekTooltip=e}this.elements.progress=i,t.appendChild(this.elements.progress),c.appendChild(t)}if("current-time"===l&&c.appendChild(a.call(this,"currentTime",u)),"duration"===l&&c.appendChild(a.call(this,"duration",u)),"mute"===l||"volume"===l){let{volume:t}=this.elements;if(S.element(t)&&c.contains(t)||(t=$("div",x({},u,{class:`${u.class} plyr__volume`.trim()})),this.elements.volume=t,c.appendChild(t)),"mute"===l&&t.appendChild(i.call(this,"mute")),"volume"===l&&!M.isIos&&!M.isIPadOS){const i={max:1,step:.05,value:this.config.volume};t.appendChild(n.call(this,"volume",x(i,{id:`plyr-volume-${e.id}`})))}}if("captions"===l&&c.appendChild(i.call(this,"captions",u)),"settings"===l&&!S.empty(this.config.settings)){const s=$("div",x({},u,{class:`${u.class} plyr__menu`.trim(),hidden:""}));s.appendChild(i.call(this,"settings",{"aria-haspopup":!0,"aria-controls":`plyr-settings-${e.id}`,"aria-expanded":!1}));const n=$("div",{class:"plyr__menu__container",id:`plyr-settings-${e.id}`,hidden:""}),a=$("div"),l=$("div",{id:`plyr-settings-${e.id}-home`}),r=$("div",{role:"menu"});l.appendChild(r),a.appendChild(l),this.elements.settings.panels.home=l,this.config.settings.forEach((i=>{const s=$("button",x(D(this.config.selectors.buttons.settings),{type:"button",class:`${this.config.classNames.control} ${this.config.classNames.control}--forward`,role:"menuitem","aria-haspopup":!0,hidden:""}));t.call(this,s,i),X.call(this,s,"click",(()=>{o.call(this,i,!1)}));const n=$("span",null,ve.get(i,this.config)),l=$("span",{class:this.config.classNames.menu.value});l.innerHTML=e[i],n.appendChild(l),s.appendChild(n),r.appendChild(s);const c=$("div",{id:`plyr-settings-${e.id}-${i}`,hidden:""}),u=$("button",{type:"button",class:`${this.config.classNames.control} ${this.config.classNames.control}--back`});u.appendChild($("span",{"aria-hidden":!0},ve.get(i,this.config))),u.appendChild($("span",{class:this.config.classNames.hidden},ve.get("menuBack",this.config))),X.call(this,c,"keydown",(e=>{"ArrowLeft"===e.key&&(e.preventDefault(),e.stopPropagation(),o.call(this,"home",!0))}),!1),X.call(this,u,"click",(()=>{o.call(this,"home",!1)})),c.appendChild(u),c.appendChild($("div",{role:"menu"})),a.appendChild(c),this.elements.settings.buttons[i]=s,this.elements.settings.panels[i]=c})),n.appendChild(a),s.appendChild(n),c.appendChild(s),this.elements.settings.popup=n,this.elements.settings.menu=s}if("pip"===l&&K.pip&&c.appendChild(i.call(this,"pip",u)),"airplay"===l&&K.airplay&&c.appendChild(i.call(this,"airplay",u)),"download"===l){const e=x({},u,{element:"a",href:this.download,target:"_blank"});this.isHTML5&&(e.download="");const{download:t}=this.config.urls;!S.url(t)&&this.isEmbed&&x(e,{icon:`logo-${this.provider}`,label:this.provider}),c.appendChild(i.call(this,"download",e))}"fullscreen"===l&&c.appendChild(i.call(this,"fullscreen",u))})),this.isHTML5&&l.call(this,de.getQualityOptions.call(this)),r.call(this),c},inject(){if(this.config.loadSprite){const e=Pe.getIconUrl.call(this);e.cors&&ke(e.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());let e=null;this.elements.controls=null;const t={id:this.id,seektime:this.config.seekTime,title:this.config.title};let i=!0;S.function(this.config.controls)&&(this.config.controls=this.config.controls.call(this,t)),this.config.controls||(this.config.controls=[]),S.element(this.config.controls)||S.string(this.config.controls)?e=this.config.controls:(e=Pe.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:xe.getLabel.call(this)}),i=!1);let s;i&&S.string(this.config.controls)&&(e=(e=>{let i=e;return Object.entries(t).forEach((([e,t])=>{i=pe(i,`{${e}}`,t)})),i})(e)),S.string(this.config.selectors.controls.container)&&(s=document.querySelector(this.config.selectors.controls.container)),S.element(s)||(s=this.elements.container);if(s[S.element(e)?"insertAdjacentElement":"insertAdjacentHTML"]("afterbegin",e),S.element(this.elements.controls)||Pe.findElements.call(this),!S.empty(this.elements.buttons)){const e=e=>{const t=this.config.classNames.controlPressed;e.setAttribute("aria-pressed","false"),Object.defineProperty(e,"pressed",{configurable:!0,enumerable:!0,get:()=>F(e,t),set(i=!1){R(e,t,i),e.setAttribute("aria-pressed",i?"true":"false")}})};Object.values(this.elements.buttons).filter(Boolean).forEach((t=>{S.array(t)||S.nodeList(t)?Array.from(t).filter(Boolean).forEach(e):e(t)}))}if(M.isEdge&&P(s),this.config.tooltips.controls){const{classNames:e,selectors:t}=this.config,i=`${t.controls.wrapper} ${t.labels} .${e.hidden}`,s=U.call(this,i);Array.from(s).forEach((e=>{R(e,this.config.classNames.hidden,!1),R(e,this.config.classNames.tooltip,!0)}))}},setMediaMetadata(){try{"mediaSession"in navigator&&(navigator.mediaSession.metadata=new window.MediaMetadata({title:this.config.mediaMetadata.title,artist:this.config.mediaMetadata.artist,album:this.config.mediaMetadata.album,artwork:this.config.mediaMetadata.artwork}))}catch(e){}},setMarkers(){var e,t;if(!this.duration||this.elements.markers)return;const i=null===(e=this.config.markers)||void 0===e||null===(t=e.points)||void 0===t?void 0:t.filter((({time:e})=>e>0&&e<this.duration));if(null==i||!i.length)return;const s=document.createDocumentFragment(),n=document.createDocumentFragment();let a=null;const l=`${this.config.classNames.tooltip}--visible`,r=e=>R(a,l,e);i.forEach((e=>{const t=$("span",{class:this.config.classNames.marker},""),i=e.time/this.duration*100+"%";a&&(t.addEventListener("mouseenter",(()=>{e.label||(a.style.left=i,a.innerHTML=e.label,r(!0))})),t.addEventListener("mouseleave",(()=>{r(!1)}))),t.addEventListener("click",(()=>{this.currentTime=e.time})),t.style.left=i,n.appendChild(t)})),s.appendChild(n),this.config.tooltips.seek||(a=$("span",{class:this.config.classNames.tooltip},""),s.appendChild(a)),this.elements.markers={points:n,tip:a},this.elements.progress.appendChild(s)}};function Me(e,t=!0){let i=e;if(t){const e=document.createElement("a");e.href=i,i=e.href}try{return new URL(i)}catch(e){return null}}function Ne(e){const t=new URLSearchParams;return S.object(e)&&Object.entries(e).forEach((([e,i])=>{t.set(e,i)})),t}const xe={setup(){if(!this.supported.ui)return;if(!this.isVideo||this.isYouTube||this.isHTML5&&!K.textTracks)return void(S.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&Pe.setCaptionsMenu.call(this));var e,t;if(S.element(this.elements.captions)||(this.elements.captions=$("div",D(this.config.selectors.captions)),this.elements.captions.setAttribute("dir","auto"),e=this.elements.captions,t=this.elements.wrapper,S.element(e)&&S.element(t)&&t.parentNode.insertBefore(e,t.nextSibling)),M.isIE&&window.URL){const e=this.media.querySelectorAll("track");Array.from(e).forEach((e=>{const t=e.getAttribute("src"),i=Me(t);null!==i&&i.hostname!==window.location.href.hostname&&["http:","https:"].includes(i.protocol)&&Te(t,"blob").then((t=>{e.setAttribute("src",window.URL.createObjectURL(t))})).catch((()=>{O(e)}))}))}const i=se((navigator.languages||[navigator.language||navigator.userLanguage||"en"]).map((e=>e.split("-")[0])));let s=(this.storage.get("language")||this.config.captions.language||"auto").toLowerCase();"auto"===s&&([s]=i);let n=this.storage.get("captions");if(S.boolean(n)||({active:n}=this.config.captions),Object.assign(this.captions,{toggled:!1,active:n,language:s,languages:i}),this.isHTML5){const e=this.config.captions.update?"addtrack removetrack":"removetrack";X.call(this,this.media.textTracks,e,xe.update.bind(this))}setTimeout(xe.update.bind(this),0)},update(){const e=xe.getTracks.call(this,!0),{active:t,language:i,meta:s,currentTrackNode:n}=this.captions,a=Boolean(e.find((e=>e.language===i)));this.isHTML5&&this.isVideo&&e.filter((e=>!s.get(e))).forEach((e=>{this.debug.log("Track added",e),s.set(e,{default:"showing"===e.mode}),"showing"===e.mode&&(e.mode="hidden"),X.call(this,e,"cuechange",(()=>xe.updateCues.call(this)))})),(a&&this.language!==i||!e.includes(n))&&(xe.setLanguage.call(this,i),xe.toggle.call(this,t&&a)),this.elements&&R(this.elements.container,this.config.classNames.captions.enabled,!S.empty(e)),S.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&Pe.setCaptionsMenu.call(this)},toggle(e,t=!0){if(!this.supported.ui)return;const{toggled:i}=this.captions,s=this.config.classNames.captions.active,n=S.nullOrUndefined(e)?!i:e;if(n!==i){if(t||(this.captions.active=n,this.storage.set({captions:n})),!this.language&&n&&!t){const e=xe.getTracks.call(this),t=xe.findTrack.call(this,[this.captions.language,...this.captions.languages],!0);return this.captions.language=t.language,void xe.set.call(this,e.indexOf(t))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=n),R(this.elements.container,s,n),this.captions.toggled=n,Pe.updateSetting.call(this,"captions"),Z.call(this,this.media,n?"captionsenabled":"captionsdisabled")}setTimeout((()=>{n&&this.captions.toggled&&(this.captions.currentTrackNode.mode="hidden")}))},set(e,t=!0){const i=xe.getTracks.call(this);if(-1!==e)if(S.number(e))if(e in i){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;const s=i[e],{language:n}=s||{};this.captions.currentTrackNode=s,Pe.updateSetting.call(this,"captions"),t||(this.captions.language=n,this.storage.set({language:n})),this.isVimeo&&this.embed.enableTextTrack(n),Z.call(this,this.media,"languagechange")}xe.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&xe.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else xe.toggle.call(this,!1,t)},setLanguage(e,t=!0){if(!S.string(e))return void this.debug.warn("Invalid language argument",e);const i=e.toLowerCase();this.captions.language=i;const s=xe.getTracks.call(this),n=xe.findTrack.call(this,[i]);xe.set.call(this,s.indexOf(n),t)},getTracks(e=!1){return Array.from((this.media||{}).textTracks||[]).filter((t=>!this.isHTML5||e||this.captions.meta.has(t))).filter((e=>["captions","subtitles"].includes(e.kind)))},findTrack(e,t=!1){const i=xe.getTracks.call(this),s=e=>Number((this.captions.meta.get(e)||{}).default),n=Array.from(i).sort(((e,t)=>s(t)-s(e)));let a;return e.every((e=>(a=n.find((t=>t.language===e)),!a))),a||(t?n[0]:void 0)},getCurrentTrack(){return xe.getTracks.call(this)[this.currentTrack]},getLabel(e){let t=e;return!S.track(t)&&K.textTracks&&this.captions.toggled&&(t=xe.getCurrentTrack.call(this)),S.track(t)?S.empty(t.label)?S.empty(t.language)?ve.get("enabled",this.config):e.language.toUpperCase():t.label:ve.get("disabled",this.config)},updateCues(e){if(!this.supported.ui)return;if(!S.element(this.elements.captions))return void this.debug.warn("No captions element to render to");if(!S.nullOrUndefined(e)&&!Array.isArray(e))return void this.debug.warn("updateCues: Invalid input",e);let t=e;if(!t){const e=xe.getCurrentTrack.call(this);t=Array.from((e||{}).activeCues||[]).map((e=>e.getCueAsHTML())).map(ye)}const i=t.map((e=>e.trim())).join("\n");if(i!==this.elements.captions.innerHTML){j(this.elements.captions);const e=$("span",D(this.config.selectors.caption));e.innerHTML=i,this.elements.captions.appendChild(e),Z.call(this,this.media,"cuechange")}}},Le={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.7.8/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240],forced:!1,onChange:null},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2,4]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",pip:"PIP",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"SD"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/oembed.json?url={0}"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption"},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",videoFixedRatio:"plyr__video-wrapper--fixed-ratio",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",marker:"plyr__progress__marker",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id",hash:"data-plyr-embed-hash"}},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:""},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1,customControls:!0,referrerPolicy:null,premium:!1},youtube:{rel:0,showinfo:0,iv_load_policy:3,modestbranding:1,customControls:!0,noCookie:!1},mediaMetadata:{title:"",artist:"",album:"",artwork:[]},markers:{enabled:!1,points:[]}},Ie="picture-in-picture",$e="inline",_e={html5:"html5",youtube:"youtube",vimeo:"vimeo"},Oe="audio",je="video";const qe=()=>{};class De{constructor(e=!1){this.enabled=window.console&&e,this.enabled&&this.log("Debugging enabled")}get log(){return this.enabled?Function.prototype.bind.call(console.log,console):qe}get warn(){return this.enabled?Function.prototype.bind.call(console.warn,console):qe}get error(){return this.enabled?Function.prototype.bind.call(console.error,console):qe}}class He{constructor(t){e(this,"onChange",(()=>{if(!this.supported)return;const e=this.player.elements.buttons.fullscreen;S.element(e)&&(e.pressed=this.active);const t=this.target===this.player.media?this.target:this.player.elements.container;Z.call(this.player,t,this.active?"enterfullscreen":"exitfullscreen",!0)})),e(this,"toggleFallback",((e=!1)=>{if(e?this.scrollPosition={x:window.scrollX??0,y:window.scrollY??0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?"hidden":"",R(this.target,this.player.config.classNames.fullscreen.fallback,e),M.isIos){let t=document.head.querySelector('meta[name="viewport"]');const i="viewport-fit=cover";t||(t=document.createElement("meta"),t.setAttribute("name","viewport"));const s=S.string(t.content)&&t.content.includes(i);e?(this.cleanupViewport=!s,s||(t.content+=`,${i}`)):this.cleanupViewport&&(t.content=t.content.split(",").filter((e=>e.trim()!==i)).join(","))}this.onChange()})),e(this,"trapFocus",(e=>{if(M.isIos||M.isIPadOS||!this.active||"Tab"!==e.key)return;const t=document.activeElement,i=U.call(this.player,"a[href], button:not(:disabled), input:not(:disabled), [tabindex]"),[s]=i,n=i[i.length-1];t!==n||e.shiftKey?t===s&&e.shiftKey&&(n.focus(),e.preventDefault()):(s.focus(),e.preventDefault())})),e(this,"update",(()=>{if(this.supported){let e;e=this.forceFallback?"Fallback (forced)":He.nativeSupported?"Native":"Fallback",this.player.debug.log(`${e} fullscreen enabled`)}else this.player.debug.log("Fullscreen not supported and fallback disabled");R(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.supported)})),e(this,"enter",(()=>{this.supported&&(M.isIos&&this.player.config.fullscreen.iosNative?this.player.isVimeo?this.player.embed.requestFullscreen():this.target.webkitEnterFullscreen():!He.nativeSupported||this.forceFallback?this.toggleFallback(!0):this.prefix?S.empty(this.prefix)||this.target[`${this.prefix}Request${this.property}`]():this.target.requestFullscreen({navigationUI:"hide"}))})),e(this,"exit",(()=>{if(this.supported)if(M.isIos&&this.player.config.fullscreen.iosNative)this.player.isVimeo?this.player.embed.exitFullscreen():this.target.webkitEnterFullscreen(),ie(this.player.play());else if(!He.nativeSupported||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!S.empty(this.prefix)){const e="moz"===this.prefix?"Cancel":"Exit";document[`${this.prefix}${e}${this.property}`]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)})),e(this,"toggle",(()=>{this.active?this.exit():this.enter()})),this.player=t,this.prefix=He.prefix,this.property=He.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===t.config.fullscreen.fallback,this.player.elements.fullscreen=t.config.fullscreen.container&&function(e,t){const{prototype:i}=Element;return(i.closest||function(){let e=this;do{if(V.matches(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}).call(e,t)}(this.player.elements.container,t.config.fullscreen.container),X.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":`${this.prefix}fullscreenchange`,(()=>{this.onChange()})),X.call(this.player,this.player.elements.container,"dblclick",(e=>{S.element(this.player.elements.controls)&&this.player.elements.controls.contains(e.target)||this.player.listeners.proxy(e,this.toggle,"fullscreen")})),X.call(this,this.player.elements.container,"keydown",(e=>this.trapFocus(e))),this.update()}static get nativeSupported(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}get useNative(){return He.nativeSupported&&!this.forceFallback}static get prefix(){if(S.function(document.exitFullscreen))return"";let e="";return["webkit","moz","ms"].some((t=>!(!S.function(document[`${t}ExitFullscreen`])&&!S.function(document[`${t}CancelFullScreen`]))&&(e=t,!0))),e}static get property(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}get supported(){return[this.player.config.fullscreen.enabled,this.player.isVideo,He.nativeSupported||this.player.config.fullscreen.fallback,!this.player.isYouTube||He.nativeSupported||!M.isIos||this.player.config.playsinline&&!this.player.config.fullscreen.iosNative].every(Boolean)}get active(){if(!this.supported)return!1;if(!He.nativeSupported||this.forceFallback)return F(this.target,this.player.config.classNames.fullscreen.fallback);const e=this.prefix?this.target.getRootNode()[`${this.prefix}${this.property}Element`]:this.target.getRootNode().fullscreenElement;return e&&e.shadowRoot?e===this.target.getRootNode().host:e===this.target}get target(){return M.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.fullscreen??this.player.elements.container}}function Re(e,t=1){return new Promise(((i,s)=>{const n=new Image,a=()=>{delete n.onload,delete n.onerror,(n.naturalWidth>=t?i:s)(n)};Object.assign(n,{onload:a,onerror:a,src:e})}))}const Fe={addStyleHook(){R(this.elements.container,this.config.selectors.container.replace(".",""),!0),R(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls(e=!1){e&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build(){if(this.listeners.media(),!this.supported.ui)return this.debug.warn(`Basic support only for ${this.provider} ${this.type}`),void Fe.toggleNativeControls.call(this,!0);S.element(this.elements.controls)||(Pe.inject.call(this),this.listeners.controls()),Fe.toggleNativeControls.call(this),this.isHTML5&&xe.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,Pe.updateVolume.call(this),Pe.timeUpdate.call(this),Pe.durationUpdate.call(this),Fe.checkPlaying.call(this),R(this.elements.container,this.config.classNames.pip.supported,K.pip&&this.isHTML5&&this.isVideo),R(this.elements.container,this.config.classNames.airplay.supported,K.airplay&&this.isHTML5),R(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout((()=>{Z.call(this,this.media,"ready")}),0),Fe.setTitle.call(this),this.poster&&Fe.setPoster.call(this,this.poster,!1).catch((()=>{})),this.config.duration&&Pe.durationUpdate.call(this),this.config.mediaMetadata&&Pe.setMediaMetadata.call(this)},setTitle(){let e=ve.get("play",this.config);if(S.string(this.config.title)&&!S.empty(this.config.title)&&(e+=`, ${this.config.title}`),Array.from(this.elements.buttons.play||[]).forEach((t=>{t.setAttribute("aria-label",e)})),this.isEmbed){const e=B.call(this,"iframe");if(!S.element(e))return;const t=S.empty(this.config.title)?"video":this.config.title,i=ve.get("frameTitle",this.config);e.setAttribute("title",i.replace("{title}",t))}},togglePoster(e){R(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster(e,t=!0){return t&&this.poster?Promise.reject(new Error("Poster already set")):(this.media.setAttribute("data-poster",e),this.elements.poster.removeAttribute("hidden"),te.call(this).then((()=>Re(e))).catch((t=>{throw e===this.poster&&Fe.togglePoster.call(this,!1),t})).then((()=>{if(e!==this.poster)throw new Error("setPoster cancelled by later call to setPoster")})).then((()=>(Object.assign(this.elements.poster.style,{backgroundImage:`url('${e}')`,backgroundSize:""}),Fe.togglePoster.call(this,!0),e))))},checkPlaying(e){R(this.elements.container,this.config.classNames.playing,this.playing),R(this.elements.container,this.config.classNames.paused,this.paused),R(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach((e=>{Object.assign(e,{pressed:this.playing}),e.setAttribute("aria-label",ve.get(this.playing?"pause":"play",this.config))})),S.event(e)&&"timeupdate"===e.type||Fe.toggleControls.call(this)},checkLoading(e){this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout((()=>{R(this.elements.container,this.config.classNames.loading,this.loading),Fe.toggleControls.call(this)}),this.loading?250:0)},toggleControls(e){const{controls:t}=this.elements;if(t&&this.config.hideControls){const i=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||i))}},migrateStyles(){Object.values({...this.media.style}).filter((e=>!S.empty(e)&&S.string(e)&&e.startsWith("--plyr"))).forEach((e=>{this.elements.container.style.setProperty(e,this.media.style.getPropertyValue(e)),this.media.style.removeProperty(e)})),S.empty(this.media.style)&&this.media.removeAttribute("style")}};class Ve{constructor(t){e(this,"firstTouch",(()=>{const{player:e}=this,{elements:t}=e;e.touch=!0,R(t.container,e.config.classNames.isTouch,!0)})),e(this,"global",((e=!0)=>{const{player:t}=this;t.config.keyboard.global&&Q.call(t,window,"keydown keyup",this.handleKey,e,!1),Q.call(t,document.body,"click",this.toggleMenu,e),G.call(t,document.body,"touchstart",this.firstTouch)})),e(this,"container",(()=>{const{player:e}=this,{config:t,elements:i,timers:s}=e;!t.keyboard.global&&t.keyboard.focused&&X.call(e,i.container,"keydown keyup",this.handleKey,!1),X.call(e,i.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",(t=>{const{controls:n}=i;n&&"enterfullscreen"===t.type&&(n.pressed=!1,n.hover=!1);let a=0;["touchstart","touchmove","mousemove"].includes(t.type)&&(Fe.toggleControls.call(e,!0),a=e.touch?3e3:2e3),clearTimeout(s.controls),s.controls=setTimeout((()=>Fe.toggleControls.call(e,!1)),a)}));const n=()=>{if(!e.isVimeo||e.config.vimeo.premium)return;const t=i.wrapper,{active:s}=e.fullscreen,[n,a]=ce.call(e),l=ae(`aspect-ratio: ${n} / ${a}`);if(!s)return void(l?(t.style.width=null,t.style.height=null):(t.style.maxWidth=null,t.style.margin=null));const[r,o]=[Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)],c=r/o>n/a;l?(t.style.width=c?"auto":"100%",t.style.height=c?"100%":"auto"):(t.style.maxWidth=c?o/a*n+"px":null,t.style.margin=c?"0 auto":null)},a=()=>{clearTimeout(s.resized),s.resized=setTimeout(n,50)};X.call(e,i.container,"enterfullscreen exitfullscreen",(t=>{const{target:s}=e.fullscreen;if(s!==i.container)return;if(!e.isEmbed&&S.empty(e.config.ratio))return;n();("enterfullscreen"===t.type?X:J).call(e,window,"resize",a)}))})),e(this,"media",(()=>{const{player:e}=this,{elements:t}=e;if(X.call(e,e.media,"timeupdate seeking seeked",(t=>Pe.timeUpdate.call(e,t))),X.call(e,e.media,"durationchange loadeddata loadedmetadata",(t=>Pe.durationUpdate.call(e,t))),X.call(e,e.media,"ended",(()=>{e.isHTML5&&e.isVideo&&e.config.resetOnEnd&&(e.restart(),e.pause())})),X.call(e,e.media,"progress playing seeking seeked",(t=>Pe.updateProgress.call(e,t))),X.call(e,e.media,"volumechange",(t=>Pe.updateVolume.call(e,t))),X.call(e,e.media,"playing play pause ended emptied timeupdate",(t=>Fe.checkPlaying.call(e,t))),X.call(e,e.media,"waiting canplay seeked playing",(t=>Fe.checkLoading.call(e,t))),e.supported.ui&&e.config.clickToPlay&&!e.isAudio){const i=B.call(e,`.${e.config.classNames.video}`);if(!S.element(i))return;X.call(e,t.container,"click",(s=>{([t.container,i].includes(s.target)||i.contains(s.target))&&(e.touch&&e.config.hideControls||(e.ended?(this.proxy(s,e.restart,"restart"),this.proxy(s,(()=>{ie(e.play())}),"play")):this.proxy(s,(()=>{ie(e.togglePlay())}),"play")))}))}e.supported.ui&&e.config.disableContextMenu&&X.call(e,t.wrapper,"contextmenu",(e=>{e.preventDefault()}),!1),X.call(e,e.media,"volumechange",(()=>{e.storage.set({volume:e.volume,muted:e.muted})})),X.call(e,e.media,"ratechange",(()=>{Pe.updateSetting.call(e,"speed"),e.storage.set({speed:e.speed})})),X.call(e,e.media,"qualitychange",(t=>{Pe.updateSetting.call(e,"quality",null,t.detail.quality)})),X.call(e,e.media,"ready qualitychange",(()=>{Pe.setDownloadUrl.call(e)}));const i=e.config.events.concat(["keyup","keydown"]).join(" ");X.call(e,e.media,i,(i=>{let{detail:s={}}=i;"error"===i.type&&(s=e.media.error),Z.call(e,t.container,i.type,!0,s)}))})),e(this,"proxy",((e,t,i)=>{const{player:s}=this,n=s.config.listeners[i];let a=!0;S.function(n)&&(a=n.call(s,e)),!1!==a&&S.function(t)&&t.call(s,e)})),e(this,"bind",((e,t,i,s,n=!0)=>{const{player:a}=this,l=a.config.listeners[s],r=S.function(l);X.call(a,e,t,(e=>this.proxy(e,i,s)),n&&!r)})),e(this,"controls",(()=>{const{player:e}=this,{elements:t}=e,i=M.isIE?"change":"input";if(t.buttons.play&&Array.from(t.buttons.play).forEach((t=>{this.bind(t,"click",(()=>{ie(e.togglePlay())}),"play")})),this.bind(t.buttons.restart,"click",e.restart,"restart"),this.bind(t.buttons.rewind,"click",(()=>{e.lastSeekTime=Date.now(),e.rewind()}),"rewind"),this.bind(t.buttons.fastForward,"click",(()=>{e.lastSeekTime=Date.now(),e.forward()}),"fastForward"),this.bind(t.buttons.mute,"click",(()=>{e.muted=!e.muted}),"mute"),this.bind(t.buttons.captions,"click",(()=>e.toggleCaptions())),this.bind(t.buttons.download,"click",(()=>{Z.call(e,e.media,"download")}),"download"),this.bind(t.buttons.fullscreen,"click",(()=>{e.fullscreen.toggle()}),"fullscreen"),this.bind(t.buttons.pip,"click",(()=>{e.pip="toggle"}),"pip"),this.bind(t.buttons.airplay,"click",e.airplay,"airplay"),this.bind(t.buttons.settings,"click",(t=>{t.stopPropagation(),t.preventDefault(),Pe.toggleMenu.call(e,t)}),null,!1),this.bind(t.buttons.settings,"keyup",(t=>{[" ","Enter"].includes(t.key)&&("Enter"!==t.key?(t.preventDefault(),t.stopPropagation(),Pe.toggleMenu.call(e,t)):Pe.focusFirstMenuItem.call(e,null,!0))}),null,!1),this.bind(t.settings.menu,"keydown",(t=>{"Escape"===t.key&&Pe.toggleMenu.call(e,t)})),this.bind(t.inputs.seek,"mousedown mousemove",(e=>{const i=t.progress.getBoundingClientRect(),s=100/i.width*(e.pageX-i.left);e.currentTarget.setAttribute("seek-value",s)})),this.bind(t.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",(t=>{const i=t.currentTarget,s="play-on-seeked";if(S.keyboardEvent(t)&&!["ArrowLeft","ArrowRight"].includes(t.key))return;e.lastSeekTime=Date.now();const n=i.hasAttribute(s),a=["mouseup","touchend","keyup"].includes(t.type);n&&a?(i.removeAttribute(s),ie(e.play())):!a&&e.playing&&(i.setAttribute(s,""),e.pause())})),M.isIos){const t=U.call(e,'input[type="range"]');Array.from(t).forEach((e=>this.bind(e,i,(e=>P(e.target)))))}this.bind(t.inputs.seek,i,(t=>{const i=t.currentTarget;let s=i.getAttribute("seek-value");S.empty(s)&&(s=i.value),i.removeAttribute("seek-value"),e.currentTime=s/i.max*e.duration}),"seek"),this.bind(t.progress,"mouseenter mouseleave mousemove",(t=>Pe.updateSeekTooltip.call(e,t))),this.bind(t.progress,"mousemove touchmove",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startMove(t)})),this.bind(t.progress,"mouseleave touchend click",(()=>{const{previewThumbnails:t}=e;t&&t.loaded&&t.endMove(!1,!0)})),this.bind(t.progress,"mousedown touchstart",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startScrubbing(t)})),this.bind(t.progress,"mouseup touchend",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.endScrubbing(t)})),M.isWebKit&&Array.from(U.call(e,'input[type="range"]')).forEach((t=>{this.bind(t,"input",(t=>Pe.updateRangeFill.call(e,t.target)))})),e.config.toggleInvert&&!S.element(t.display.duration)&&this.bind(t.display.currentTime,"click",(()=>{0!==e.currentTime&&(e.config.invertTime=!e.config.invertTime,Pe.timeUpdate.call(e))})),this.bind(t.inputs.volume,i,(t=>{e.volume=t.target.value}),"volume"),this.bind(t.controls,"mouseenter mouseleave",(i=>{t.controls.hover=!e.touch&&"mouseenter"===i.type})),t.fullscreen&&Array.from(t.fullscreen.children).filter((e=>!e.contains(t.container))).forEach((i=>{this.bind(i,"mouseenter mouseleave",(i=>{t.controls&&(t.controls.hover=!e.touch&&"mouseenter"===i.type)}))})),this.bind(t.controls,"mousedown mouseup touchstart touchend touchcancel",(e=>{t.controls.pressed=["mousedown","touchstart"].includes(e.type)})),this.bind(t.controls,"focusin",(()=>{const{config:i,timers:s}=e;R(t.controls,i.classNames.noTransition,!0),Fe.toggleControls.call(e,!0),setTimeout((()=>{R(t.controls,i.classNames.noTransition,!1)}),0);const n=this.touch?3e3:4e3;clearTimeout(s.controls),s.controls=setTimeout((()=>Fe.toggleControls.call(e,!1)),n)})),this.bind(t.inputs.volume,"wheel",(t=>{const i=t.webkitDirectionInvertedFromDevice,[s,n]=[t.deltaX,-t.deltaY].map((e=>i?-e:e)),a=Math.sign(Math.abs(s)>Math.abs(n)?s:n);e.increaseVolume(a/50);const{volume:l}=e.media;(1===a&&l<1||-1===a&&l>0)&&t.preventDefault()}),"volume",!1)})),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.firstTouch=this.firstTouch.bind(this)}handleKey(e){const{player:t}=this,{elements:i}=t,{key:s,type:n,altKey:a,ctrlKey:l,metaKey:r,shiftKey:o}=e,c="keydown"===n,u=c&&s===this.lastKey;if(a||l||r||o)return;if(!s)return;if(c){const n=document.activeElement;if(S.element(n)){const{editable:s}=t.config.selectors,{seek:a}=i.inputs;if(n!==a&&V(n,s))return;if(" "===e.key&&V(n,'button, [role^="menuitem"]'))return}switch([" ","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","0","1","2","3","4","5","6","7","8","9","c","f","k","l","m"].includes(s)&&(e.preventDefault(),e.stopPropagation()),s){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":u||(h=parseInt(s,10),t.currentTime=t.duration/10*h);break;case" ":case"k":u||ie(t.togglePlay());break;case"ArrowUp":t.increaseVolume(.1);break;case"ArrowDown":t.decreaseVolume(.1);break;case"m":u||(t.muted=!t.muted);break;case"ArrowRight":t.forward();break;case"ArrowLeft":t.rewind();break;case"f":t.fullscreen.toggle();break;case"c":u||t.toggleCaptions();break;case"l":t.loop=!t.loop}"Escape"===s&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=s}else this.lastKey=null;var h}toggleMenu(e){Pe.toggleMenu.call(this.player,e)}}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof __webpack_require__.g?__webpack_require__.g:"undefined"!=typeof self&&self;var Ue=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e,t){e.exports=function(){var e=function(){},t={},i={},s={};function n(e,t){e=e.push?e:[e];var n,a,l,r=[],o=e.length,c=o;for(n=function(e,i){i.length&&r.push(e),--c||t(r)};o--;)a=e[o],(l=i[a])?n(a,l):(s[a]=s[a]||[]).push(n)}function a(e,t){if(e){var n=s[e];if(i[e]=t,n)for(;n.length;)n[0](e,t),n.splice(0,1)}}function l(t,i){t.call&&(t={success:t}),i.length?(t.error||e)(i):(t.success||e)(t)}function r(t,i,s,n){var a,l,o=document,c=s.async,u=(s.numRetries||0)+1,h=s.before||e,d=t.replace(/[\?|#].*$/,""),m=t.replace(/^(css|img)!/,"");n=n||0,/(^css!|\.css$)/.test(d)?((l=o.createElement("link")).rel="stylesheet",l.href=m,(a="hideFocus"in l)&&l.relList&&(a=0,l.rel="preload",l.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(d)?(l=o.createElement("img")).src=m:((l=o.createElement("script")).src=t,l.async=void 0===c||c),l.onload=l.onerror=l.onbeforeload=function(e){var o=e.type[0];if(a)try{l.sheet.cssText.length||(o="e")}catch(e){18!=e.code&&(o="e")}if("e"==o){if((n+=1)<u)return r(t,i,s,n)}else if("preload"==l.rel&&"style"==l.as)return l.rel="stylesheet";i(t,o,e.defaultPrevented)},!1!==h(t,l)&&o.head.appendChild(l)}function o(e,t,i){var s,n,a=(e=e.push?e:[e]).length,l=a,o=[];for(s=function(e,i,s){if("e"==i&&o.push(e),"b"==i){if(!s)return;o.push(e)}--a||t(o)},n=0;n<l;n++)r(e[n],s,i)}function c(e,i,s){var n,r;if(i&&i.trim&&(n=i),r=(n?s:i)||{},n){if(n in t)throw"LoadJS";t[n]=!0}function c(t,i){o(e,(function(e){l(r,e),t&&l({success:t,error:i},e),a(n,e)}),r)}if(r.returnPromise)return new Promise(c);c()}return c.ready=function(e,t){return n(e,(function(e){l(t,e)})),c},c.done=function(e){a(e,[])},c.reset=function(){t={},i={},s={}},c.isDefined=function(e){return e in t},c}()}));function Be(e){return new Promise(((t,i)=>{Ue(e,{success:t,error:i})}))}function We(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,Z.call(this,this.media,e?"play":"pause"))}const ze={setup(){const e=this;R(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,ue.call(e),S.object(window.Vimeo)?ze.ready.call(e):Be(e.config.urls.vimeo.sdk).then((()=>{ze.ready.call(e)})).catch((t=>{e.debug.warn("Vimeo SDK (player.js) failed to load",t)}))},ready(){const e=this,t=e.config.vimeo,{premium:i,referrerPolicy:s,...n}=t;let a=e.media.getAttribute("src"),l="";S.empty(a)?(a=e.media.getAttribute(e.config.attributes.embed.id),l=e.media.getAttribute(e.config.attributes.embed.hash)):l=function(e){const t=e.match(/^.*(vimeo.com\/|video\/)(\d+)(\?.*&*h=|\/)+([\d,a-f]+)/);return t&&5===t.length?t[4]:null}(a);const r=l?{h:l}:{};i&&Object.assign(n,{controls:!1,sidedock:!1});const o=Ne({loop:e.config.loop.active,autoplay:e.autoplay,muted:e.muted,gesture:"media",playsinline:e.config.playsinline,...r,...n}),c=(u=a,S.empty(u)?null:S.number(Number(u))?u:u.match(/^.*(vimeo.com\/|video\/)(\d+).*/)?RegExp.$2:u);var u;const h=$("iframe"),d=me(e.config.urls.vimeo.iframe,c,o);if(h.setAttribute("src",d),h.setAttribute("allowfullscreen",""),h.setAttribute("allow",["autoplay","fullscreen","picture-in-picture","encrypted-media","accelerometer","gyroscope"].join("; ")),S.empty(s)||h.setAttribute("referrerPolicy",s),i||!t.customControls)h.setAttribute("data-poster",e.poster),e.media=q(h,e.media);else{const t=$("div",{class:e.config.classNames.embedContainer,"data-poster":e.poster});t.appendChild(h),e.media=q(t,e.media)}t.customControls||Te(me(e.config.urls.vimeo.api,d)).then((t=>{!S.empty(t)&&t.thumbnail_url&&Fe.setPoster.call(e,t.thumbnail_url).catch((()=>{}))})),e.embed=new window.Vimeo.Player(h,{autopause:e.config.autopause,muted:e.muted}),e.media.paused=!0,e.media.currentTime=0,e.supported.ui&&e.embed.disableTextTrack(),e.media.play=()=>(We.call(e,!0),e.embed.play()),e.media.pause=()=>(We.call(e,!1),e.embed.pause()),e.media.stop=()=>{e.pause(),e.currentTime=0};let{currentTime:m}=e.media;Object.defineProperty(e.media,"currentTime",{get:()=>m,set(t){const{embed:i,media:s,paused:n,volume:a}=e,l=n&&!i.hasPlayed;s.seeking=!0,Z.call(e,s,"seeking"),Promise.resolve(l&&i.setVolume(0)).then((()=>i.setCurrentTime(t))).then((()=>l&&i.pause())).then((()=>l&&i.setVolume(a))).catch((()=>{}))}});let p=e.config.speed.selected;Object.defineProperty(e.media,"playbackRate",{get:()=>p,set(t){e.embed.setPlaybackRate(t).then((()=>{p=t,Z.call(e,e.media,"ratechange")})).catch((()=>{e.options.speed=[1]}))}});let{volume:g}=e.config;Object.defineProperty(e.media,"volume",{get:()=>g,set(t){e.embed.setVolume(t).then((()=>{g=t,Z.call(e,e.media,"volumechange")}))}});let{muted:f}=e.config;Object.defineProperty(e.media,"muted",{get:()=>f,set(t){const i=!!S.boolean(t)&&t;e.embed.setMuted(!!i||e.config.muted).then((()=>{f=i,Z.call(e,e.media,"volumechange")}))}});let y,{loop:b}=e.config;Object.defineProperty(e.media,"loop",{get:()=>b,set(t){const i=S.boolean(t)?t:e.config.loop.active;e.embed.setLoop(i).then((()=>{b=i}))}}),e.embed.getVideoUrl().then((t=>{y=t,Pe.setDownloadUrl.call(e)})).catch((e=>{this.debug.warn(e)})),Object.defineProperty(e.media,"currentSrc",{get:()=>y}),Object.defineProperty(e.media,"ended",{get:()=>e.currentTime===e.duration}),Promise.all([e.embed.getVideoWidth(),e.embed.getVideoHeight()]).then((t=>{const[i,s]=t;e.embed.ratio=he(i,s),ue.call(this)})),e.embed.setAutopause(e.config.autopause).then((t=>{e.config.autopause=t})),e.embed.getVideoTitle().then((t=>{e.config.title=t,Fe.setTitle.call(this)})),e.embed.getCurrentTime().then((t=>{m=t,Z.call(e,e.media,"timeupdate")})),e.embed.getDuration().then((t=>{e.media.duration=t,Z.call(e,e.media,"durationchange")})),e.embed.getTextTracks().then((t=>{e.media.textTracks=t,xe.setup.call(e)})),e.embed.on("cuechange",(({cues:t=[]})=>{const i=t.map((e=>function(e){const t=document.createDocumentFragment(),i=document.createElement("div");return t.appendChild(i),i.innerHTML=e,t.firstChild.innerText}(e.text)));xe.updateCues.call(e,i)})),e.embed.on("loaded",(()=>{if(e.embed.getPaused().then((t=>{We.call(e,!t),t||Z.call(e,e.media,"playing")})),S.element(e.embed.element)&&e.supported.ui){e.embed.element.setAttribute("tabindex",-1)}})),e.embed.on("bufferstart",(()=>{Z.call(e,e.media,"waiting")})),e.embed.on("bufferend",(()=>{Z.call(e,e.media,"playing")})),e.embed.on("play",(()=>{We.call(e,!0),Z.call(e,e.media,"playing")})),e.embed.on("pause",(()=>{We.call(e,!1)})),e.embed.on("timeupdate",(t=>{e.media.seeking=!1,m=t.seconds,Z.call(e,e.media,"timeupdate")})),e.embed.on("progress",(t=>{e.media.buffered=t.percent,Z.call(e,e.media,"progress"),1===parseInt(t.percent,10)&&Z.call(e,e.media,"canplaythrough"),e.embed.getDuration().then((t=>{t!==e.media.duration&&(e.media.duration=t,Z.call(e,e.media,"durationchange"))}))})),e.embed.on("seeked",(()=>{e.media.seeking=!1,Z.call(e,e.media,"seeked")})),e.embed.on("ended",(()=>{e.media.paused=!0,Z.call(e,e.media,"ended")})),e.embed.on("error",(t=>{e.media.error=t,Z.call(e,e.media,"error")})),t.customControls&&setTimeout((()=>Fe.build.call(e)),0)}};function Ke(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,Z.call(this,this.media,e?"play":"pause"))}function Ye(e){return e.noCookie?"https://www.youtube-nocookie.com":"http:"===window.location.protocol?"http://www.youtube.com":void 0}const Qe={setup(){if(R(this.elements.wrapper,this.config.classNames.embed,!0),S.object(window.YT)&&S.function(window.YT.Player))Qe.ready.call(this);else{const e=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=()=>{S.function(e)&&e(),Qe.ready.call(this)},Be(this.config.urls.youtube.sdk).catch((e=>{this.debug.warn("YouTube API failed to load",e)}))}},getTitle(e){Te(me(this.config.urls.youtube.api,e)).then((e=>{if(S.object(e)){const{title:t,height:i,width:s}=e;this.config.title=t,Fe.setTitle.call(this),this.embed.ratio=he(s,i)}ue.call(this)})).catch((()=>{ue.call(this)}))},ready(){const e=this,t=e.config.youtube,i=e.media&&e.media.getAttribute("id");if(!S.empty(i)&&i.startsWith("youtube-"))return;let s=e.media.getAttribute("src");S.empty(s)&&(s=e.media.getAttribute(this.config.attributes.embed.id));const n=(a=s,S.empty(a)?null:a.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/)?RegExp.$2:a);var a;const l=$("div",{id:`${e.provider}-${Math.floor(1e4*Math.random())}`,"data-poster":t.customControls?e.poster:void 0});if(e.media=q(l,e.media),t.customControls){const t=e=>`https://i.ytimg.com/vi/${n}/${e}default.jpg`;Re(t("maxres"),121).catch((()=>Re(t("sd"),121))).catch((()=>Re(t("hq")))).then((t=>Fe.setPoster.call(e,t.src))).then((t=>{t.includes("maxres")||(e.elements.poster.style.backgroundSize="cover")})).catch((()=>{}))}e.embed=new window.YT.Player(e.media,{videoId:n,host:Ye(t),playerVars:x({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui&&t.customControls?0:1,disablekb:1,playsinline:e.config.playsinline&&!e.config.fullscreen.iosNative?1:0,cc_load_policy:e.captions.active?1:0,cc_lang_pref:e.config.captions.language,widget_referrer:window?window.location.href:null},t),events:{onError(t){if(!e.media.error){const i=t.data,s={2:"The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.",5:"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.",100:"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.",101:"The owner of the requested video does not allow it to be played in embedded players.",150:"The owner of the requested video does not allow it to be played in embedded players."}[i]||"An unknown error occurred";e.media.error={code:i,message:s},Z.call(e,e.media,"error")}},onPlaybackRateChange(t){const i=t.target;e.media.playbackRate=i.getPlaybackRate(),Z.call(e,e.media,"ratechange")},onReady(i){if(S.function(e.media.play))return;const s=i.target;Qe.getTitle.call(e,n),e.media.play=()=>{Ke.call(e,!0),s.playVideo()},e.media.pause=()=>{Ke.call(e,!1),s.pauseVideo()},e.media.stop=()=>{s.stopVideo()},e.media.duration=s.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,"currentTime",{get:()=>Number(s.getCurrentTime()),set(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,Z.call(e,e.media,"seeking"),s.seekTo(t)}}),Object.defineProperty(e.media,"playbackRate",{get:()=>s.getPlaybackRate(),set(e){s.setPlaybackRate(e)}});let{volume:a}=e.config;Object.defineProperty(e.media,"volume",{get:()=>a,set(t){a=t,s.setVolume(100*a),Z.call(e,e.media,"volumechange")}});let{muted:l}=e.config;Object.defineProperty(e.media,"muted",{get:()=>l,set(t){const i=S.boolean(t)?t:l;l=i,s[i?"mute":"unMute"](),s.setVolume(100*a),Z.call(e,e.media,"volumechange")}}),Object.defineProperty(e.media,"currentSrc",{get:()=>s.getVideoUrl()}),Object.defineProperty(e.media,"ended",{get:()=>e.currentTime===e.duration});const r=s.getAvailablePlaybackRates();e.options.speed=r.filter((t=>e.config.speed.options.includes(t))),e.supported.ui&&t.customControls&&e.media.setAttribute("tabindex",-1),Z.call(e,e.media,"timeupdate"),Z.call(e,e.media,"durationchange"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval((()=>{e.media.buffered=s.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBuffered<e.media.buffered)&&Z.call(e,e.media,"progress"),e.media.lastBuffered=e.media.buffered,1===e.media.buffered&&(clearInterval(e.timers.buffering),Z.call(e,e.media,"canplaythrough"))}),200),t.customControls&&setTimeout((()=>Fe.build.call(e)),50)},onStateChange(i){const s=i.target;clearInterval(e.timers.playing);switch(e.media.seeking&&[1,2].includes(i.data)&&(e.media.seeking=!1,Z.call(e,e.media,"seeked")),i.data){case-1:Z.call(e,e.media,"timeupdate"),e.media.buffered=s.getVideoLoadedFraction(),Z.call(e,e.media,"progress");break;case 0:Ke.call(e,!1),e.media.loop?(s.stopVideo(),s.playVideo()):Z.call(e,e.media,"ended");break;case 1:t.customControls&&!e.config.autoplay&&e.media.paused&&!e.embed.hasPlayed?e.media.pause():(Ke.call(e,!0),Z.call(e,e.media,"playing"),e.timers.playing=setInterval((()=>{Z.call(e,e.media,"timeupdate")}),50),e.media.duration!==s.getDuration()&&(e.media.duration=s.getDuration(),Z.call(e,e.media,"durationchange")));break;case 2:e.muted||e.embed.unMute(),Ke.call(e,!1);break;case 3:Z.call(e,e.media,"waiting")}Z.call(e,e.elements.container,"statechange",!1,{code:i.data})}}})}},Xe={setup(){this.media?(R(this.elements.container,this.config.classNames.type.replace("{0}",this.type),!0),R(this.elements.container,this.config.classNames.provider.replace("{0}",this.provider),!0),this.isEmbed&&R(this.elements.container,this.config.classNames.type.replace("{0}","video"),!0),this.isVideo&&(this.elements.wrapper=$("div",{class:this.config.classNames.video}),L(this.media,this.elements.wrapper),this.elements.poster=$("div",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster)),this.isHTML5?de.setup.call(this):this.isYouTube?Qe.setup.call(this):this.isVimeo&&ze.setup.call(this)):this.debug.warn("No media element found!")}};class Je{constructor(t){e(this,"load",(()=>{this.enabled&&(S.object(window.google)&&S.object(window.google.ima)?this.ready():Be(this.player.config.urls.googleIMA.sdk).then((()=>{this.ready()})).catch((()=>{this.trigger("error",new Error("Google IMA SDK failed to load"))})))})),e(this,"ready",(()=>{var e;this.enabled||((e=this).manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()),this.startSafetyTimer(12e3,"ready()"),this.managerPromise.then((()=>{this.clearSafetyTimer("onAdsManagerLoaded()")})),this.listeners(),this.setupIMA()})),e(this,"setupIMA",(()=>{this.elements.container=$("div",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,(e=>this.onAdsManagerLoaded(e)),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(e=>this.onAdError(e)),!1),this.requestAds()})),e(this,"requestAds",(()=>{const{container:e}=this.player.elements;try{const t=new google.ima.AdsRequest;t.adTagUrl=this.tagUrl,t.linearAdSlotWidth=e.offsetWidth,t.linearAdSlotHeight=e.offsetHeight,t.nonLinearAdSlotWidth=e.offsetWidth,t.nonLinearAdSlotHeight=e.offsetHeight,t.forceNonLinearFullSlot=!1,t.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(t)}catch(e){this.onAdError(e)}})),e(this,"pollCountdown",((e=!1)=>{if(!e)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");this.countdownTimer=setInterval((()=>{const e=Ee(Math.max(this.manager.getRemainingTime(),0)),t=`${ve.get("advertisement",this.player.config)} - ${e}`;this.elements.container.setAttribute("data-badge-text",t)}),100)})),e(this,"onAdsManagerLoaded",(e=>{if(!this.enabled)return;const t=new google.ima.AdsRenderingSettings;t.restoreCustomPlaybackStateOnAdBreakComplete=!0,t.enablePreloading=!0,this.manager=e.getAdsManager(this.player,t),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(e=>this.onAdError(e))),Object.keys(google.ima.AdEvent.Type).forEach((e=>{this.manager.addEventListener(google.ima.AdEvent.Type[e],(e=>this.onAdEvent(e)))})),this.trigger("loaded")})),e(this,"addCuePoints",(()=>{S.empty(this.cuePoints)||this.cuePoints.forEach((e=>{if(0!==e&&-1!==e&&e<this.player.duration){const t=this.player.elements.progress;if(S.element(t)){const i=100/this.player.duration*e,s=$("span",{class:this.player.config.classNames.cues});s.style.left=`${i.toString()}%`,t.appendChild(s)}}}))})),e(this,"onAdEvent",(e=>{const{container:t}=this.player.elements,i=e.getAd(),s=e.getAdData();switch((e=>{Z.call(this.player,this.player.media,`ads${e.replace(/_/g,"").toLowerCase()}`)})(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger("loaded"),this.pollCountdown(!0),i.isLinear()||(i.width=t.offsetWidth,i.height=t.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.player.ended?this.loadAds():this.loader.contentComplete();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:s.adError&&this.player.debug.warn(`Non-fatal ad error: ${s.adError.getMessage()}`)}})),e(this,"onAdError",(e=>{this.cancel(),this.player.debug.warn("Ads error",e)})),e(this,"listeners",(()=>{const{container:e}=this.player.elements;let t;this.player.on("canplay",(()=>{this.addCuePoints()})),this.player.on("ended",(()=>{this.loader.contentComplete()})),this.player.on("timeupdate",(()=>{t=this.player.currentTime})),this.player.on("seeked",(()=>{const e=this.player.currentTime;S.empty(this.cuePoints)||this.cuePoints.forEach(((i,s)=>{t<i&&i<e&&(this.manager.discardAdBreak(),this.cuePoints.splice(s,1))}))})),window.addEventListener("resize",(()=>{this.manager&&this.manager.resize(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL)}))})),e(this,"play",(()=>{const{container:e}=this.player.elements;this.managerPromise||this.resumeContent(),this.managerPromise.then((()=>{this.manager.setVolume(this.player.volume),this.elements.displayContainer.initialize();try{this.initialized||(this.manager.init(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL),this.manager.start()),this.initialized=!0}catch(e){this.onAdError(e)}})).catch((()=>{}))})),e(this,"resumeContent",(()=>{this.elements.container.style.zIndex="",this.playing=!1,ie(this.player.media.play())})),e(this,"pauseContent",(()=>{this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()})),e(this,"cancel",(()=>{this.initialized&&this.resumeContent(),this.trigger("error"),this.loadAds()})),e(this,"loadAds",(()=>{this.managerPromise.then((()=>{this.manager&&this.manager.destroy(),this.managerPromise=new Promise((e=>{this.on("loaded",e),this.player.debug.log(this.manager)})),this.initialized=!1,this.requestAds()})).catch((()=>{}))})),e(this,"trigger",((e,...t)=>{const i=this.events[e];S.array(i)&&i.forEach((e=>{S.function(e)&&e.apply(this,t)}))})),e(this,"on",((e,t)=>(S.array(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this))),e(this,"startSafetyTimer",((e,t)=>{this.player.debug.log(`Safety timer invoked from: ${t}`),this.safetyTimer=setTimeout((()=>{this.cancel(),this.clearSafetyTimer("startSafetyTimer()")}),e)})),e(this,"clearSafetyTimer",(e=>{S.nullOrUndefined(this.safetyTimer)||(this.player.debug.log(`Safety timer cleared from: ${e}`),clearTimeout(this.safetyTimer),this.safetyTimer=null)})),this.player=t,this.config=t.config.ads,this.playing=!1,this.initialized=!1,this.elements={container:null,displayContainer:null},this.manager=null,this.loader=null,this.cuePoints=null,this.events={},this.safetyTimer=null,this.countdownTimer=null,this.managerPromise=new Promise(((e,t)=>{this.on("loaded",e),this.on("error",t)})),this.load()}get enabled(){const{config:e}=this;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!S.empty(e.publisherId)||S.url(e.tagUrl))}get tagUrl(){const{config:e}=this;if(S.url(e.tagUrl))return e.tagUrl;return`https://go.aniview.com/api/adserver6/vast/?${Ne({AV_PUBLISHERID:"58c25bb0073ef448b1087ad6",AV_CHANNELID:"5a0458dc28a06145e4519d21",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId})}`}}function Ge(e=0,t=0,i=255){return Math.min(Math.max(e,t),i)}const Ze=e=>{const t=[];return e.split(/\r\n\r\n|\n\n|\r\r/).forEach((e=>{const i={};e.split(/\r\n|\n|\r/).forEach((e=>{if(S.number(i.startTime)){if(!S.empty(e.trim())&&S.empty(i.text)){const t=e.trim().split("#xywh=");[i.text]=t,t[1]&&([i.x,i.y,i.w,i.h]=t[1].split(","))}}else{const t=e.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);t&&(i.startTime=60*Number(t[1]||0)*60+60*Number(t[2])+Number(t[3])+Number(`0.${t[4]}`),i.endTime=60*Number(t[6]||0)*60+60*Number(t[7])+Number(t[8])+Number(`0.${t[9]}`))}})),i.text&&t.push(i)})),t},et=(e,t)=>{const i={};return e>t.width/t.height?(i.width=t.width,i.height=1/e*t.width):(i.height=t.height,i.width=e*t.height),i};class tt{constructor(t){e(this,"load",(()=>{this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then((()=>{this.enabled&&(this.render(),this.determineContainerAutoSizing(),this.listeners(),this.loaded=!0)}))})),e(this,"getThumbnails",(()=>new Promise((e=>{const{src:t}=this.player.config.previewThumbnails;if(S.empty(t))throw new Error("Missing previewThumbnails.src config attribute");const i=()=>{this.thumbnails.sort(((e,t)=>e.height-t.height)),this.player.debug.log("Preview thumbnails",this.thumbnails),e()};if(S.function(t))t((e=>{this.thumbnails=e,i()}));else{const e=(S.string(t)?[t]:t).map((e=>this.getThumbnail(e)));Promise.all(e).then(i)}})))),e(this,"getThumbnail",(e=>new Promise((t=>{Te(e).then((i=>{const s={frames:Ze(i),height:null,urlPrefix:""};s.frames[0].text.startsWith("/")||s.frames[0].text.startsWith("http://")||s.frames[0].text.startsWith("https://")||(s.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));const n=new Image;n.onload=()=>{s.height=n.naturalHeight,s.width=n.naturalWidth,this.thumbnails.push(s),t()},n.src=s.urlPrefix+s.frames[0].text}))})))),e(this,"startMove",(e=>{if(this.loaded&&S.event(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t,i;const s=this.player.elements.progress.getBoundingClientRect(),n=100/s.width*(e.pageX-s.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=Ee(this.seekTime);const a=null===(t=this.player.config.markers)||void 0===t||null===(i=t.points)||void 0===i?void 0:i.find((({time:e})=>e===Math.round(this.seekTime)));a&&this.elements.thumb.time.insertAdjacentHTML("afterbegin",`${a.label}<br>`)}this.showImageAtCurrentTime()}})),e(this,"endMove",(()=>{this.toggleThumbContainer(!1,!0)})),e(this,"startScrubbing",(e=>{(S.nullOrUndefined(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))})),e(this,"endScrubbing",(()=>{this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):G.call(this.player,this.player.media,"timeupdate",(()=>{this.mouseDown||this.toggleScrubbingContainer(!1)}))})),e(this,"listeners",(()=>{this.player.on("play",(()=>{this.toggleThumbContainer(!1,!0)})),this.player.on("seeked",(()=>{this.toggleThumbContainer(!1)})),this.player.on("timeupdate",(()=>{this.lastTime=this.player.media.currentTime}))})),e(this,"render",(()=>{this.elements.thumb.container=$("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=$("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);const e=$("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=$("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.imageContainer.appendChild(e),S.element(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=$("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)})),e(this,"destroy",(()=>{this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()})),e(this,"showImageAtCurrentTime",(()=>{this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();const e=this.thumbnails[0].frames.findIndex((e=>this.seekTime>=e.startTime&&this.seekTime<=e.endTime)),t=e>=0;let i=0;this.mouseDown||this.toggleThumbContainer(t),t&&(this.thumbnails.forEach(((t,s)=>{this.loadedImages.includes(t.frames[e].text)&&(i=s)})),e!==this.showingThumb&&(this.showingThumb=e,this.loadImage(i)))})),e(this,"loadImage",((e=0)=>{const t=this.showingThumb,i=this.thumbnails[e],{urlPrefix:s}=i,n=i.frames[t],a=i.frames[t].text,l=s+a;if(this.currentImageElement&&this.currentImageElement.dataset.filename===a)this.showImage(this.currentImageElement,n,e,t,a,!1),this.currentImageElement.dataset.index=t,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);const i=new Image;i.src=l,i.dataset.index=t,i.dataset.filename=a,this.showingThumbFilename=a,this.player.debug.log(`Loading image: ${l}`),i.onload=()=>this.showImage(i,n,e,t,a,!0),this.loadingImage=i,this.removeOldImages(i)}})),e(this,"showImage",((e,t,i,s,n,a=!0)=>{this.player.debug.log(`Showing thumb: ${n}. num: ${s}. qual: ${i}. newimg: ${a}`),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(n)||this.loadedImages.push(n)),this.preloadNearby(s,!0).then(this.preloadNearby(s,!1)).then(this.getHigherQuality(i,e,t,n))})),e(this,"removeOldImages",(e=>{Array.from(this.currentImageContainer.children).forEach((t=>{if("img"!==t.tagName.toLowerCase())return;const i=this.usingSprites?500:1e3;if(t.dataset.index!==e.dataset.index&&!t.dataset.deleting){t.dataset.deleting=!0;const{currentImageContainer:e}=this;setTimeout((()=>{e.removeChild(t),this.player.debug.log(`Removing thumb: ${t.dataset.filename}`)}),i)}}))})),e(this,"preloadNearby",((e,t=!0)=>new Promise((i=>{setTimeout((()=>{const s=this.thumbnails[0].frames[e].text;if(this.showingThumbFilename===s){let n;n=t?this.thumbnails[0].frames.slice(e):this.thumbnails[0].frames.slice(0,e).reverse();let a=!1;n.forEach((e=>{const t=e.text;if(t!==s&&!this.loadedImages.includes(t)){a=!0,this.player.debug.log(`Preloading thumb filename: ${t}`);const{urlPrefix:e}=this.thumbnails[0],s=e+t,n=new Image;n.src=s,n.onload=()=>{this.player.debug.log(`Preloaded thumb filename: ${t}`),this.loadedImages.includes(t)||this.loadedImages.push(t),i()}}})),a||i()}}),300)})))),e(this,"getHigherQuality",((e,t,i,s)=>{if(e<this.thumbnails.length-1){let n=t.naturalHeight;this.usingSprites&&(n=i.h),n<this.thumbContainerHeight&&setTimeout((()=>{this.showingThumbFilename===s&&(this.player.debug.log(`Showing higher quality thumb for: ${s}`),this.loadImage(e+1))}),300)}})),e(this,"toggleThumbContainer",((e=!1,t=!1)=>{const i=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(i,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)})),e(this,"toggleScrubbingContainer",((e=!1)=>{const t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)})),e(this,"determineContainerAutoSizing",(()=>{(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)})),e(this,"setThumbContainerSizeAndPos",(()=>{const{imageContainer:e}=this.elements.thumb;if(this.sizeSpecifiedInCSS){if(e.clientHeight>20&&e.clientWidth<20){const t=Math.floor(e.clientHeight*this.thumbAspectRatio);e.style.width=`${t}px`}else if(e.clientHeight<20&&e.clientWidth>20){const t=Math.floor(e.clientWidth/this.thumbAspectRatio);e.style.height=`${t}px`}}else{const t=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);e.style.height=`${this.thumbContainerHeight}px`,e.style.width=`${t}px`}this.setThumbContainerPos()})),e(this,"setThumbContainerPos",(()=>{const e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),{container:i}=this.elements.thumb,s=t.left-e.left+10,n=t.right-e.left-i.clientWidth-10,a=this.mousePosX-e.left-i.clientWidth/2,l=Ge(a,s,n);i.style.left=`${l}px`,i.style.setProperty("--preview-arrow-offset",a-l+"px")})),e(this,"setScrubbingContainerSize",(()=>{const{width:e,height:t}=et(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});this.elements.scrubbing.container.style.width=`${e}px`,this.elements.scrubbing.container.style.height=`${t}px`})),e(this,"setImageSizeAndOffset",((e,t)=>{if(!this.usingSprites)return;const i=this.thumbContainerHeight/t.h;e.style.height=e.naturalHeight*i+"px",e.style.width=e.naturalWidth*i+"px",e.style.left=`-${t.x*i}px`,e.style.top=`-${t.y*i}px`})),this.player=t,this.thumbnails=[],this.loaded=!1,this.lastMouseMoveTime=Date.now(),this.mouseDown=!1,this.loadedImages=[],this.elements={thumb:{},scrubbing:{}},this.load()}get enabled(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}get currentImageContainer(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}get usingSprites(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}get thumbAspectRatio(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}get thumbContainerHeight(){if(this.mouseDown){const{height:e}=et(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});return e}return this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}get currentImageElement(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement}set currentImageElement(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}const it={insertElements(e,t){S.string(t)?_(e,this.media,{src:t}):S.array(t)&&t.forEach((t=>{_(e,this.media,t)}))},change(e){N(e,"sources.length")?(de.cancelRequests.call(this),this.destroy.call(this,(()=>{this.options.quality=[],O(this.media),this.media=null,S.element(this.elements.container)&&this.elements.container.removeAttribute("class");const{sources:t,type:i}=e,[{provider:s=_e.html5,src:n}]=t,a="html5"===s?i:"div",l="html5"===s?{}:{src:n};Object.assign(this,{provider:s,type:i,supported:K.check(i,s,this.config.playsinline),media:$(a,l)}),this.elements.container.appendChild(this.media),S.boolean(e.autoplay)&&(this.config.autoplay=e.autoplay),this.isHTML5&&(this.config.crossorigin&&this.media.setAttribute("crossorigin",""),this.config.autoplay&&this.media.setAttribute("autoplay",""),S.empty(e.poster)||(this.poster=e.poster),this.config.loop.active&&this.media.setAttribute("loop",""),this.config.muted&&this.media.setAttribute("muted",""),this.config.playsinline&&this.media.setAttribute("playsinline","")),Fe.addStyleHook.call(this),this.isHTML5&&it.insertElements.call(this,"source",t),this.config.title=e.title,Xe.setup.call(this),this.isHTML5&&Object.keys(e).includes("tracks")&&it.insertElements.call(this,"track",e.tracks),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&Fe.build.call(this),this.isHTML5&&this.media.load(),S.empty(e.previewThumbnails)||(Object.assign(this.config.previewThumbnails,e.previewThumbnails),this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new tt(this))),this.fullscreen.update()}),!0)):this.debug.warn("Invalid source format")}};class st{constructor(t,i){if(e(this,"play",(()=>S.function(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then((()=>this.ads.play())).catch((()=>ie(this.media.play()))),this.media.play()):null)),e(this,"pause",(()=>this.playing&&S.function(this.media.pause)?this.media.pause():null)),e(this,"togglePlay",(e=>(S.boolean(e)?e:!this.playing)?this.play():this.pause())),e(this,"stop",(()=>{this.isHTML5?(this.pause(),this.restart()):S.function(this.media.stop)&&this.media.stop()})),e(this,"restart",(()=>{this.currentTime=0})),e(this,"rewind",(e=>{this.currentTime-=S.number(e)?e:this.config.seekTime})),e(this,"forward",(e=>{this.currentTime+=S.number(e)?e:this.config.seekTime})),e(this,"increaseVolume",(e=>{const t=this.media.muted?0:this.volume;this.volume=t+(S.number(e)?e:0)})),e(this,"decreaseVolume",(e=>{this.increaseVolume(-e)})),e(this,"airplay",(()=>{K.airplay&&this.media.webkitShowPlaybackTargetPicker()})),e(this,"toggleControls",(e=>{if(this.supported.ui&&!this.isAudio){const t=F(this.elements.container,this.config.classNames.hideControls),i=void 0===e?void 0:!e,s=R(this.elements.container,this.config.classNames.hideControls,i);if(s&&S.array(this.config.controls)&&this.config.controls.includes("settings")&&!S.empty(this.config.settings)&&Pe.toggleMenu.call(this,!1),s!==t){const e=s?"controlshidden":"controlsshown";Z.call(this,this.media,e)}return!s}return!1})),e(this,"on",((e,t)=>{X.call(this,this.elements.container,e,t)})),e(this,"once",((e,t)=>{G.call(this,this.elements.container,e,t)})),e(this,"off",((e,t)=>{J(this.elements.container,e,t)})),e(this,"destroy",((e,t=!1)=>{if(!this.ready)return;const i=()=>{document.body.style.overflow="",this.embed=null,t?(Object.keys(this.elements).length&&(O(this.elements.buttons.play),O(this.elements.captions),O(this.elements.controls),O(this.elements.wrapper),this.elements.buttons.play=null,this.elements.captions=null,this.elements.controls=null,this.elements.wrapper=null),S.function(e)&&e()):(ee.call(this),de.cancelRequests.call(this),q(this.elements.original,this.elements.container),Z.call(this,this.elements.original,"destroyed",!0),S.function(e)&&e.call(this.elements.original),this.ready=!1,setTimeout((()=>{this.elements=null,this.media=null}),200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?(Fe.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&S.function(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))})),e(this,"supports",(e=>K.mime.call(this,e))),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=K.touch,this.media=t,S.string(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||S.nodeList(this.media)||S.array(this.media))&&(this.media=this.media[0]),this.config=x({},Le,st.defaults,i||{},(()=>{try{return JSON.parse(this.media.getAttribute("data-plyr-config"))}catch(e){return{}}})()),this.elements={container:null,fullscreen:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new De(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",K),S.nullOrUndefined(this.media)||!S.element(this.media))return void this.debug.error("Setup failed: no suitable element passed");if(this.media.plyr)return void this.debug.warn("Target already setup");if(!this.config.enabled)return void this.debug.error("Setup failed: disabled by config");if(!K.check().api)return void this.debug.error("Setup failed: no support");const s=this.media.cloneNode(!0);s.autoplay=!1,this.elements.original=s;const n=this.media.tagName.toLowerCase();let a=null,l=null;switch(n){case"div":if(a=this.media.querySelector("iframe"),S.element(a)){if(l=Me(a.getAttribute("src")),this.provider=function(e){return/^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?_e.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?_e.vimeo:null}(l.toString()),this.elements.container=this.media,this.media=a,this.elements.container.className="",l.search.length){const e=["1","true"];e.includes(l.searchParams.get("autoplay"))&&(this.config.autoplay=!0),e.includes(l.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=e.includes(l.searchParams.get("playsinline")),this.config.youtube.hl=l.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(S.empty(this.provider)||!Object.values(_e).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=je;break;case"video":case"audio":this.type=n,this.provider=_e.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=K.check(this.type,this.provider),this.supported.api?(this.eventListeners=[],this.listeners=new Ve(this),this.storage=new we(this),this.media.plyr=this,S.element(this.elements.container)||(this.elements.container=$("div"),L(this.media,this.elements.container)),Fe.migrateStyles.call(this),Fe.addStyleHook.call(this),Xe.setup.call(this),this.config.debug&&X.call(this,this.elements.container,this.config.events.join(" "),(e=>{this.debug.log(`event: ${e.type}`)})),this.fullscreen=new He(this),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&Fe.build.call(this),this.listeners.container(),this.listeners.global(),this.config.ads.enabled&&(this.ads=new Je(this)),this.isHTML5&&this.config.autoplay&&this.once("canplay",(()=>ie(this.play()))),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new tt(this))):this.debug.error("Setup failed: no support")}get isHTML5(){return this.provider===_e.html5}get isEmbed(){return this.isYouTube||this.isVimeo}get isYouTube(){return this.provider===_e.youtube}get isVimeo(){return this.provider===_e.vimeo}get isVideo(){return this.type===je}get isAudio(){return this.type===Oe}get playing(){return Boolean(this.ready&&!this.paused&&!this.ended)}get paused(){return Boolean(this.media.paused)}get stopped(){return Boolean(this.paused&&0===this.currentTime)}get ended(){return Boolean(this.media.ended)}set currentTime(e){if(!this.duration)return;const t=S.number(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log(`Seeking to ${this.currentTime} seconds`)}get currentTime(){return Number(this.media.currentTime)}get buffered(){const{buffered:e}=this.media;return S.number(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}get seeking(){return Boolean(this.media.seeking)}get duration(){const e=parseFloat(this.config.duration),t=(this.media||{}).duration,i=S.number(t)&&t!==1/0?t:0;return e||i}set volume(e){let t=e;S.string(t)&&(t=Number(t)),S.number(t)||(t=this.storage.get("volume")),S.number(t)||({volume:t}=this.config),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!S.empty(e)&&this.muted&&t>0&&(this.muted=!1)}get volume(){return Number(this.media.volume)}set muted(e){let t=e;S.boolean(t)||(t=this.storage.get("muted")),S.boolean(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t}get muted(){return Boolean(this.media.muted)}get hasAudio(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}set speed(e){let t=null;S.number(e)&&(t=e),S.number(t)||(t=this.storage.get("speed")),S.number(t)||(t=this.config.speed.selected);const{minimumSpeed:i,maximumSpeed:s}=this;t=Ge(t,i,s),this.config.speed.selected=t,setTimeout((()=>{this.media&&(this.media.playbackRate=t)}),0)}get speed(){return Number(this.media.playbackRate)}get minimumSpeed(){return this.isYouTube?Math.min(...this.options.speed):this.isVimeo?.5:.0625}get maximumSpeed(){return this.isYouTube?Math.max(...this.options.speed):this.isVimeo?2:16}set quality(e){const t=this.config.quality,i=this.options.quality;if(!i.length)return;let s=[!S.empty(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(S.number),n=!0;if(!i.includes(s)){const e=ne(i,s);this.debug.warn(`Unsupported quality option: ${s}, using ${e} instead`),s=e,n=!1}t.selected=s,this.media.quality=s,n&&this.storage.set({quality:s})}get quality(){return this.media.quality}set loop(e){const t=S.boolean(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t}get loop(){return Boolean(this.media.loop)}set source(e){it.change.call(this,e)}get source(){return this.media.currentSrc}get download(){const{download:e}=this.config.urls;return S.url(e)?e:this.source}set download(e){S.url(e)&&(this.config.urls.download=e,Pe.setDownloadUrl.call(this))}set poster(e){this.isVideo?Fe.setPoster.call(this,e,!1).catch((()=>{})):this.debug.warn("Poster can only be set for video")}get poster(){return this.isVideo?this.media.getAttribute("poster")||this.media.getAttribute("data-poster"):null}get ratio(){if(!this.isVideo)return null;const e=oe(ce.call(this));return S.array(e)?e.join(":"):e}set ratio(e){this.isVideo?S.string(e)&&re(e)?(this.config.ratio=oe(e),ue.call(this)):this.debug.error(`Invalid aspect ratio specified (${e})`):this.debug.warn("Aspect ratio can only be set for video")}set autoplay(e){this.config.autoplay=S.boolean(e)?e:this.config.autoplay}get autoplay(){return Boolean(this.config.autoplay)}toggleCaptions(e){xe.toggle.call(this,e,!1)}set currentTrack(e){xe.set.call(this,e,!1),xe.setup.call(this)}get currentTrack(){const{toggled:e,currentTrack:t}=this.captions;return e?t:-1}set language(e){xe.setLanguage.call(this,e,!1)}get language(){return(xe.getCurrentTrack.call(this)||{}).language}set pip(e){if(!K.pip)return;const t=S.boolean(e)?e:!this.pip;S.function(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?Ie:$e),S.function(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}get pip(){return K.pip?S.empty(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===Ie:null}setPreviewThumbnails(e){this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),Object.assign(this.config.previewThumbnails,e),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new tt(this))}static supported(e,t){return K.check(e,t)}static loadSprite(e,t){return ke(e,t)}static setup(e,t={}){let i=null;return S.string(e)?i=Array.from(document.querySelectorAll(e)):S.nodeList(e)?i=Array.from(e):S.array(e)&&(i=e.filter(S.element)),S.empty(i)?null:i.map((e=>new st(e,t)))}}var nt;return st.defaults=(nt=Le,JSON.parse(JSON.stringify(nt))),st}));
2603//# sourceMappingURL=plyr.min.js.map
2604
2605
2606/***/ }),
2607
vendor: 14,112 bytes, lines 2608-3003
2608/***/ "./node_modules/swiper/modules/a11y.mjs":
2609/*!**********************************************!*\
2610  !*** ./node_modules/swiper/modules/a11y.mjs ***!
2611  \**********************************************/
2612/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
2613
2614"use strict";
2615__webpack_require__.r(__webpack_exports__);
2616/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2617/* harmony export */   "default": function() { return /* binding */ A11y; }
2618/* harmony export */ });
2619/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
2620/* harmony import */ var _shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/classes-to-selector.mjs */ "./node_modules/swiper/shared/classes-to-selector.mjs");
2621/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
2622
2623
2624
2625
2626function A11y(_ref) {
2627  let {
2628    swiper,
2629    extendParams,
2630    on
2631  } = _ref;
2632  extendParams({
2633    a11y: {
2634      enabled: true,
2635      notificationClass: 'swiper-notification',
2636      prevSlideMessage: 'Previous slide',
2637      nextSlideMessage: 'Next slide',
2638      firstSlideMessage: 'This is the first slide',
2639      lastSlideMessage: 'This is the last slide',
2640      paginationBulletMessage: 'Go to slide {{index}}',
2641      slideLabelMessage: '{{index}} / {{slidesLength}}',
2642      containerMessage: null,
2643      containerRoleDescriptionMessage: null,
2644      containerRole: null,
2645      itemRoleDescriptionMessage: null,
2646      slideRole: 'group',
2647      id: null,
2648      scrollOnFocus: true
2649    }
2650  });
2651  swiper.a11y = {
2652    clicked: false
2653  };
2654  let liveRegion = null;
2655  let preventFocusHandler;
2656  let focusTargetSlideEl;
2657  let visibilityChangedTimestamp = new Date().getTime();
2658  function notify(message) {
2659    const notification = liveRegion;
2660    if (notification.length === 0) return;
2661    notification.innerHTML = '';
2662    notification.innerHTML = message;
2663  }
2664  function getRandomNumber(size) {
2665    if (size === void 0) {
2666      size = 16;
2667    }
2668    const randomChar = () => Math.round(16 * Math.random()).toString(16);
2669    return 'x'.repeat(size).replace(/x/g, randomChar);
2670  }
2671  function makeElFocusable(el) {
2672    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
2673    el.forEach(subEl => {
2674      subEl.setAttribute('tabIndex', '0');
2675    });
2676  }
2677  function makeElNotFocusable(el) {
2678    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
2679    el.forEach(subEl => {
2680      subEl.setAttribute('tabIndex', '-1');
2681    });
2682  }
2683  function addElRole(el, role) {
2684    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
2685    el.forEach(subEl => {
2686      subEl.setAttribute('role', role);
2687    });
2688  }
2689  function addElRoleDescription(el, description) {
2690    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
2691    el.forEach(subEl => {
2692      subEl.setAttribute('aria-roledescription', description);
2693    });
2694  }
2695  function addElControls(el, controls) {
2696    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
2697    el.forEach(subEl => {
2698      subEl.setAttribute('aria-controls', controls);
2699    });
2700  }
2701  function addElLabel(el, label) {
2702    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
2703    el.forEach(subEl => {
2704      subEl.setAttribute('aria-label', label);
2705    });
2706  }
2707  function addElId(el, id) {
2708    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
2709    el.forEach(subEl => {
2710      subEl.setAttribute('id', id);
2711    });
2712  }
2713  function addElLive(el, live) {
2714    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
2715    el.forEach(subEl => {
2716      subEl.setAttribute('aria-live', live);
2717    });
2718  }
2719  function disableEl(el) {
2720    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
2721    el.forEach(subEl => {
2722      subEl.setAttribute('aria-disabled', true);
2723    });
2724  }
2725  function enableEl(el) {
2726    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
2727    el.forEach(subEl => {
2728      subEl.setAttribute('aria-disabled', false);
2729    });
2730  }
2731  function onEnterOrSpaceKey(e) {
2732    if (e.keyCode !== 13 && e.keyCode !== 32) return;
2733    const params = swiper.params.a11y;
2734    const targetEl = e.target;
2735    if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {
2736      if (!e.target.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) return;
2737    }
2738    if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {
2739      const prevEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.prevEl);
2740      const nextEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.nextEl);
2741      if (nextEls.includes(targetEl)) {
2742        if (!(swiper.isEnd && !swiper.params.loop)) {
2743          swiper.slideNext();
2744        }
2745        if (swiper.isEnd) {
2746          notify(params.lastSlideMessage);
2747        } else {
2748          notify(params.nextSlideMessage);
2749        }
2750      }
2751      if (prevEls.includes(targetEl)) {
2752        if (!(swiper.isBeginning && !swiper.params.loop)) {
2753          swiper.slidePrev();
2754        }
2755        if (swiper.isBeginning) {
2756          notify(params.firstSlideMessage);
2757        } else {
2758          notify(params.prevSlideMessage);
2759        }
2760      }
2761    }
2762    if (swiper.pagination && targetEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) {
2763      targetEl.click();
2764    }
2765  }
2766  function updateNavigation() {
2767    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;
2768    const {
2769      nextEl,
2770      prevEl
2771    } = swiper.navigation;
2772    if (prevEl) {
2773      if (swiper.isBeginning) {
2774        disableEl(prevEl);
2775        makeElNotFocusable(prevEl);
2776      } else {
2777        enableEl(prevEl);
2778        makeElFocusable(prevEl);
2779      }
2780    }
2781    if (nextEl) {
2782      if (swiper.isEnd) {
2783        disableEl(nextEl);
2784        makeElNotFocusable(nextEl);
2785      } else {
2786        enableEl(nextEl);
2787        makeElFocusable(nextEl);
2788      }
2789    }
2790  }
2791  function hasPagination() {
2792    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;
2793  }
2794  function hasClickablePagination() {
2795    return hasPagination() && swiper.params.pagination.clickable;
2796  }
2797  function updatePagination() {
2798    const params = swiper.params.a11y;
2799    if (!hasPagination()) return;
2800    swiper.pagination.bullets.forEach(bulletEl => {
2801      if (swiper.params.pagination.clickable) {
2802        makeElFocusable(bulletEl);
2803        if (!swiper.params.pagination.renderBullet) {
2804          addElRole(bulletEl, 'button');
2805          addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bulletEl) + 1));
2806        }
2807      }
2808      if (bulletEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletActiveClass))) {
2809        bulletEl.setAttribute('aria-current', 'true');
2810      } else {
2811        bulletEl.removeAttribute('aria-current');
2812      }
2813    });
2814  }
2815  const initNavEl = (el, wrapperId, message) => {
2816    makeElFocusable(el);
2817    if (el.tagName !== 'BUTTON') {
2818      addElRole(el, 'button');
2819      el.addEventListener('keydown', onEnterOrSpaceKey);
2820    }
2821    addElLabel(el, message);
2822    addElControls(el, wrapperId);
2823  };
2824  const handlePointerDown = e => {
2825    if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {
2826      preventFocusHandler = true;
2827    }
2828    swiper.a11y.clicked = true;
2829  };
2830  const handlePointerUp = () => {
2831    preventFocusHandler = false;
2832    requestAnimationFrame(() => {
2833      requestAnimationFrame(() => {
2834        if (!swiper.destroyed) {
2835          swiper.a11y.clicked = false;
2836        }
2837      });
2838    });
2839  };
2840  const onVisibilityChange = e => {
2841    visibilityChangedTimestamp = new Date().getTime();
2842  };
2843  const handleFocus = e => {
2844    if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;
2845    if (new Date().getTime() - visibilityChangedTimestamp < 100) return;
2846    const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
2847    if (!slideEl || !swiper.slides.includes(slideEl)) return;
2848    focusTargetSlideEl = slideEl;
2849    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
2850    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
2851    if (isActive || isVisible) return;
2852    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
2853    if (swiper.isHorizontal()) {
2854      swiper.el.scrollLeft = 0;
2855    } else {
2856      swiper.el.scrollTop = 0;
2857    }
2858    requestAnimationFrame(() => {
2859      if (preventFocusHandler) return;
2860      if (swiper.params.loop) {
2861        swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);
2862      } else {
2863        swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
2864      }
2865      preventFocusHandler = false;
2866    });
2867  };
2868  const initSlides = () => {
2869    const params = swiper.params.a11y;
2870    if (params.itemRoleDescriptionMessage) {
2871      addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);
2872    }
2873    if (params.slideRole) {
2874      addElRole(swiper.slides, params.slideRole);
2875    }
2876    const slidesLength = swiper.slides.length;
2877    if (params.slideLabelMessage) {
2878      swiper.slides.forEach((slideEl, index) => {
2879        const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;
2880        const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength);
2881        addElLabel(slideEl, ariaLabelMessage);
2882      });
2883    }
2884  };
2885  const init = () => {
2886    const params = swiper.params.a11y;
2887    swiper.el.append(liveRegion);
2888
2889    // Container
2890    const containerEl = swiper.el;
2891    if (params.containerRoleDescriptionMessage) {
2892      addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);
2893    }
2894    if (params.containerMessage) {
2895      addElLabel(containerEl, params.containerMessage);
2896    }
2897    if (params.containerRole) {
2898      addElRole(containerEl, params.containerRole);
2899    }
2900
2901    // Wrapper
2902    const wrapperEl = swiper.wrapperEl;
2903    const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;
2904    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
2905    addElId(wrapperEl, wrapperId);
2906    addElLive(wrapperEl, live);
2907
2908    // Slide
2909    initSlides();
2910
2911    // Navigation
2912    let {
2913      nextEl,
2914      prevEl
2915    } = swiper.navigation ? swiper.navigation : {};
2916    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl);
2917    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl);
2918    if (nextEl) {
2919      nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));
2920    }
2921    if (prevEl) {
2922      prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));
2923    }
2924
2925    // Pagination
2926    if (hasClickablePagination()) {
2927      const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el);
2928      paginationEl.forEach(el => {
2929        el.addEventListener('keydown', onEnterOrSpaceKey);
2930      });
2931    }
2932
2933    // Tab focus
2934    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
2935    document.addEventListener('visibilitychange', onVisibilityChange);
2936    swiper.el.addEventListener('focus', handleFocus, true);
2937    swiper.el.addEventListener('focus', handleFocus, true);
2938    swiper.el.addEventListener('pointerdown', handlePointerDown, true);
2939    swiper.el.addEventListener('pointerup', handlePointerUp, true);
2940  };
2941  function destroy() {
2942    if (liveRegion) liveRegion.remove();
2943    let {
2944      nextEl,
2945      prevEl
2946    } = swiper.navigation ? swiper.navigation : {};
2947    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl);
2948    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl);
2949    if (nextEl) {
2950      nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));
2951    }
2952    if (prevEl) {
2953      prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));
2954    }
2955
2956    // Pagination
2957    if (hasClickablePagination()) {
2958      const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el);
2959      paginationEl.forEach(el => {
2960        el.removeEventListener('keydown', onEnterOrSpaceKey);
2961      });
2962    }
2963    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
2964    document.removeEventListener('visibilitychange', onVisibilityChange);
2965    // Tab focus
2966    if (swiper.el && typeof swiper.el !== 'string') {
2967      swiper.el.removeEventListener('focus', handleFocus, true);
2968      swiper.el.removeEventListener('pointerdown', handlePointerDown, true);
2969      swiper.el.removeEventListener('pointerup', handlePointerUp, true);
2970    }
2971  }
2972  on('beforeInit', () => {
2973    liveRegion = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.c)('span', swiper.params.a11y.notificationClass);
2974    liveRegion.setAttribute('aria-live', 'assertive');
2975    liveRegion.setAttribute('aria-atomic', 'true');
2976  });
2977  on('afterInit', () => {
2978    if (!swiper.params.a11y.enabled) return;
2979    init();
2980  });
2981  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {
2982    if (!swiper.params.a11y.enabled) return;
2983    initSlides();
2984  });
2985  on('fromEdge toEdge afterInit lock unlock', () => {
2986    if (!swiper.params.a11y.enabled) return;
2987    updateNavigation();
2988  });
2989  on('paginationUpdate', () => {
2990    if (!swiper.params.a11y.enabled) return;
2991    updatePagination();
2992  });
2993  on('destroy', () => {
2994    if (!swiper.params.a11y.enabled) return;
2995    destroy();
2996  });
2997}
2998
2999
3000
3001
3002/***/ }),
3003
vendor: 10,069 bytes, lines 3004-3323
3004/***/ "./node_modules/swiper/modules/autoplay.mjs":
3005/*!**************************************************!*\
3006  !*** ./node_modules/swiper/modules/autoplay.mjs ***!
3007  \**************************************************/
3008/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3009
3010"use strict";
3011__webpack_require__.r(__webpack_exports__);
3012/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3013/* harmony export */   "default": function() { return /* binding */ Autoplay; }
3014/* harmony export */ });
3015/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
3016
3017
3018/* eslint no-underscore-dangle: "off" */
3019/* eslint no-use-before-define: "off" */
3020function Autoplay(_ref) {
3021  let {
3022    swiper,
3023    extendParams,
3024    on,
3025    emit,
3026    params
3027  } = _ref;
3028  swiper.autoplay = {
3029    running: false,
3030    paused: false,
3031    timeLeft: 0
3032  };
3033  extendParams({
3034    autoplay: {
3035      enabled: false,
3036      delay: 3000,
3037      waitForTransition: true,
3038      disableOnInteraction: false,
3039      stopOnLastSlide: false,
3040      reverseDirection: false,
3041      pauseOnMouseEnter: false
3042    }
3043  });
3044  let timeout;
3045  let raf;
3046  let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;
3047  let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;
3048  let autoplayTimeLeft;
3049  let autoplayStartTime = new Date().getTime();
3050  let wasPaused;
3051  let isTouched;
3052  let pausedByTouch;
3053  let touchStartTimeout;
3054  let slideChanged;
3055  let pausedByInteraction;
3056  let pausedByPointerEnter;
3057  function onTransitionEnd(e) {
3058    if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;
3059    if (e.target !== swiper.wrapperEl) return;
3060    swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);
3061    if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {
3062      return;
3063    }
3064    resume();
3065  }
3066  const calcTimeLeft = () => {
3067    if (swiper.destroyed || !swiper.autoplay.running) return;
3068    if (swiper.autoplay.paused) {
3069      wasPaused = true;
3070    } else if (wasPaused) {
3071      autoplayDelayCurrent = autoplayTimeLeft;
3072      wasPaused = false;
3073    }
3074    const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();
3075    swiper.autoplay.timeLeft = timeLeft;
3076    emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);
3077    raf = requestAnimationFrame(() => {
3078      calcTimeLeft();
3079    });
3080  };
3081  const getSlideDelay = () => {
3082    let activeSlideEl;
3083    if (swiper.virtual && swiper.params.virtual.enabled) {
3084      activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];
3085    } else {
3086      activeSlideEl = swiper.slides[swiper.activeIndex];
3087    }
3088    if (!activeSlideEl) return undefined;
3089    const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);
3090    return currentSlideDelay;
3091  };
3092  const run = delayForce => {
3093    if (swiper.destroyed || !swiper.autoplay.running) return;
3094    cancelAnimationFrame(raf);
3095    calcTimeLeft();
3096    let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;
3097    autoplayDelayTotal = swiper.params.autoplay.delay;
3098    autoplayDelayCurrent = swiper.params.autoplay.delay;
3099    const currentSlideDelay = getSlideDelay();
3100    if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {
3101      delay = currentSlideDelay;
3102      autoplayDelayTotal = currentSlideDelay;
3103      autoplayDelayCurrent = currentSlideDelay;
3104    }
3105    autoplayTimeLeft = delay;
3106    const speed = swiper.params.speed;
3107    const proceed = () => {
3108      if (!swiper || swiper.destroyed) return;
3109      if (swiper.params.autoplay.reverseDirection) {
3110        if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {
3111          swiper.slidePrev(speed, true, true);
3112          emit('autoplay');
3113        } else if (!swiper.params.autoplay.stopOnLastSlide) {
3114          swiper.slideTo(swiper.slides.length - 1, speed, true, true);
3115          emit('autoplay');
3116        }
3117      } else {
3118        if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {
3119          swiper.slideNext(speed, true, true);
3120          emit('autoplay');
3121        } else if (!swiper.params.autoplay.stopOnLastSlide) {
3122          swiper.slideTo(0, speed, true, true);
3123          emit('autoplay');
3124        }
3125      }
3126      if (swiper.params.cssMode) {
3127        autoplayStartTime = new Date().getTime();
3128        requestAnimationFrame(() => {
3129          run();
3130        });
3131      }
3132    };
3133    if (delay > 0) {
3134      clearTimeout(timeout);
3135      timeout = setTimeout(() => {
3136        proceed();
3137      }, delay);
3138    } else {
3139      requestAnimationFrame(() => {
3140        proceed();
3141      });
3142    }
3143
3144    // eslint-disable-next-line
3145    return delay;
3146  };
3147  const start = () => {
3148    autoplayStartTime = new Date().getTime();
3149    swiper.autoplay.running = true;
3150    run();
3151    emit('autoplayStart');
3152  };
3153  const stop = () => {
3154    swiper.autoplay.running = false;
3155    clearTimeout(timeout);
3156    cancelAnimationFrame(raf);
3157    emit('autoplayStop');
3158  };
3159  const pause = (internal, reset) => {
3160    if (swiper.destroyed || !swiper.autoplay.running) return;
3161    clearTimeout(timeout);
3162    if (!internal) {
3163      pausedByInteraction = true;
3164    }
3165    const proceed = () => {
3166      emit('autoplayPause');
3167      if (swiper.params.autoplay.waitForTransition) {
3168        swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);
3169      } else {
3170        resume();
3171      }
3172    };
3173    swiper.autoplay.paused = true;
3174    if (reset) {
3175      if (slideChanged) {
3176        autoplayTimeLeft = swiper.params.autoplay.delay;
3177      }
3178      slideChanged = false;
3179      proceed();
3180      return;
3181    }
3182    const delay = autoplayTimeLeft || swiper.params.autoplay.delay;
3183    autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);
3184    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;
3185    if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;
3186    proceed();
3187  };
3188  const resume = () => {
3189    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;
3190    autoplayStartTime = new Date().getTime();
3191    if (pausedByInteraction) {
3192      pausedByInteraction = false;
3193      run(autoplayTimeLeft);
3194    } else {
3195      run();
3196    }
3197    swiper.autoplay.paused = false;
3198    emit('autoplayResume');
3199  };
3200  const onVisibilityChange = () => {
3201    if (swiper.destroyed || !swiper.autoplay.running) return;
3202    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
3203    if (document.visibilityState === 'hidden') {
3204      pausedByInteraction = true;
3205      pause(true);
3206    }
3207    if (document.visibilityState === 'visible') {
3208      resume();
3209    }
3210  };
3211  const onPointerEnter = e => {
3212    if (e.pointerType !== 'mouse') return;
3213    pausedByInteraction = true;
3214    pausedByPointerEnter = true;
3215    if (swiper.animating || swiper.autoplay.paused) return;
3216    pause(true);
3217  };
3218  const onPointerLeave = e => {
3219    if (e.pointerType !== 'mouse') return;
3220    pausedByPointerEnter = false;
3221    if (swiper.autoplay.paused) {
3222      resume();
3223    }
3224  };
3225  const attachMouseEvents = () => {
3226    if (swiper.params.autoplay.pauseOnMouseEnter) {
3227      swiper.el.addEventListener('pointerenter', onPointerEnter);
3228      swiper.el.addEventListener('pointerleave', onPointerLeave);
3229    }
3230  };
3231  const detachMouseEvents = () => {
3232    if (swiper.el && typeof swiper.el !== 'string') {
3233      swiper.el.removeEventListener('pointerenter', onPointerEnter);
3234      swiper.el.removeEventListener('pointerleave', onPointerLeave);
3235    }
3236  };
3237  const attachDocumentEvents = () => {
3238    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
3239    document.addEventListener('visibilitychange', onVisibilityChange);
3240  };
3241  const detachDocumentEvents = () => {
3242    const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
3243    document.removeEventListener('visibilitychange', onVisibilityChange);
3244  };
3245  on('init', () => {
3246    if (swiper.params.autoplay.enabled) {
3247      attachMouseEvents();
3248      attachDocumentEvents();
3249      start();
3250    }
3251  });
3252  on('destroy', () => {
3253    detachMouseEvents();
3254    detachDocumentEvents();
3255    if (swiper.autoplay.running) {
3256      stop();
3257    }
3258  });
3259  on('_freeModeStaticRelease', () => {
3260    if (pausedByTouch || pausedByInteraction) {
3261      resume();
3262    }
3263  });
3264  on('_freeModeNoMomentumRelease', () => {
3265    if (!swiper.params.autoplay.disableOnInteraction) {
3266      pause(true, true);
3267    } else {
3268      stop();
3269    }
3270  });
3271  on('beforeTransitionStart', (_s, speed, internal) => {
3272    if (swiper.destroyed || !swiper.autoplay.running) return;
3273    if (internal || !swiper.params.autoplay.disableOnInteraction) {
3274      pause(true, true);
3275    } else {
3276      stop();
3277    }
3278  });
3279  on('sliderFirstMove', () => {
3280    if (swiper.destroyed || !swiper.autoplay.running) return;
3281    if (swiper.params.autoplay.disableOnInteraction) {
3282      stop();
3283      return;
3284    }
3285    isTouched = true;
3286    pausedByTouch = false;
3287    pausedByInteraction = false;
3288    touchStartTimeout = setTimeout(() => {
3289      pausedByInteraction = true;
3290      pausedByTouch = true;
3291      pause(true);
3292    }, 200);
3293  });
3294  on('touchEnd', () => {
3295    if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;
3296    clearTimeout(touchStartTimeout);
3297    clearTimeout(timeout);
3298    if (swiper.params.autoplay.disableOnInteraction) {
3299      pausedByTouch = false;
3300      isTouched = false;
3301      return;
3302    }
3303    if (pausedByTouch && swiper.params.cssMode) resume();
3304    pausedByTouch = false;
3305    isTouched = false;
3306  });
3307  on('slideChange', () => {
3308    if (swiper.destroyed || !swiper.autoplay.running) return;
3309    slideChanged = true;
3310  });
3311  Object.assign(swiper.autoplay, {
3312    start,
3313    stop,
3314    pause,
3315    resume
3316  });
3317}
3318
3319
3320
3321
3322/***/ }),
3323
vendor: 7,533 bytes, lines 3324-3530
3324/***/ "./node_modules/swiper/modules/controller.mjs":
3325/*!****************************************************!*\
3326  !*** ./node_modules/swiper/modules/controller.mjs ***!
3327  \****************************************************/
3328/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3329
3330"use strict";
3331__webpack_require__.r(__webpack_exports__);
3332/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3333/* harmony export */   "default": function() { return /* binding */ Controller; }
3334/* harmony export */ });
3335/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
3336
3337
3338/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
3339function Controller(_ref) {
3340  let {
3341    swiper,
3342    extendParams,
3343    on
3344  } = _ref;
3345  extendParams({
3346    controller: {
3347      control: undefined,
3348      inverse: false,
3349      by: 'slide' // or 'container'
3350    }
3351  });
3352
3353  swiper.controller = {
3354    control: undefined
3355  };
3356  function LinearSpline(x, y) {
3357    const binarySearch = function search() {
3358      let maxIndex;
3359      let minIndex;
3360      let guess;
3361      return (array, val) => {
3362        minIndex = -1;
3363        maxIndex = array.length;
3364        while (maxIndex - minIndex > 1) {
3365          guess = maxIndex + minIndex >> 1;
3366          if (array[guess] <= val) {
3367            minIndex = guess;
3368          } else {
3369            maxIndex = guess;
3370          }
3371        }
3372        return maxIndex;
3373      };
3374    }();
3375    this.x = x;
3376    this.y = y;
3377    this.lastIndex = x.length - 1;
3378    // Given an x value (x2), return the expected y2 value:
3379    // (x1,y1) is the known point before given value,
3380    // (x3,y3) is the known point after given value.
3381    let i1;
3382    let i3;
3383    this.interpolate = function interpolate(x2) {
3384      if (!x2) return 0;
3385
3386      // Get the indexes of x1 and x3 (the array indexes before and after given x2):
3387      i3 = binarySearch(this.x, x2);
3388      i1 = i3 - 1;
3389
3390      // We have our indexes i1 & i3, so we can calculate already:
3391      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
3392      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
3393    };
3394    return this;
3395  }
3396  function getInterpolateFunction(c) {
3397    swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);
3398  }
3399  function setTranslate(_t, byController) {
3400    const controlled = swiper.controller.control;
3401    let multiplier;
3402    let controlledTranslate;
3403    const Swiper = swiper.constructor;
3404    function setControlledTranslate(c) {
3405      if (c.destroyed) return;
3406
3407      // this will create an Interpolate function based on the snapGrids
3408      // x is the Grid of the scrolled scroller and y will be the controlled scroller
3409      // it makes sense to create this only once and recall it for the interpolation
3410      // the function does a lot of value caching for performance
3411      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
3412      if (swiper.params.controller.by === 'slide') {
3413        getInterpolateFunction(c);
3414        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
3415        // but it did not work out
3416        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
3417      }
3418      if (!controlledTranslate || swiper.params.controller.by === 'container') {
3419        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
3420        if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {
3421          multiplier = 1;
3422        }
3423        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
3424      }
3425      if (swiper.params.controller.inverse) {
3426        controlledTranslate = c.maxTranslate() - controlledTranslate;
3427      }
3428      c.updateProgress(controlledTranslate);
3429      c.setTranslate(controlledTranslate, swiper);
3430      c.updateActiveIndex();
3431      c.updateSlidesClasses();
3432    }
3433    if (Array.isArray(controlled)) {
3434      for (let i = 0; i < controlled.length; i += 1) {
3435        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
3436          setControlledTranslate(controlled[i]);
3437        }
3438      }
3439    } else if (controlled instanceof Swiper && byController !== controlled) {
3440      setControlledTranslate(controlled);
3441    }
3442  }
3443  function setTransition(duration, byController) {
3444    const Swiper = swiper.constructor;
3445    const controlled = swiper.controller.control;
3446    let i;
3447    function setControlledTransition(c) {
3448      if (c.destroyed) return;
3449      c.setTransition(duration, swiper);
3450      if (duration !== 0) {
3451        c.transitionStart();
3452        if (c.params.autoHeight) {
3453          (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.n)(() => {
3454            c.updateAutoHeight();
3455          });
3456        }
3457        (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(c.wrapperEl, () => {
3458          if (!controlled) return;
3459          c.transitionEnd();
3460        });
3461      }
3462    }
3463    if (Array.isArray(controlled)) {
3464      for (i = 0; i < controlled.length; i += 1) {
3465        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
3466          setControlledTransition(controlled[i]);
3467        }
3468      }
3469    } else if (controlled instanceof Swiper && byController !== controlled) {
3470      setControlledTransition(controlled);
3471    }
3472  }
3473  function removeSpline() {
3474    if (!swiper.controller.control) return;
3475    if (swiper.controller.spline) {
3476      swiper.controller.spline = undefined;
3477      delete swiper.controller.spline;
3478    }
3479  }
3480  on('beforeInit', () => {
3481    if (typeof window !== 'undefined' && (
3482    // eslint-disable-line
3483    typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {
3484      const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];
3485      controlElements.forEach(controlElement => {
3486        if (!swiper.controller.control) swiper.controller.control = [];
3487        if (controlElement && controlElement.swiper) {
3488          swiper.controller.control.push(controlElement.swiper);
3489        } else if (controlElement) {
3490          const eventName = `${swiper.params.eventsPrefix}init`;
3491          const onControllerSwiper = e => {
3492            swiper.controller.control.push(e.detail[0]);
3493            swiper.update();
3494            controlElement.removeEventListener(eventName, onControllerSwiper);
3495          };
3496          controlElement.addEventListener(eventName, onControllerSwiper);
3497        }
3498      });
3499      return;
3500    }
3501    swiper.controller.control = swiper.params.controller.control;
3502  });
3503  on('update', () => {
3504    removeSpline();
3505  });
3506  on('resize', () => {
3507    removeSpline();
3508  });
3509  on('observerUpdate', () => {
3510    removeSpline();
3511  });
3512  on('setTranslate', (_s, translate, byController) => {
3513    if (!swiper.controller.control || swiper.controller.control.destroyed) return;
3514    swiper.controller.setTranslate(translate, byController);
3515  });
3516  on('setTransition', (_s, duration, byController) => {
3517    if (!swiper.controller.control || swiper.controller.control.destroyed) return;
3518    swiper.controller.setTransition(duration, byController);
3519  });
3520  Object.assign(swiper.controller, {
3521    setTranslate,
3522    setTransition
3523  });
3524}
3525
3526
3527
3528
3529/***/ }),
3530
vendor: 5,930 bytes, lines 3531-3675
3531/***/ "./node_modules/swiper/modules/effect-cards.mjs":
3532/*!******************************************************!*\
3533  !*** ./node_modules/swiper/modules/effect-cards.mjs ***!
3534  \******************************************************/
3535/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3536
3537"use strict";
3538__webpack_require__.r(__webpack_exports__);
3539/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3540/* harmony export */   "default": function() { return /* binding */ EffectCards; }
3541/* harmony export */ });
3542/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs");
3543/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs");
3544/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs");
3545/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs");
3546/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
3547
3548
3549
3550
3551
3552
3553function EffectCards(_ref) {
3554  let {
3555    swiper,
3556    extendParams,
3557    on
3558  } = _ref;
3559  extendParams({
3560    cardsEffect: {
3561      slideShadows: true,
3562      rotate: true,
3563      perSlideRotate: 2,
3564      perSlideOffset: 8
3565    }
3566  });
3567  const setTranslate = () => {
3568    const {
3569      slides,
3570      activeIndex,
3571      rtlTranslate: rtl
3572    } = swiper;
3573    const params = swiper.params.cardsEffect;
3574    const {
3575      startTranslate,
3576      isTouched
3577    } = swiper.touchEventsData;
3578    const currentTranslate = rtl ? -swiper.translate : swiper.translate;
3579    for (let i = 0; i < slides.length; i += 1) {
3580      const slideEl = slides[i];
3581      const slideProgress = slideEl.progress;
3582      const progress = Math.min(Math.max(slideProgress, -4), 4);
3583      let offset = slideEl.swiperSlideOffset;
3584      if (swiper.params.centeredSlides && !swiper.params.cssMode) {
3585        swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;
3586      }
3587      if (swiper.params.centeredSlides && swiper.params.cssMode) {
3588        offset -= slides[0].swiperSlideOffset;
3589      }
3590      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;
3591      let tY = 0;
3592      const tZ = -100 * Math.abs(progress);
3593      let scale = 1;
3594      let rotate = -params.perSlideRotate * progress;
3595      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;
3596      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;
3597      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;
3598      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;
3599      if (isSwipeToNext || isSwipeToPrev) {
3600        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;
3601        rotate += -28 * progress * subProgress;
3602        scale += -0.5 * subProgress;
3603        tXAdd += 96 * subProgress;
3604        tY = `${-25 * subProgress * Math.abs(progress)}%`;
3605      }
3606      if (progress < 0) {
3607        // next
3608        tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;
3609      } else if (progress > 0) {
3610        // prev
3611        tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;
3612      } else {
3613        tX = `${tX}px`;
3614      }
3615      if (!swiper.isHorizontal()) {
3616        const prevY = tY;
3617        tY = tX;
3618        tX = prevY;
3619      }
3620      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;
3621
3622      /* eslint-disable */
3623      const transform = `
3624        translate3d(${tX}, ${tY}, ${tZ}px)
3625        rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)
3626        scale(${scaleString})
3627      `;
3628      /* eslint-enable */
3629
3630      if (params.slideShadows) {
3631        // Set shadows
3632        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');
3633        if (!shadowEl) {
3634          shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('cards', slideEl);
3635        }
3636        if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);
3637      }
3638      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
3639      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl);
3640      targetEl.style.transform = transform;
3641    }
3642  };
3643  const setTransition = duration => {
3644    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl));
3645    transformElements.forEach(el => {
3646      el.style.transitionDuration = `${duration}ms`;
3647      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {
3648        shadowEl.style.transitionDuration = `${duration}ms`;
3649      });
3650    });
3651    (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({
3652      swiper,
3653      duration,
3654      transformElements
3655    });
3656  };
3657  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({
3658    effect: 'cards',
3659    swiper,
3660    on,
3661    setTranslate,
3662    setTransition,
3663    perspective: () => true,
3664    overwriteParams: () => ({
3665      watchSlidesProgress: true,
3666      virtualTranslate: !swiper.params.cssMode
3667    })
3668  });
3669}
3670
3671
3672
3673
3674/***/ }),
3675
vendor: 5,714 bytes, lines 3676-3798
3676/***/ "./node_modules/swiper/modules/effect-coverflow.mjs":
3677/*!**********************************************************!*\
3678  !*** ./node_modules/swiper/modules/effect-coverflow.mjs ***!
3679  \**********************************************************/
3680/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3681
3682"use strict";
3683__webpack_require__.r(__webpack_exports__);
3684/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3685/* harmony export */   "default": function() { return /* binding */ EffectCoverflow; }
3686/* harmony export */ });
3687/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs");
3688/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs");
3689/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs");
3690/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
3691
3692
3693
3694
3695
3696function EffectCoverflow(_ref) {
3697  let {
3698    swiper,
3699    extendParams,
3700    on
3701  } = _ref;
3702  extendParams({
3703    coverflowEffect: {
3704      rotate: 50,
3705      stretch: 0,
3706      depth: 100,
3707      scale: 1,
3708      modifier: 1,
3709      slideShadows: true
3710    }
3711  });
3712  const setTranslate = () => {
3713    const {
3714      width: swiperWidth,
3715      height: swiperHeight,
3716      slides,
3717      slidesSizesGrid
3718    } = swiper;
3719    const params = swiper.params.coverflowEffect;
3720    const isHorizontal = swiper.isHorizontal();
3721    const transform = swiper.translate;
3722    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
3723    const rotate = isHorizontal ? params.rotate : -params.rotate;
3724    const translate = params.depth;
3725    const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.o)(swiper);
3726    // Each slide offset from center
3727    for (let i = 0, length = slides.length; i < length; i += 1) {
3728      const slideEl = slides[i];
3729      const slideSize = slidesSizesGrid[i];
3730      const slideOffset = slideEl.swiperSlideOffset;
3731      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;
3732      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;
3733      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
3734      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
3735      // var rotateZ = 0
3736      let translateZ = -translate * Math.abs(offsetMultiplier);
3737      let stretch = params.stretch;
3738      // Allow percentage to make a relative stretch for responsive sliders
3739      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
3740        stretch = parseFloat(params.stretch) / 100 * slideSize;
3741      }
3742      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
3743      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;
3744      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);
3745
3746      // Fix for ultra small values
3747      if (Math.abs(translateX) < 0.001) translateX = 0;
3748      if (Math.abs(translateY) < 0.001) translateY = 0;
3749      if (Math.abs(translateZ) < 0.001) translateZ = 0;
3750      if (Math.abs(rotateY) < 0.001) rotateY = 0;
3751      if (Math.abs(rotateX) < 0.001) rotateX = 0;
3752      if (Math.abs(scale) < 0.001) scale = 0;
3753      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;
3754      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl);
3755      targetEl.style.transform = slideTransform;
3756      slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
3757      if (params.slideShadows) {
3758        // Set shadows
3759        let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
3760        let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
3761        if (!shadowBeforeEl) {
3762          shadowBeforeEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'left' : 'top');
3763        }
3764        if (!shadowAfterEl) {
3765          shadowAfterEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');
3766        }
3767        if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
3768        if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
3769      }
3770    }
3771  };
3772  const setTransition = duration => {
3773    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl));
3774    transformElements.forEach(el => {
3775      el.style.transitionDuration = `${duration}ms`;
3776      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {
3777        shadowEl.style.transitionDuration = `${duration}ms`;
3778      });
3779    });
3780  };
3781  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({
3782    effect: 'coverflow',
3783    swiper,
3784    on,
3785    setTranslate,
3786    setTransition,
3787    perspective: () => true,
3788    overwriteParams: () => ({
3789      watchSlidesProgress: true
3790    })
3791  });
3792}
3793
3794
3795
3796
3797/***/ }),
3798
vendor: 6,483 bytes, lines 3799-3964
3799/***/ "./node_modules/swiper/modules/effect-creative.mjs":
3800/*!*********************************************************!*\
3801  !*** ./node_modules/swiper/modules/effect-creative.mjs ***!
3802  \*********************************************************/
3803/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3804
3805"use strict";
3806__webpack_require__.r(__webpack_exports__);
3807/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3808/* harmony export */   "default": function() { return /* binding */ EffectCreative; }
3809/* harmony export */ });
3810/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs");
3811/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs");
3812/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs");
3813/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs");
3814/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
3815
3816
3817
3818
3819
3820
3821function EffectCreative(_ref) {
3822  let {
3823    swiper,
3824    extendParams,
3825    on
3826  } = _ref;
3827  extendParams({
3828    creativeEffect: {
3829      limitProgress: 1,
3830      shadowPerProgress: false,
3831      progressMultiplier: 1,
3832      perspective: true,
3833      prev: {
3834        translate: [0, 0, 0],
3835        rotate: [0, 0, 0],
3836        opacity: 1,
3837        scale: 1
3838      },
3839      next: {
3840        translate: [0, 0, 0],
3841        rotate: [0, 0, 0],
3842        opacity: 1,
3843        scale: 1
3844      }
3845    }
3846  });
3847  const getTranslateValue = value => {
3848    if (typeof value === 'string') return value;
3849    return `${value}px`;
3850  };
3851  const setTranslate = () => {
3852    const {
3853      slides,
3854      wrapperEl,
3855      slidesSizesGrid
3856    } = swiper;
3857    const params = swiper.params.creativeEffect;
3858    const {
3859      progressMultiplier: multiplier
3860    } = params;
3861    const isCenteredSlides = swiper.params.centeredSlides;
3862    const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.o)(swiper);
3863    if (isCenteredSlides) {
3864      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;
3865      wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;
3866    }
3867    for (let i = 0; i < slides.length; i += 1) {
3868      const slideEl = slides[i];
3869      const slideProgress = slideEl.progress;
3870      const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);
3871      let originalProgress = progress;
3872      if (!isCenteredSlides) {
3873        originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);
3874      }
3875      const offset = slideEl.swiperSlideOffset;
3876      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];
3877      const r = [0, 0, 0];
3878      let custom = false;
3879      if (!swiper.isHorizontal()) {
3880        t[1] = t[0];
3881        t[0] = 0;
3882      }
3883      let data = {
3884        translate: [0, 0, 0],
3885        rotate: [0, 0, 0],
3886        scale: 1,
3887        opacity: 1
3888      };
3889      if (progress < 0) {
3890        data = params.next;
3891        custom = true;
3892      } else if (progress > 0) {
3893        data = params.prev;
3894        custom = true;
3895      }
3896      // set translate
3897      t.forEach((value, index) => {
3898        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;
3899      });
3900      // set rotates
3901      r.forEach((value, index) => {
3902        let val = data.rotate[index] * Math.abs(progress * multiplier);
3903        r[index] = val;
3904      });
3905      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
3906      const translateString = t.join(', ');
3907      const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;
3908      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;
3909      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;
3910      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;
3911
3912      // Set shadows
3913      if (custom && data.shadow || !custom) {
3914        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');
3915        if (!shadowEl && data.shadow) {
3916          shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('creative', slideEl);
3917        }
3918        if (shadowEl) {
3919          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;
3920          shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);
3921        }
3922      }
3923      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl);
3924      targetEl.style.transform = transform;
3925      targetEl.style.opacity = opacityString;
3926      if (data.origin) {
3927        targetEl.style.transformOrigin = data.origin;
3928      }
3929    }
3930  };
3931  const setTransition = duration => {
3932    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl));
3933    transformElements.forEach(el => {
3934      el.style.transitionDuration = `${duration}ms`;
3935      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {
3936        shadowEl.style.transitionDuration = `${duration}ms`;
3937      });
3938    });
3939    (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({
3940      swiper,
3941      duration,
3942      transformElements,
3943      allSlides: true
3944    });
3945  };
3946  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({
3947    effect: 'creative',
3948    swiper,
3949    on,
3950    setTranslate,
3951    setTransition,
3952    perspective: () => swiper.params.creativeEffect.perspective,
3953    overwriteParams: () => ({
3954      watchSlidesProgress: true,
3955      virtualTranslate: !swiper.params.cssMode
3956    })
3957  });
3958}
3959
3960
3961
3962
3963/***/ }),
3964
vendor: 7,636 bytes, lines 3965-4155
3965/***/ "./node_modules/swiper/modules/effect-cube.mjs":
3966/*!*****************************************************!*\
3967  !*** ./node_modules/swiper/modules/effect-cube.mjs ***!
3968  \*****************************************************/
3969/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
3970
3971"use strict";
3972__webpack_require__.r(__webpack_exports__);
3973/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3974/* harmony export */   "default": function() { return /* binding */ EffectCube; }
3975/* harmony export */ });
3976/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs");
3977/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
3978
3979
3980
3981function EffectCube(_ref) {
3982  let {
3983    swiper,
3984    extendParams,
3985    on
3986  } = _ref;
3987  extendParams({
3988    cubeEffect: {
3989      slideShadows: true,
3990      shadow: true,
3991      shadowOffset: 20,
3992      shadowScale: 0.94
3993    }
3994  });
3995  const createSlideShadows = (slideEl, progress, isHorizontal) => {
3996    let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
3997    let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
3998    if (!shadowBefore) {
3999      shadowBefore = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));
4000      slideEl.append(shadowBefore);
4001    }
4002    if (!shadowAfter) {
4003      shadowAfter = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));
4004      slideEl.append(shadowAfter);
4005    }
4006    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);
4007    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);
4008  };
4009  const recreateShadows = () => {
4010    // create new ones
4011    const isHorizontal = swiper.isHorizontal();
4012    swiper.slides.forEach(slideEl => {
4013      const progress = Math.max(Math.min(slideEl.progress, 1), -1);
4014      createSlideShadows(slideEl, progress, isHorizontal);
4015    });
4016  };
4017  const setTranslate = () => {
4018    const {
4019      el,
4020      wrapperEl,
4021      slides,
4022      width: swiperWidth,
4023      height: swiperHeight,
4024      rtlTranslate: rtl,
4025      size: swiperSize,
4026      browser
4027    } = swiper;
4028    const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.o)(swiper);
4029    const params = swiper.params.cubeEffect;
4030    const isHorizontal = swiper.isHorizontal();
4031    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
4032    let wrapperRotate = 0;
4033    let cubeShadowEl;
4034    if (params.shadow) {
4035      if (isHorizontal) {
4036        cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');
4037        if (!cubeShadowEl) {
4038          cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow');
4039          swiper.wrapperEl.append(cubeShadowEl);
4040        }
4041        cubeShadowEl.style.height = `${swiperWidth}px`;
4042      } else {
4043        cubeShadowEl = el.querySelector('.swiper-cube-shadow');
4044        if (!cubeShadowEl) {
4045          cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow');
4046          el.append(cubeShadowEl);
4047        }
4048      }
4049    }
4050    for (let i = 0; i < slides.length; i += 1) {
4051      const slideEl = slides[i];
4052      let slideIndex = i;
4053      if (isVirtual) {
4054        slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);
4055      }
4056      let slideAngle = slideIndex * 90;
4057      let round = Math.floor(slideAngle / 360);
4058      if (rtl) {
4059        slideAngle = -slideAngle;
4060        round = Math.floor(-slideAngle / 360);
4061      }
4062      const progress = Math.max(Math.min(slideEl.progress, 1), -1);
4063      let tx = 0;
4064      let ty = 0;
4065      let tz = 0;
4066      if (slideIndex % 4 === 0) {
4067        tx = -round * 4 * swiperSize;
4068        tz = 0;
4069      } else if ((slideIndex - 1) % 4 === 0) {
4070        tx = 0;
4071        tz = -round * 4 * swiperSize;
4072      } else if ((slideIndex - 2) % 4 === 0) {
4073        tx = swiperSize + round * 4 * swiperSize;
4074        tz = swiperSize;
4075      } else if ((slideIndex - 3) % 4 === 0) {
4076        tx = -swiperSize;
4077        tz = 3 * swiperSize + swiperSize * 4 * round;
4078      }
4079      if (rtl) {
4080        tx = -tx;
4081      }
4082      if (!isHorizontal) {
4083        ty = tx;
4084        tx = 0;
4085      }
4086      const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
4087      if (progress <= 1 && progress > -1) {
4088        wrapperRotate = slideIndex * 90 + progress * 90;
4089        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
4090      }
4091      slideEl.style.transform = transform;
4092      if (params.slideShadows) {
4093        createSlideShadows(slideEl, progress, isHorizontal);
4094      }
4095    }
4096    wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;
4097    wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;
4098    if (params.shadow) {
4099      if (isHorizontal) {
4100        cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;
4101      } else {
4102        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
4103        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
4104        const scale1 = params.shadowScale;
4105        const scale2 = params.shadowScale / multiplier;
4106        const offset = params.shadowOffset;
4107        cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;
4108      }
4109    }
4110    const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;
4111    wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;
4112    wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);
4113  };
4114  const setTransition = duration => {
4115    const {
4116      el,
4117      slides
4118    } = swiper;
4119    slides.forEach(slideEl => {
4120      slideEl.style.transitionDuration = `${duration}ms`;
4121      slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {
4122        subEl.style.transitionDuration = `${duration}ms`;
4123      });
4124    });
4125    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
4126      const shadowEl = el.querySelector('.swiper-cube-shadow');
4127      if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;
4128    }
4129  };
4130  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({
4131    effect: 'cube',
4132    swiper,
4133    on,
4134    setTranslate,
4135    setTransition,
4136    recreateShadows,
4137    getEffectParams: () => swiper.params.cubeEffect,
4138    perspective: () => true,
4139    overwriteParams: () => ({
4140      slidesPerView: 1,
4141      slidesPerGroup: 1,
4142      watchSlidesProgress: true,
4143      resistanceRatio: 0,
4144      spaceBetween: 0,
4145      centeredSlides: false,
4146      virtualTranslate: true
4147    })
4148  });
4149}
4150
4151
4152
4153
4154/***/ }),
4155
vendor: 3,103 bytes, lines 4156-4240
4156/***/ "./node_modules/swiper/modules/effect-fade.mjs":
4157/*!*****************************************************!*\
4158  !*** ./node_modules/swiper/modules/effect-fade.mjs ***!
4159  \*****************************************************/
4160/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4161
4162"use strict";
4163__webpack_require__.r(__webpack_exports__);
4164/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4165/* harmony export */   "default": function() { return /* binding */ EffectFade; }
4166/* harmony export */ });
4167/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs");
4168/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs");
4169/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs");
4170/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
4171
4172
4173
4174
4175
4176function EffectFade(_ref) {
4177  let {
4178    swiper,
4179    extendParams,
4180    on
4181  } = _ref;
4182  extendParams({
4183    fadeEffect: {
4184      crossFade: false
4185    }
4186  });
4187  const setTranslate = () => {
4188    const {
4189      slides
4190    } = swiper;
4191    const params = swiper.params.fadeEffect;
4192    for (let i = 0; i < slides.length; i += 1) {
4193      const slideEl = swiper.slides[i];
4194      const offset = slideEl.swiperSlideOffset;
4195      let tx = -offset;
4196      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
4197      let ty = 0;
4198      if (!swiper.isHorizontal()) {
4199        ty = tx;
4200        tx = 0;
4201      }
4202      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);
4203      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(params, slideEl);
4204      targetEl.style.opacity = slideOpacity;
4205      targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;
4206    }
4207  };
4208  const setTransition = duration => {
4209    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl));
4210    transformElements.forEach(el => {
4211      el.style.transitionDuration = `${duration}ms`;
4212    });
4213    (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_2__.e)({
4214      swiper,
4215      duration,
4216      transformElements,
4217      allSlides: true
4218    });
4219  };
4220  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({
4221    effect: 'fade',
4222    swiper,
4223    on,
4224    setTranslate,
4225    setTransition,
4226    overwriteParams: () => ({
4227      slidesPerView: 1,
4228      slidesPerGroup: 1,
4229      watchSlidesProgress: true,
4230      spaceBetween: 0,
4231      virtualTranslate: !swiper.params.cssMode
4232    })
4233  });
4234}
4235
4236
4237
4238
4239/***/ }),
4240
vendor: 5,336 bytes, lines 4241-4371
4241/***/ "./node_modules/swiper/modules/effect-flip.mjs":
4242/*!*****************************************************!*\
4243  !*** ./node_modules/swiper/modules/effect-flip.mjs ***!
4244  \*****************************************************/
4245/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4246
4247"use strict";
4248__webpack_require__.r(__webpack_exports__);
4249/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4250/* harmony export */   "default": function() { return /* binding */ EffectFlip; }
4251/* harmony export */ });
4252/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs");
4253/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs");
4254/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs");
4255/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs");
4256/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
4257
4258
4259
4260
4261
4262
4263function EffectFlip(_ref) {
4264  let {
4265    swiper,
4266    extendParams,
4267    on
4268  } = _ref;
4269  extendParams({
4270    flipEffect: {
4271      slideShadows: true,
4272      limitRotation: true
4273    }
4274  });
4275  const createSlideShadows = (slideEl, progress) => {
4276    let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
4277    let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
4278    if (!shadowBefore) {
4279      shadowBefore = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');
4280    }
4281    if (!shadowAfter) {
4282      shadowAfter = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');
4283    }
4284    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);
4285    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);
4286  };
4287  const recreateShadows = () => {
4288    // Set shadows
4289    swiper.params.flipEffect;
4290    swiper.slides.forEach(slideEl => {
4291      let progress = slideEl.progress;
4292      if (swiper.params.flipEffect.limitRotation) {
4293        progress = Math.max(Math.min(slideEl.progress, 1), -1);
4294      }
4295      createSlideShadows(slideEl, progress);
4296    });
4297  };
4298  const setTranslate = () => {
4299    const {
4300      slides,
4301      rtlTranslate: rtl
4302    } = swiper;
4303    const params = swiper.params.flipEffect;
4304    const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.o)(swiper);
4305    for (let i = 0; i < slides.length; i += 1) {
4306      const slideEl = slides[i];
4307      let progress = slideEl.progress;
4308      if (swiper.params.flipEffect.limitRotation) {
4309        progress = Math.max(Math.min(slideEl.progress, 1), -1);
4310      }
4311      const offset = slideEl.swiperSlideOffset;
4312      const rotate = -180 * progress;
4313      let rotateY = rotate;
4314      let rotateX = 0;
4315      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;
4316      let ty = 0;
4317      if (!swiper.isHorizontal()) {
4318        ty = tx;
4319        tx = 0;
4320        rotateX = -rotateY;
4321        rotateY = 0;
4322      } else if (rtl) {
4323        rotateY = -rotateY;
4324      }
4325      slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
4326      if (params.slideShadows) {
4327        createSlideShadows(slideEl, progress);
4328      }
4329      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;
4330      const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl);
4331      targetEl.style.transform = transform;
4332    }
4333  };
4334  const setTransition = duration => {
4335    const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl));
4336    transformElements.forEach(el => {
4337      el.style.transitionDuration = `${duration}ms`;
4338      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {
4339        shadowEl.style.transitionDuration = `${duration}ms`;
4340      });
4341    });
4342    (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({
4343      swiper,
4344      duration,
4345      transformElements
4346    });
4347  };
4348  (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({
4349    effect: 'flip',
4350    swiper,
4351    on,
4352    setTranslate,
4353    setTransition,
4354    recreateShadows,
4355    getEffectParams: () => swiper.params.flipEffect,
4356    perspective: () => true,
4357    overwriteParams: () => ({
4358      slidesPerView: 1,
4359      slidesPerGroup: 1,
4360      watchSlidesProgress: true,
4361      spaceBetween: 0,
4362      virtualTranslate: !swiper.params.cssMode
4363    })
4364  });
4365}
4366
4367
4368
4369
4370/***/ }),
4371
vendor: 9,261 bytes, lines 4372-4624
4372/***/ "./node_modules/swiper/modules/free-mode.mjs":
4373/*!***************************************************!*\
4374  !*** ./node_modules/swiper/modules/free-mode.mjs ***!
4375  \***************************************************/
4376/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4377
4378"use strict";
4379__webpack_require__.r(__webpack_exports__);
4380/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4381/* harmony export */   "default": function() { return /* binding */ freeMode; }
4382/* harmony export */ });
4383/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
4384
4385
4386function freeMode(_ref) {
4387  let {
4388    swiper,
4389    extendParams,
4390    emit,
4391    once
4392  } = _ref;
4393  extendParams({
4394    freeMode: {
4395      enabled: false,
4396      momentum: true,
4397      momentumRatio: 1,
4398      momentumBounce: true,
4399      momentumBounceRatio: 1,
4400      momentumVelocityRatio: 1,
4401      sticky: false,
4402      minimumVelocity: 0.02
4403    }
4404  });
4405  function onTouchStart() {
4406    if (swiper.params.cssMode) return;
4407    const translate = swiper.getTranslate();
4408    swiper.setTranslate(translate);
4409    swiper.setTransition(0);
4410    swiper.touchEventsData.velocities.length = 0;
4411    swiper.freeMode.onTouchEnd({
4412      currentPos: swiper.rtl ? swiper.translate : -swiper.translate
4413    });
4414  }
4415  function onTouchMove() {
4416    if (swiper.params.cssMode) return;
4417    const {
4418      touchEventsData: data,
4419      touches
4420    } = swiper;
4421    // Velocity
4422    if (data.velocities.length === 0) {
4423      data.velocities.push({
4424        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
4425        time: data.touchStartTime
4426      });
4427    }
4428    data.velocities.push({
4429      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
4430      time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)()
4431    });
4432  }
4433  function onTouchEnd(_ref2) {
4434    let {
4435      currentPos
4436    } = _ref2;
4437    if (swiper.params.cssMode) return;
4438    const {
4439      params,
4440      wrapperEl,
4441      rtlTranslate: rtl,
4442      snapGrid,
4443      touchEventsData: data
4444    } = swiper;
4445    // Time diff
4446    const touchEndTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)();
4447    const timeDiff = touchEndTime - data.touchStartTime;
4448    if (currentPos < -swiper.minTranslate()) {
4449      swiper.slideTo(swiper.activeIndex);
4450      return;
4451    }
4452    if (currentPos > -swiper.maxTranslate()) {
4453      if (swiper.slides.length < snapGrid.length) {
4454        swiper.slideTo(snapGrid.length - 1);
4455      } else {
4456        swiper.slideTo(swiper.slides.length - 1);
4457      }
4458      return;
4459    }
4460    if (params.freeMode.momentum) {
4461      if (data.velocities.length > 1) {
4462        const lastMoveEvent = data.velocities.pop();
4463        const velocityEvent = data.velocities.pop();
4464        const distance = lastMoveEvent.position - velocityEvent.position;
4465        const time = lastMoveEvent.time - velocityEvent.time;
4466        swiper.velocity = distance / time;
4467        swiper.velocity /= 2;
4468        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {
4469          swiper.velocity = 0;
4470        }
4471        // this implies that the user stopped moving a finger then released.
4472        // There would be no events with distance zero, so the last event is stale.
4473        if (time > 150 || (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)() - lastMoveEvent.time > 300) {
4474          swiper.velocity = 0;
4475        }
4476      } else {
4477        swiper.velocity = 0;
4478      }
4479      swiper.velocity *= params.freeMode.momentumVelocityRatio;
4480      data.velocities.length = 0;
4481      let momentumDuration = 1000 * params.freeMode.momentumRatio;
4482      const momentumDistance = swiper.velocity * momentumDuration;
4483      let newPosition = swiper.translate + momentumDistance;
4484      if (rtl) newPosition = -newPosition;
4485      let doBounce = false;
4486      let afterBouncePosition;
4487      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;
4488      let needsLoopFix;
4489      if (newPosition < swiper.maxTranslate()) {
4490        if (params.freeMode.momentumBounce) {
4491          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
4492            newPosition = swiper.maxTranslate() - bounceAmount;
4493          }
4494          afterBouncePosition = swiper.maxTranslate();
4495          doBounce = true;
4496          data.allowMomentumBounce = true;
4497        } else {
4498          newPosition = swiper.maxTranslate();
4499        }
4500        if (params.loop && params.centeredSlides) needsLoopFix = true;
4501      } else if (newPosition > swiper.minTranslate()) {
4502        if (params.freeMode.momentumBounce) {
4503          if (newPosition - swiper.minTranslate() > bounceAmount) {
4504            newPosition = swiper.minTranslate() + bounceAmount;
4505          }
4506          afterBouncePosition = swiper.minTranslate();
4507          doBounce = true;
4508          data.allowMomentumBounce = true;
4509        } else {
4510          newPosition = swiper.minTranslate();
4511        }
4512        if (params.loop && params.centeredSlides) needsLoopFix = true;
4513      } else if (params.freeMode.sticky) {
4514        let nextSlide;
4515        for (let j = 0; j < snapGrid.length; j += 1) {
4516          if (snapGrid[j] > -newPosition) {
4517            nextSlide = j;
4518            break;
4519          }
4520        }
4521        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
4522          newPosition = snapGrid[nextSlide];
4523        } else {
4524          newPosition = snapGrid[nextSlide - 1];
4525        }
4526        newPosition = -newPosition;
4527      }
4528      if (needsLoopFix) {
4529        once('transitionEnd', () => {
4530          swiper.loopFix();
4531        });
4532      }
4533      // Fix duration
4534      if (swiper.velocity !== 0) {
4535        if (rtl) {
4536          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
4537        } else {
4538          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
4539        }
4540        if (params.freeMode.sticky) {
4541          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity
4542          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
4543          // It's easy to see this when simulating touch with mouse events. To fix this,
4544          // limit single-slide swipes to the default slide duration. This also has the
4545          // nice side effect of matching slide speed if the user stopped moving before
4546          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
4547          // For faster swipes, also apply limits (albeit higher ones).
4548          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
4549          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
4550          if (moveDistance < currentSlideSize) {
4551            momentumDuration = params.speed;
4552          } else if (moveDistance < 2 * currentSlideSize) {
4553            momentumDuration = params.speed * 1.5;
4554          } else {
4555            momentumDuration = params.speed * 2.5;
4556          }
4557        }
4558      } else if (params.freeMode.sticky) {
4559        swiper.slideToClosest();
4560        return;
4561      }
4562      if (params.freeMode.momentumBounce && doBounce) {
4563        swiper.updateProgress(afterBouncePosition);
4564        swiper.setTransition(momentumDuration);
4565        swiper.setTranslate(newPosition);
4566        swiper.transitionStart(true, swiper.swipeDirection);
4567        swiper.animating = true;
4568        (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => {
4569          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
4570          emit('momentumBounce');
4571          swiper.setTransition(params.speed);
4572          setTimeout(() => {
4573            swiper.setTranslate(afterBouncePosition);
4574            (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => {
4575              if (!swiper || swiper.destroyed) return;
4576              swiper.transitionEnd();
4577            });
4578          }, 0);
4579        });
4580      } else if (swiper.velocity) {
4581        emit('_freeModeNoMomentumRelease');
4582        swiper.updateProgress(newPosition);
4583        swiper.setTransition(momentumDuration);
4584        swiper.setTranslate(newPosition);
4585        swiper.transitionStart(true, swiper.swipeDirection);
4586        if (!swiper.animating) {
4587          swiper.animating = true;
4588          (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => {
4589            if (!swiper || swiper.destroyed) return;
4590            swiper.transitionEnd();
4591          });
4592        }
4593      } else {
4594        swiper.updateProgress(newPosition);
4595      }
4596      swiper.updateActiveIndex();
4597      swiper.updateSlidesClasses();
4598    } else if (params.freeMode.sticky) {
4599      swiper.slideToClosest();
4600      return;
4601    } else if (params.freeMode) {
4602      emit('_freeModeNoMomentumRelease');
4603    }
4604    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {
4605      emit('_freeModeStaticRelease');
4606      swiper.updateProgress();
4607      swiper.updateActiveIndex();
4608      swiper.updateSlidesClasses();
4609    }
4610  }
4611  Object.assign(swiper, {
4612    freeMode: {
4613      onTouchStart,
4614      onTouchMove,
4615      onTouchEnd
4616    }
4617  });
4618}
4619
4620
4621
4622
4623/***/ }),
4624
vendor: 5,731 bytes, lines 4625-4794
4625/***/ "./node_modules/swiper/modules/grid.mjs":
4626/*!**********************************************!*\
4627  !*** ./node_modules/swiper/modules/grid.mjs ***!
4628  \**********************************************/
4629/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4630
4631"use strict";
4632__webpack_require__.r(__webpack_exports__);
4633/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4634/* harmony export */   "default": function() { return /* binding */ Grid; }
4635/* harmony export */ });
4636function Grid(_ref) {
4637  let {
4638    swiper,
4639    extendParams,
4640    on
4641  } = _ref;
4642  extendParams({
4643    grid: {
4644      rows: 1,
4645      fill: 'column'
4646    }
4647  });
4648  let slidesNumberEvenToRows;
4649  let slidesPerRow;
4650  let numFullColumns;
4651  let wasMultiRow;
4652  const getSpaceBetween = () => {
4653    let spaceBetween = swiper.params.spaceBetween;
4654    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
4655      spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;
4656    } else if (typeof spaceBetween === 'string') {
4657      spaceBetween = parseFloat(spaceBetween);
4658    }
4659    return spaceBetween;
4660  };
4661  const initSlides = slides => {
4662    const {
4663      slidesPerView
4664    } = swiper.params;
4665    const {
4666      rows,
4667      fill
4668    } = swiper.params.grid;
4669    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;
4670    numFullColumns = Math.floor(slidesLength / rows);
4671    if (Math.floor(slidesLength / rows) === slidesLength / rows) {
4672      slidesNumberEvenToRows = slidesLength;
4673    } else {
4674      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;
4675    }
4676    if (slidesPerView !== 'auto' && fill === 'row') {
4677      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);
4678    }
4679    slidesPerRow = slidesNumberEvenToRows / rows;
4680  };
4681  const unsetSlides = () => {
4682    if (swiper.slides) {
4683      swiper.slides.forEach(slide => {
4684        if (slide.swiperSlideGridSet) {
4685          slide.style.height = '';
4686          slide.style[swiper.getDirectionLabel('margin-top')] = '';
4687        }
4688      });
4689    }
4690  };
4691  const updateSlide = (i, slide, slides) => {
4692    const {
4693      slidesPerGroup
4694    } = swiper.params;
4695    const spaceBetween = getSpaceBetween();
4696    const {
4697      rows,
4698      fill
4699    } = swiper.params.grid;
4700    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;
4701    // Set slides order
4702    let newSlideOrderIndex;
4703    let column;
4704    let row;
4705    if (fill === 'row' && slidesPerGroup > 1) {
4706      const groupIndex = Math.floor(i / (slidesPerGroup * rows));
4707      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;
4708      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);
4709      row = Math.floor(slideIndexInGroup / columnsInGroup);
4710      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;
4711      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;
4712      slide.style.order = newSlideOrderIndex;
4713    } else if (fill === 'column') {
4714      column = Math.floor(i / rows);
4715      row = i - column * rows;
4716      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {
4717        row += 1;
4718        if (row >= rows) {
4719          row = 0;
4720          column += 1;
4721        }
4722      }
4723    } else {
4724      row = Math.floor(i / slidesPerRow);
4725      column = i - row * slidesPerRow;
4726    }
4727    slide.row = row;
4728    slide.column = column;
4729    slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;
4730    slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';
4731    slide.swiperSlideGridSet = true;
4732  };
4733  const updateWrapperSize = (slideSize, snapGrid) => {
4734    const {
4735      centeredSlides,
4736      roundLengths
4737    } = swiper.params;
4738    const spaceBetween = getSpaceBetween();
4739    const {
4740      rows
4741    } = swiper.params.grid;
4742    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;
4743    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;
4744    if (!swiper.params.cssMode) {
4745      swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;
4746    }
4747    if (centeredSlides) {
4748      const newSlidesGrid = [];
4749      for (let i = 0; i < snapGrid.length; i += 1) {
4750        let slidesGridItem = snapGrid[i];
4751        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);
4752        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
4753      }
4754      snapGrid.splice(0, snapGrid.length);
4755      snapGrid.push(...newSlidesGrid);
4756    }
4757  };
4758  const onInit = () => {
4759    wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;
4760  };
4761  const onUpdate = () => {
4762    const {
4763      params,
4764      el
4765    } = swiper;
4766    const isMultiRow = params.grid && params.grid.rows > 1;
4767    if (wasMultiRow && !isMultiRow) {
4768      el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);
4769      numFullColumns = 1;
4770      swiper.emitContainerClasses();
4771    } else if (!wasMultiRow && isMultiRow) {
4772      el.classList.add(`${params.containerModifierClass}grid`);
4773      if (params.grid.fill === 'column') {
4774        el.classList.add(`${params.containerModifierClass}grid-column`);
4775      }
4776      swiper.emitContainerClasses();
4777    }
4778    wasMultiRow = isMultiRow;
4779  };
4780  on('init', onInit);
4781  on('update', onUpdate);
4782  swiper.grid = {
4783    initSlides,
4784    unsetSlides,
4785    updateSlide,
4786    updateWrapperSize
4787  };
4788}
4789
4790
4791
4792
4793/***/ }),
4794
vendor: 4,432 bytes, lines 4795-4904
4795/***/ "./node_modules/swiper/modules/hash-navigation.mjs":
4796/*!*********************************************************!*\
4797  !*** ./node_modules/swiper/modules/hash-navigation.mjs ***!
4798  \*********************************************************/
4799/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4800
4801"use strict";
4802__webpack_require__.r(__webpack_exports__);
4803/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4804/* harmony export */   "default": function() { return /* binding */ HashNavigation; }
4805/* harmony export */ });
4806/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
4807/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
4808
4809
4810
4811function HashNavigation(_ref) {
4812  let {
4813    swiper,
4814    extendParams,
4815    emit,
4816    on
4817  } = _ref;
4818  let initialized = false;
4819  const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
4820  const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
4821  extendParams({
4822    hashNavigation: {
4823      enabled: false,
4824      replaceState: false,
4825      watchState: false,
4826      getSlideIndex(_s, hash) {
4827        if (swiper.virtual && swiper.params.virtual.enabled) {
4828          const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];
4829          if (!slideWithHash) return 0;
4830          const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);
4831          return index;
4832        }
4833        return swiper.getSlideIndex((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]);
4834      }
4835    }
4836  });
4837  const onHashChange = () => {
4838    emit('hashChange');
4839    const newHash = document.location.hash.replace('#', '');
4840    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex];
4841    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';
4842    if (newHash !== activeSlideHash) {
4843      const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);
4844      if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;
4845      swiper.slideTo(newIndex);
4846    }
4847  };
4848  const setHash = () => {
4849    if (!initialized || !swiper.params.hashNavigation.enabled) return;
4850    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex];
4851    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';
4852    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
4853      window.history.replaceState(null, null, `#${activeSlideHash}` || '');
4854      emit('hashSet');
4855    } else {
4856      document.location.hash = activeSlideHash || '';
4857      emit('hashSet');
4858    }
4859  };
4860  const init = () => {
4861    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
4862    initialized = true;
4863    const hash = document.location.hash.replace('#', '');
4864    if (hash) {
4865      const speed = 0;
4866      const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);
4867      swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);
4868    }
4869    if (swiper.params.hashNavigation.watchState) {
4870      window.addEventListener('hashchange', onHashChange);
4871    }
4872  };
4873  const destroy = () => {
4874    if (swiper.params.hashNavigation.watchState) {
4875      window.removeEventListener('hashchange', onHashChange);
4876    }
4877  };
4878  on('init', () => {
4879    if (swiper.params.hashNavigation.enabled) {
4880      init();
4881    }
4882  });
4883  on('destroy', () => {
4884    if (swiper.params.hashNavigation.enabled) {
4885      destroy();
4886    }
4887  });
4888  on('transitionEnd _freeModeNoMomentumRelease', () => {
4889    if (initialized) {
4890      setHash();
4891    }
4892  });
4893  on('slideChange', () => {
4894    if (initialized && swiper.params.cssMode) {
4895      setHash();
4896    }
4897  });
4898}
4899
4900
4901
4902
4903/***/ }),
4904
vendor: 5,144 bytes, lines 4905-5062
4905/***/ "./node_modules/swiper/modules/history.mjs":
4906/*!*************************************************!*\
4907  !*** ./node_modules/swiper/modules/history.mjs ***!
4908  \*************************************************/
4909/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
4910
4911"use strict";
4912__webpack_require__.r(__webpack_exports__);
4913/* harmony export */ __webpack_require__.d(__webpack_exports__, {
4914/* harmony export */   "default": function() { return /* binding */ History; }
4915/* harmony export */ });
4916/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
4917
4918
4919function History(_ref) {
4920  let {
4921    swiper,
4922    extendParams,
4923    on
4924  } = _ref;
4925  extendParams({
4926    history: {
4927      enabled: false,
4928      root: '',
4929      replaceState: false,
4930      key: 'slides',
4931      keepQuery: false
4932    }
4933  });
4934  let initialized = false;
4935  let paths = {};
4936  const slugify = text => {
4937    return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
4938  };
4939  const getPathValues = urlOverride => {
4940    const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
4941    let location;
4942    if (urlOverride) {
4943      location = new URL(urlOverride);
4944    } else {
4945      location = window.location;
4946    }
4947    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');
4948    const total = pathArray.length;
4949    const key = pathArray[total - 2];
4950    const value = pathArray[total - 1];
4951    return {
4952      key,
4953      value
4954    };
4955  };
4956  const setHistory = (key, index) => {
4957    const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
4958    if (!initialized || !swiper.params.history.enabled) return;
4959    let location;
4960    if (swiper.params.url) {
4961      location = new URL(swiper.params.url);
4962    } else {
4963      location = window.location;
4964    }
4965    const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index];
4966    let value = slugify(slide.getAttribute('data-history'));
4967    if (swiper.params.history.root.length > 0) {
4968      let root = swiper.params.history.root;
4969      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);
4970      value = `${root}/${key ? `${key}/` : ''}${value}`;
4971    } else if (!location.pathname.includes(key)) {
4972      value = `${key ? `${key}/` : ''}${value}`;
4973    }
4974    if (swiper.params.history.keepQuery) {
4975      value += location.search;
4976    }
4977    const currentState = window.history.state;
4978    if (currentState && currentState.value === value) {
4979      return;
4980    }
4981    if (swiper.params.history.replaceState) {
4982      window.history.replaceState({
4983        value
4984      }, null, value);
4985    } else {
4986      window.history.pushState({
4987        value
4988      }, null, value);
4989    }
4990  };
4991  const scrollToSlide = (speed, value, runCallbacks) => {
4992    if (value) {
4993      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
4994        const slide = swiper.slides[i];
4995        const slideHistory = slugify(slide.getAttribute('data-history'));
4996        if (slideHistory === value) {
4997          const index = swiper.getSlideIndex(slide);
4998          swiper.slideTo(index, speed, runCallbacks);
4999        }
5000      }
5001    } else {
5002      swiper.slideTo(0, speed, runCallbacks);
5003    }
5004  };
5005  const setHistoryPopState = () => {
5006    paths = getPathValues(swiper.params.url);
5007    scrollToSlide(swiper.params.speed, paths.value, false);
5008  };
5009  const init = () => {
5010    const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
5011    if (!swiper.params.history) return;
5012    if (!window.history || !window.history.pushState) {
5013      swiper.params.history.enabled = false;
5014      swiper.params.hashNavigation.enabled = true;
5015      return;
5016    }
5017    initialized = true;
5018    paths = getPathValues(swiper.params.url);
5019    if (!paths.key && !paths.value) {
5020      if (!swiper.params.history.replaceState) {
5021        window.addEventListener('popstate', setHistoryPopState);
5022      }
5023      return;
5024    }
5025    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);
5026    if (!swiper.params.history.replaceState) {
5027      window.addEventListener('popstate', setHistoryPopState);
5028    }
5029  };
5030  const destroy = () => {
5031    const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
5032    if (!swiper.params.history.replaceState) {
5033      window.removeEventListener('popstate', setHistoryPopState);
5034    }
5035  };
5036  on('init', () => {
5037    if (swiper.params.history.enabled) {
5038      init();
5039    }
5040  });
5041  on('destroy', () => {
5042    if (swiper.params.history.enabled) {
5043      destroy();
5044    }
5045  });
5046  on('transitionEnd _freeModeNoMomentumRelease', () => {
5047    if (initialized) {
5048      setHistory(swiper.params.history.key, swiper.activeIndex);
5049    }
5050  });
5051  on('slideChange', () => {
5052    if (initialized && swiper.params.cssMode) {
5053      setHistory(swiper.params.history.key, swiper.activeIndex);
5054    }
5055  });
5056}
5057
5058
5059
5060
5061/***/ }),
5062
vendor: 7,341 bytes, lines 5063-5144
5063/***/ "./node_modules/swiper/modules/index.mjs":
5064/*!***********************************************!*\
5065  !*** ./node_modules/swiper/modules/index.mjs ***!
5066  \***********************************************/
5067/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5068
5069"use strict";
5070__webpack_require__.r(__webpack_exports__);
5071/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5072/* harmony export */   A11y: function() { return /* reexport safe */ _a11y_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]; },
5073/* harmony export */   Autoplay: function() { return /* reexport safe */ _autoplay_mjs__WEBPACK_IMPORTED_MODULE_12__["default"]; },
5074/* harmony export */   Controller: function() { return /* reexport safe */ _controller_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]; },
5075/* harmony export */   EffectCards: function() { return /* reexport safe */ _effect_cards_mjs__WEBPACK_IMPORTED_MODULE_22__["default"]; },
5076/* harmony export */   EffectCoverflow: function() { return /* reexport safe */ _effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_20__["default"]; },
5077/* harmony export */   EffectCreative: function() { return /* reexport safe */ _effect_creative_mjs__WEBPACK_IMPORTED_MODULE_21__["default"]; },
5078/* harmony export */   EffectCube: function() { return /* reexport safe */ _effect_cube_mjs__WEBPACK_IMPORTED_MODULE_18__["default"]; },
5079/* harmony export */   EffectFade: function() { return /* reexport safe */ _effect_fade_mjs__WEBPACK_IMPORTED_MODULE_17__["default"]; },
5080/* harmony export */   EffectFlip: function() { return /* reexport safe */ _effect_flip_mjs__WEBPACK_IMPORTED_MODULE_19__["default"]; },
5081/* harmony export */   FreeMode: function() { return /* reexport safe */ _free_mode_mjs__WEBPACK_IMPORTED_MODULE_14__["default"]; },
5082/* harmony export */   Grid: function() { return /* reexport safe */ _grid_mjs__WEBPACK_IMPORTED_MODULE_15__["default"]; },
5083/* harmony export */   HashNavigation: function() { return /* reexport safe */ _hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_11__["default"]; },
5084/* harmony export */   History: function() { return /* reexport safe */ _history_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]; },
5085/* harmony export */   Keyboard: function() { return /* reexport safe */ _keyboard_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]; },
5086/* harmony export */   Manipulation: function() { return /* reexport safe */ _manipulation_mjs__WEBPACK_IMPORTED_MODULE_16__["default"]; },
5087/* harmony export */   Mousewheel: function() { return /* reexport safe */ _mousewheel_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]; },
5088/* harmony export */   Navigation: function() { return /* reexport safe */ _navigation_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]; },
5089/* harmony export */   Pagination: function() { return /* reexport safe */ _pagination_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]; },
5090/* harmony export */   Parallax: function() { return /* reexport safe */ _parallax_mjs__WEBPACK_IMPORTED_MODULE_6__["default"]; },
5091/* harmony export */   Scrollbar: function() { return /* reexport safe */ _scrollbar_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]; },
5092/* harmony export */   Thumbs: function() { return /* reexport safe */ _thumbs_mjs__WEBPACK_IMPORTED_MODULE_13__["default"]; },
5093/* harmony export */   Virtual: function() { return /* reexport safe */ _virtual_mjs__WEBPACK_IMPORTED_MODULE_0__["default"]; },
5094/* harmony export */   Zoom: function() { return /* reexport safe */ _zoom_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]; }
5095/* harmony export */ });
5096/* harmony import */ var _virtual_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./virtual.mjs */ "./node_modules/swiper/modules/virtual.mjs");
5097/* harmony import */ var _keyboard_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keyboard.mjs */ "./node_modules/swiper/modules/keyboard.mjs");
5098/* harmony import */ var _mousewheel_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mousewheel.mjs */ "./node_modules/swiper/modules/mousewheel.mjs");
5099/* harmony import */ var _navigation_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./navigation.mjs */ "./node_modules/swiper/modules/navigation.mjs");
5100/* harmony import */ var _pagination_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pagination.mjs */ "./node_modules/swiper/modules/pagination.mjs");
5101/* harmony import */ var _scrollbar_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scrollbar.mjs */ "./node_modules/swiper/modules/scrollbar.mjs");
5102/* harmony import */ var _parallax_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./parallax.mjs */ "./node_modules/swiper/modules/parallax.mjs");
5103/* harmony import */ var _zoom_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./zoom.mjs */ "./node_modules/swiper/modules/zoom.mjs");
5104/* harmony import */ var _controller_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./controller.mjs */ "./node_modules/swiper/modules/controller.mjs");
5105/* harmony import */ var _a11y_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./a11y.mjs */ "./node_modules/swiper/modules/a11y.mjs");
5106/* harmony import */ var _history_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./history.mjs */ "./node_modules/swiper/modules/history.mjs");
5107/* harmony import */ var _hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./hash-navigation.mjs */ "./node_modules/swiper/modules/hash-navigation.mjs");
5108/* harmony import */ var _autoplay_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./autoplay.mjs */ "./node_modules/swiper/modules/autoplay.mjs");
5109/* harmony import */ var _thumbs_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./thumbs.mjs */ "./node_modules/swiper/modules/thumbs.mjs");
5110/* harmony import */ var _free_mode_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./free-mode.mjs */ "./node_modules/swiper/modules/free-mode.mjs");
5111/* harmony import */ var _grid_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./grid.mjs */ "./node_modules/swiper/modules/grid.mjs");
5112/* harmony import */ var _manipulation_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./manipulation.mjs */ "./node_modules/swiper/modules/manipulation.mjs");
5113/* harmony import */ var _effect_fade_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./effect-fade.mjs */ "./node_modules/swiper/modules/effect-fade.mjs");
5114/* harmony import */ var _effect_cube_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./effect-cube.mjs */ "./node_modules/swiper/modules/effect-cube.mjs");
5115/* harmony import */ var _effect_flip_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./effect-flip.mjs */ "./node_modules/swiper/modules/effect-flip.mjs");
5116/* harmony import */ var _effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./effect-coverflow.mjs */ "./node_modules/swiper/modules/effect-coverflow.mjs");
5117/* harmony import */ var _effect_creative_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./effect-creative.mjs */ "./node_modules/swiper/modules/effect-creative.mjs");
5118/* harmony import */ var _effect_cards_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./effect-cards.mjs */ "./node_modules/swiper/modules/effect-cards.mjs");
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143/***/ }),
5144
vendor: 5,293 bytes, lines 5145-5278
5145/***/ "./node_modules/swiper/modules/keyboard.mjs":
5146/*!**************************************************!*\
5147  !*** ./node_modules/swiper/modules/keyboard.mjs ***!
5148  \**************************************************/
5149/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5150
5151"use strict";
5152__webpack_require__.r(__webpack_exports__);
5153/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5154/* harmony export */   "default": function() { return /* binding */ Keyboard; }
5155/* harmony export */ });
5156/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
5157/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
5158
5159
5160
5161/* eslint-disable consistent-return */
5162function Keyboard(_ref) {
5163  let {
5164    swiper,
5165    extendParams,
5166    on,
5167    emit
5168  } = _ref;
5169  const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
5170  const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
5171  swiper.keyboard = {
5172    enabled: false
5173  };
5174  extendParams({
5175    keyboard: {
5176      enabled: false,
5177      onlyInViewport: true,
5178      pageUpDown: true
5179    }
5180  });
5181  function handle(event) {
5182    if (!swiper.enabled) return;
5183    const {
5184      rtlTranslate: rtl
5185    } = swiper;
5186    let e = event;
5187    if (e.originalEvent) e = e.originalEvent; // jquery fix
5188    const kc = e.keyCode || e.charCode;
5189    const pageUpDown = swiper.params.keyboard.pageUpDown;
5190    const isPageUp = pageUpDown && kc === 33;
5191    const isPageDown = pageUpDown && kc === 34;
5192    const isArrowLeft = kc === 37;
5193    const isArrowRight = kc === 39;
5194    const isArrowUp = kc === 38;
5195    const isArrowDown = kc === 40;
5196    // Directions locks
5197    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
5198      return false;
5199    }
5200    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
5201      return false;
5202    }
5203    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
5204      return undefined;
5205    }
5206    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
5207      return undefined;
5208    }
5209    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
5210      let inView = false;
5211      // Check that swiper should be inside of visible area of window
5212      if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {
5213        return undefined;
5214      }
5215      const el = swiper.el;
5216      const swiperWidth = el.clientWidth;
5217      const swiperHeight = el.clientHeight;
5218      const windowWidth = window.innerWidth;
5219      const windowHeight = window.innerHeight;
5220      const swiperOffset = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(el);
5221      if (rtl) swiperOffset.left -= el.scrollLeft;
5222      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];
5223      for (let i = 0; i < swiperCoord.length; i += 1) {
5224        const point = swiperCoord[i];
5225        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
5226          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
5227          inView = true;
5228        }
5229      }
5230      if (!inView) return undefined;
5231    }
5232    if (swiper.isHorizontal()) {
5233      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
5234        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5235      }
5236      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
5237      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
5238    } else {
5239      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
5240        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5241      }
5242      if (isPageDown || isArrowDown) swiper.slideNext();
5243      if (isPageUp || isArrowUp) swiper.slidePrev();
5244    }
5245    emit('keyPress', kc);
5246    return undefined;
5247  }
5248  function enable() {
5249    if (swiper.keyboard.enabled) return;
5250    document.addEventListener('keydown', handle);
5251    swiper.keyboard.enabled = true;
5252  }
5253  function disable() {
5254    if (!swiper.keyboard.enabled) return;
5255    document.removeEventListener('keydown', handle);
5256    swiper.keyboard.enabled = false;
5257  }
5258  on('init', () => {
5259    if (swiper.params.keyboard.enabled) {
5260      enable();
5261    }
5262  });
5263  on('destroy', () => {
5264    if (swiper.keyboard.enabled) {
5265      disable();
5266    }
5267  });
5268  Object.assign(swiper.keyboard, {
5269    enable,
5270    disable
5271  });
5272}
5273
5274
5275
5276
5277/***/ }),
5278
vendor: 5,537 bytes, lines 5279-5484
5279/***/ "./node_modules/swiper/modules/manipulation.mjs":
5280/*!******************************************************!*\
5281  !*** ./node_modules/swiper/modules/manipulation.mjs ***!
5282  \******************************************************/
5283/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5284
5285"use strict";
5286__webpack_require__.r(__webpack_exports__);
5287/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5288/* harmony export */   "default": function() { return /* binding */ Manipulation; }
5289/* harmony export */ });
5290function appendSlide(slides) {
5291  const swiper = this;
5292  const {
5293    params,
5294    slidesEl
5295  } = swiper;
5296  if (params.loop) {
5297    swiper.loopDestroy();
5298  }
5299  const appendElement = slideEl => {
5300    if (typeof slideEl === 'string') {
5301      const tempDOM = document.createElement('div');
5302      tempDOM.innerHTML = slideEl;
5303      slidesEl.append(tempDOM.children[0]);
5304      tempDOM.innerHTML = '';
5305    } else {
5306      slidesEl.append(slideEl);
5307    }
5308  };
5309  if (typeof slides === 'object' && 'length' in slides) {
5310    for (let i = 0; i < slides.length; i += 1) {
5311      if (slides[i]) appendElement(slides[i]);
5312    }
5313  } else {
5314    appendElement(slides);
5315  }
5316  swiper.recalcSlides();
5317  if (params.loop) {
5318    swiper.loopCreate();
5319  }
5320  if (!params.observer || swiper.isElement) {
5321    swiper.update();
5322  }
5323}
5324
5325function prependSlide(slides) {
5326  const swiper = this;
5327  const {
5328    params,
5329    activeIndex,
5330    slidesEl
5331  } = swiper;
5332  if (params.loop) {
5333    swiper.loopDestroy();
5334  }
5335  let newActiveIndex = activeIndex + 1;
5336  const prependElement = slideEl => {
5337    if (typeof slideEl === 'string') {
5338      const tempDOM = document.createElement('div');
5339      tempDOM.innerHTML = slideEl;
5340      slidesEl.prepend(tempDOM.children[0]);
5341      tempDOM.innerHTML = '';
5342    } else {
5343      slidesEl.prepend(slideEl);
5344    }
5345  };
5346  if (typeof slides === 'object' && 'length' in slides) {
5347    for (let i = 0; i < slides.length; i += 1) {
5348      if (slides[i]) prependElement(slides[i]);
5349    }
5350    newActiveIndex = activeIndex + slides.length;
5351  } else {
5352    prependElement(slides);
5353  }
5354  swiper.recalcSlides();
5355  if (params.loop) {
5356    swiper.loopCreate();
5357  }
5358  if (!params.observer || swiper.isElement) {
5359    swiper.update();
5360  }
5361  swiper.slideTo(newActiveIndex, 0, false);
5362}
5363
5364function addSlide(index, slides) {
5365  const swiper = this;
5366  const {
5367    params,
5368    activeIndex,
5369    slidesEl
5370  } = swiper;
5371  let activeIndexBuffer = activeIndex;
5372  if (params.loop) {
5373    activeIndexBuffer -= swiper.loopedSlides;
5374    swiper.loopDestroy();
5375    swiper.recalcSlides();
5376  }
5377  const baseLength = swiper.slides.length;
5378  if (index <= 0) {
5379    swiper.prependSlide(slides);
5380    return;
5381  }
5382  if (index >= baseLength) {
5383    swiper.appendSlide(slides);
5384    return;
5385  }
5386  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
5387  const slidesBuffer = [];
5388  for (let i = baseLength - 1; i >= index; i -= 1) {
5389    const currentSlide = swiper.slides[i];
5390    currentSlide.remove();
5391    slidesBuffer.unshift(currentSlide);
5392  }
5393  if (typeof slides === 'object' && 'length' in slides) {
5394    for (let i = 0; i < slides.length; i += 1) {
5395      if (slides[i]) slidesEl.append(slides[i]);
5396    }
5397    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
5398  } else {
5399    slidesEl.append(slides);
5400  }
5401  for (let i = 0; i < slidesBuffer.length; i += 1) {
5402    slidesEl.append(slidesBuffer[i]);
5403  }
5404  swiper.recalcSlides();
5405  if (params.loop) {
5406    swiper.loopCreate();
5407  }
5408  if (!params.observer || swiper.isElement) {
5409    swiper.update();
5410  }
5411  if (params.loop) {
5412    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
5413  } else {
5414    swiper.slideTo(newActiveIndex, 0, false);
5415  }
5416}
5417
5418function removeSlide(slidesIndexes) {
5419  const swiper = this;
5420  const {
5421    params,
5422    activeIndex
5423  } = swiper;
5424  let activeIndexBuffer = activeIndex;
5425  if (params.loop) {
5426    activeIndexBuffer -= swiper.loopedSlides;
5427    swiper.loopDestroy();
5428  }
5429  let newActiveIndex = activeIndexBuffer;
5430  let indexToRemove;
5431  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
5432    for (let i = 0; i < slidesIndexes.length; i += 1) {
5433      indexToRemove = slidesIndexes[i];
5434      if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();
5435      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
5436    }
5437    newActiveIndex = Math.max(newActiveIndex, 0);
5438  } else {
5439    indexToRemove = slidesIndexes;
5440    if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();
5441    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
5442    newActiveIndex = Math.max(newActiveIndex, 0);
5443  }
5444  swiper.recalcSlides();
5445  if (params.loop) {
5446    swiper.loopCreate();
5447  }
5448  if (!params.observer || swiper.isElement) {
5449    swiper.update();
5450  }
5451  if (params.loop) {
5452    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
5453  } else {
5454    swiper.slideTo(newActiveIndex, 0, false);
5455  }
5456}
5457
5458function removeAllSlides() {
5459  const swiper = this;
5460  const slidesIndexes = [];
5461  for (let i = 0; i < swiper.slides.length; i += 1) {
5462    slidesIndexes.push(i);
5463  }
5464  swiper.removeSlide(slidesIndexes);
5465}
5466
5467function Manipulation(_ref) {
5468  let {
5469    swiper
5470  } = _ref;
5471  Object.assign(swiper, {
5472    appendSlide: appendSlide.bind(swiper),
5473    prependSlide: prependSlide.bind(swiper),
5474    addSlide: addSlide.bind(swiper),
5475    removeSlide: removeSlide.bind(swiper),
5476    removeAllSlides: removeAllSlides.bind(swiper)
5477  });
5478}
5479
5480
5481
5482
5483/***/ }),
5484
vendor: 16,028 bytes, lines 5485-5896
5485/***/ "./node_modules/swiper/modules/mousewheel.mjs":
5486/*!****************************************************!*\
5487  !*** ./node_modules/swiper/modules/mousewheel.mjs ***!
5488  \****************************************************/
5489/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5490
5491"use strict";
5492__webpack_require__.r(__webpack_exports__);
5493/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5494/* harmony export */   "default": function() { return /* binding */ Mousewheel; }
5495/* harmony export */ });
5496/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
5497/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
5498
5499
5500
5501/* eslint-disable consistent-return */
5502function Mousewheel(_ref) {
5503  let {
5504    swiper,
5505    extendParams,
5506    on,
5507    emit
5508  } = _ref;
5509  const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
5510  extendParams({
5511    mousewheel: {
5512      enabled: false,
5513      releaseOnEdges: false,
5514      invert: false,
5515      forceToAxis: false,
5516      sensitivity: 1,
5517      eventsTarget: 'container',
5518      thresholdDelta: null,
5519      thresholdTime: null,
5520      noMousewheelClass: 'swiper-no-mousewheel'
5521    }
5522  });
5523  swiper.mousewheel = {
5524    enabled: false
5525  };
5526  let timeout;
5527  let lastScrollTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)();
5528  let lastEventBeforeSnap;
5529  const recentWheelEvents = [];
5530  function normalize(e) {
5531    // Reasonable defaults
5532    const PIXEL_STEP = 10;
5533    const LINE_HEIGHT = 40;
5534    const PAGE_HEIGHT = 800;
5535    let sX = 0;
5536    let sY = 0; // spinX, spinY
5537    let pX = 0;
5538    let pY = 0; // pixelX, pixelY
5539
5540    // Legacy
5541    if ('detail' in e) {
5542      sY = e.detail;
5543    }
5544    if ('wheelDelta' in e) {
5545      sY = -e.wheelDelta / 120;
5546    }
5547    if ('wheelDeltaY' in e) {
5548      sY = -e.wheelDeltaY / 120;
5549    }
5550    if ('wheelDeltaX' in e) {
5551      sX = -e.wheelDeltaX / 120;
5552    }
5553
5554    // side scrolling on FF with DOMMouseScroll
5555    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
5556      sX = sY;
5557      sY = 0;
5558    }
5559    pX = sX * PIXEL_STEP;
5560    pY = sY * PIXEL_STEP;
5561    if ('deltaY' in e) {
5562      pY = e.deltaY;
5563    }
5564    if ('deltaX' in e) {
5565      pX = e.deltaX;
5566    }
5567    if (e.shiftKey && !pX) {
5568      // if user scrolls with shift he wants horizontal scroll
5569      pX = pY;
5570      pY = 0;
5571    }
5572    if ((pX || pY) && e.deltaMode) {
5573      if (e.deltaMode === 1) {
5574        // delta in LINE units
5575        pX *= LINE_HEIGHT;
5576        pY *= LINE_HEIGHT;
5577      } else {
5578        // delta in PAGE units
5579        pX *= PAGE_HEIGHT;
5580        pY *= PAGE_HEIGHT;
5581      }
5582    }
5583
5584    // Fall-back if spin cannot be determined
5585    if (pX && !sX) {
5586      sX = pX < 1 ? -1 : 1;
5587    }
5588    if (pY && !sY) {
5589      sY = pY < 1 ? -1 : 1;
5590    }
5591    return {
5592      spinX: sX,
5593      spinY: sY,
5594      pixelX: pX,
5595      pixelY: pY
5596    };
5597  }
5598  function handleMouseEnter() {
5599    if (!swiper.enabled) return;
5600    swiper.mouseEntered = true;
5601  }
5602  function handleMouseLeave() {
5603    if (!swiper.enabled) return;
5604    swiper.mouseEntered = false;
5605  }
5606  function animateSlider(newEvent) {
5607    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {
5608      // Prevent if delta of wheel scroll delta is below configured threshold
5609      return false;
5610    }
5611    if (swiper.params.mousewheel.thresholdTime && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {
5612      // Prevent if time between scrolls is below configured threshold
5613      return false;
5614    }
5615
5616    // If the movement is NOT big enough and
5617    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
5618    //   Don't go any further (avoid insignificant scroll movement).
5619    if (newEvent.delta >= 6 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)() - lastScrollTime < 60) {
5620      // Return false as a default
5621      return true;
5622    }
5623    // If user is scrolling towards the end:
5624    //   If the slider hasn't hit the latest slide or
5625    //   if the slider is a loop and
5626    //   if the slider isn't moving right now:
5627    //     Go to next slide and
5628    //     emit a scroll event.
5629    // Else (the user is scrolling towards the beginning) and
5630    // if the slider hasn't hit the first slide or
5631    // if the slider is a loop and
5632    // if the slider isn't moving right now:
5633    //   Go to prev slide and
5634    //   emit a scroll event.
5635    if (newEvent.direction < 0) {
5636      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
5637        swiper.slideNext();
5638        emit('scroll', newEvent.raw);
5639      }
5640    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
5641      swiper.slidePrev();
5642      emit('scroll', newEvent.raw);
5643    }
5644    // If you got here is because an animation has been triggered so store the current time
5645    lastScrollTime = new window.Date().getTime();
5646    // Return false as a default
5647    return false;
5648  }
5649  function releaseScroll(newEvent) {
5650    const params = swiper.params.mousewheel;
5651    if (newEvent.direction < 0) {
5652      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
5653        // Return true to animate scroll on edges
5654        return true;
5655      }
5656    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
5657      // Return true to animate scroll on edges
5658      return true;
5659    }
5660    return false;
5661  }
5662  function handle(event) {
5663    let e = event;
5664    let disableParentSwiper = true;
5665    if (!swiper.enabled) return;
5666
5667    // Ignore event if the target or its parents have the swiper-no-mousewheel class
5668    if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;
5669    const params = swiper.params.mousewheel;
5670    if (swiper.params.cssMode) {
5671      e.preventDefault();
5672    }
5673    let targetEl = swiper.el;
5674    if (swiper.params.mousewheel.eventsTarget !== 'container') {
5675      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);
5676    }
5677    const targetElContainsTarget = targetEl && targetEl.contains(e.target);
5678    if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;
5679    if (e.originalEvent) e = e.originalEvent; // jquery fix
5680    let delta = 0;
5681    const rtlFactor = swiper.rtlTranslate ? -1 : 1;
5682    const data = normalize(e);
5683    if (params.forceToAxis) {
5684      if (swiper.isHorizontal()) {
5685        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
5686      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
5687    } else {
5688      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
5689    }
5690    if (delta === 0) return true;
5691    if (params.invert) delta = -delta;
5692
5693    // Get the scroll positions
5694    let positions = swiper.getTranslate() + delta * params.sensitivity;
5695    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();
5696    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();
5697
5698    // When loop is true:
5699    //     the disableParentSwiper will be true.
5700    // When loop is false:
5701    //     if the scroll positions is not on edge,
5702    //     then the disableParentSwiper will be true.
5703    //     if the scroll on edge positions,
5704    //     then the disableParentSwiper will be false.
5705    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());
5706    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();
5707    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {
5708      // Register the new event in a variable which stores the relevant data
5709      const newEvent = {
5710        time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(),
5711        delta: Math.abs(delta),
5712        direction: Math.sign(delta),
5713        raw: event
5714      };
5715
5716      // Keep the most recent events
5717      if (recentWheelEvents.length >= 2) {
5718        recentWheelEvents.shift(); // only store the last N events
5719      }
5720
5721      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
5722      recentWheelEvents.push(newEvent);
5723
5724      // If there is at least one previous recorded event:
5725      //   If direction has changed or
5726      //   if the scroll is quicker than the previous one:
5727      //     Animate the slider.
5728      // Else (this is the first time the wheel is moved):
5729      //     Animate the slider.
5730      if (prevEvent) {
5731        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
5732          animateSlider(newEvent);
5733        }
5734      } else {
5735        animateSlider(newEvent);
5736      }
5737
5738      // If it's time to release the scroll:
5739      //   Return now so you don't hit the preventDefault.
5740      if (releaseScroll(newEvent)) {
5741        return true;
5742      }
5743    } else {
5744      // Freemode or scrollContainer:
5745
5746      // If we recently snapped after a momentum scroll, then ignore wheel events
5747      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
5748      // or if it's a new scroll (larger delta or inverse sign as last event before
5749      // an end-of-momentum snap).
5750      const newEvent = {
5751        time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(),
5752        delta: Math.abs(delta),
5753        direction: Math.sign(delta)
5754      };
5755      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;
5756      if (!ignoreWheelEvents) {
5757        lastEventBeforeSnap = undefined;
5758        let position = swiper.getTranslate() + delta * params.sensitivity;
5759        const wasBeginning = swiper.isBeginning;
5760        const wasEnd = swiper.isEnd;
5761        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
5762        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
5763        swiper.setTransition(0);
5764        swiper.setTranslate(position);
5765        swiper.updateProgress();
5766        swiper.updateActiveIndex();
5767        swiper.updateSlidesClasses();
5768        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
5769          swiper.updateSlidesClasses();
5770        }
5771        if (swiper.params.loop) {
5772          swiper.loopFix({
5773            direction: newEvent.direction < 0 ? 'next' : 'prev',
5774            byMousewheel: true
5775          });
5776        }
5777        if (swiper.params.freeMode.sticky) {
5778          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
5779          // the end of a momentum scroll by storing recent (N=15?) wheel events.
5780          // 1. do all N events have decreasing or same (absolute value) delta?
5781          // 2. did all N events arrive in the last M (M=500?) msecs?
5782          // 3. does the earliest event have an (absolute value) delta that's
5783          //    at least P (P=1?) larger than the most recent event's delta?
5784          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
5785          // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
5786          // Snap immediately and ignore remaining wheel events in this scroll.
5787          // See comment above for "remaining wheel events in this scroll" determination.
5788          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
5789          clearTimeout(timeout);
5790          timeout = undefined;
5791          if (recentWheelEvents.length >= 15) {
5792            recentWheelEvents.shift(); // only store the last N events
5793          }
5794
5795          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
5796          const firstEvent = recentWheelEvents[0];
5797          recentWheelEvents.push(newEvent);
5798          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {
5799            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
5800            recentWheelEvents.splice(0);
5801          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {
5802            // We're at the end of the deceleration of a momentum scroll, so there's no need
5803            // to wait for more events. Snap ASAP on the next tick.
5804            // Also, because there's some remaining momentum we'll bias the snap in the
5805            // direction of the ongoing scroll because it's better UX for the scroll to snap
5806            // in the same direction as the scroll instead of reversing to snap.  Therefore,
5807            // if it's already scrolled more than 20% in the current direction, keep going.
5808            const snapToThreshold = delta > 0 ? 0.8 : 0.2;
5809            lastEventBeforeSnap = newEvent;
5810            recentWheelEvents.splice(0);
5811            timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
5812              if (swiper.destroyed || !swiper.params) return;
5813              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
5814            }, 0); // no delay; move on next tick
5815          }
5816
5817          if (!timeout) {
5818            // if we get here, then we haven't detected the end of a momentum scroll, so
5819            // we'll consider a scroll "complete" when there haven't been any wheel events
5820            // for 500ms.
5821            timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
5822              if (swiper.destroyed || !swiper.params) return;
5823              const snapToThreshold = 0.5;
5824              lastEventBeforeSnap = newEvent;
5825              recentWheelEvents.splice(0);
5826              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
5827            }, 500);
5828          }
5829        }
5830
5831        // Emit event
5832        if (!ignoreWheelEvents) emit('scroll', e);
5833
5834        // Stop autoplay
5835        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();
5836        // Return page scroll on edge positions
5837        if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {
5838          return true;
5839        }
5840      }
5841    }
5842    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5843    return false;
5844  }
5845  function events(method) {
5846    let targetEl = swiper.el;
5847    if (swiper.params.mousewheel.eventsTarget !== 'container') {
5848      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);
5849    }
5850    targetEl[method]('mouseenter', handleMouseEnter);
5851    targetEl[method]('mouseleave', handleMouseLeave);
5852    targetEl[method]('wheel', handle);
5853  }
5854  function enable() {
5855    if (swiper.params.cssMode) {
5856      swiper.wrapperEl.removeEventListener('wheel', handle);
5857      return true;
5858    }
5859    if (swiper.mousewheel.enabled) return false;
5860    events('addEventListener');
5861    swiper.mousewheel.enabled = true;
5862    return true;
5863  }
5864  function disable() {
5865    if (swiper.params.cssMode) {
5866      swiper.wrapperEl.addEventListener(event, handle);
5867      return true;
5868    }
5869    if (!swiper.mousewheel.enabled) return false;
5870    events('removeEventListener');
5871    swiper.mousewheel.enabled = false;
5872    return true;
5873  }
5874  on('init', () => {
5875    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
5876      disable();
5877    }
5878    if (swiper.params.mousewheel.enabled) enable();
5879  });
5880  on('destroy', () => {
5881    if (swiper.params.cssMode) {
5882      enable();
5883    }
5884    if (swiper.mousewheel.enabled) disable();
5885  });
5886  Object.assign(swiper.mousewheel, {
5887    enable,
5888    disable
5889  });
5890}
5891
5892
5893
5894
5895/***/ }),
5896
vendor: 7,442 bytes, lines 5897-6113
5897/***/ "./node_modules/swiper/modules/navigation.mjs":
5898/*!****************************************************!*\
5899  !*** ./node_modules/swiper/modules/navigation.mjs ***!
5900  \****************************************************/
5901/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
5902
5903"use strict";
5904__webpack_require__.r(__webpack_exports__);
5905/* harmony export */ __webpack_require__.d(__webpack_exports__, {
5906/* harmony export */   "default": function() { return /* binding */ Navigation; }
5907/* harmony export */ });
5908/* harmony import */ var _shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-element-if-not-defined.mjs */ "./node_modules/swiper/shared/create-element-if-not-defined.mjs");
5909/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
5910
5911
5912
5913function Navigation(_ref) {
5914  let {
5915    swiper,
5916    extendParams,
5917    on,
5918    emit
5919  } = _ref;
5920  extendParams({
5921    navigation: {
5922      nextEl: null,
5923      prevEl: null,
5924      hideOnClick: false,
5925      disabledClass: 'swiper-button-disabled',
5926      hiddenClass: 'swiper-button-hidden',
5927      lockClass: 'swiper-button-lock',
5928      navigationDisabledClass: 'swiper-navigation-disabled'
5929    }
5930  });
5931  swiper.navigation = {
5932    nextEl: null,
5933    prevEl: null
5934  };
5935  function getEl(el) {
5936    let res;
5937    if (el && typeof el === 'string' && swiper.isElement) {
5938      res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);
5939      if (res) return res;
5940    }
5941    if (el) {
5942      if (typeof el === 'string') res = [...document.querySelectorAll(el)];
5943      if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {
5944        res = swiper.el.querySelector(el);
5945      } else if (res && res.length === 1) {
5946        res = res[0];
5947      }
5948    }
5949    if (el && !res) return el;
5950    // if (Array.isArray(res) && res.length === 1) res = res[0];
5951    return res;
5952  }
5953  function toggleEl(el, disabled) {
5954    const params = swiper.params.navigation;
5955    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el);
5956    el.forEach(subEl => {
5957      if (subEl) {
5958        subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));
5959        if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;
5960        if (swiper.params.watchOverflow && swiper.enabled) {
5961          subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);
5962        }
5963      }
5964    });
5965  }
5966  function update() {
5967    // Update Navigation Buttons
5968    const {
5969      nextEl,
5970      prevEl
5971    } = swiper.navigation;
5972    if (swiper.params.loop) {
5973      toggleEl(prevEl, false);
5974      toggleEl(nextEl, false);
5975      return;
5976    }
5977    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);
5978    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);
5979  }
5980  function onPrevClick(e) {
5981    e.preventDefault();
5982    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;
5983    swiper.slidePrev();
5984    emit('navigationPrev');
5985  }
5986  function onNextClick(e) {
5987    e.preventDefault();
5988    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;
5989    swiper.slideNext();
5990    emit('navigationNext');
5991  }
5992  function init() {
5993    const params = swiper.params.navigation;
5994    swiper.params.navigation = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper, swiper.originalParams.navigation, swiper.params.navigation, {
5995      nextEl: 'swiper-button-next',
5996      prevEl: 'swiper-button-prev'
5997    });
5998    if (!(params.nextEl || params.prevEl)) return;
5999    let nextEl = getEl(params.nextEl);
6000    let prevEl = getEl(params.prevEl);
6001    Object.assign(swiper.navigation, {
6002      nextEl,
6003      prevEl
6004    });
6005    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl);
6006    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl);
6007    const initButton = (el, dir) => {
6008      if (el) {
6009        el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
6010      }
6011      if (!swiper.enabled && el) {
6012        el.classList.add(...params.lockClass.split(' '));
6013      }
6014    };
6015    nextEl.forEach(el => initButton(el, 'next'));
6016    prevEl.forEach(el => initButton(el, 'prev'));
6017  }
6018  function destroy() {
6019    let {
6020      nextEl,
6021      prevEl
6022    } = swiper.navigation;
6023    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl);
6024    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl);
6025    const destroyButton = (el, dir) => {
6026      el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
6027      el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));
6028    };
6029    nextEl.forEach(el => destroyButton(el, 'next'));
6030    prevEl.forEach(el => destroyButton(el, 'prev'));
6031  }
6032  on('init', () => {
6033    if (swiper.params.navigation.enabled === false) {
6034      // eslint-disable-next-line
6035      disable();
6036    } else {
6037      init();
6038      update();
6039    }
6040  });
6041  on('toEdge fromEdge lock unlock', () => {
6042    update();
6043  });
6044  on('destroy', () => {
6045    destroy();
6046  });
6047  on('enable disable', () => {
6048    let {
6049      nextEl,
6050      prevEl
6051    } = swiper.navigation;
6052    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl);
6053    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl);
6054    if (swiper.enabled) {
6055      update();
6056      return;
6057    }
6058    [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));
6059  });
6060  on('click', (_s, e) => {
6061    let {
6062      nextEl,
6063      prevEl
6064    } = swiper.navigation;
6065    nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl);
6066    prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl);
6067    const targetEl = e.target;
6068    let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);
6069    if (swiper.isElement && !targetIsButton) {
6070      const path = e.path || e.composedPath && e.composedPath();
6071      if (path) {
6072        targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));
6073      }
6074    }
6075    if (swiper.params.navigation.hideOnClick && !targetIsButton) {
6076      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;
6077      let isHidden;
6078      if (nextEl.length) {
6079        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);
6080      } else if (prevEl.length) {
6081        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);
6082      }
6083      if (isHidden === true) {
6084        emit('navigationShow');
6085      } else {
6086        emit('navigationHide');
6087      }
6088      [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));
6089    }
6090  });
6091  const enable = () => {
6092    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));
6093    init();
6094    update();
6095  };
6096  const disable = () => {
6097    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));
6098    destroy();
6099  };
6100  Object.assign(swiper.navigation, {
6101    enable,
6102    disable,
6103    update,
6104    init,
6105    destroy
6106  });
6107}
6108
6109
6110
6111
6112/***/ }),
6113
vendor: 19,074 bytes, lines 6114-6591
6114/***/ "./node_modules/swiper/modules/pagination.mjs":
6115/*!****************************************************!*\
6116  !*** ./node_modules/swiper/modules/pagination.mjs ***!
6117  \****************************************************/
6118/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6119
6120"use strict";
6121__webpack_require__.r(__webpack_exports__);
6122/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6123/* harmony export */   "default": function() { return /* binding */ Pagination; }
6124/* harmony export */ });
6125/* harmony import */ var _shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/classes-to-selector.mjs */ "./node_modules/swiper/shared/classes-to-selector.mjs");
6126/* harmony import */ var _shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/create-element-if-not-defined.mjs */ "./node_modules/swiper/shared/create-element-if-not-defined.mjs");
6127/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
6128
6129
6130
6131
6132function Pagination(_ref) {
6133  let {
6134    swiper,
6135    extendParams,
6136    on,
6137    emit
6138  } = _ref;
6139  const pfx = 'swiper-pagination';
6140  extendParams({
6141    pagination: {
6142      el: null,
6143      bulletElement: 'span',
6144      clickable: false,
6145      hideOnClick: false,
6146      renderBullet: null,
6147      renderProgressbar: null,
6148      renderFraction: null,
6149      renderCustom: null,
6150      progressbarOpposite: false,
6151      type: 'bullets',
6152      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
6153      dynamicBullets: false,
6154      dynamicMainBullets: 1,
6155      formatFractionCurrent: number => number,
6156      formatFractionTotal: number => number,
6157      bulletClass: `${pfx}-bullet`,
6158      bulletActiveClass: `${pfx}-bullet-active`,
6159      modifierClass: `${pfx}-`,
6160      currentClass: `${pfx}-current`,
6161      totalClass: `${pfx}-total`,
6162      hiddenClass: `${pfx}-hidden`,
6163      progressbarFillClass: `${pfx}-progressbar-fill`,
6164      progressbarOppositeClass: `${pfx}-progressbar-opposite`,
6165      clickableClass: `${pfx}-clickable`,
6166      lockClass: `${pfx}-lock`,
6167      horizontalClass: `${pfx}-horizontal`,
6168      verticalClass: `${pfx}-vertical`,
6169      paginationDisabledClass: `${pfx}-disabled`
6170    }
6171  });
6172  swiper.pagination = {
6173    el: null,
6174    bullets: []
6175  };
6176  let bulletSize;
6177  let dynamicBulletIndex = 0;
6178  function isPaginationDisabled() {
6179    return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;
6180  }
6181  function setSideBullets(bulletEl, position) {
6182    const {
6183      bulletActiveClass
6184    } = swiper.params.pagination;
6185    if (!bulletEl) return;
6186    bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];
6187    if (bulletEl) {
6188      bulletEl.classList.add(`${bulletActiveClass}-${position}`);
6189      bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];
6190      if (bulletEl) {
6191        bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);
6192      }
6193    }
6194  }
6195  function getMoveDirection(prevIndex, nextIndex, length) {
6196    prevIndex = prevIndex % length;
6197    nextIndex = nextIndex % length;
6198    if (nextIndex === prevIndex + 1) {
6199      return 'next';
6200    } else if (nextIndex === prevIndex - 1) {
6201      return 'previous';
6202    }
6203    return;
6204  }
6205  function onBulletClick(e) {
6206    const bulletEl = e.target.closest((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper.params.pagination.bulletClass));
6207    if (!bulletEl) {
6208      return;
6209    }
6210    e.preventDefault();
6211    const index = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bulletEl) * swiper.params.slidesPerGroup;
6212    if (swiper.params.loop) {
6213      if (swiper.realIndex === index) return;
6214      const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);
6215      if (moveDirection === 'next') {
6216        swiper.slideNext();
6217      } else if (moveDirection === 'previous') {
6218        swiper.slidePrev();
6219      } else {
6220        swiper.slideToLoop(index);
6221      }
6222    } else {
6223      swiper.slideTo(index);
6224    }
6225  }
6226  function update() {
6227    // Render || Update Pagination bullets/items
6228    const rtl = swiper.rtl;
6229    const params = swiper.params.pagination;
6230    if (isPaginationDisabled()) return;
6231    let el = swiper.pagination.el;
6232    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
6233    // Current/Total
6234    let current;
6235    let previousIndex;
6236    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
6237    const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
6238    if (swiper.params.loop) {
6239      previousIndex = swiper.previousRealIndex || 0;
6240      current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;
6241    } else if (typeof swiper.snapIndex !== 'undefined') {
6242      current = swiper.snapIndex;
6243      previousIndex = swiper.previousSnapIndex;
6244    } else {
6245      previousIndex = swiper.previousIndex || 0;
6246      current = swiper.activeIndex || 0;
6247    }
6248    // Types
6249    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
6250      const bullets = swiper.pagination.bullets;
6251      let firstIndex;
6252      let lastIndex;
6253      let midIndex;
6254      if (params.dynamicBullets) {
6255        bulletSize = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.f)(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);
6256        el.forEach(subEl => {
6257          subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;
6258        });
6259        if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {
6260          dynamicBulletIndex += current - (previousIndex || 0);
6261          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {
6262            dynamicBulletIndex = params.dynamicMainBullets - 1;
6263          } else if (dynamicBulletIndex < 0) {
6264            dynamicBulletIndex = 0;
6265          }
6266        }
6267        firstIndex = Math.max(current - dynamicBulletIndex, 0);
6268        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
6269        midIndex = (lastIndex + firstIndex) / 2;
6270      }
6271      bullets.forEach(bulletEl => {
6272        const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();
6273        bulletEl.classList.remove(...classesToRemove);
6274      });
6275      if (el.length > 1) {
6276        bullets.forEach(bullet => {
6277          const bulletIndex = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bullet);
6278          if (bulletIndex === current) {
6279            bullet.classList.add(...params.bulletActiveClass.split(' '));
6280          } else if (swiper.isElement) {
6281            bullet.setAttribute('part', 'bullet');
6282          }
6283          if (params.dynamicBullets) {
6284            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
6285              bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));
6286            }
6287            if (bulletIndex === firstIndex) {
6288              setSideBullets(bullet, 'prev');
6289            }
6290            if (bulletIndex === lastIndex) {
6291              setSideBullets(bullet, 'next');
6292            }
6293          }
6294        });
6295      } else {
6296        const bullet = bullets[current];
6297        if (bullet) {
6298          bullet.classList.add(...params.bulletActiveClass.split(' '));
6299        }
6300        if (swiper.isElement) {
6301          bullets.forEach((bulletEl, bulletIndex) => {
6302            bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');
6303          });
6304        }
6305        if (params.dynamicBullets) {
6306          const firstDisplayedBullet = bullets[firstIndex];
6307          const lastDisplayedBullet = bullets[lastIndex];
6308          for (let i = firstIndex; i <= lastIndex; i += 1) {
6309            if (bullets[i]) {
6310              bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));
6311            }
6312          }
6313          setSideBullets(firstDisplayedBullet, 'prev');
6314          setSideBullets(lastDisplayedBullet, 'next');
6315        }
6316      }
6317      if (params.dynamicBullets) {
6318        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
6319        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;
6320        const offsetProp = rtl ? 'right' : 'left';
6321        bullets.forEach(bullet => {
6322          bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;
6323        });
6324      }
6325    }
6326    el.forEach((subEl, subElIndex) => {
6327      if (params.type === 'fraction') {
6328        subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.currentClass)).forEach(fractionEl => {
6329          fractionEl.textContent = params.formatFractionCurrent(current + 1);
6330        });
6331        subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.totalClass)).forEach(totalEl => {
6332          totalEl.textContent = params.formatFractionTotal(total);
6333        });
6334      }
6335      if (params.type === 'progressbar') {
6336        let progressbarDirection;
6337        if (params.progressbarOpposite) {
6338          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
6339        } else {
6340          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
6341        }
6342        const scale = (current + 1) / total;
6343        let scaleX = 1;
6344        let scaleY = 1;
6345        if (progressbarDirection === 'horizontal') {
6346          scaleX = scale;
6347        } else {
6348          scaleY = scale;
6349        }
6350        subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.progressbarFillClass)).forEach(progressEl => {
6351          progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;
6352          progressEl.style.transitionDuration = `${swiper.params.speed}ms`;
6353        });
6354      }
6355      if (params.type === 'custom' && params.renderCustom) {
6356        subEl.innerHTML = params.renderCustom(swiper, current + 1, total);
6357        if (subElIndex === 0) emit('paginationRender', subEl);
6358      } else {
6359        if (subElIndex === 0) emit('paginationRender', subEl);
6360        emit('paginationUpdate', subEl);
6361      }
6362      if (swiper.params.watchOverflow && swiper.enabled) {
6363        subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);
6364      }
6365    });
6366  }
6367  function render() {
6368    // Render Container
6369    const params = swiper.params.pagination;
6370    if (isPaginationDisabled()) return;
6371    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;
6372    let el = swiper.pagination.el;
6373    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
6374    let paginationHTML = '';
6375    if (params.type === 'bullets') {
6376      let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
6377      if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {
6378        numberOfBullets = slidesLength;
6379      }
6380      for (let i = 0; i < numberOfBullets; i += 1) {
6381        if (params.renderBullet) {
6382          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
6383        } else {
6384          // prettier-ignore
6385          paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}"></${params.bulletElement}>`;
6386        }
6387      }
6388    }
6389    if (params.type === 'fraction') {
6390      if (params.renderFraction) {
6391        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
6392      } else {
6393        paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`;
6394      }
6395    }
6396    if (params.type === 'progressbar') {
6397      if (params.renderProgressbar) {
6398        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
6399      } else {
6400        paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
6401      }
6402    }
6403    swiper.pagination.bullets = [];
6404    el.forEach(subEl => {
6405      if (params.type !== 'custom') {
6406        subEl.innerHTML = paginationHTML || '';
6407      }
6408      if (params.type === 'bullets') {
6409        swiper.pagination.bullets.push(...subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.bulletClass)));
6410      }
6411    });
6412    if (params.type !== 'custom') {
6413      emit('paginationRender', el[0]);
6414    }
6415  }
6416  function init() {
6417    swiper.params.pagination = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper, swiper.originalParams.pagination, swiper.params.pagination, {
6418      el: 'swiper-pagination'
6419    });
6420    const params = swiper.params.pagination;
6421    if (!params.el) return;
6422    let el;
6423    if (typeof params.el === 'string' && swiper.isElement) {
6424      el = swiper.el.querySelector(params.el);
6425    }
6426    if (!el && typeof params.el === 'string') {
6427      el = [...document.querySelectorAll(params.el)];
6428    }
6429    if (!el) {
6430      el = params.el;
6431    }
6432    if (!el || el.length === 0) return;
6433    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {
6434      el = [...swiper.el.querySelectorAll(params.el)];
6435      // check if it belongs to another nested Swiper
6436      if (el.length > 1) {
6437        el = el.filter(subEl => {
6438          if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.a)(subEl, '.swiper')[0] !== swiper.el) return false;
6439          return true;
6440        })[0];
6441      }
6442    }
6443    if (Array.isArray(el) && el.length === 1) el = el[0];
6444    Object.assign(swiper.pagination, {
6445      el
6446    });
6447    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
6448    el.forEach(subEl => {
6449      if (params.type === 'bullets' && params.clickable) {
6450        subEl.classList.add(...(params.clickableClass || '').split(' '));
6451      }
6452      subEl.classList.add(params.modifierClass + params.type);
6453      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
6454      if (params.type === 'bullets' && params.dynamicBullets) {
6455        subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);
6456        dynamicBulletIndex = 0;
6457        if (params.dynamicMainBullets < 1) {
6458          params.dynamicMainBullets = 1;
6459        }
6460      }
6461      if (params.type === 'progressbar' && params.progressbarOpposite) {
6462        subEl.classList.add(params.progressbarOppositeClass);
6463      }
6464      if (params.clickable) {
6465        subEl.addEventListener('click', onBulletClick);
6466      }
6467      if (!swiper.enabled) {
6468        subEl.classList.add(params.lockClass);
6469      }
6470    });
6471  }
6472  function destroy() {
6473    const params = swiper.params.pagination;
6474    if (isPaginationDisabled()) return;
6475    let el = swiper.pagination.el;
6476    if (el) {
6477      el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
6478      el.forEach(subEl => {
6479        subEl.classList.remove(params.hiddenClass);
6480        subEl.classList.remove(params.modifierClass + params.type);
6481        subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
6482        if (params.clickable) {
6483          subEl.classList.remove(...(params.clickableClass || '').split(' '));
6484          subEl.removeEventListener('click', onBulletClick);
6485        }
6486      });
6487    }
6488    if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));
6489  }
6490  on('changeDirection', () => {
6491    if (!swiper.pagination || !swiper.pagination.el) return;
6492    const params = swiper.params.pagination;
6493    let {
6494      el
6495    } = swiper.pagination;
6496    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
6497    el.forEach(subEl => {
6498      subEl.classList.remove(params.horizontalClass, params.verticalClass);
6499      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
6500    });
6501  });
6502  on('init', () => {
6503    if (swiper.params.pagination.enabled === false) {
6504      // eslint-disable-next-line
6505      disable();
6506    } else {
6507      init();
6508      render();
6509      update();
6510    }
6511  });
6512  on('activeIndexChange', () => {
6513    if (typeof swiper.snapIndex === 'undefined') {
6514      update();
6515    }
6516  });
6517  on('snapIndexChange', () => {
6518    update();
6519  });
6520  on('snapGridLengthChange', () => {
6521    render();
6522    update();
6523  });
6524  on('destroy', () => {
6525    destroy();
6526  });
6527  on('enable disable', () => {
6528    let {
6529      el
6530    } = swiper.pagination;
6531    if (el) {
6532      el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
6533      el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));
6534    }
6535  });
6536  on('lock unlock', () => {
6537    update();
6538  });
6539  on('click', (_s, e) => {
6540    const targetEl = e.target;
6541    const el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el);
6542    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {
6543      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
6544      const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);
6545      if (isHidden === true) {
6546        emit('paginationShow');
6547      } else {
6548        emit('paginationHide');
6549      }
6550      el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));
6551    }
6552  });
6553  const enable = () => {
6554    swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);
6555    let {
6556      el
6557    } = swiper.pagination;
6558    if (el) {
6559      el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
6560      el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));
6561    }
6562    init();
6563    render();
6564    update();
6565  };
6566  const disable = () => {
6567    swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);
6568    let {
6569      el
6570    } = swiper.pagination;
6571    if (el) {
6572      el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el);
6573      el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));
6574    }
6575    destroy();
6576  };
6577  Object.assign(swiper.pagination, {
6578    enable,
6579    disable,
6580    render,
6581    update,
6582    init,
6583    destroy
6584  });
6585}
6586
6587
6588
6589
6590/***/ }),
6591
vendor: 4,718 bytes, lines 6592-6731
6592/***/ "./node_modules/swiper/modules/parallax.mjs":
6593/*!**************************************************!*\
6594  !*** ./node_modules/swiper/modules/parallax.mjs ***!
6595  \**************************************************/
6596/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6597
6598"use strict";
6599__webpack_require__.r(__webpack_exports__);
6600/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6601/* harmony export */   "default": function() { return /* binding */ Parallax; }
6602/* harmony export */ });
6603/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
6604
6605
6606function Parallax(_ref) {
6607  let {
6608    swiper,
6609    extendParams,
6610    on
6611  } = _ref;
6612  extendParams({
6613    parallax: {
6614      enabled: false
6615    }
6616  });
6617  const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';
6618  const setTransform = (el, progress) => {
6619    const {
6620      rtl
6621    } = swiper;
6622    const rtlFactor = rtl ? -1 : 1;
6623    const p = el.getAttribute('data-swiper-parallax') || '0';
6624    let x = el.getAttribute('data-swiper-parallax-x');
6625    let y = el.getAttribute('data-swiper-parallax-y');
6626    const scale = el.getAttribute('data-swiper-parallax-scale');
6627    const opacity = el.getAttribute('data-swiper-parallax-opacity');
6628    const rotate = el.getAttribute('data-swiper-parallax-rotate');
6629    if (x || y) {
6630      x = x || '0';
6631      y = y || '0';
6632    } else if (swiper.isHorizontal()) {
6633      x = p;
6634      y = '0';
6635    } else {
6636      y = p;
6637      x = '0';
6638    }
6639    if (x.indexOf('%') >= 0) {
6640      x = `${parseInt(x, 10) * progress * rtlFactor}%`;
6641    } else {
6642      x = `${x * progress * rtlFactor}px`;
6643    }
6644    if (y.indexOf('%') >= 0) {
6645      y = `${parseInt(y, 10) * progress}%`;
6646    } else {
6647      y = `${y * progress}px`;
6648    }
6649    if (typeof opacity !== 'undefined' && opacity !== null) {
6650      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
6651      el.style.opacity = currentOpacity;
6652    }
6653    let transform = `translate3d(${x}, ${y}, 0px)`;
6654    if (typeof scale !== 'undefined' && scale !== null) {
6655      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
6656      transform += ` scale(${currentScale})`;
6657    }
6658    if (rotate && typeof rotate !== 'undefined' && rotate !== null) {
6659      const currentRotate = rotate * progress * -1;
6660      transform += ` rotate(${currentRotate}deg)`;
6661    }
6662    el.style.transform = transform;
6663  };
6664  const setTranslate = () => {
6665    const {
6666      el,
6667      slides,
6668      progress,
6669      snapGrid,
6670      isElement
6671    } = swiper;
6672    const elements = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(el, elementsSelector);
6673    if (swiper.isElement) {
6674      elements.push(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.hostEl, elementsSelector));
6675    }
6676    elements.forEach(subEl => {
6677      setTransform(subEl, progress);
6678    });
6679    slides.forEach((slideEl, slideIndex) => {
6680      let slideProgress = slideEl.progress;
6681      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
6682        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
6683      }
6684      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
6685      slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {
6686        setTransform(subEl, slideProgress);
6687      });
6688    });
6689  };
6690  const setTransition = function (duration) {
6691    if (duration === void 0) {
6692      duration = swiper.params.speed;
6693    }
6694    const {
6695      el,
6696      hostEl
6697    } = swiper;
6698    const elements = [...el.querySelectorAll(elementsSelector)];
6699    if (swiper.isElement) {
6700      elements.push(...hostEl.querySelectorAll(elementsSelector));
6701    }
6702    elements.forEach(parallaxEl => {
6703      let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;
6704      if (duration === 0) parallaxDuration = 0;
6705      parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;
6706    });
6707  };
6708  on('beforeInit', () => {
6709    if (!swiper.params.parallax.enabled) return;
6710    swiper.params.watchSlidesProgress = true;
6711    swiper.originalParams.watchSlidesProgress = true;
6712  });
6713  on('init', () => {
6714    if (!swiper.params.parallax.enabled) return;
6715    setTranslate();
6716  });
6717  on('setTranslate', () => {
6718    if (!swiper.params.parallax.enabled) return;
6719    setTranslate();
6720  });
6721  on('setTransition', (_swiper, duration) => {
6722    if (!swiper.params.parallax.enabled) return;
6723    setTransition(duration);
6724  });
6725}
6726
6727
6728
6729
6730/***/ }),
6731
vendor: 12,551 bytes, lines 6732-7116
6732/***/ "./node_modules/swiper/modules/scrollbar.mjs":
6733/*!***************************************************!*\
6734  !*** ./node_modules/swiper/modules/scrollbar.mjs ***!
6735  \***************************************************/
6736/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
6737
6738"use strict";
6739__webpack_require__.r(__webpack_exports__);
6740/* harmony export */ __webpack_require__.d(__webpack_exports__, {
6741/* harmony export */   "default": function() { return /* binding */ Scrollbar; }
6742/* harmony export */ });
6743/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
6744/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
6745/* harmony import */ var _shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/create-element-if-not-defined.mjs */ "./node_modules/swiper/shared/create-element-if-not-defined.mjs");
6746/* harmony import */ var _shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/classes-to-selector.mjs */ "./node_modules/swiper/shared/classes-to-selector.mjs");
6747
6748
6749
6750
6751
6752function Scrollbar(_ref) {
6753  let {
6754    swiper,
6755    extendParams,
6756    on,
6757    emit
6758  } = _ref;
6759  const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
6760  let isTouched = false;
6761  let timeout = null;
6762  let dragTimeout = null;
6763  let dragStartPos;
6764  let dragSize;
6765  let trackSize;
6766  let divider;
6767  extendParams({
6768    scrollbar: {
6769      el: null,
6770      dragSize: 'auto',
6771      hide: false,
6772      draggable: false,
6773      snapOnRelease: true,
6774      lockClass: 'swiper-scrollbar-lock',
6775      dragClass: 'swiper-scrollbar-drag',
6776      scrollbarDisabledClass: 'swiper-scrollbar-disabled',
6777      horizontalClass: `swiper-scrollbar-horizontal`,
6778      verticalClass: `swiper-scrollbar-vertical`
6779    }
6780  });
6781  swiper.scrollbar = {
6782    el: null,
6783    dragEl: null
6784  };
6785  function setTranslate() {
6786    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6787    const {
6788      scrollbar,
6789      rtlTranslate: rtl
6790    } = swiper;
6791    const {
6792      dragEl,
6793      el
6794    } = scrollbar;
6795    const params = swiper.params.scrollbar;
6796    const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;
6797    let newSize = dragSize;
6798    let newPos = (trackSize - dragSize) * progress;
6799    if (rtl) {
6800      newPos = -newPos;
6801      if (newPos > 0) {
6802        newSize = dragSize - newPos;
6803        newPos = 0;
6804      } else if (-newPos + dragSize > trackSize) {
6805        newSize = trackSize + newPos;
6806      }
6807    } else if (newPos < 0) {
6808      newSize = dragSize + newPos;
6809      newPos = 0;
6810    } else if (newPos + dragSize > trackSize) {
6811      newSize = trackSize - newPos;
6812    }
6813    if (swiper.isHorizontal()) {
6814      dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;
6815      dragEl.style.width = `${newSize}px`;
6816    } else {
6817      dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;
6818      dragEl.style.height = `${newSize}px`;
6819    }
6820    if (params.hide) {
6821      clearTimeout(timeout);
6822      el.style.opacity = 1;
6823      timeout = setTimeout(() => {
6824        el.style.opacity = 0;
6825        el.style.transitionDuration = '400ms';
6826      }, 1000);
6827    }
6828  }
6829  function setTransition(duration) {
6830    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6831    swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;
6832  }
6833  function updateSize() {
6834    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6835    const {
6836      scrollbar
6837    } = swiper;
6838    const {
6839      dragEl,
6840      el
6841    } = scrollbar;
6842    dragEl.style.width = '';
6843    dragEl.style.height = '';
6844    trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;
6845    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));
6846    if (swiper.params.scrollbar.dragSize === 'auto') {
6847      dragSize = trackSize * divider;
6848    } else {
6849      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
6850    }
6851    if (swiper.isHorizontal()) {
6852      dragEl.style.width = `${dragSize}px`;
6853    } else {
6854      dragEl.style.height = `${dragSize}px`;
6855    }
6856    if (divider >= 1) {
6857      el.style.display = 'none';
6858    } else {
6859      el.style.display = '';
6860    }
6861    if (swiper.params.scrollbar.hide) {
6862      el.style.opacity = 0;
6863    }
6864    if (swiper.params.watchOverflow && swiper.enabled) {
6865      scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);
6866    }
6867  }
6868  function getPointerPosition(e) {
6869    return swiper.isHorizontal() ? e.clientX : e.clientY;
6870  }
6871  function setDragPosition(e) {
6872    const {
6873      scrollbar,
6874      rtlTranslate: rtl
6875    } = swiper;
6876    const {
6877      el
6878    } = scrollbar;
6879    let positionRatio;
6880    positionRatio = (getPointerPosition(e) - (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
6881    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
6882    if (rtl) {
6883      positionRatio = 1 - positionRatio;
6884    }
6885    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
6886    swiper.updateProgress(position);
6887    swiper.setTranslate(position);
6888    swiper.updateActiveIndex();
6889    swiper.updateSlidesClasses();
6890  }
6891  function onDragStart(e) {
6892    const params = swiper.params.scrollbar;
6893    const {
6894      scrollbar,
6895      wrapperEl
6896    } = swiper;
6897    const {
6898      el,
6899      dragEl
6900    } = scrollbar;
6901    isTouched = true;
6902    dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
6903    e.preventDefault();
6904    e.stopPropagation();
6905    wrapperEl.style.transitionDuration = '100ms';
6906    dragEl.style.transitionDuration = '100ms';
6907    setDragPosition(e);
6908    clearTimeout(dragTimeout);
6909    el.style.transitionDuration = '0ms';
6910    if (params.hide) {
6911      el.style.opacity = 1;
6912    }
6913    if (swiper.params.cssMode) {
6914      swiper.wrapperEl.style['scroll-snap-type'] = 'none';
6915    }
6916    emit('scrollbarDragStart', e);
6917  }
6918  function onDragMove(e) {
6919    const {
6920      scrollbar,
6921      wrapperEl
6922    } = swiper;
6923    const {
6924      el,
6925      dragEl
6926    } = scrollbar;
6927    if (!isTouched) return;
6928    if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;
6929    setDragPosition(e);
6930    wrapperEl.style.transitionDuration = '0ms';
6931    el.style.transitionDuration = '0ms';
6932    dragEl.style.transitionDuration = '0ms';
6933    emit('scrollbarDragMove', e);
6934  }
6935  function onDragEnd(e) {
6936    const params = swiper.params.scrollbar;
6937    const {
6938      scrollbar,
6939      wrapperEl
6940    } = swiper;
6941    const {
6942      el
6943    } = scrollbar;
6944    if (!isTouched) return;
6945    isTouched = false;
6946    if (swiper.params.cssMode) {
6947      swiper.wrapperEl.style['scroll-snap-type'] = '';
6948      wrapperEl.style.transitionDuration = '';
6949    }
6950    if (params.hide) {
6951      clearTimeout(dragTimeout);
6952      dragTimeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
6953        el.style.opacity = 0;
6954        el.style.transitionDuration = '400ms';
6955      }, 1000);
6956    }
6957    emit('scrollbarDragEnd', e);
6958    if (params.snapOnRelease) {
6959      swiper.slideToClosest();
6960    }
6961  }
6962  function events(method) {
6963    const {
6964      scrollbar,
6965      params
6966    } = swiper;
6967    const el = scrollbar.el;
6968    if (!el) return;
6969    const target = el;
6970    const activeListener = params.passiveListeners ? {
6971      passive: false,
6972      capture: false
6973    } : false;
6974    const passiveListener = params.passiveListeners ? {
6975      passive: true,
6976      capture: false
6977    } : false;
6978    if (!target) return;
6979    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
6980    target[eventMethod]('pointerdown', onDragStart, activeListener);
6981    document[eventMethod]('pointermove', onDragMove, activeListener);
6982    document[eventMethod]('pointerup', onDragEnd, passiveListener);
6983  }
6984  function enableDraggable() {
6985    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6986    events('on');
6987  }
6988  function disableDraggable() {
6989    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6990    events('off');
6991  }
6992  function init() {
6993    const {
6994      scrollbar,
6995      el: swiperEl
6996    } = swiper;
6997    swiper.params.scrollbar = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_2__.c)(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {
6998      el: 'swiper-scrollbar'
6999    });
7000    const params = swiper.params.scrollbar;
7001    if (!params.el) return;
7002    let el;
7003    if (typeof params.el === 'string' && swiper.isElement) {
7004      el = swiper.el.querySelector(params.el);
7005    }
7006    if (!el && typeof params.el === 'string') {
7007      el = document.querySelectorAll(params.el);
7008      if (!el.length) return;
7009    } else if (!el) {
7010      el = params.el;
7011    }
7012    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {
7013      el = swiperEl.querySelector(params.el);
7014    }
7015    if (el.length > 0) el = el[0];
7016    el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
7017    let dragEl;
7018    if (el) {
7019      dragEl = el.querySelector((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_3__.c)(swiper.params.scrollbar.dragClass));
7020      if (!dragEl) {
7021        dragEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.scrollbar.dragClass);
7022        el.append(dragEl);
7023      }
7024    }
7025    Object.assign(scrollbar, {
7026      el,
7027      dragEl
7028    });
7029    if (params.draggable) {
7030      enableDraggable();
7031    }
7032    if (el) {
7033      el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.lockClass));
7034    }
7035  }
7036  function destroy() {
7037    const params = swiper.params.scrollbar;
7038    const el = swiper.scrollbar.el;
7039    if (el) {
7040      el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));
7041    }
7042    disableDraggable();
7043  }
7044  on('changeDirection', () => {
7045    if (!swiper.scrollbar || !swiper.scrollbar.el) return;
7046    const params = swiper.params.scrollbar;
7047    let {
7048      el
7049    } = swiper.scrollbar;
7050    el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el);
7051    el.forEach(subEl => {
7052      subEl.classList.remove(params.horizontalClass, params.verticalClass);
7053      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
7054    });
7055  });
7056  on('init', () => {
7057    if (swiper.params.scrollbar.enabled === false) {
7058      // eslint-disable-next-line
7059      disable();
7060    } else {
7061      init();
7062      updateSize();
7063      setTranslate();
7064    }
7065  });
7066  on('update resize observerUpdate lock unlock changeDirection', () => {
7067    updateSize();
7068  });
7069  on('setTranslate', () => {
7070    setTranslate();
7071  });
7072  on('setTransition', (_s, duration) => {
7073    setTransition(duration);
7074  });
7075  on('enable disable', () => {
7076    const {
7077      el
7078    } = swiper.scrollbar;
7079    if (el) {
7080      el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.lockClass));
7081    }
7082  });
7083  on('destroy', () => {
7084    destroy();
7085  });
7086  const enable = () => {
7087    swiper.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass));
7088    if (swiper.scrollbar.el) {
7089      swiper.scrollbar.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass));
7090    }
7091    init();
7092    updateSize();
7093    setTranslate();
7094  };
7095  const disable = () => {
7096    swiper.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass));
7097    if (swiper.scrollbar.el) {
7098      swiper.scrollbar.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass));
7099    }
7100    destroy();
7101  };
7102  Object.assign(swiper.scrollbar, {
7103    enable,
7104    disable,
7105    updateSize,
7106    setTranslate,
7107    init,
7108    destroy
7109  });
7110}
7111
7112
7113
7114
7115/***/ }),
7116
vendor: 8,116 bytes, lines 7117-7326
7117/***/ "./node_modules/swiper/modules/thumbs.mjs":
7118/*!************************************************!*\
7119  !*** ./node_modules/swiper/modules/thumbs.mjs ***!
7120  \************************************************/
7121/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7122
7123"use strict";
7124__webpack_require__.r(__webpack_exports__);
7125/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7126/* harmony export */   "default": function() { return /* binding */ Thumb; }
7127/* harmony export */ });
7128/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
7129/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
7130
7131
7132
7133function Thumb(_ref) {
7134  let {
7135    swiper,
7136    extendParams,
7137    on
7138  } = _ref;
7139  extendParams({
7140    thumbs: {
7141      swiper: null,
7142      multipleActiveThumbs: true,
7143      autoScrollOffset: 0,
7144      slideThumbActiveClass: 'swiper-slide-thumb-active',
7145      thumbsContainerClass: 'swiper-thumbs'
7146    }
7147  });
7148  let initialized = false;
7149  let swiperCreated = false;
7150  swiper.thumbs = {
7151    swiper: null
7152  };
7153  function onThumbClick() {
7154    const thumbsSwiper = swiper.thumbs.swiper;
7155    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
7156    const clickedIndex = thumbsSwiper.clickedIndex;
7157    const clickedSlide = thumbsSwiper.clickedSlide;
7158    if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;
7159    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
7160    let slideToIndex;
7161    if (thumbsSwiper.params.loop) {
7162      slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);
7163    } else {
7164      slideToIndex = clickedIndex;
7165    }
7166    if (swiper.params.loop) {
7167      swiper.slideToLoop(slideToIndex);
7168    } else {
7169      swiper.slideTo(slideToIndex);
7170    }
7171  }
7172  function init() {
7173    const {
7174      thumbs: thumbsParams
7175    } = swiper.params;
7176    if (initialized) return false;
7177    initialized = true;
7178    const SwiperClass = swiper.constructor;
7179    if (thumbsParams.swiper instanceof SwiperClass) {
7180      swiper.thumbs.swiper = thumbsParams.swiper;
7181      Object.assign(swiper.thumbs.swiper.originalParams, {
7182        watchSlidesProgress: true,
7183        slideToClickedSlide: false
7184      });
7185      Object.assign(swiper.thumbs.swiper.params, {
7186        watchSlidesProgress: true,
7187        slideToClickedSlide: false
7188      });
7189      swiper.thumbs.swiper.update();
7190    } else if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.l)(thumbsParams.swiper)) {
7191      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);
7192      Object.assign(thumbsSwiperParams, {
7193        watchSlidesProgress: true,
7194        slideToClickedSlide: false
7195      });
7196      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);
7197      swiperCreated = true;
7198    }
7199    swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);
7200    swiper.thumbs.swiper.on('tap', onThumbClick);
7201    return true;
7202  }
7203  function update(initial) {
7204    const thumbsSwiper = swiper.thumbs.swiper;
7205    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
7206    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
7207
7208    // Activate thumbs
7209    let thumbsToActivate = 1;
7210    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
7211    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
7212      thumbsToActivate = swiper.params.slidesPerView;
7213    }
7214    if (!swiper.params.thumbs.multipleActiveThumbs) {
7215      thumbsToActivate = 1;
7216    }
7217    thumbsToActivate = Math.floor(thumbsToActivate);
7218    thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));
7219    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
7220      for (let i = 0; i < thumbsToActivate; i += 1) {
7221        (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => {
7222          slideEl.classList.add(thumbActiveClass);
7223        });
7224      }
7225    } else {
7226      for (let i = 0; i < thumbsToActivate; i += 1) {
7227        if (thumbsSwiper.slides[swiper.realIndex + i]) {
7228          thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);
7229        }
7230      }
7231    }
7232    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
7233    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
7234    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
7235      const currentThumbsIndex = thumbsSwiper.activeIndex;
7236      let newThumbsIndex;
7237      let direction;
7238      if (thumbsSwiper.params.loop) {
7239        const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];
7240        newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);
7241        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
7242      } else {
7243        newThumbsIndex = swiper.realIndex;
7244        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
7245      }
7246      if (useOffset) {
7247        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
7248      }
7249      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
7250        if (thumbsSwiper.params.centeredSlides) {
7251          if (newThumbsIndex > currentThumbsIndex) {
7252            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
7253          } else {
7254            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
7255          }
7256        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;
7257        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
7258      }
7259    }
7260  }
7261  on('beforeInit', () => {
7262    const {
7263      thumbs
7264    } = swiper.params;
7265    if (!thumbs || !thumbs.swiper) return;
7266    if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {
7267      const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
7268      const getThumbsElementAndInit = () => {
7269        const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;
7270        if (thumbsElement && thumbsElement.swiper) {
7271          thumbs.swiper = thumbsElement.swiper;
7272          init();
7273          update(true);
7274        } else if (thumbsElement) {
7275          const eventName = `${swiper.params.eventsPrefix}init`;
7276          const onThumbsSwiper = e => {
7277            thumbs.swiper = e.detail[0];
7278            thumbsElement.removeEventListener(eventName, onThumbsSwiper);
7279            init();
7280            update(true);
7281            thumbs.swiper.update();
7282            swiper.update();
7283          };
7284          thumbsElement.addEventListener(eventName, onThumbsSwiper);
7285        }
7286        return thumbsElement;
7287      };
7288      const watchForThumbsToAppear = () => {
7289        if (swiper.destroyed) return;
7290        const thumbsElement = getThumbsElementAndInit();
7291        if (!thumbsElement) {
7292          requestAnimationFrame(watchForThumbsToAppear);
7293        }
7294      };
7295      requestAnimationFrame(watchForThumbsToAppear);
7296    } else {
7297      init();
7298      update(true);
7299    }
7300  });
7301  on('slideChange update resize observerUpdate', () => {
7302    update();
7303  });
7304  on('setTransition', (_s, duration) => {
7305    const thumbsSwiper = swiper.thumbs.swiper;
7306    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
7307    thumbsSwiper.setTransition(duration);
7308  });
7309  on('beforeDestroy', () => {
7310    const thumbsSwiper = swiper.thumbs.swiper;
7311    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
7312    if (swiperCreated) {
7313      thumbsSwiper.destroy();
7314    }
7315  });
7316  Object.assign(swiper.thumbs, {
7317    init,
7318    update
7319  });
7320}
7321
7322
7323
7324
7325/***/ }),
7326
vendor: 12,423 bytes, lines 7327-7692
7327/***/ "./node_modules/swiper/modules/virtual.mjs":
7328/*!*************************************************!*\
7329  !*** ./node_modules/swiper/modules/virtual.mjs ***!
7330  \*************************************************/
7331/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7332
7333"use strict";
7334__webpack_require__.r(__webpack_exports__);
7335/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7336/* harmony export */   "default": function() { return /* binding */ Virtual; }
7337/* harmony export */ });
7338/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
7339/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
7340
7341
7342
7343function Virtual(_ref) {
7344  let {
7345    swiper,
7346    extendParams,
7347    on,
7348    emit
7349  } = _ref;
7350  extendParams({
7351    virtual: {
7352      enabled: false,
7353      slides: [],
7354      cache: true,
7355      renderSlide: null,
7356      renderExternal: null,
7357      renderExternalUpdate: true,
7358      addSlidesBefore: 0,
7359      addSlidesAfter: 0
7360    }
7361  });
7362  let cssModeTimeout;
7363  const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
7364  swiper.virtual = {
7365    cache: {},
7366    from: undefined,
7367    to: undefined,
7368    slides: [],
7369    offset: 0,
7370    slidesGrid: []
7371  };
7372  const tempDOM = document.createElement('div');
7373  function renderSlide(slide, index) {
7374    const params = swiper.params.virtual;
7375    if (params.cache && swiper.virtual.cache[index]) {
7376      return swiper.virtual.cache[index];
7377    }
7378    // eslint-disable-next-line
7379    let slideEl;
7380    if (params.renderSlide) {
7381      slideEl = params.renderSlide.call(swiper, slide, index);
7382      if (typeof slideEl === 'string') {
7383        tempDOM.innerHTML = slideEl;
7384        slideEl = tempDOM.children[0];
7385      }
7386    } else if (swiper.isElement) {
7387      slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('swiper-slide');
7388    } else {
7389      slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.slideClass);
7390    }
7391    slideEl.setAttribute('data-swiper-slide-index', index);
7392    if (!params.renderSlide) {
7393      slideEl.innerHTML = slide;
7394    }
7395    if (params.cache) {
7396      swiper.virtual.cache[index] = slideEl;
7397    }
7398    return slideEl;
7399  }
7400  function update(force, beforeInit) {
7401    const {
7402      slidesPerView,
7403      slidesPerGroup,
7404      centeredSlides,
7405      loop: isLoop,
7406      initialSlide
7407    } = swiper.params;
7408    if (beforeInit && !isLoop && initialSlide > 0) {
7409      return;
7410    }
7411    const {
7412      addSlidesBefore,
7413      addSlidesAfter
7414    } = swiper.params.virtual;
7415    const {
7416      from: previousFrom,
7417      to: previousTo,
7418      slides,
7419      slidesGrid: previousSlidesGrid,
7420      offset: previousOffset
7421    } = swiper.virtual;
7422    if (!swiper.params.cssMode) {
7423      swiper.updateActiveIndex();
7424    }
7425    const activeIndex = swiper.activeIndex || 0;
7426    let offsetProp;
7427    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
7428    let slidesAfter;
7429    let slidesBefore;
7430    if (centeredSlides) {
7431      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
7432      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
7433    } else {
7434      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
7435      slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;
7436    }
7437    let from = activeIndex - slidesBefore;
7438    let to = activeIndex + slidesAfter;
7439    if (!isLoop) {
7440      from = Math.max(from, 0);
7441      to = Math.min(to, slides.length - 1);
7442    }
7443    let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
7444    if (isLoop && activeIndex >= slidesBefore) {
7445      from -= slidesBefore;
7446      if (!centeredSlides) offset += swiper.slidesGrid[0];
7447    } else if (isLoop && activeIndex < slidesBefore) {
7448      from = -slidesBefore;
7449      if (centeredSlides) offset += swiper.slidesGrid[0];
7450    }
7451    Object.assign(swiper.virtual, {
7452      from,
7453      to,
7454      offset,
7455      slidesGrid: swiper.slidesGrid,
7456      slidesBefore,
7457      slidesAfter
7458    });
7459    function onRendered() {
7460      swiper.updateSlides();
7461      swiper.updateProgress();
7462      swiper.updateSlidesClasses();
7463      emit('virtualUpdate');
7464    }
7465    if (previousFrom === from && previousTo === to && !force) {
7466      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
7467        swiper.slides.forEach(slideEl => {
7468          slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;
7469        });
7470      }
7471      swiper.updateProgress();
7472      emit('virtualUpdate');
7473      return;
7474    }
7475    if (swiper.params.virtual.renderExternal) {
7476      swiper.params.virtual.renderExternal.call(swiper, {
7477        offset,
7478        from,
7479        to,
7480        slides: function getSlides() {
7481          const slidesToRender = [];
7482          for (let i = from; i <= to; i += 1) {
7483            slidesToRender.push(slides[i]);
7484          }
7485          return slidesToRender;
7486        }()
7487      });
7488      if (swiper.params.virtual.renderExternalUpdate) {
7489        onRendered();
7490      } else {
7491        emit('virtualUpdate');
7492      }
7493      return;
7494    }
7495    const prependIndexes = [];
7496    const appendIndexes = [];
7497    const getSlideIndex = index => {
7498      let slideIndex = index;
7499      if (index < 0) {
7500        slideIndex = slides.length + index;
7501      } else if (slideIndex >= slides.length) {
7502        // eslint-disable-next-line
7503        slideIndex = slideIndex - slides.length;
7504      }
7505      return slideIndex;
7506    };
7507    if (force) {
7508      swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {
7509        slideEl.remove();
7510      });
7511    } else {
7512      for (let i = previousFrom; i <= previousTo; i += 1) {
7513        if (i < from || i > to) {
7514          const slideIndex = getSlideIndex(i);
7515          swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => {
7516            slideEl.remove();
7517          });
7518        }
7519      }
7520    }
7521    const loopFrom = isLoop ? -slides.length : 0;
7522    const loopTo = isLoop ? slides.length * 2 : slides.length;
7523    for (let i = loopFrom; i < loopTo; i += 1) {
7524      if (i >= from && i <= to) {
7525        const slideIndex = getSlideIndex(i);
7526        if (typeof previousTo === 'undefined' || force) {
7527          appendIndexes.push(slideIndex);
7528        } else {
7529          if (i > previousTo) appendIndexes.push(slideIndex);
7530          if (i < previousFrom) prependIndexes.push(slideIndex);
7531        }
7532      }
7533    }
7534    appendIndexes.forEach(index => {
7535      swiper.slidesEl.append(renderSlide(slides[index], index));
7536    });
7537    if (isLoop) {
7538      for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {
7539        const index = prependIndexes[i];
7540        swiper.slidesEl.prepend(renderSlide(slides[index], index));
7541      }
7542    } else {
7543      prependIndexes.sort((a, b) => b - a);
7544      prependIndexes.forEach(index => {
7545        swiper.slidesEl.prepend(renderSlide(slides[index], index));
7546      });
7547    }
7548    (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {
7549      slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;
7550    });
7551    onRendered();
7552  }
7553  function appendSlide(slides) {
7554    if (typeof slides === 'object' && 'length' in slides) {
7555      for (let i = 0; i < slides.length; i += 1) {
7556        if (slides[i]) swiper.virtual.slides.push(slides[i]);
7557      }
7558    } else {
7559      swiper.virtual.slides.push(slides);
7560    }
7561    update(true);
7562  }
7563  function prependSlide(slides) {
7564    const activeIndex = swiper.activeIndex;
7565    let newActiveIndex = activeIndex + 1;
7566    let numberOfNewSlides = 1;
7567    if (Array.isArray(slides)) {
7568      for (let i = 0; i < slides.length; i += 1) {
7569        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
7570      }
7571      newActiveIndex = activeIndex + slides.length;
7572      numberOfNewSlides = slides.length;
7573    } else {
7574      swiper.virtual.slides.unshift(slides);
7575    }
7576    if (swiper.params.virtual.cache) {
7577      const cache = swiper.virtual.cache;
7578      const newCache = {};
7579      Object.keys(cache).forEach(cachedIndex => {
7580        const cachedEl = cache[cachedIndex];
7581        const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');
7582        if (cachedElIndex) {
7583          cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);
7584        }
7585        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;
7586      });
7587      swiper.virtual.cache = newCache;
7588    }
7589    update(true);
7590    swiper.slideTo(newActiveIndex, 0);
7591  }
7592  function removeSlide(slidesIndexes) {
7593    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
7594    let activeIndex = swiper.activeIndex;
7595    if (Array.isArray(slidesIndexes)) {
7596      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
7597        if (swiper.params.virtual.cache) {
7598          delete swiper.virtual.cache[slidesIndexes[i]];
7599          // shift cache indexes
7600          Object.keys(swiper.virtual.cache).forEach(key => {
7601            if (key > slidesIndexes) {
7602              swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];
7603              swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);
7604              delete swiper.virtual.cache[key];
7605            }
7606          });
7607        }
7608        swiper.virtual.slides.splice(slidesIndexes[i], 1);
7609        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
7610        activeIndex = Math.max(activeIndex, 0);
7611      }
7612    } else {
7613      if (swiper.params.virtual.cache) {
7614        delete swiper.virtual.cache[slidesIndexes];
7615        // shift cache indexes
7616        Object.keys(swiper.virtual.cache).forEach(key => {
7617          if (key > slidesIndexes) {
7618            swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];
7619            swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);
7620            delete swiper.virtual.cache[key];
7621          }
7622        });
7623      }
7624      swiper.virtual.slides.splice(slidesIndexes, 1);
7625      if (slidesIndexes < activeIndex) activeIndex -= 1;
7626      activeIndex = Math.max(activeIndex, 0);
7627    }
7628    update(true);
7629    swiper.slideTo(activeIndex, 0);
7630  }
7631  function removeAllSlides() {
7632    swiper.virtual.slides = [];
7633    if (swiper.params.virtual.cache) {
7634      swiper.virtual.cache = {};
7635    }
7636    update(true);
7637    swiper.slideTo(0, 0);
7638  }
7639  on('beforeInit', () => {
7640    if (!swiper.params.virtual.enabled) return;
7641    let domSlidesAssigned;
7642    if (typeof swiper.passedParams.virtual.slides === 'undefined') {
7643      const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));
7644      if (slides && slides.length) {
7645        swiper.virtual.slides = [...slides];
7646        domSlidesAssigned = true;
7647        slides.forEach((slideEl, slideIndex) => {
7648          slideEl.setAttribute('data-swiper-slide-index', slideIndex);
7649          swiper.virtual.cache[slideIndex] = slideEl;
7650          slideEl.remove();
7651        });
7652      }
7653    }
7654    if (!domSlidesAssigned) {
7655      swiper.virtual.slides = swiper.params.virtual.slides;
7656    }
7657    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
7658    swiper.params.watchSlidesProgress = true;
7659    swiper.originalParams.watchSlidesProgress = true;
7660    update(false, true);
7661  });
7662  on('setTranslate', () => {
7663    if (!swiper.params.virtual.enabled) return;
7664    if (swiper.params.cssMode && !swiper._immediateVirtual) {
7665      clearTimeout(cssModeTimeout);
7666      cssModeTimeout = setTimeout(() => {
7667        update();
7668      }, 100);
7669    } else {
7670      update();
7671    }
7672  });
7673  on('init update resize', () => {
7674    if (!swiper.params.virtual.enabled) return;
7675    if (swiper.params.cssMode) {
7676      (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);
7677    }
7678  });
7679  Object.assign(swiper.virtual, {
7680    appendSlide,
7681    prependSlide,
7682    removeSlide,
7683    removeAllSlides,
7684    update
7685  });
7686}
7687
7688
7689
7690
7691/***/ }),
7692
vendor: 23,585 bytes, lines 7693-8335
7693/***/ "./node_modules/swiper/modules/zoom.mjs":
7694/*!**********************************************!*\
7695  !*** ./node_modules/swiper/modules/zoom.mjs ***!
7696  \**********************************************/
7697/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
7698
7699"use strict";
7700__webpack_require__.r(__webpack_exports__);
7701/* harmony export */ __webpack_require__.d(__webpack_exports__, {
7702/* harmony export */   "default": function() { return /* binding */ Zoom; }
7703/* harmony export */ });
7704/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
7705/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
7706
7707
7708
7709function Zoom(_ref) {
7710  let {
7711    swiper,
7712    extendParams,
7713    on,
7714    emit
7715  } = _ref;
7716  const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
7717  extendParams({
7718    zoom: {
7719      enabled: false,
7720      limitToOriginalSize: false,
7721      maxRatio: 3,
7722      minRatio: 1,
7723      toggle: true,
7724      containerClass: 'swiper-zoom-container',
7725      zoomedSlideClass: 'swiper-slide-zoomed'
7726    }
7727  });
7728  swiper.zoom = {
7729    enabled: false
7730  };
7731  let currentScale = 1;
7732  let isScaling = false;
7733  let fakeGestureTouched;
7734  let fakeGestureMoved;
7735  const evCache = [];
7736  const gesture = {
7737    originX: 0,
7738    originY: 0,
7739    slideEl: undefined,
7740    slideWidth: undefined,
7741    slideHeight: undefined,
7742    imageEl: undefined,
7743    imageWrapEl: undefined,
7744    maxRatio: 3
7745  };
7746  const image = {
7747    isTouched: undefined,
7748    isMoved: undefined,
7749    currentX: undefined,
7750    currentY: undefined,
7751    minX: undefined,
7752    minY: undefined,
7753    maxX: undefined,
7754    maxY: undefined,
7755    width: undefined,
7756    height: undefined,
7757    startX: undefined,
7758    startY: undefined,
7759    touchesStart: {},
7760    touchesCurrent: {}
7761  };
7762  const velocity = {
7763    x: undefined,
7764    y: undefined,
7765    prevPositionX: undefined,
7766    prevPositionY: undefined,
7767    prevTime: undefined
7768  };
7769  let scale = 1;
7770  Object.defineProperty(swiper.zoom, 'scale', {
7771    get() {
7772      return scale;
7773    },
7774    set(value) {
7775      if (scale !== value) {
7776        const imageEl = gesture.imageEl;
7777        const slideEl = gesture.slideEl;
7778        emit('zoomChange', value, imageEl, slideEl);
7779      }
7780      scale = value;
7781    }
7782  });
7783  function getDistanceBetweenTouches() {
7784    if (evCache.length < 2) return 1;
7785    const x1 = evCache[0].pageX;
7786    const y1 = evCache[0].pageY;
7787    const x2 = evCache[1].pageX;
7788    const y2 = evCache[1].pageY;
7789    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
7790    return distance;
7791  }
7792  function getMaxRatio() {
7793    const params = swiper.params.zoom;
7794    const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;
7795    if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {
7796      const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;
7797      return Math.min(imageMaxRatio, maxRatio);
7798    }
7799    return maxRatio;
7800  }
7801  function getScaleOrigin() {
7802    if (evCache.length < 2) return {
7803      x: null,
7804      y: null
7805    };
7806    const box = gesture.imageEl.getBoundingClientRect();
7807    return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];
7808  }
7809  function getSlideSelector() {
7810    return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;
7811  }
7812  function eventWithinSlide(e) {
7813    const slideSelector = getSlideSelector();
7814    if (e.target.matches(slideSelector)) return true;
7815    if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;
7816    return false;
7817  }
7818  function eventWithinZoomContainer(e) {
7819    const selector = `.${swiper.params.zoom.containerClass}`;
7820    if (e.target.matches(selector)) return true;
7821    if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;
7822    return false;
7823  }
7824
7825  // Events
7826  function onGestureStart(e) {
7827    if (e.pointerType === 'mouse') {
7828      evCache.splice(0, evCache.length);
7829    }
7830    if (!eventWithinSlide(e)) return;
7831    const params = swiper.params.zoom;
7832    fakeGestureTouched = false;
7833    fakeGestureMoved = false;
7834    evCache.push(e);
7835    if (evCache.length < 2) {
7836      return;
7837    }
7838    fakeGestureTouched = true;
7839    gesture.scaleStart = getDistanceBetweenTouches();
7840    if (!gesture.slideEl) {
7841      gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
7842      if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];
7843      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
7844      if (imageEl) {
7845        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
7846      }
7847      gesture.imageEl = imageEl;
7848      if (imageEl) {
7849        gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0];
7850      } else {
7851        gesture.imageWrapEl = undefined;
7852      }
7853      if (!gesture.imageWrapEl) {
7854        gesture.imageEl = undefined;
7855        return;
7856      }
7857      gesture.maxRatio = getMaxRatio();
7858    }
7859    if (gesture.imageEl) {
7860      const [originX, originY] = getScaleOrigin();
7861      gesture.originX = originX;
7862      gesture.originY = originY;
7863      gesture.imageEl.style.transitionDuration = '0ms';
7864    }
7865    isScaling = true;
7866  }
7867  function onGestureChange(e) {
7868    if (!eventWithinSlide(e)) return;
7869    const params = swiper.params.zoom;
7870    const zoom = swiper.zoom;
7871    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);
7872    if (pointerIndex >= 0) evCache[pointerIndex] = e;
7873    if (evCache.length < 2) {
7874      return;
7875    }
7876    fakeGestureMoved = true;
7877    gesture.scaleMove = getDistanceBetweenTouches();
7878    if (!gesture.imageEl) {
7879      return;
7880    }
7881    zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;
7882    if (zoom.scale > gesture.maxRatio) {
7883      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;
7884    }
7885    if (zoom.scale < params.minRatio) {
7886      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;
7887    }
7888    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
7889  }
7890  function onGestureEnd(e) {
7891    if (!eventWithinSlide(e)) return;
7892    if (e.pointerType === 'mouse' && e.type === 'pointerout') return;
7893    const params = swiper.params.zoom;
7894    const zoom = swiper.zoom;
7895    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);
7896    if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);
7897    if (!fakeGestureTouched || !fakeGestureMoved) {
7898      return;
7899    }
7900    fakeGestureTouched = false;
7901    fakeGestureMoved = false;
7902    if (!gesture.imageEl) return;
7903    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
7904    gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;
7905    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
7906    currentScale = zoom.scale;
7907    isScaling = false;
7908    if (zoom.scale > 1 && gesture.slideEl) {
7909      gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);
7910    } else if (zoom.scale <= 1 && gesture.slideEl) {
7911      gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);
7912    }
7913    if (zoom.scale === 1) {
7914      gesture.originX = 0;
7915      gesture.originY = 0;
7916      gesture.slideEl = undefined;
7917    }
7918  }
7919  let allowTouchMoveTimeout;
7920  function allowTouchMove() {
7921    swiper.touchEventsData.preventTouchMoveFromPointerMove = false;
7922  }
7923  function preventTouchMove() {
7924    clearTimeout(allowTouchMoveTimeout);
7925    swiper.touchEventsData.preventTouchMoveFromPointerMove = true;
7926    allowTouchMoveTimeout = setTimeout(() => {
7927      if (swiper.destroyed) return;
7928      allowTouchMove();
7929    });
7930  }
7931  function onTouchStart(e) {
7932    const device = swiper.device;
7933    if (!gesture.imageEl) return;
7934    if (image.isTouched) return;
7935    if (device.android && e.cancelable) e.preventDefault();
7936    image.isTouched = true;
7937    const event = evCache.length > 0 ? evCache[0] : e;
7938    image.touchesStart.x = event.pageX;
7939    image.touchesStart.y = event.pageY;
7940  }
7941  function onTouchMove(e) {
7942    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {
7943      return;
7944    }
7945    const zoom = swiper.zoom;
7946    if (!gesture.imageEl) {
7947      return;
7948    }
7949    if (!image.isTouched || !gesture.slideEl) {
7950      return;
7951    }
7952    if (!image.isMoved) {
7953      image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
7954      image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
7955      image.startX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(gesture.imageWrapEl, 'x') || 0;
7956      image.startY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(gesture.imageWrapEl, 'y') || 0;
7957      gesture.slideWidth = gesture.slideEl.offsetWidth;
7958      gesture.slideHeight = gesture.slideEl.offsetHeight;
7959      gesture.imageWrapEl.style.transitionDuration = '0ms';
7960    }
7961    // Define if we need image drag
7962    const scaledWidth = image.width * zoom.scale;
7963    const scaledHeight = image.height * zoom.scale;
7964    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
7965    image.maxX = -image.minX;
7966    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
7967    image.maxY = -image.minY;
7968    image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;
7969    image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;
7970    const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));
7971    if (touchesDiff > 5) {
7972      swiper.allowClick = false;
7973    }
7974    if (!image.isMoved && !isScaling) {
7975      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {
7976        image.isTouched = false;
7977        allowTouchMove();
7978        return;
7979      }
7980      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {
7981        image.isTouched = false;
7982        allowTouchMove();
7983        return;
7984      }
7985    }
7986    if (e.cancelable) {
7987      e.preventDefault();
7988    }
7989    e.stopPropagation();
7990    preventTouchMove();
7991    image.isMoved = true;
7992    const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);
7993    const {
7994      originX,
7995      originY
7996    } = gesture;
7997    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);
7998    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);
7999    if (image.currentX < image.minX) {
8000      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;
8001    }
8002    if (image.currentX > image.maxX) {
8003      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;
8004    }
8005    if (image.currentY < image.minY) {
8006      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;
8007    }
8008    if (image.currentY > image.maxY) {
8009      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;
8010    }
8011
8012    // Velocity
8013    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
8014    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
8015    if (!velocity.prevTime) velocity.prevTime = Date.now();
8016    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
8017    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
8018    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
8019    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
8020    velocity.prevPositionX = image.touchesCurrent.x;
8021    velocity.prevPositionY = image.touchesCurrent.y;
8022    velocity.prevTime = Date.now();
8023    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;
8024  }
8025  function onTouchEnd() {
8026    const zoom = swiper.zoom;
8027    if (!gesture.imageEl) return;
8028    if (!image.isTouched || !image.isMoved) {
8029      image.isTouched = false;
8030      image.isMoved = false;
8031      return;
8032    }
8033    image.isTouched = false;
8034    image.isMoved = false;
8035    let momentumDurationX = 300;
8036    let momentumDurationY = 300;
8037    const momentumDistanceX = velocity.x * momentumDurationX;
8038    const newPositionX = image.currentX + momentumDistanceX;
8039    const momentumDistanceY = velocity.y * momentumDurationY;
8040    const newPositionY = image.currentY + momentumDistanceY;
8041
8042    // Fix duration
8043    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
8044    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
8045    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
8046    image.currentX = newPositionX;
8047    image.currentY = newPositionY;
8048    // Define if we need image drag
8049    const scaledWidth = image.width * zoom.scale;
8050    const scaledHeight = image.height * zoom.scale;
8051    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
8052    image.maxX = -image.minX;
8053    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
8054    image.maxY = -image.minY;
8055    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
8056    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
8057    gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;
8058    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;
8059  }
8060  function onTransitionEnd() {
8061    const zoom = swiper.zoom;
8062    if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {
8063      if (gesture.imageEl) {
8064        gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';
8065      }
8066      if (gesture.imageWrapEl) {
8067        gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';
8068      }
8069      gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);
8070      zoom.scale = 1;
8071      currentScale = 1;
8072      gesture.slideEl = undefined;
8073      gesture.imageEl = undefined;
8074      gesture.imageWrapEl = undefined;
8075      gesture.originX = 0;
8076      gesture.originY = 0;
8077    }
8078  }
8079  function zoomIn(e) {
8080    const zoom = swiper.zoom;
8081    const params = swiper.params.zoom;
8082    if (!gesture.slideEl) {
8083      if (e && e.target) {
8084        gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
8085      }
8086      if (!gesture.slideEl) {
8087        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
8088          gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];
8089        } else {
8090          gesture.slideEl = swiper.slides[swiper.activeIndex];
8091        }
8092      }
8093      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
8094      if (imageEl) {
8095        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
8096      }
8097      gesture.imageEl = imageEl;
8098      if (imageEl) {
8099        gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0];
8100      } else {
8101        gesture.imageWrapEl = undefined;
8102      }
8103    }
8104    if (!gesture.imageEl || !gesture.imageWrapEl) return;
8105    if (swiper.params.cssMode) {
8106      swiper.wrapperEl.style.overflow = 'hidden';
8107      swiper.wrapperEl.style.touchAction = 'none';
8108    }
8109    gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);
8110    let touchX;
8111    let touchY;
8112    let offsetX;
8113    let offsetY;
8114    let diffX;
8115    let diffY;
8116    let translateX;
8117    let translateY;
8118    let imageWidth;
8119    let imageHeight;
8120    let scaledWidth;
8121    let scaledHeight;
8122    let translateMinX;
8123    let translateMinY;
8124    let translateMaxX;
8125    let translateMaxY;
8126    let slideWidth;
8127    let slideHeight;
8128    if (typeof image.touchesStart.x === 'undefined' && e) {
8129      touchX = e.pageX;
8130      touchY = e.pageY;
8131    } else {
8132      touchX = image.touchesStart.x;
8133      touchY = image.touchesStart.y;
8134    }
8135    const forceZoomRatio = typeof e === 'number' ? e : null;
8136    if (currentScale === 1 && forceZoomRatio) {
8137      touchX = undefined;
8138      touchY = undefined;
8139      image.touchesStart.x = undefined;
8140      image.touchesStart.y = undefined;
8141    }
8142    const maxRatio = getMaxRatio();
8143    zoom.scale = forceZoomRatio || maxRatio;
8144    currentScale = forceZoomRatio || maxRatio;
8145    if (e && !(currentScale === 1 && forceZoomRatio)) {
8146      slideWidth = gesture.slideEl.offsetWidth;
8147      slideHeight = gesture.slideEl.offsetHeight;
8148      offsetX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.slideEl).left + window.scrollX;
8149      offsetY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.slideEl).top + window.scrollY;
8150      diffX = offsetX + slideWidth / 2 - touchX;
8151      diffY = offsetY + slideHeight / 2 - touchY;
8152      imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
8153      imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
8154      scaledWidth = imageWidth * zoom.scale;
8155      scaledHeight = imageHeight * zoom.scale;
8156      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
8157      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
8158      translateMaxX = -translateMinX;
8159      translateMaxY = -translateMinY;
8160      translateX = diffX * zoom.scale;
8161      translateY = diffY * zoom.scale;
8162      if (translateX < translateMinX) {
8163        translateX = translateMinX;
8164      }
8165      if (translateX > translateMaxX) {
8166        translateX = translateMaxX;
8167      }
8168      if (translateY < translateMinY) {
8169        translateY = translateMinY;
8170      }
8171      if (translateY > translateMaxY) {
8172        translateY = translateMaxY;
8173      }
8174    } else {
8175      translateX = 0;
8176      translateY = 0;
8177    }
8178    if (forceZoomRatio && zoom.scale === 1) {
8179      gesture.originX = 0;
8180      gesture.originY = 0;
8181    }
8182    gesture.imageWrapEl.style.transitionDuration = '300ms';
8183    gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;
8184    gesture.imageEl.style.transitionDuration = '300ms';
8185    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
8186  }
8187  function zoomOut() {
8188    const zoom = swiper.zoom;
8189    const params = swiper.params.zoom;
8190    if (!gesture.slideEl) {
8191      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
8192        gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];
8193      } else {
8194        gesture.slideEl = swiper.slides[swiper.activeIndex];
8195      }
8196      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
8197      if (imageEl) {
8198        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
8199      }
8200      gesture.imageEl = imageEl;
8201      if (imageEl) {
8202        gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0];
8203      } else {
8204        gesture.imageWrapEl = undefined;
8205      }
8206    }
8207    if (!gesture.imageEl || !gesture.imageWrapEl) return;
8208    if (swiper.params.cssMode) {
8209      swiper.wrapperEl.style.overflow = '';
8210      swiper.wrapperEl.style.touchAction = '';
8211    }
8212    zoom.scale = 1;
8213    currentScale = 1;
8214    image.touchesStart.x = undefined;
8215    image.touchesStart.y = undefined;
8216    gesture.imageWrapEl.style.transitionDuration = '300ms';
8217    gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';
8218    gesture.imageEl.style.transitionDuration = '300ms';
8219    gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';
8220    gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);
8221    gesture.slideEl = undefined;
8222    gesture.originX = 0;
8223    gesture.originY = 0;
8224  }
8225
8226  // Toggle Zoom
8227  function zoomToggle(e) {
8228    const zoom = swiper.zoom;
8229    if (zoom.scale && zoom.scale !== 1) {
8230      // Zoom Out
8231      zoomOut();
8232    } else {
8233      // Zoom In
8234      zoomIn(e);
8235    }
8236  }
8237  function getListeners() {
8238    const passiveListener = swiper.params.passiveListeners ? {
8239      passive: true,
8240      capture: false
8241    } : false;
8242    const activeListenerWithCapture = swiper.params.passiveListeners ? {
8243      passive: false,
8244      capture: true
8245    } : true;
8246    return {
8247      passiveListener,
8248      activeListenerWithCapture
8249    };
8250  }
8251
8252  // Attach/Detach Events
8253  function enable() {
8254    const zoom = swiper.zoom;
8255    if (zoom.enabled) return;
8256    zoom.enabled = true;
8257    const {
8258      passiveListener,
8259      activeListenerWithCapture
8260    } = getListeners();
8261
8262    // Scale image
8263    swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);
8264    swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);
8265    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {
8266      swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);
8267    });
8268
8269    // Move image
8270    swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);
8271  }
8272  function disable() {
8273    const zoom = swiper.zoom;
8274    if (!zoom.enabled) return;
8275    zoom.enabled = false;
8276    const {
8277      passiveListener,
8278      activeListenerWithCapture
8279    } = getListeners();
8280
8281    // Scale image
8282    swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);
8283    swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);
8284    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {
8285      swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);
8286    });
8287
8288    // Move image
8289    swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);
8290  }
8291  on('init', () => {
8292    if (swiper.params.zoom.enabled) {
8293      enable();
8294    }
8295  });
8296  on('destroy', () => {
8297    disable();
8298  });
8299  on('touchStart', (_s, e) => {
8300    if (!swiper.zoom.enabled) return;
8301    onTouchStart(e);
8302  });
8303  on('touchEnd', (_s, e) => {
8304    if (!swiper.zoom.enabled) return;
8305    onTouchEnd();
8306  });
8307  on('doubleTap', (_s, e) => {
8308    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
8309      zoomToggle(e);
8310    }
8311  });
8312  on('transitionEnd', () => {
8313    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
8314      onTransitionEnd();
8315    }
8316  });
8317  on('slideChange', () => {
8318    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
8319      onTransitionEnd();
8320    }
8321  });
8322  Object.assign(swiper.zoom, {
8323    enable,
8324    disable,
8325    in: zoomIn,
8326    out: zoomOut,
8327    toggle: zoomToggle
8328  });
8329}
8330
8331
8332
8333
8334/***/ }),
8335
vendor: 800 bytes, lines 8336-8359
8336/***/ "./node_modules/swiper/shared/classes-to-selector.mjs":
8337/*!************************************************************!*\
8338  !*** ./node_modules/swiper/shared/classes-to-selector.mjs ***!
8339  \************************************************************/
8340/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8341
8342"use strict";
8343__webpack_require__.r(__webpack_exports__);
8344/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8345/* harmony export */   c: function() { return /* binding */ classesToSelector; }
8346/* harmony export */ });
8347function classesToSelector(classes) {
8348  if (classes === void 0) {
8349    classes = '';
8350  }
8351  return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line
8352  .replace(/ /g, '.')}`;
8353}
8354
8355
8356
8357
8358/***/ }),
8359
vendor: 1,439 bytes, lines 8360-8396
8360/***/ "./node_modules/swiper/shared/create-element-if-not-defined.mjs":
8361/*!**********************************************************************!*\
8362  !*** ./node_modules/swiper/shared/create-element-if-not-defined.mjs ***!
8363  \**********************************************************************/
8364/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8365
8366"use strict";
8367__webpack_require__.r(__webpack_exports__);
8368/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8369/* harmony export */   c: function() { return /* binding */ createElementIfNotDefined; }
8370/* harmony export */ });
8371/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
8372
8373
8374function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
8375  if (swiper.params.createElements) {
8376    Object.keys(checkProps).forEach(key => {
8377      if (!params[key] && params.auto === true) {
8378        let element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.el, `.${checkProps[key]}`)[0];
8379        if (!element) {
8380          element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', checkProps[key]);
8381          element.className = checkProps[key];
8382          swiper.el.append(element);
8383        }
8384        params[key] = element;
8385        originalParams[key] = element;
8386      }
8387    });
8388  }
8389  return params;
8390}
8391
8392
8393
8394
8395/***/ }),
8396
vendor: 1,235 bytes, lines 8397-8426
8397/***/ "./node_modules/swiper/shared/create-shadow.mjs":
8398/*!******************************************************!*\
8399  !*** ./node_modules/swiper/shared/create-shadow.mjs ***!
8400  \******************************************************/
8401/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8402
8403"use strict";
8404__webpack_require__.r(__webpack_exports__);
8405/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8406/* harmony export */   c: function() { return /* binding */ createShadow; }
8407/* harmony export */ });
8408/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
8409
8410
8411function createShadow(suffix, slideEl, side) {
8412  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;
8413  const shadowContainer = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl);
8414  let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);
8415  if (!shadowEl) {
8416    shadowEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', shadowClass.split(' '));
8417    shadowContainer.append(shadowEl);
8418  }
8419  return shadowEl;
8420}
8421
8422
8423
8424
8425/***/ }),
8426
vendor: 2,358 bytes, lines 8427-8499
8427/***/ "./node_modules/swiper/shared/effect-init.mjs":
8428/*!****************************************************!*\
8429  !*** ./node_modules/swiper/shared/effect-init.mjs ***!
8430  \****************************************************/
8431/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8432
8433"use strict";
8434__webpack_require__.r(__webpack_exports__);
8435/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8436/* harmony export */   e: function() { return /* binding */ effectInit; }
8437/* harmony export */ });
8438function effectInit(params) {
8439  const {
8440    effect,
8441    swiper,
8442    on,
8443    setTranslate,
8444    setTransition,
8445    overwriteParams,
8446    perspective,
8447    recreateShadows,
8448    getEffectParams
8449  } = params;
8450  on('beforeInit', () => {
8451    if (swiper.params.effect !== effect) return;
8452    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);
8453    if (perspective && perspective()) {
8454      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
8455    }
8456    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};
8457    Object.assign(swiper.params, overwriteParamsResult);
8458    Object.assign(swiper.originalParams, overwriteParamsResult);
8459  });
8460  on('setTranslate', () => {
8461    if (swiper.params.effect !== effect) return;
8462    setTranslate();
8463  });
8464  on('setTransition', (_s, duration) => {
8465    if (swiper.params.effect !== effect) return;
8466    setTransition(duration);
8467  });
8468  on('transitionEnd', () => {
8469    if (swiper.params.effect !== effect) return;
8470    if (recreateShadows) {
8471      if (!getEffectParams || !getEffectParams().slideShadows) return;
8472      // remove shadows
8473      swiper.slides.forEach(slideEl => {
8474        slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());
8475      });
8476      // create new one
8477      recreateShadows();
8478    }
8479  });
8480  let requireUpdateOnVirtual;
8481  on('virtualUpdate', () => {
8482    if (swiper.params.effect !== effect) return;
8483    if (!swiper.slides.length) {
8484      requireUpdateOnVirtual = true;
8485    }
8486    requestAnimationFrame(() => {
8487      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {
8488        setTranslate();
8489        requireUpdateOnVirtual = false;
8490      }
8491    });
8492  });
8493}
8494
8495
8496
8497
8498/***/ }),
8499
vendor: 1,028 bytes, lines 8500-8527
8500/***/ "./node_modules/swiper/shared/effect-target.mjs":
8501/*!******************************************************!*\
8502  !*** ./node_modules/swiper/shared/effect-target.mjs ***!
8503  \******************************************************/
8504/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8505
8506"use strict";
8507__webpack_require__.r(__webpack_exports__);
8508/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8509/* harmony export */   e: function() { return /* binding */ effectTarget; }
8510/* harmony export */ });
8511/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
8512
8513
8514function effectTarget(effectParams, slideEl) {
8515  const transformEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl);
8516  if (transformEl !== slideEl) {
8517    transformEl.style.backfaceVisibility = 'hidden';
8518    transformEl.style['-webkit-backface-visibility'] = 'hidden';
8519  }
8520  return transformEl;
8521}
8522
8523
8524
8525
8526/***/ }),
8527
vendor: 2,136 bytes, lines 8528-8591
8528/***/ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs":
8529/*!**********************************************************************!*\
8530  !*** ./node_modules/swiper/shared/effect-virtual-transition-end.mjs ***!
8531  \**********************************************************************/
8532/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8533
8534"use strict";
8535__webpack_require__.r(__webpack_exports__);
8536/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8537/* harmony export */   e: function() { return /* binding */ effectVirtualTransitionEnd; }
8538/* harmony export */ });
8539/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
8540
8541
8542function effectVirtualTransitionEnd(_ref) {
8543  let {
8544    swiper,
8545    duration,
8546    transformElements,
8547    allSlides
8548  } = _ref;
8549  const {
8550    activeIndex
8551  } = swiper;
8552  const getSlide = el => {
8553    if (!el.parentElement) {
8554      // assume shadow root
8555      const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];
8556      return slide;
8557    }
8558    return el.parentElement;
8559  };
8560  if (swiper.params.virtualTranslate && duration !== 0) {
8561    let eventTriggered = false;
8562    let transitionEndTarget;
8563    if (allSlides) {
8564      transitionEndTarget = transformElements;
8565    } else {
8566      transitionEndTarget = transformElements.filter(transformEl => {
8567        const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;
8568        return swiper.getSlideIndex(el) === activeIndex;
8569      });
8570    }
8571    transitionEndTarget.forEach(el => {
8572      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(el, () => {
8573        if (eventTriggered) return;
8574        if (!swiper || swiper.destroyed) return;
8575        eventTriggered = true;
8576        swiper.animating = false;
8577        const evt = new window.CustomEvent('transitionend', {
8578          bubbles: true,
8579          cancelable: true
8580        });
8581        swiper.wrapperEl.dispatchEvent(evt);
8582      });
8583    });
8584  }
8585}
8586
8587
8588
8589
8590/***/ }),
8591
vendor: 3,369 bytes, lines 8592-8752
8592/***/ "./node_modules/swiper/shared/ssr-window.esm.mjs":
8593/*!*******************************************************!*\
8594  !*** ./node_modules/swiper/shared/ssr-window.esm.mjs ***!
8595  \*******************************************************/
8596/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8597
8598"use strict";
8599__webpack_require__.r(__webpack_exports__);
8600/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8601/* harmony export */   a: function() { return /* binding */ getWindow; },
8602/* harmony export */   g: function() { return /* binding */ getDocument; }
8603/* harmony export */ });
8604/**
8605 * SSR Window 4.0.2
8606 * Better handling for window object in SSR environment
8607 * https://github.com/nolimits4web/ssr-window
8608 *
8609 * Copyright 2021, Vladimir Kharlampidi
8610 *
8611 * Licensed under MIT
8612 *
8613 * Released on: December 13, 2021
8614 */
8615/* eslint-disable no-param-reassign */
8616function isObject(obj) {
8617  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;
8618}
8619function extend(target, src) {
8620  if (target === void 0) {
8621    target = {};
8622  }
8623  if (src === void 0) {
8624    src = {};
8625  }
8626  Object.keys(src).forEach(key => {
8627    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
8628      extend(target[key], src[key]);
8629    }
8630  });
8631}
8632const ssrDocument = {
8633  body: {},
8634  addEventListener() {},
8635  removeEventListener() {},
8636  activeElement: {
8637    blur() {},
8638    nodeName: ''
8639  },
8640  querySelector() {
8641    return null;
8642  },
8643  querySelectorAll() {
8644    return [];
8645  },
8646  getElementById() {
8647    return null;
8648  },
8649  createEvent() {
8650    return {
8651      initEvent() {}
8652    };
8653  },
8654  createElement() {
8655    return {
8656      children: [],
8657      childNodes: [],
8658      style: {},
8659      setAttribute() {},
8660      getElementsByTagName() {
8661        return [];
8662      }
8663    };
8664  },
8665  createElementNS() {
8666    return {};
8667  },
8668  importNode() {
8669    return null;
8670  },
8671  location: {
8672    hash: '',
8673    host: '',
8674    hostname: '',
8675    href: '',
8676    origin: '',
8677    pathname: '',
8678    protocol: '',
8679    search: ''
8680  }
8681};
8682function getDocument() {
8683  const doc = typeof document !== 'undefined' ? document : {};
8684  extend(doc, ssrDocument);
8685  return doc;
8686}
8687const ssrWindow = {
8688  document: ssrDocument,
8689  navigator: {
8690    userAgent: ''
8691  },
8692  location: {
8693    hash: '',
8694    host: '',
8695    hostname: '',
8696    href: '',
8697    origin: '',
8698    pathname: '',
8699    protocol: '',
8700    search: ''
8701  },
8702  history: {
8703    replaceState() {},
8704    pushState() {},
8705    go() {},
8706    back() {}
8707  },
8708  CustomEvent: function CustomEvent() {
8709    return this;
8710  },
8711  addEventListener() {},
8712  removeEventListener() {},
8713  getComputedStyle() {
8714    return {
8715      getPropertyValue() {
8716        return '';
8717      }
8718    };
8719  },
8720  Image() {},
8721  Date() {},
8722  screen: {},
8723  setTimeout() {},
8724  clearTimeout() {},
8725  matchMedia() {
8726    return {};
8727  },
8728  requestAnimationFrame(callback) {
8729    if (typeof setTimeout === 'undefined') {
8730      callback();
8731      return null;
8732    }
8733    return setTimeout(callback, 0);
8734  },
8735  cancelAnimationFrame(id) {
8736    if (typeof setTimeout === 'undefined') {
8737      return;
8738    }
8739    clearTimeout(id);
8740  }
8741};
8742function getWindow() {
8743  const win = typeof window !== 'undefined' ? window : {};
8744  extend(win, ssrWindow);
8745  return win;
8746}
8747
8748
8749
8750
8751/***/ }),
8752
vendor: 132,818 bytes, lines 8753-12682
8753/***/ "./node_modules/swiper/shared/swiper-core.mjs":
8754/*!****************************************************!*\
8755  !*** ./node_modules/swiper/shared/swiper-core.mjs ***!
8756  \****************************************************/
8757/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
8758
8759"use strict";
8760__webpack_require__.r(__webpack_exports__);
8761/* harmony export */ __webpack_require__.d(__webpack_exports__, {
8762/* harmony export */   S: function() { return /* binding */ Swiper; },
8763/* harmony export */   d: function() { return /* binding */ defaults; }
8764/* harmony export */ });
8765/* harmony import */ var _ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
8766/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs");
8767
8768
8769
8770let support;
8771function calcSupport() {
8772  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
8773  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
8774  return {
8775    smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,
8776    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)
8777  };
8778}
8779function getSupport() {
8780  if (!support) {
8781    support = calcSupport();
8782  }
8783  return support;
8784}
8785
8786let deviceCached;
8787function calcDevice(_temp) {
8788  let {
8789    userAgent
8790  } = _temp === void 0 ? {} : _temp;
8791  const support = getSupport();
8792  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
8793  const platform = window.navigator.platform;
8794  const ua = userAgent || window.navigator.userAgent;
8795  const device = {
8796    ios: false,
8797    android: false
8798  };
8799  const screenWidth = window.screen.width;
8800  const screenHeight = window.screen.height;
8801  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
8802  let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
8803  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
8804  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
8805  const windows = platform === 'Win32';
8806  let macos = platform === 'MacIntel';
8807
8808  // iPadOs 13 fix
8809  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
8810  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {
8811    ipad = ua.match(/(Version)\/([\d.]+)/);
8812    if (!ipad) ipad = [0, 1, '13_0_0'];
8813    macos = false;
8814  }
8815
8816  // Android
8817  if (android && !windows) {
8818    device.os = 'android';
8819    device.android = true;
8820  }
8821  if (ipad || iphone || ipod) {
8822    device.os = 'ios';
8823    device.ios = true;
8824  }
8825
8826  // Export object
8827  return device;
8828}
8829function getDevice(overrides) {
8830  if (overrides === void 0) {
8831    overrides = {};
8832  }
8833  if (!deviceCached) {
8834    deviceCached = calcDevice(overrides);
8835  }
8836  return deviceCached;
8837}
8838
8839let browser;
8840function calcBrowser() {
8841  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
8842  const device = getDevice();
8843  let needPerspectiveFix = false;
8844  function isSafari() {
8845    const ua = window.navigator.userAgent.toLowerCase();
8846    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
8847  }
8848  if (isSafari()) {
8849    const ua = String(window.navigator.userAgent);
8850    if (ua.includes('Version/')) {
8851      const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));
8852      needPerspectiveFix = major < 16 || major === 16 && minor < 2;
8853    }
8854  }
8855  const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);
8856  const isSafariBrowser = isSafari();
8857  const need3dFix = isSafariBrowser || isWebView && device.ios;
8858  return {
8859    isSafari: needPerspectiveFix || isSafariBrowser,
8860    needPerspectiveFix,
8861    need3dFix,
8862    isWebView
8863  };
8864}
8865function getBrowser() {
8866  if (!browser) {
8867    browser = calcBrowser();
8868  }
8869  return browser;
8870}
8871
8872function Resize(_ref) {
8873  let {
8874    swiper,
8875    on,
8876    emit
8877  } = _ref;
8878  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
8879  let observer = null;
8880  let animationFrame = null;
8881  const resizeHandler = () => {
8882    if (!swiper || swiper.destroyed || !swiper.initialized) return;
8883    emit('beforeResize');
8884    emit('resize');
8885  };
8886  const createObserver = () => {
8887    if (!swiper || swiper.destroyed || !swiper.initialized) return;
8888    observer = new ResizeObserver(entries => {
8889      animationFrame = window.requestAnimationFrame(() => {
8890        const {
8891          width,
8892          height
8893        } = swiper;
8894        let newWidth = width;
8895        let newHeight = height;
8896        entries.forEach(_ref2 => {
8897          let {
8898            contentBoxSize,
8899            contentRect,
8900            target
8901          } = _ref2;
8902          if (target && target !== swiper.el) return;
8903          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
8904          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
8905        });
8906        if (newWidth !== width || newHeight !== height) {
8907          resizeHandler();
8908        }
8909      });
8910    });
8911    observer.observe(swiper.el);
8912  };
8913  const removeObserver = () => {
8914    if (animationFrame) {
8915      window.cancelAnimationFrame(animationFrame);
8916    }
8917    if (observer && observer.unobserve && swiper.el) {
8918      observer.unobserve(swiper.el);
8919      observer = null;
8920    }
8921  };
8922  const orientationChangeHandler = () => {
8923    if (!swiper || swiper.destroyed || !swiper.initialized) return;
8924    emit('orientationchange');
8925  };
8926  on('init', () => {
8927    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {
8928      createObserver();
8929      return;
8930    }
8931    window.addEventListener('resize', resizeHandler);
8932    window.addEventListener('orientationchange', orientationChangeHandler);
8933  });
8934  on('destroy', () => {
8935    removeObserver();
8936    window.removeEventListener('resize', resizeHandler);
8937    window.removeEventListener('orientationchange', orientationChangeHandler);
8938  });
8939}
8940
8941function Observer(_ref) {
8942  let {
8943    swiper,
8944    extendParams,
8945    on,
8946    emit
8947  } = _ref;
8948  const observers = [];
8949  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
8950  const attach = function (target, options) {
8951    if (options === void 0) {
8952      options = {};
8953    }
8954    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
8955    const observer = new ObserverFunc(mutations => {
8956      // The observerUpdate event should only be triggered
8957      // once despite the number of mutations.  Additional
8958      // triggers are redundant and are very costly
8959      if (swiper.__preventObserver__) return;
8960      if (mutations.length === 1) {
8961        emit('observerUpdate', mutations[0]);
8962        return;
8963      }
8964      const observerUpdate = function observerUpdate() {
8965        emit('observerUpdate', mutations[0]);
8966      };
8967      if (window.requestAnimationFrame) {
8968        window.requestAnimationFrame(observerUpdate);
8969      } else {
8970        window.setTimeout(observerUpdate, 0);
8971      }
8972    });
8973    observer.observe(target, {
8974      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
8975      childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,
8976      characterData: typeof options.characterData === 'undefined' ? true : options.characterData
8977    });
8978    observers.push(observer);
8979  };
8980  const init = () => {
8981    if (!swiper.params.observer) return;
8982    if (swiper.params.observeParents) {
8983      const containerParents = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.hostEl);
8984      for (let i = 0; i < containerParents.length; i += 1) {
8985        attach(containerParents[i]);
8986      }
8987    }
8988    // Observe container
8989    attach(swiper.hostEl, {
8990      childList: swiper.params.observeSlideChildren
8991    });
8992
8993    // Observe wrapper
8994    attach(swiper.wrapperEl, {
8995      attributes: false
8996    });
8997  };
8998  const destroy = () => {
8999    observers.forEach(observer => {
9000      observer.disconnect();
9001    });
9002    observers.splice(0, observers.length);
9003  };
9004  extendParams({
9005    observer: false,
9006    observeParents: false,
9007    observeSlideChildren: false
9008  });
9009  on('init', init);
9010  on('destroy', destroy);
9011}
9012
9013/* eslint-disable no-underscore-dangle */
9014
9015var eventsEmitter = {
9016  on(events, handler, priority) {
9017    const self = this;
9018    if (!self.eventsListeners || self.destroyed) return self;
9019    if (typeof handler !== 'function') return self;
9020    const method = priority ? 'unshift' : 'push';
9021    events.split(' ').forEach(event => {
9022      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
9023      self.eventsListeners[event][method](handler);
9024    });
9025    return self;
9026  },
9027  once(events, handler, priority) {
9028    const self = this;
9029    if (!self.eventsListeners || self.destroyed) return self;
9030    if (typeof handler !== 'function') return self;
9031    function onceHandler() {
9032      self.off(events, onceHandler);
9033      if (onceHandler.__emitterProxy) {
9034        delete onceHandler.__emitterProxy;
9035      }
9036      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
9037        args[_key] = arguments[_key];
9038      }
9039      handler.apply(self, args);
9040    }
9041    onceHandler.__emitterProxy = handler;
9042    return self.on(events, onceHandler, priority);
9043  },
9044  onAny(handler, priority) {
9045    const self = this;
9046    if (!self.eventsListeners || self.destroyed) return self;
9047    if (typeof handler !== 'function') return self;
9048    const method = priority ? 'unshift' : 'push';
9049    if (self.eventsAnyListeners.indexOf(handler) < 0) {
9050      self.eventsAnyListeners[method](handler);
9051    }
9052    return self;
9053  },
9054  offAny(handler) {
9055    const self = this;
9056    if (!self.eventsListeners || self.destroyed) return self;
9057    if (!self.eventsAnyListeners) return self;
9058    const index = self.eventsAnyListeners.indexOf(handler);
9059    if (index >= 0) {
9060      self.eventsAnyListeners.splice(index, 1);
9061    }
9062    return self;
9063  },
9064  off(events, handler) {
9065    const self = this;
9066    if (!self.eventsListeners || self.destroyed) return self;
9067    if (!self.eventsListeners) return self;
9068    events.split(' ').forEach(event => {
9069      if (typeof handler === 'undefined') {
9070        self.eventsListeners[event] = [];
9071      } else if (self.eventsListeners[event]) {
9072        self.eventsListeners[event].forEach((eventHandler, index) => {
9073          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
9074            self.eventsListeners[event].splice(index, 1);
9075          }
9076        });
9077      }
9078    });
9079    return self;
9080  },
9081  emit() {
9082    const self = this;
9083    if (!self.eventsListeners || self.destroyed) return self;
9084    if (!self.eventsListeners) return self;
9085    let events;
9086    let data;
9087    let context;
9088    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
9089      args[_key2] = arguments[_key2];
9090    }
9091    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
9092      events = args[0];
9093      data = args.slice(1, args.length);
9094      context = self;
9095    } else {
9096      events = args[0].events;
9097      data = args[0].data;
9098      context = args[0].context || self;
9099    }
9100    data.unshift(context);
9101    const eventsArray = Array.isArray(events) ? events : events.split(' ');
9102    eventsArray.forEach(event => {
9103      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
9104        self.eventsAnyListeners.forEach(eventHandler => {
9105          eventHandler.apply(context, [event, ...data]);
9106        });
9107      }
9108      if (self.eventsListeners && self.eventsListeners[event]) {
9109        self.eventsListeners[event].forEach(eventHandler => {
9110          eventHandler.apply(context, data);
9111        });
9112      }
9113    });
9114    return self;
9115  }
9116};
9117
9118function updateSize() {
9119  const swiper = this;
9120  let width;
9121  let height;
9122  const el = swiper.el;
9123  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
9124    width = swiper.params.width;
9125  } else {
9126    width = el.clientWidth;
9127  }
9128  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {
9129    height = swiper.params.height;
9130  } else {
9131    height = el.clientHeight;
9132  }
9133  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
9134    return;
9135  }
9136
9137  // Subtract paddings
9138  width = width - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-left') || 0, 10) - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-right') || 0, 10);
9139  height = height - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-top') || 0, 10) - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-bottom') || 0, 10);
9140  if (Number.isNaN(width)) width = 0;
9141  if (Number.isNaN(height)) height = 0;
9142  Object.assign(swiper, {
9143    width,
9144    height,
9145    size: swiper.isHorizontal() ? width : height
9146  });
9147}
9148
9149function updateSlides() {
9150  const swiper = this;
9151  function getDirectionPropertyValue(node, label) {
9152    return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);
9153  }
9154  const params = swiper.params;
9155  const {
9156    wrapperEl,
9157    slidesEl,
9158    size: swiperSize,
9159    rtlTranslate: rtl,
9160    wrongRTL
9161  } = swiper;
9162  const isVirtual = swiper.virtual && params.virtual.enabled;
9163  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
9164  const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);
9165  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
9166  let snapGrid = [];
9167  const slidesGrid = [];
9168  const slidesSizesGrid = [];
9169  let offsetBefore = params.slidesOffsetBefore;
9170  if (typeof offsetBefore === 'function') {
9171    offsetBefore = params.slidesOffsetBefore.call(swiper);
9172  }
9173  let offsetAfter = params.slidesOffsetAfter;
9174  if (typeof offsetAfter === 'function') {
9175    offsetAfter = params.slidesOffsetAfter.call(swiper);
9176  }
9177  const previousSnapGridLength = swiper.snapGrid.length;
9178  const previousSlidesGridLength = swiper.slidesGrid.length;
9179  let spaceBetween = params.spaceBetween;
9180  let slidePosition = -offsetBefore;
9181  let prevSlideSize = 0;
9182  let index = 0;
9183  if (typeof swiperSize === 'undefined') {
9184    return;
9185  }
9186  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
9187    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
9188  } else if (typeof spaceBetween === 'string') {
9189    spaceBetween = parseFloat(spaceBetween);
9190  }
9191  swiper.virtualSize = -spaceBetween;
9192
9193  // reset margins
9194  slides.forEach(slideEl => {
9195    if (rtl) {
9196      slideEl.style.marginLeft = '';
9197    } else {
9198      slideEl.style.marginRight = '';
9199    }
9200    slideEl.style.marginBottom = '';
9201    slideEl.style.marginTop = '';
9202  });
9203
9204  // reset cssMode offsets
9205  if (params.centeredSlides && params.cssMode) {
9206    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-before', '');
9207    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-after', '');
9208  }
9209  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
9210  if (gridEnabled) {
9211    swiper.grid.initSlides(slides);
9212  } else if (swiper.grid) {
9213    swiper.grid.unsetSlides();
9214  }
9215
9216  // Calc slides
9217  let slideSize;
9218  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {
9219    return typeof params.breakpoints[key].slidesPerView !== 'undefined';
9220  }).length > 0;
9221  for (let i = 0; i < slidesLength; i += 1) {
9222    slideSize = 0;
9223    let slide;
9224    if (slides[i]) slide = slides[i];
9225    if (gridEnabled) {
9226      swiper.grid.updateSlide(i, slide, slides);
9227    }
9228    if (slides[i] && (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(slide, 'display') === 'none') continue; // eslint-disable-line
9229
9230    if (params.slidesPerView === 'auto') {
9231      if (shouldResetSlideSize) {
9232        slides[i].style[swiper.getDirectionLabel('width')] = ``;
9233      }
9234      const slideStyles = getComputedStyle(slide);
9235      const currentTransform = slide.style.transform;
9236      const currentWebKitTransform = slide.style.webkitTransform;
9237      if (currentTransform) {
9238        slide.style.transform = 'none';
9239      }
9240      if (currentWebKitTransform) {
9241        slide.style.webkitTransform = 'none';
9242      }
9243      if (params.roundLengths) {
9244        slideSize = swiper.isHorizontal() ? (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(slide, 'width', true) : (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(slide, 'height', true);
9245      } else {
9246        // eslint-disable-next-line
9247        const width = getDirectionPropertyValue(slideStyles, 'width');
9248        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');
9249        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');
9250        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');
9251        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');
9252        const boxSizing = slideStyles.getPropertyValue('box-sizing');
9253        if (boxSizing && boxSizing === 'border-box') {
9254          slideSize = width + marginLeft + marginRight;
9255        } else {
9256          const {
9257            clientWidth,
9258            offsetWidth
9259          } = slide;
9260          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
9261        }
9262      }
9263      if (currentTransform) {
9264        slide.style.transform = currentTransform;
9265      }
9266      if (currentWebKitTransform) {
9267        slide.style.webkitTransform = currentWebKitTransform;
9268      }
9269      if (params.roundLengths) slideSize = Math.floor(slideSize);
9270    } else {
9271      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
9272      if (params.roundLengths) slideSize = Math.floor(slideSize);
9273      if (slides[i]) {
9274        slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;
9275      }
9276    }
9277    if (slides[i]) {
9278      slides[i].swiperSlideSize = slideSize;
9279    }
9280    slidesSizesGrid.push(slideSize);
9281    if (params.centeredSlides) {
9282      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
9283      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
9284      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
9285      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
9286      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
9287      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
9288      slidesGrid.push(slidePosition);
9289    } else {
9290      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
9291      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
9292      slidesGrid.push(slidePosition);
9293      slidePosition = slidePosition + slideSize + spaceBetween;
9294    }
9295    swiper.virtualSize += slideSize + spaceBetween;
9296    prevSlideSize = slideSize;
9297    index += 1;
9298  }
9299  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
9300  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
9301    wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;
9302  }
9303  if (params.setWrapperSize) {
9304    wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;
9305  }
9306  if (gridEnabled) {
9307    swiper.grid.updateWrapperSize(slideSize, snapGrid);
9308  }
9309
9310  // Remove last grid elements depending on width
9311  if (!params.centeredSlides) {
9312    const newSlidesGrid = [];
9313    for (let i = 0; i < snapGrid.length; i += 1) {
9314      let slidesGridItem = snapGrid[i];
9315      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
9316      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
9317        newSlidesGrid.push(slidesGridItem);
9318      }
9319    }
9320    snapGrid = newSlidesGrid;
9321    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
9322      snapGrid.push(swiper.virtualSize - swiperSize);
9323    }
9324  }
9325  if (isVirtual && params.loop) {
9326    const size = slidesSizesGrid[0] + spaceBetween;
9327    if (params.slidesPerGroup > 1) {
9328      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);
9329      const groupSize = size * params.slidesPerGroup;
9330      for (let i = 0; i < groups; i += 1) {
9331        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);
9332      }
9333    }
9334    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {
9335      if (params.slidesPerGroup === 1) {
9336        snapGrid.push(snapGrid[snapGrid.length - 1] + size);
9337      }
9338      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);
9339      swiper.virtualSize += size;
9340    }
9341  }
9342  if (snapGrid.length === 0) snapGrid = [0];
9343  if (spaceBetween !== 0) {
9344    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');
9345    slides.filter((_, slideIndex) => {
9346      if (!params.cssMode || params.loop) return true;
9347      if (slideIndex === slides.length - 1) {
9348        return false;
9349      }
9350      return true;
9351    }).forEach(slideEl => {
9352      slideEl.style[key] = `${spaceBetween}px`;
9353    });
9354  }
9355  if (params.centeredSlides && params.centeredSlidesBounds) {
9356    let allSlidesSize = 0;
9357    slidesSizesGrid.forEach(slideSizeValue => {
9358      allSlidesSize += slideSizeValue + (spaceBetween || 0);
9359    });
9360    allSlidesSize -= spaceBetween;
9361    const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;
9362    snapGrid = snapGrid.map(snap => {
9363      if (snap <= 0) return -offsetBefore;
9364      if (snap > maxSnap) return maxSnap + offsetAfter;
9365      return snap;
9366    });
9367  }
9368  if (params.centerInsufficientSlides) {
9369    let allSlidesSize = 0;
9370    slidesSizesGrid.forEach(slideSizeValue => {
9371      allSlidesSize += slideSizeValue + (spaceBetween || 0);
9372    });
9373    allSlidesSize -= spaceBetween;
9374    const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);
9375    if (allSlidesSize + offsetSize < swiperSize) {
9376      const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;
9377      snapGrid.forEach((snap, snapIndex) => {
9378        snapGrid[snapIndex] = snap - allSlidesOffset;
9379      });
9380      slidesGrid.forEach((snap, snapIndex) => {
9381        slidesGrid[snapIndex] = snap + allSlidesOffset;
9382      });
9383    }
9384  }
9385  Object.assign(swiper, {
9386    slides,
9387    snapGrid,
9388    slidesGrid,
9389    slidesSizesGrid
9390  });
9391  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {
9392    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);
9393    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);
9394    const addToSnapGrid = -swiper.snapGrid[0];
9395    const addToSlidesGrid = -swiper.slidesGrid[0];
9396    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);
9397    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);
9398  }
9399  if (slidesLength !== previousSlidesLength) {
9400    swiper.emit('slidesLengthChange');
9401  }
9402  if (snapGrid.length !== previousSnapGridLength) {
9403    if (swiper.params.watchOverflow) swiper.checkOverflow();
9404    swiper.emit('snapGridLengthChange');
9405  }
9406  if (slidesGrid.length !== previousSlidesGridLength) {
9407    swiper.emit('slidesGridLengthChange');
9408  }
9409  if (params.watchSlidesProgress) {
9410    swiper.updateSlidesOffset();
9411  }
9412  swiper.emit('slidesUpdated');
9413  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {
9414    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;
9415    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);
9416    if (slidesLength <= params.maxBackfaceHiddenSlides) {
9417      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);
9418    } else if (hasClassBackfaceClassAdded) {
9419      swiper.el.classList.remove(backFaceHiddenClass);
9420    }
9421  }
9422}
9423
9424function updateAutoHeight(speed) {
9425  const swiper = this;
9426  const activeSlides = [];
9427  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
9428  let newHeight = 0;
9429  let i;
9430  if (typeof speed === 'number') {
9431    swiper.setTransition(speed);
9432  } else if (speed === true) {
9433    swiper.setTransition(swiper.params.speed);
9434  }
9435  const getSlideByIndex = index => {
9436    if (isVirtual) {
9437      return swiper.slides[swiper.getSlideIndexByData(index)];
9438    }
9439    return swiper.slides[index];
9440  };
9441  // Find slides currently in view
9442  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
9443    if (swiper.params.centeredSlides) {
9444      (swiper.visibleSlides || []).forEach(slide => {
9445        activeSlides.push(slide);
9446      });
9447    } else {
9448      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
9449        const index = swiper.activeIndex + i;
9450        if (index > swiper.slides.length && !isVirtual) break;
9451        activeSlides.push(getSlideByIndex(index));
9452      }
9453    }
9454  } else {
9455    activeSlides.push(getSlideByIndex(swiper.activeIndex));
9456  }
9457
9458  // Find new height from highest slide in view
9459  for (i = 0; i < activeSlides.length; i += 1) {
9460    if (typeof activeSlides[i] !== 'undefined') {
9461      const height = activeSlides[i].offsetHeight;
9462      newHeight = height > newHeight ? height : newHeight;
9463    }
9464  }
9465
9466  // Update Height
9467  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;
9468}
9469
9470function updateSlidesOffset() {
9471  const swiper = this;
9472  const slides = swiper.slides;
9473  // eslint-disable-next-line
9474  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;
9475  for (let i = 0; i < slides.length; i += 1) {
9476    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();
9477  }
9478}
9479
9480const toggleSlideClasses$1 = (slideEl, condition, className) => {
9481  if (condition && !slideEl.classList.contains(className)) {
9482    slideEl.classList.add(className);
9483  } else if (!condition && slideEl.classList.contains(className)) {
9484    slideEl.classList.remove(className);
9485  }
9486};
9487function updateSlidesProgress(translate) {
9488  if (translate === void 0) {
9489    translate = this && this.translate || 0;
9490  }
9491  const swiper = this;
9492  const params = swiper.params;
9493  const {
9494    slides,
9495    rtlTranslate: rtl,
9496    snapGrid
9497  } = swiper;
9498  if (slides.length === 0) return;
9499  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
9500  let offsetCenter = -translate;
9501  if (rtl) offsetCenter = translate;
9502  swiper.visibleSlidesIndexes = [];
9503  swiper.visibleSlides = [];
9504  let spaceBetween = params.spaceBetween;
9505  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
9506    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;
9507  } else if (typeof spaceBetween === 'string') {
9508    spaceBetween = parseFloat(spaceBetween);
9509  }
9510  for (let i = 0; i < slides.length; i += 1) {
9511    const slide = slides[i];
9512    let slideOffset = slide.swiperSlideOffset;
9513    if (params.cssMode && params.centeredSlides) {
9514      slideOffset -= slides[0].swiperSlideOffset;
9515    }
9516    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);
9517    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);
9518    const slideBefore = -(offsetCenter - slideOffset);
9519    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
9520    const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];
9521    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
9522    if (isVisible) {
9523      swiper.visibleSlides.push(slide);
9524      swiper.visibleSlidesIndexes.push(i);
9525    }
9526    toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);
9527    toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);
9528    slide.progress = rtl ? -slideProgress : slideProgress;
9529    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
9530  }
9531}
9532
9533function updateProgress(translate) {
9534  const swiper = this;
9535  if (typeof translate === 'undefined') {
9536    const multiplier = swiper.rtlTranslate ? -1 : 1;
9537    // eslint-disable-next-line
9538    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
9539  }
9540  const params = swiper.params;
9541  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
9542  let {
9543    progress,
9544    isBeginning,
9545    isEnd,
9546    progressLoop
9547  } = swiper;
9548  const wasBeginning = isBeginning;
9549  const wasEnd = isEnd;
9550  if (translatesDiff === 0) {
9551    progress = 0;
9552    isBeginning = true;
9553    isEnd = true;
9554  } else {
9555    progress = (translate - swiper.minTranslate()) / translatesDiff;
9556    const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;
9557    const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;
9558    isBeginning = isBeginningRounded || progress <= 0;
9559    isEnd = isEndRounded || progress >= 1;
9560    if (isBeginningRounded) progress = 0;
9561    if (isEndRounded) progress = 1;
9562  }
9563  if (params.loop) {
9564    const firstSlideIndex = swiper.getSlideIndexByData(0);
9565    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);
9566    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];
9567    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];
9568    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];
9569    const translateAbs = Math.abs(translate);
9570    if (translateAbs >= firstSlideTranslate) {
9571      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;
9572    } else {
9573      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;
9574    }
9575    if (progressLoop > 1) progressLoop -= 1;
9576  }
9577  Object.assign(swiper, {
9578    progress,
9579    progressLoop,
9580    isBeginning,
9581    isEnd
9582  });
9583  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
9584  if (isBeginning && !wasBeginning) {
9585    swiper.emit('reachBeginning toEdge');
9586  }
9587  if (isEnd && !wasEnd) {
9588    swiper.emit('reachEnd toEdge');
9589  }
9590  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
9591    swiper.emit('fromEdge');
9592  }
9593  swiper.emit('progress', progress);
9594}
9595
9596const toggleSlideClasses = (slideEl, condition, className) => {
9597  if (condition && !slideEl.classList.contains(className)) {
9598    slideEl.classList.add(className);
9599  } else if (!condition && slideEl.classList.contains(className)) {
9600    slideEl.classList.remove(className);
9601  }
9602};
9603function updateSlidesClasses() {
9604  const swiper = this;
9605  const {
9606    slides,
9607    params,
9608    slidesEl,
9609    activeIndex
9610  } = swiper;
9611  const isVirtual = swiper.virtual && params.virtual.enabled;
9612  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
9613  const getFilteredSlide = selector => {
9614    return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];
9615  };
9616  let activeSlide;
9617  let prevSlide;
9618  let nextSlide;
9619  if (isVirtual) {
9620    if (params.loop) {
9621      let slideIndex = activeIndex - swiper.virtual.slidesBefore;
9622      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;
9623      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;
9624      activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`);
9625    } else {
9626      activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`);
9627    }
9628  } else {
9629    if (gridEnabled) {
9630      activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];
9631      nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];
9632      prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];
9633    } else {
9634      activeSlide = slides[activeIndex];
9635    }
9636  }
9637  if (activeSlide) {
9638    if (!gridEnabled) {
9639      // Next Slide
9640      nextSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(activeSlide, `.${params.slideClass}, swiper-slide`)[0];
9641      if (params.loop && !nextSlide) {
9642        nextSlide = slides[0];
9643      }
9644
9645      // Prev Slide
9646      prevSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.r)(activeSlide, `.${params.slideClass}, swiper-slide`)[0];
9647      if (params.loop && !prevSlide === 0) {
9648        prevSlide = slides[slides.length - 1];
9649      }
9650    }
9651  }
9652  slides.forEach(slideEl => {
9653    toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);
9654    toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);
9655    toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);
9656  });
9657  swiper.emitSlidesClasses();
9658}
9659
9660const processLazyPreloader = (swiper, imageEl) => {
9661  if (!swiper || swiper.destroyed || !swiper.params) return;
9662  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;
9663  const slideEl = imageEl.closest(slideSelector());
9664  if (slideEl) {
9665    let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);
9666    if (!lazyEl && swiper.isElement) {
9667      if (slideEl.shadowRoot) {
9668        lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);
9669      } else {
9670        // init later
9671        requestAnimationFrame(() => {
9672          if (slideEl.shadowRoot) {
9673            lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);
9674            if (lazyEl) lazyEl.remove();
9675          }
9676        });
9677      }
9678    }
9679    if (lazyEl) lazyEl.remove();
9680  }
9681};
9682const unlazy = (swiper, index) => {
9683  if (!swiper.slides[index]) return;
9684  const imageEl = swiper.slides[index].querySelector('[loading="lazy"]');
9685  if (imageEl) imageEl.removeAttribute('loading');
9686};
9687const preload = swiper => {
9688  if (!swiper || swiper.destroyed || !swiper.params) return;
9689  let amount = swiper.params.lazyPreloadPrevNext;
9690  const len = swiper.slides.length;
9691  if (!len || !amount || amount < 0) return;
9692  amount = Math.min(amount, len);
9693  const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);
9694  const activeIndex = swiper.activeIndex;
9695  if (swiper.params.grid && swiper.params.grid.rows > 1) {
9696    const activeColumn = activeIndex;
9697    const preloadColumns = [activeColumn - amount];
9698    preloadColumns.push(...Array.from({
9699      length: amount
9700    }).map((_, i) => {
9701      return activeColumn + slidesPerView + i;
9702    }));
9703    swiper.slides.forEach((slideEl, i) => {
9704      if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);
9705    });
9706    return;
9707  }
9708  const slideIndexLastInView = activeIndex + slidesPerView - 1;
9709  if (swiper.params.rewind || swiper.params.loop) {
9710    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {
9711      const realIndex = (i % len + len) % len;
9712      if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);
9713    }
9714  } else {
9715    for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {
9716      if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {
9717        unlazy(swiper, i);
9718      }
9719    }
9720  }
9721};
9722
9723function getActiveIndexByTranslate(swiper) {
9724  const {
9725    slidesGrid,
9726    params
9727  } = swiper;
9728  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
9729  let activeIndex;
9730  for (let i = 0; i < slidesGrid.length; i += 1) {
9731    if (typeof slidesGrid[i + 1] !== 'undefined') {
9732      if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
9733        activeIndex = i;
9734      } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
9735        activeIndex = i + 1;
9736      }
9737    } else if (translate >= slidesGrid[i]) {
9738      activeIndex = i;
9739    }
9740  }
9741  // Normalize slideIndex
9742  if (params.normalizeSlideIndex) {
9743    if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
9744  }
9745  return activeIndex;
9746}
9747function updateActiveIndex(newActiveIndex) {
9748  const swiper = this;
9749  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
9750  const {
9751    snapGrid,
9752    params,
9753    activeIndex: previousIndex,
9754    realIndex: previousRealIndex,
9755    snapIndex: previousSnapIndex
9756  } = swiper;
9757  let activeIndex = newActiveIndex;
9758  let snapIndex;
9759  const getVirtualRealIndex = aIndex => {
9760    let realIndex = aIndex - swiper.virtual.slidesBefore;
9761    if (realIndex < 0) {
9762      realIndex = swiper.virtual.slides.length + realIndex;
9763    }
9764    if (realIndex >= swiper.virtual.slides.length) {
9765      realIndex -= swiper.virtual.slides.length;
9766    }
9767    return realIndex;
9768  };
9769  if (typeof activeIndex === 'undefined') {
9770    activeIndex = getActiveIndexByTranslate(swiper);
9771  }
9772  if (snapGrid.indexOf(translate) >= 0) {
9773    snapIndex = snapGrid.indexOf(translate);
9774  } else {
9775    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
9776    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
9777  }
9778  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
9779  if (activeIndex === previousIndex && !swiper.params.loop) {
9780    if (snapIndex !== previousSnapIndex) {
9781      swiper.snapIndex = snapIndex;
9782      swiper.emit('snapIndexChange');
9783    }
9784    return;
9785  }
9786  if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
9787    swiper.realIndex = getVirtualRealIndex(activeIndex);
9788    return;
9789  }
9790  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
9791
9792  // Get real index
9793  let realIndex;
9794  if (swiper.virtual && params.virtual.enabled && params.loop) {
9795    realIndex = getVirtualRealIndex(activeIndex);
9796  } else if (gridEnabled) {
9797    const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];
9798    let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);
9799    if (Number.isNaN(activeSlideIndex)) {
9800      activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);
9801    }
9802    realIndex = Math.floor(activeSlideIndex / params.grid.rows);
9803  } else if (swiper.slides[activeIndex]) {
9804    const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');
9805    if (slideIndex) {
9806      realIndex = parseInt(slideIndex, 10);
9807    } else {
9808      realIndex = activeIndex;
9809    }
9810  } else {
9811    realIndex = activeIndex;
9812  }
9813  Object.assign(swiper, {
9814    previousSnapIndex,
9815    snapIndex,
9816    previousRealIndex,
9817    realIndex,
9818    previousIndex,
9819    activeIndex
9820  });
9821  if (swiper.initialized) {
9822    preload(swiper);
9823  }
9824  swiper.emit('activeIndexChange');
9825  swiper.emit('snapIndexChange');
9826  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
9827    if (previousRealIndex !== realIndex) {
9828      swiper.emit('realIndexChange');
9829    }
9830    swiper.emit('slideChange');
9831  }
9832}
9833
9834function updateClickedSlide(el, path) {
9835  const swiper = this;
9836  const params = swiper.params;
9837  let slide = el.closest(`.${params.slideClass}, swiper-slide`);
9838  if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {
9839    [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {
9840      if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {
9841        slide = pathEl;
9842      }
9843    });
9844  }
9845  let slideFound = false;
9846  let slideIndex;
9847  if (slide) {
9848    for (let i = 0; i < swiper.slides.length; i += 1) {
9849      if (swiper.slides[i] === slide) {
9850        slideFound = true;
9851        slideIndex = i;
9852        break;
9853      }
9854    }
9855  }
9856  if (slide && slideFound) {
9857    swiper.clickedSlide = slide;
9858    if (swiper.virtual && swiper.params.virtual.enabled) {
9859      swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);
9860    } else {
9861      swiper.clickedIndex = slideIndex;
9862    }
9863  } else {
9864    swiper.clickedSlide = undefined;
9865    swiper.clickedIndex = undefined;
9866    return;
9867  }
9868  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
9869    swiper.slideToClickedSlide();
9870  }
9871}
9872
9873var update = {
9874  updateSize,
9875  updateSlides,
9876  updateAutoHeight,
9877  updateSlidesOffset,
9878  updateSlidesProgress,
9879  updateProgress,
9880  updateSlidesClasses,
9881  updateActiveIndex,
9882  updateClickedSlide
9883};
9884
9885function getSwiperTranslate(axis) {
9886  if (axis === void 0) {
9887    axis = this.isHorizontal() ? 'x' : 'y';
9888  }
9889  const swiper = this;
9890  const {
9891    params,
9892    rtlTranslate: rtl,
9893    translate,
9894    wrapperEl
9895  } = swiper;
9896  if (params.virtualTranslate) {
9897    return rtl ? -translate : translate;
9898  }
9899  if (params.cssMode) {
9900    return translate;
9901  }
9902  let currentTranslate = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(wrapperEl, axis);
9903  currentTranslate += swiper.cssOverflowAdjustment();
9904  if (rtl) currentTranslate = -currentTranslate;
9905  return currentTranslate || 0;
9906}
9907
9908function setTranslate(translate, byController) {
9909  const swiper = this;
9910  const {
9911    rtlTranslate: rtl,
9912    params,
9913    wrapperEl,
9914    progress
9915  } = swiper;
9916  let x = 0;
9917  let y = 0;
9918  const z = 0;
9919  if (swiper.isHorizontal()) {
9920    x = rtl ? -translate : translate;
9921  } else {
9922    y = translate;
9923  }
9924  if (params.roundLengths) {
9925    x = Math.floor(x);
9926    y = Math.floor(y);
9927  }
9928  swiper.previousTranslate = swiper.translate;
9929  swiper.translate = swiper.isHorizontal() ? x : y;
9930  if (params.cssMode) {
9931    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
9932  } else if (!params.virtualTranslate) {
9933    if (swiper.isHorizontal()) {
9934      x -= swiper.cssOverflowAdjustment();
9935    } else {
9936      y -= swiper.cssOverflowAdjustment();
9937    }
9938    wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;
9939  }
9940
9941  // Check if we need to update progress
9942  let newProgress;
9943  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
9944  if (translatesDiff === 0) {
9945    newProgress = 0;
9946  } else {
9947    newProgress = (translate - swiper.minTranslate()) / translatesDiff;
9948  }
9949  if (newProgress !== progress) {
9950    swiper.updateProgress(translate);
9951  }
9952  swiper.emit('setTranslate', swiper.translate, byController);
9953}
9954
9955function minTranslate() {
9956  return -this.snapGrid[0];
9957}
9958
9959function maxTranslate() {
9960  return -this.snapGrid[this.snapGrid.length - 1];
9961}
9962
9963function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
9964  if (translate === void 0) {
9965    translate = 0;
9966  }
9967  if (speed === void 0) {
9968    speed = this.params.speed;
9969  }
9970  if (runCallbacks === void 0) {
9971    runCallbacks = true;
9972  }
9973  if (translateBounds === void 0) {
9974    translateBounds = true;
9975  }
9976  const swiper = this;
9977  const {
9978    params,
9979    wrapperEl
9980  } = swiper;
9981  if (swiper.animating && params.preventInteractionOnTransition) {
9982    return false;
9983  }
9984  const minTranslate = swiper.minTranslate();
9985  const maxTranslate = swiper.maxTranslate();
9986  let newTranslate;
9987  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;
9988
9989  // Update progress
9990  swiper.updateProgress(newTranslate);
9991  if (params.cssMode) {
9992    const isH = swiper.isHorizontal();
9993    if (speed === 0) {
9994      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
9995    } else {
9996      if (!swiper.support.smoothScroll) {
9997        (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)({
9998          swiper,
9999          targetPosition: -newTranslate,
10000          side: isH ? 'left' : 'top'
10001        });
10002        return true;
10003      }
10004      wrapperEl.scrollTo({
10005        [isH ? 'left' : 'top']: -newTranslate,
10006        behavior: 'smooth'
10007      });
10008    }
10009    return true;
10010  }
10011  if (speed === 0) {
10012    swiper.setTransition(0);
10013    swiper.setTranslate(newTranslate);
10014    if (runCallbacks) {
10015      swiper.emit('beforeTransitionStart', speed, internal);
10016      swiper.emit('transitionEnd');
10017    }
10018  } else {
10019    swiper.setTransition(speed);
10020    swiper.setTranslate(newTranslate);
10021    if (runCallbacks) {
10022      swiper.emit('beforeTransitionStart', speed, internal);
10023      swiper.emit('transitionStart');
10024    }
10025    if (!swiper.animating) {
10026      swiper.animating = true;
10027      if (!swiper.onTranslateToWrapperTransitionEnd) {
10028        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
10029          if (!swiper || swiper.destroyed) return;
10030          if (e.target !== this) return;
10031          swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
10032          swiper.onTranslateToWrapperTransitionEnd = null;
10033          delete swiper.onTranslateToWrapperTransitionEnd;
10034          swiper.animating = false;
10035          if (runCallbacks) {
10036            swiper.emit('transitionEnd');
10037          }
10038        };
10039      }
10040      swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
10041    }
10042  }
10043  return true;
10044}
10045
10046var translate = {
10047  getTranslate: getSwiperTranslate,
10048  setTranslate,
10049  minTranslate,
10050  maxTranslate,
10051  translateTo
10052};
10053
10054function setTransition(duration, byController) {
10055  const swiper = this;
10056  if (!swiper.params.cssMode) {
10057    swiper.wrapperEl.style.transitionDuration = `${duration}ms`;
10058    swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';
10059  }
10060  swiper.emit('setTransition', duration, byController);
10061}
10062
10063function transitionEmit(_ref) {
10064  let {
10065    swiper,
10066    runCallbacks,
10067    direction,
10068    step
10069  } = _ref;
10070  const {
10071    activeIndex,
10072    previousIndex
10073  } = swiper;
10074  let dir = direction;
10075  if (!dir) {
10076    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
10077  }
10078  swiper.emit(`transition${step}`);
10079  if (runCallbacks && activeIndex !== previousIndex) {
10080    if (dir === 'reset') {
10081      swiper.emit(`slideResetTransition${step}`);
10082      return;
10083    }
10084    swiper.emit(`slideChangeTransition${step}`);
10085    if (dir === 'next') {
10086      swiper.emit(`slideNextTransition${step}`);
10087    } else {
10088      swiper.emit(`slidePrevTransition${step}`);
10089    }
10090  }
10091}
10092
10093function transitionStart(runCallbacks, direction) {
10094  if (runCallbacks === void 0) {
10095    runCallbacks = true;
10096  }
10097  const swiper = this;
10098  const {
10099    params
10100  } = swiper;
10101  if (params.cssMode) return;
10102  if (params.autoHeight) {
10103    swiper.updateAutoHeight();
10104  }
10105  transitionEmit({
10106    swiper,
10107    runCallbacks,
10108    direction,
10109    step: 'Start'
10110  });
10111}
10112
10113function transitionEnd(runCallbacks, direction) {
10114  if (runCallbacks === void 0) {
10115    runCallbacks = true;
10116  }
10117  const swiper = this;
10118  const {
10119    params
10120  } = swiper;
10121  swiper.animating = false;
10122  if (params.cssMode) return;
10123  swiper.setTransition(0);
10124  transitionEmit({
10125    swiper,
10126    runCallbacks,
10127    direction,
10128    step: 'End'
10129  });
10130}
10131
10132var transition = {
10133  setTransition,
10134  transitionStart,
10135  transitionEnd
10136};
10137
10138function slideTo(index, speed, runCallbacks, internal, initial) {
10139  if (index === void 0) {
10140    index = 0;
10141  }
10142  if (runCallbacks === void 0) {
10143    runCallbacks = true;
10144  }
10145  if (typeof index === 'string') {
10146    index = parseInt(index, 10);
10147  }
10148  const swiper = this;
10149  let slideIndex = index;
10150  if (slideIndex < 0) slideIndex = 0;
10151  const {
10152    params,
10153    snapGrid,
10154    slidesGrid,
10155    previousIndex,
10156    activeIndex,
10157    rtlTranslate: rtl,
10158    wrapperEl,
10159    enabled
10160  } = swiper;
10161  if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {
10162    return false;
10163  }
10164  if (typeof speed === 'undefined') {
10165    speed = swiper.params.speed;
10166  }
10167  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
10168  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
10169  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
10170  const translate = -snapGrid[snapIndex];
10171  // Normalize slideIndex
10172  if (params.normalizeSlideIndex) {
10173    for (let i = 0; i < slidesGrid.length; i += 1) {
10174      const normalizedTranslate = -Math.floor(translate * 100);
10175      const normalizedGrid = Math.floor(slidesGrid[i] * 100);
10176      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
10177      if (typeof slidesGrid[i + 1] !== 'undefined') {
10178        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {
10179          slideIndex = i;
10180        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {
10181          slideIndex = i + 1;
10182        }
10183      } else if (normalizedTranslate >= normalizedGrid) {
10184        slideIndex = i;
10185      }
10186    }
10187  }
10188  // Directions locks
10189  if (swiper.initialized && slideIndex !== activeIndex) {
10190    if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {
10191      return false;
10192    }
10193    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
10194      if ((activeIndex || 0) !== slideIndex) {
10195        return false;
10196      }
10197    }
10198  }
10199  if (slideIndex !== (previousIndex || 0) && runCallbacks) {
10200    swiper.emit('beforeSlideChangeStart');
10201  }
10202
10203  // Update progress
10204  swiper.updateProgress(translate);
10205  let direction;
10206  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';
10207
10208  // initial virtual
10209  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
10210  const isInitialVirtual = isVirtual && initial;
10211  // Update Index
10212  if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {
10213    swiper.updateActiveIndex(slideIndex);
10214    // Update Height
10215    if (params.autoHeight) {
10216      swiper.updateAutoHeight();
10217    }
10218    swiper.updateSlidesClasses();
10219    if (params.effect !== 'slide') {
10220      swiper.setTranslate(translate);
10221    }
10222    if (direction !== 'reset') {
10223      swiper.transitionStart(runCallbacks, direction);
10224      swiper.transitionEnd(runCallbacks, direction);
10225    }
10226    return false;
10227  }
10228  if (params.cssMode) {
10229    const isH = swiper.isHorizontal();
10230    const t = rtl ? translate : -translate;
10231    if (speed === 0) {
10232      if (isVirtual) {
10233        swiper.wrapperEl.style.scrollSnapType = 'none';
10234        swiper._immediateVirtual = true;
10235      }
10236      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {
10237        swiper._cssModeVirtualInitialSet = true;
10238        requestAnimationFrame(() => {
10239          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
10240        });
10241      } else {
10242        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
10243      }
10244      if (isVirtual) {
10245        requestAnimationFrame(() => {
10246          swiper.wrapperEl.style.scrollSnapType = '';
10247          swiper._immediateVirtual = false;
10248        });
10249      }
10250    } else {
10251      if (!swiper.support.smoothScroll) {
10252        (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)({
10253          swiper,
10254          targetPosition: t,
10255          side: isH ? 'left' : 'top'
10256        });
10257        return true;
10258      }
10259      wrapperEl.scrollTo({
10260        [isH ? 'left' : 'top']: t,
10261        behavior: 'smooth'
10262      });
10263    }
10264    return true;
10265  }
10266  swiper.setTransition(speed);
10267  swiper.setTranslate(translate);
10268  swiper.updateActiveIndex(slideIndex);
10269  swiper.updateSlidesClasses();
10270  swiper.emit('beforeTransitionStart', speed, internal);
10271  swiper.transitionStart(runCallbacks, direction);
10272  if (speed === 0) {
10273    swiper.transitionEnd(runCallbacks, direction);
10274  } else if (!swiper.animating) {
10275    swiper.animating = true;
10276    if (!swiper.onSlideToWrapperTransitionEnd) {
10277      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
10278        if (!swiper || swiper.destroyed) return;
10279        if (e.target !== this) return;
10280        swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
10281        swiper.onSlideToWrapperTransitionEnd = null;
10282        delete swiper.onSlideToWrapperTransitionEnd;
10283        swiper.transitionEnd(runCallbacks, direction);
10284      };
10285    }
10286    swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
10287  }
10288  return true;
10289}
10290
10291function slideToLoop(index, speed, runCallbacks, internal) {
10292  if (index === void 0) {
10293    index = 0;
10294  }
10295  if (runCallbacks === void 0) {
10296    runCallbacks = true;
10297  }
10298  if (typeof index === 'string') {
10299    const indexAsNumber = parseInt(index, 10);
10300    index = indexAsNumber;
10301  }
10302  const swiper = this;
10303  if (swiper.destroyed) return;
10304  if (typeof speed === 'undefined') {
10305    speed = swiper.params.speed;
10306  }
10307  const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;
10308  let newIndex = index;
10309  if (swiper.params.loop) {
10310    if (swiper.virtual && swiper.params.virtual.enabled) {
10311      // eslint-disable-next-line
10312      newIndex = newIndex + swiper.virtual.slidesBefore;
10313    } else {
10314      let targetSlideIndex;
10315      if (gridEnabled) {
10316        const slideIndex = newIndex * swiper.params.grid.rows;
10317        targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;
10318      } else {
10319        targetSlideIndex = swiper.getSlideIndexByData(newIndex);
10320      }
10321      const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;
10322      const {
10323        centeredSlides
10324      } = swiper.params;
10325      let slidesPerView = swiper.params.slidesPerView;
10326      if (slidesPerView === 'auto') {
10327        slidesPerView = swiper.slidesPerViewDynamic();
10328      } else {
10329        slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));
10330        if (centeredSlides && slidesPerView % 2 === 0) {
10331          slidesPerView = slidesPerView + 1;
10332        }
10333      }
10334      let needLoopFix = cols - targetSlideIndex < slidesPerView;
10335      if (centeredSlides) {
10336        needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);
10337      }
10338      if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {
10339        needLoopFix = false;
10340      }
10341      if (needLoopFix) {
10342        const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';
10343        swiper.loopFix({
10344          direction,
10345          slideTo: true,
10346          activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,
10347          slideRealIndex: direction === 'next' ? swiper.realIndex : undefined
10348        });
10349      }
10350      if (gridEnabled) {
10351        const slideIndex = newIndex * swiper.params.grid.rows;
10352        newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;
10353      } else {
10354        newIndex = swiper.getSlideIndexByData(newIndex);
10355      }
10356    }
10357  }
10358  requestAnimationFrame(() => {
10359    swiper.slideTo(newIndex, speed, runCallbacks, internal);
10360  });
10361  return swiper;
10362}
10363
10364/* eslint no-unused-vars: "off" */
10365function slideNext(speed, runCallbacks, internal) {
10366  if (runCallbacks === void 0) {
10367    runCallbacks = true;
10368  }
10369  const swiper = this;
10370  const {
10371    enabled,
10372    params,
10373    animating
10374  } = swiper;
10375  if (!enabled || swiper.destroyed) return swiper;
10376  if (typeof speed === 'undefined') {
10377    speed = swiper.params.speed;
10378  }
10379  let perGroup = params.slidesPerGroup;
10380  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
10381    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);
10382  }
10383  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;
10384  const isVirtual = swiper.virtual && params.virtual.enabled;
10385  if (params.loop) {
10386    if (animating && !isVirtual && params.loopPreventsSliding) return false;
10387    swiper.loopFix({
10388      direction: 'next'
10389    });
10390    // eslint-disable-next-line
10391    swiper._clientLeft = swiper.wrapperEl.clientLeft;
10392    if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {
10393      requestAnimationFrame(() => {
10394        swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
10395      });
10396      return true;
10397    }
10398  }
10399  if (params.rewind && swiper.isEnd) {
10400    return swiper.slideTo(0, speed, runCallbacks, internal);
10401  }
10402  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
10403}
10404
10405/* eslint no-unused-vars: "off" */
10406function slidePrev(speed, runCallbacks, internal) {
10407  if (runCallbacks === void 0) {
10408    runCallbacks = true;
10409  }
10410  const swiper = this;
10411  const {
10412    params,
10413    snapGrid,
10414    slidesGrid,
10415    rtlTranslate,
10416    enabled,
10417    animating
10418  } = swiper;
10419  if (!enabled || swiper.destroyed) return swiper;
10420  if (typeof speed === 'undefined') {
10421    speed = swiper.params.speed;
10422  }
10423  const isVirtual = swiper.virtual && params.virtual.enabled;
10424  if (params.loop) {
10425    if (animating && !isVirtual && params.loopPreventsSliding) return false;
10426    swiper.loopFix({
10427      direction: 'prev'
10428    });
10429    // eslint-disable-next-line
10430    swiper._clientLeft = swiper.wrapperEl.clientLeft;
10431  }
10432  const translate = rtlTranslate ? swiper.translate : -swiper.translate;
10433  function normalize(val) {
10434    if (val < 0) return -Math.floor(Math.abs(val));
10435    return Math.floor(val);
10436  }
10437  const normalizedTranslate = normalize(translate);
10438  const normalizedSnapGrid = snapGrid.map(val => normalize(val));
10439  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
10440  if (typeof prevSnap === 'undefined' && params.cssMode) {
10441    let prevSnapIndex;
10442    snapGrid.forEach((snap, snapIndex) => {
10443      if (normalizedTranslate >= snap) {
10444        // prevSnap = snap;
10445        prevSnapIndex = snapIndex;
10446      }
10447    });
10448    if (typeof prevSnapIndex !== 'undefined') {
10449      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
10450    }
10451  }
10452  let prevIndex = 0;
10453  if (typeof prevSnap !== 'undefined') {
10454    prevIndex = slidesGrid.indexOf(prevSnap);
10455    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
10456    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
10457      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;
10458      prevIndex = Math.max(prevIndex, 0);
10459    }
10460  }
10461  if (params.rewind && swiper.isBeginning) {
10462    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
10463    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);
10464  } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {
10465    requestAnimationFrame(() => {
10466      swiper.slideTo(prevIndex, speed, runCallbacks, internal);
10467    });
10468    return true;
10469  }
10470  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
10471}
10472
10473/* eslint no-unused-vars: "off" */
10474function slideReset(speed, runCallbacks, internal) {
10475  if (runCallbacks === void 0) {
10476    runCallbacks = true;
10477  }
10478  const swiper = this;
10479  if (swiper.destroyed) return;
10480  if (typeof speed === 'undefined') {
10481    speed = swiper.params.speed;
10482  }
10483  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
10484}
10485
10486/* eslint no-unused-vars: "off" */
10487function slideToClosest(speed, runCallbacks, internal, threshold) {
10488  if (runCallbacks === void 0) {
10489    runCallbacks = true;
10490  }
10491  if (threshold === void 0) {
10492    threshold = 0.5;
10493  }
10494  const swiper = this;
10495  if (swiper.destroyed) return;
10496  if (typeof speed === 'undefined') {
10497    speed = swiper.params.speed;
10498  }
10499  let index = swiper.activeIndex;
10500  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
10501  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
10502  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
10503  if (translate >= swiper.snapGrid[snapIndex]) {
10504    // The current translate is on or after the current snap index, so the choice
10505    // is between the current index and the one after it.
10506    const currentSnap = swiper.snapGrid[snapIndex];
10507    const nextSnap = swiper.snapGrid[snapIndex + 1];
10508    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
10509      index += swiper.params.slidesPerGroup;
10510    }
10511  } else {
10512    // The current translate is before the current snap index, so the choice
10513    // is between the current index and the one before it.
10514    const prevSnap = swiper.snapGrid[snapIndex - 1];
10515    const currentSnap = swiper.snapGrid[snapIndex];
10516    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {
10517      index -= swiper.params.slidesPerGroup;
10518    }
10519  }
10520  index = Math.max(index, 0);
10521  index = Math.min(index, swiper.slidesGrid.length - 1);
10522  return swiper.slideTo(index, speed, runCallbacks, internal);
10523}
10524
10525function slideToClickedSlide() {
10526  const swiper = this;
10527  if (swiper.destroyed) return;
10528  const {
10529    params,
10530    slidesEl
10531  } = swiper;
10532  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
10533  let slideToIndex = swiper.clickedIndex;
10534  let realIndex;
10535  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;
10536  if (params.loop) {
10537    if (swiper.animating) return;
10538    realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);
10539    if (params.centeredSlides) {
10540      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
10541        swiper.loopFix();
10542        slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
10543        (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
10544          swiper.slideTo(slideToIndex);
10545        });
10546      } else {
10547        swiper.slideTo(slideToIndex);
10548      }
10549    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
10550      swiper.loopFix();
10551      slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
10552      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
10553        swiper.slideTo(slideToIndex);
10554      });
10555    } else {
10556      swiper.slideTo(slideToIndex);
10557    }
10558  } else {
10559    swiper.slideTo(slideToIndex);
10560  }
10561}
10562
10563var slide = {
10564  slideTo,
10565  slideToLoop,
10566  slideNext,
10567  slidePrev,
10568  slideReset,
10569  slideToClosest,
10570  slideToClickedSlide
10571};
10572
10573function loopCreate(slideRealIndex) {
10574  const swiper = this;
10575  const {
10576    params,
10577    slidesEl
10578  } = swiper;
10579  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
10580  const initSlides = () => {
10581    const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`);
10582    slides.forEach((el, index) => {
10583      el.setAttribute('data-swiper-slide-index', index);
10584    });
10585  };
10586  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
10587  const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);
10588  const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;
10589  const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;
10590  const addBlankSlides = amountOfSlides => {
10591    for (let i = 0; i < amountOfSlides; i += 1) {
10592      const slideEl = swiper.isElement ? (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('swiper-slide', [params.slideBlankClass]) : (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', [params.slideClass, params.slideBlankClass]);
10593      swiper.slidesEl.append(slideEl);
10594    }
10595  };
10596  if (shouldFillGroup) {
10597    if (params.loopAddBlankSlides) {
10598      const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;
10599      addBlankSlides(slidesToAdd);
10600      swiper.recalcSlides();
10601      swiper.updateSlides();
10602    } else {
10603      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');
10604    }
10605    initSlides();
10606  } else if (shouldFillGrid) {
10607    if (params.loopAddBlankSlides) {
10608      const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;
10609      addBlankSlides(slidesToAdd);
10610      swiper.recalcSlides();
10611      swiper.updateSlides();
10612    } else {
10613      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');
10614    }
10615    initSlides();
10616  } else {
10617    initSlides();
10618  }
10619  swiper.loopFix({
10620    slideRealIndex,
10621    direction: params.centeredSlides ? undefined : 'next'
10622  });
10623}
10624
10625function loopFix(_temp) {
10626  let {
10627    slideRealIndex,
10628    slideTo = true,
10629    direction,
10630    setTranslate,
10631    activeSlideIndex,
10632    byController,
10633    byMousewheel
10634  } = _temp === void 0 ? {} : _temp;
10635  const swiper = this;
10636  if (!swiper.params.loop) return;
10637  swiper.emit('beforeLoopFix');
10638  const {
10639    slides,
10640    allowSlidePrev,
10641    allowSlideNext,
10642    slidesEl,
10643    params
10644  } = swiper;
10645  const {
10646    centeredSlides
10647  } = params;
10648  swiper.allowSlidePrev = true;
10649  swiper.allowSlideNext = true;
10650  if (swiper.virtual && params.virtual.enabled) {
10651    if (slideTo) {
10652      if (!params.centeredSlides && swiper.snapIndex === 0) {
10653        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);
10654      } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {
10655        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);
10656      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {
10657        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);
10658      }
10659    }
10660    swiper.allowSlidePrev = allowSlidePrev;
10661    swiper.allowSlideNext = allowSlideNext;
10662    swiper.emit('loopFix');
10663    return;
10664  }
10665  let slidesPerView = params.slidesPerView;
10666  if (slidesPerView === 'auto') {
10667    slidesPerView = swiper.slidesPerViewDynamic();
10668  } else {
10669    slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));
10670    if (centeredSlides && slidesPerView % 2 === 0) {
10671      slidesPerView = slidesPerView + 1;
10672    }
10673  }
10674  const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;
10675  let loopedSlides = slidesPerGroup;
10676  if (loopedSlides % slidesPerGroup !== 0) {
10677    loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;
10678  }
10679  loopedSlides += params.loopAdditionalSlides;
10680  swiper.loopedSlides = loopedSlides;
10681  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
10682  if (slides.length < slidesPerView + loopedSlides) {
10683    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');
10684  } else if (gridEnabled && params.grid.fill === 'row') {
10685    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');
10686  }
10687  const prependSlidesIndexes = [];
10688  const appendSlidesIndexes = [];
10689  let activeIndex = swiper.activeIndex;
10690  if (typeof activeSlideIndex === 'undefined') {
10691    activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);
10692  } else {
10693    activeIndex = activeSlideIndex;
10694  }
10695  const isNext = direction === 'next' || !direction;
10696  const isPrev = direction === 'prev' || !direction;
10697  let slidesPrepended = 0;
10698  let slidesAppended = 0;
10699  const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;
10700  const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;
10701  const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);
10702  // prepend last slides before start
10703  if (activeColIndexWithShift < loopedSlides) {
10704    slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);
10705    for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {
10706      const index = i - Math.floor(i / cols) * cols;
10707      if (gridEnabled) {
10708        const colIndexToPrepend = cols - index - 1;
10709        for (let i = slides.length - 1; i >= 0; i -= 1) {
10710          if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);
10711        }
10712        // slides.forEach((slide, slideIndex) => {
10713        //   if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);
10714        // });
10715      } else {
10716        prependSlidesIndexes.push(cols - index - 1);
10717      }
10718    }
10719  } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {
10720    slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);
10721    for (let i = 0; i < slidesAppended; i += 1) {
10722      const index = i - Math.floor(i / cols) * cols;
10723      if (gridEnabled) {
10724        slides.forEach((slide, slideIndex) => {
10725          if (slide.column === index) appendSlidesIndexes.push(slideIndex);
10726        });
10727      } else {
10728        appendSlidesIndexes.push(index);
10729      }
10730    }
10731  }
10732  swiper.__preventObserver__ = true;
10733  requestAnimationFrame(() => {
10734    swiper.__preventObserver__ = false;
10735  });
10736  if (isPrev) {
10737    prependSlidesIndexes.forEach(index => {
10738      slides[index].swiperLoopMoveDOM = true;
10739      slidesEl.prepend(slides[index]);
10740      slides[index].swiperLoopMoveDOM = false;
10741    });
10742  }
10743  if (isNext) {
10744    appendSlidesIndexes.forEach(index => {
10745      slides[index].swiperLoopMoveDOM = true;
10746      slidesEl.append(slides[index]);
10747      slides[index].swiperLoopMoveDOM = false;
10748    });
10749  }
10750  swiper.recalcSlides();
10751  if (params.slidesPerView === 'auto') {
10752    swiper.updateSlides();
10753  } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {
10754    swiper.slides.forEach((slide, slideIndex) => {
10755      swiper.grid.updateSlide(slideIndex, slide, swiper.slides);
10756    });
10757  }
10758  if (params.watchSlidesProgress) {
10759    swiper.updateSlidesOffset();
10760  }
10761  if (slideTo) {
10762    if (prependSlidesIndexes.length > 0 && isPrev) {
10763      if (typeof slideRealIndex === 'undefined') {
10764        const currentSlideTranslate = swiper.slidesGrid[activeIndex];
10765        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];
10766        const diff = newSlideTranslate - currentSlideTranslate;
10767        if (byMousewheel) {
10768          swiper.setTranslate(swiper.translate - diff);
10769        } else {
10770          swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);
10771          if (setTranslate) {
10772            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;
10773            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;
10774          }
10775        }
10776      } else {
10777        if (setTranslate) {
10778          const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;
10779          swiper.slideTo(swiper.activeIndex + shift, 0, false, true);
10780          swiper.touchEventsData.currentTranslate = swiper.translate;
10781        }
10782      }
10783    } else if (appendSlidesIndexes.length > 0 && isNext) {
10784      if (typeof slideRealIndex === 'undefined') {
10785        const currentSlideTranslate = swiper.slidesGrid[activeIndex];
10786        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];
10787        const diff = newSlideTranslate - currentSlideTranslate;
10788        if (byMousewheel) {
10789          swiper.setTranslate(swiper.translate - diff);
10790        } else {
10791          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);
10792          if (setTranslate) {
10793            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;
10794            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;
10795          }
10796        }
10797      } else {
10798        const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;
10799        swiper.slideTo(swiper.activeIndex - shift, 0, false, true);
10800      }
10801    }
10802  }
10803  swiper.allowSlidePrev = allowSlidePrev;
10804  swiper.allowSlideNext = allowSlideNext;
10805  if (swiper.controller && swiper.controller.control && !byController) {
10806    const loopParams = {
10807      slideRealIndex,
10808      direction,
10809      setTranslate,
10810      activeSlideIndex,
10811      byController: true
10812    };
10813    if (Array.isArray(swiper.controller.control)) {
10814      swiper.controller.control.forEach(c => {
10815        if (!c.destroyed && c.params.loop) c.loopFix({
10816          ...loopParams,
10817          slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false
10818        });
10819      });
10820    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {
10821      swiper.controller.control.loopFix({
10822        ...loopParams,
10823        slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false
10824      });
10825    }
10826  }
10827  swiper.emit('loopFix');
10828}
10829
10830function loopDestroy() {
10831  const swiper = this;
10832  const {
10833    params,
10834    slidesEl
10835  } = swiper;
10836  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
10837  swiper.recalcSlides();
10838  const newSlidesOrder = [];
10839  swiper.slides.forEach(slideEl => {
10840    const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;
10841    newSlidesOrder[index] = slideEl;
10842  });
10843  swiper.slides.forEach(slideEl => {
10844    slideEl.removeAttribute('data-swiper-slide-index');
10845  });
10846  newSlidesOrder.forEach(slideEl => {
10847    slidesEl.append(slideEl);
10848  });
10849  swiper.recalcSlides();
10850  swiper.slideTo(swiper.realIndex, 0);
10851}
10852
10853var loop = {
10854  loopCreate,
10855  loopFix,
10856  loopDestroy
10857};
10858
10859function setGrabCursor(moving) {
10860  const swiper = this;
10861  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
10862  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;
10863  if (swiper.isElement) {
10864    swiper.__preventObserver__ = true;
10865  }
10866  el.style.cursor = 'move';
10867  el.style.cursor = moving ? 'grabbing' : 'grab';
10868  if (swiper.isElement) {
10869    requestAnimationFrame(() => {
10870      swiper.__preventObserver__ = false;
10871    });
10872  }
10873}
10874
10875function unsetGrabCursor() {
10876  const swiper = this;
10877  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
10878    return;
10879  }
10880  if (swiper.isElement) {
10881    swiper.__preventObserver__ = true;
10882  }
10883  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';
10884  if (swiper.isElement) {
10885    requestAnimationFrame(() => {
10886      swiper.__preventObserver__ = false;
10887    });
10888  }
10889}
10890
10891var grabCursor = {
10892  setGrabCursor,
10893  unsetGrabCursor
10894};
10895
10896// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd
10897function closestElement(selector, base) {
10898  if (base === void 0) {
10899    base = this;
10900  }
10901  function __closestFrom(el) {
10902    if (!el || el === (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)() || el === (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)()) return null;
10903    if (el.assignedSlot) el = el.assignedSlot;
10904    const found = el.closest(selector);
10905    if (!found && !el.getRootNode) {
10906      return null;
10907    }
10908    return found || __closestFrom(el.getRootNode().host);
10909  }
10910  return __closestFrom(base);
10911}
10912function preventEdgeSwipe(swiper, event, startX) {
10913  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
10914  const {
10915    params
10916  } = swiper;
10917  const edgeSwipeDetection = params.edgeSwipeDetection;
10918  const edgeSwipeThreshold = params.edgeSwipeThreshold;
10919  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {
10920    if (edgeSwipeDetection === 'prevent') {
10921      event.preventDefault();
10922      return true;
10923    }
10924    return false;
10925  }
10926  return true;
10927}
10928function onTouchStart(event) {
10929  const swiper = this;
10930  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
10931  let e = event;
10932  if (e.originalEvent) e = e.originalEvent;
10933  const data = swiper.touchEventsData;
10934  if (e.type === 'pointerdown') {
10935    if (data.pointerId !== null && data.pointerId !== e.pointerId) {
10936      return;
10937    }
10938    data.pointerId = e.pointerId;
10939  } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {
10940    data.touchId = e.targetTouches[0].identifier;
10941  }
10942  if (e.type === 'touchstart') {
10943    // don't proceed touch event
10944    preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);
10945    return;
10946  }
10947  const {
10948    params,
10949    touches,
10950    enabled
10951  } = swiper;
10952  if (!enabled) return;
10953  if (!params.simulateTouch && e.pointerType === 'mouse') return;
10954  if (swiper.animating && params.preventInteractionOnTransition) {
10955    return;
10956  }
10957  if (!swiper.animating && params.cssMode && params.loop) {
10958    swiper.loopFix();
10959  }
10960  let targetEl = e.target;
10961  if (params.touchEventsTarget === 'wrapper') {
10962    if (!(0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)(targetEl, swiper.wrapperEl)) return;
10963  }
10964  if ('which' in e && e.which === 3) return;
10965  if ('button' in e && e.button > 0) return;
10966  if (data.isTouched && data.isMoved) return;
10967
10968  // change target el for shadow root component
10969  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';
10970  // eslint-disable-next-line
10971  const eventPath = e.composedPath ? e.composedPath() : e.path;
10972  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {
10973    targetEl = eventPath[0];
10974  }
10975  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;
10976  const isTargetShadow = !!(e.target && e.target.shadowRoot);
10977
10978  // use closestElement for shadow root element to get the actual closest for nested shadow root element
10979  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {
10980    swiper.allowClick = true;
10981    return;
10982  }
10983  if (params.swipeHandler) {
10984    if (!targetEl.closest(params.swipeHandler)) return;
10985  }
10986  touches.currentX = e.pageX;
10987  touches.currentY = e.pageY;
10988  const startX = touches.currentX;
10989  const startY = touches.currentY;
10990
10991  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
10992
10993  if (!preventEdgeSwipe(swiper, e, startX)) {
10994    return;
10995  }
10996  Object.assign(data, {
10997    isTouched: true,
10998    isMoved: false,
10999    allowTouchCallbacks: true,
11000    isScrolling: undefined,
11001    startMoving: undefined
11002  });
11003  touches.startX = startX;
11004  touches.startY = startY;
11005  data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)();
11006  swiper.allowClick = true;
11007  swiper.updateSize();
11008  swiper.swipeDirection = undefined;
11009  if (params.threshold > 0) data.allowThresholdMove = false;
11010  let preventDefault = true;
11011  if (targetEl.matches(data.focusableElements)) {
11012    preventDefault = false;
11013    if (targetEl.nodeName === 'SELECT') {
11014      data.isTouched = false;
11015    }
11016  }
11017  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {
11018    document.activeElement.blur();
11019  }
11020  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
11021  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {
11022    e.preventDefault();
11023  }
11024  if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {
11025    swiper.freeMode.onTouchStart();
11026  }
11027  swiper.emit('touchStart', e);
11028}
11029
11030function onTouchMove(event) {
11031  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
11032  const swiper = this;
11033  const data = swiper.touchEventsData;
11034  const {
11035    params,
11036    touches,
11037    rtlTranslate: rtl,
11038    enabled
11039  } = swiper;
11040  if (!enabled) return;
11041  if (!params.simulateTouch && event.pointerType === 'mouse') return;
11042  let e = event;
11043  if (e.originalEvent) e = e.originalEvent;
11044  if (e.type === 'pointermove') {
11045    if (data.touchId !== null) return; // return from pointer if we use touch
11046    const id = e.pointerId;
11047    if (id !== data.pointerId) return;
11048  }
11049  let targetTouch;
11050  if (e.type === 'touchmove') {
11051    targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];
11052    if (!targetTouch || targetTouch.identifier !== data.touchId) return;
11053  } else {
11054    targetTouch = e;
11055  }
11056  if (!data.isTouched) {
11057    if (data.startMoving && data.isScrolling) {
11058      swiper.emit('touchMoveOpposite', e);
11059    }
11060    return;
11061  }
11062  const pageX = targetTouch.pageX;
11063  const pageY = targetTouch.pageY;
11064  if (e.preventedByNestedSwiper) {
11065    touches.startX = pageX;
11066    touches.startY = pageY;
11067    return;
11068  }
11069  if (!swiper.allowTouchMove) {
11070    if (!e.target.matches(data.focusableElements)) {
11071      swiper.allowClick = false;
11072    }
11073    if (data.isTouched) {
11074      Object.assign(touches, {
11075        startX: pageX,
11076        startY: pageY,
11077        currentX: pageX,
11078        currentY: pageY
11079      });
11080      data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)();
11081    }
11082    return;
11083  }
11084  if (params.touchReleaseOnEdges && !params.loop) {
11085    if (swiper.isVertical()) {
11086      // Vertical
11087      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
11088        data.isTouched = false;
11089        data.isMoved = false;
11090        return;
11091      }
11092    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
11093      return;
11094    }
11095  }
11096  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {
11097    document.activeElement.blur();
11098  }
11099  if (document.activeElement) {
11100    if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {
11101      data.isMoved = true;
11102      swiper.allowClick = false;
11103      return;
11104    }
11105  }
11106  if (data.allowTouchCallbacks) {
11107    swiper.emit('touchMove', e);
11108  }
11109  touches.previousX = touches.currentX;
11110  touches.previousY = touches.currentY;
11111  touches.currentX = pageX;
11112  touches.currentY = pageY;
11113  const diffX = touches.currentX - touches.startX;
11114  const diffY = touches.currentY - touches.startY;
11115  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;
11116  if (typeof data.isScrolling === 'undefined') {
11117    let touchAngle;
11118    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
11119      data.isScrolling = false;
11120    } else {
11121      // eslint-disable-next-line
11122      if (diffX * diffX + diffY * diffY >= 25) {
11123        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
11124        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
11125      }
11126    }
11127  }
11128  if (data.isScrolling) {
11129    swiper.emit('touchMoveOpposite', e);
11130  }
11131  if (typeof data.startMoving === 'undefined') {
11132    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
11133      data.startMoving = true;
11134    }
11135  }
11136  if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {
11137    data.isTouched = false;
11138    return;
11139  }
11140  if (!data.startMoving) {
11141    return;
11142  }
11143  swiper.allowClick = false;
11144  if (!params.cssMode && e.cancelable) {
11145    e.preventDefault();
11146  }
11147  if (params.touchMoveStopPropagation && !params.nested) {
11148    e.stopPropagation();
11149  }
11150  let diff = swiper.isHorizontal() ? diffX : diffY;
11151  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;
11152  if (params.oneWayMovement) {
11153    diff = Math.abs(diff) * (rtl ? 1 : -1);
11154    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);
11155  }
11156  touches.diff = diff;
11157  diff *= params.touchRatio;
11158  if (rtl) {
11159    diff = -diff;
11160    touchesDiff = -touchesDiff;
11161  }
11162  const prevTouchesDirection = swiper.touchesDirection;
11163  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
11164  swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';
11165  const isLoop = swiper.params.loop && !params.cssMode;
11166  const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;
11167  if (!data.isMoved) {
11168    if (isLoop && allowLoopFix) {
11169      swiper.loopFix({
11170        direction: swiper.swipeDirection
11171      });
11172    }
11173    data.startTranslate = swiper.getTranslate();
11174    swiper.setTransition(0);
11175    if (swiper.animating) {
11176      const evt = new window.CustomEvent('transitionend', {
11177        bubbles: true,
11178        cancelable: true,
11179        detail: {
11180          bySwiperTouchMove: true
11181        }
11182      });
11183      swiper.wrapperEl.dispatchEvent(evt);
11184    }
11185    data.allowMomentumBounce = false;
11186    // Grab Cursor
11187    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
11188      swiper.setGrabCursor(true);
11189    }
11190    swiper.emit('sliderFirstMove', e);
11191  }
11192  let loopFixed;
11193  new Date().getTime();
11194  if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {
11195    Object.assign(touches, {
11196      startX: pageX,
11197      startY: pageY,
11198      currentX: pageX,
11199      currentY: pageY,
11200      startTranslate: data.currentTranslate
11201    });
11202    data.loopSwapReset = true;
11203    data.startTranslate = data.currentTranslate;
11204    return;
11205  }
11206  swiper.emit('sliderMove', e);
11207  data.isMoved = true;
11208  data.currentTranslate = diff + data.startTranslate;
11209  let disableParentSwiper = true;
11210  let resistanceRatio = params.resistanceRatio;
11211  if (params.touchReleaseOnEdges) {
11212    resistanceRatio = 0;
11213  }
11214  if (diff > 0) {
11215    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {
11216      swiper.loopFix({
11217        direction: 'prev',
11218        setTranslate: true,
11219        activeSlideIndex: 0
11220      });
11221    }
11222    if (data.currentTranslate > swiper.minTranslate()) {
11223      disableParentSwiper = false;
11224      if (params.resistance) {
11225        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;
11226      }
11227    }
11228  } else if (diff < 0) {
11229    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {
11230      swiper.loopFix({
11231        direction: 'next',
11232        setTranslate: true,
11233        activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))
11234      });
11235    }
11236    if (data.currentTranslate < swiper.maxTranslate()) {
11237      disableParentSwiper = false;
11238      if (params.resistance) {
11239        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;
11240      }
11241    }
11242  }
11243  if (disableParentSwiper) {
11244    e.preventedByNestedSwiper = true;
11245  }
11246
11247  // Directions locks
11248  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
11249    data.currentTranslate = data.startTranslate;
11250  }
11251  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
11252    data.currentTranslate = data.startTranslate;
11253  }
11254  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
11255    data.currentTranslate = data.startTranslate;
11256  }
11257
11258  // Threshold
11259  if (params.threshold > 0) {
11260    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
11261      if (!data.allowThresholdMove) {
11262        data.allowThresholdMove = true;
11263        touches.startX = touches.currentX;
11264        touches.startY = touches.currentY;
11265        data.currentTranslate = data.startTranslate;
11266        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
11267        return;
11268      }
11269    } else {
11270      data.currentTranslate = data.startTranslate;
11271      return;
11272    }
11273  }
11274  if (!params.followFinger || params.cssMode) return;
11275
11276  // Update active index in free mode
11277  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {
11278    swiper.updateActiveIndex();
11279    swiper.updateSlidesClasses();
11280  }
11281  if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {
11282    swiper.freeMode.onTouchMove();
11283  }
11284  // Update progress
11285  swiper.updateProgress(data.currentTranslate);
11286  // Update translate
11287  swiper.setTranslate(data.currentTranslate);
11288}
11289
11290function onTouchEnd(event) {
11291  const swiper = this;
11292  const data = swiper.touchEventsData;
11293  let e = event;
11294  if (e.originalEvent) e = e.originalEvent;
11295  let targetTouch;
11296  const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';
11297  if (!isTouchEvent) {
11298    if (data.touchId !== null) return; // return from pointer if we use touch
11299    if (e.pointerId !== data.pointerId) return;
11300    targetTouch = e;
11301  } else {
11302    targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];
11303    if (!targetTouch || targetTouch.identifier !== data.touchId) return;
11304  }
11305  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {
11306    const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);
11307    if (!proceed) {
11308      return;
11309    }
11310  }
11311  data.pointerId = null;
11312  data.touchId = null;
11313  const {
11314    params,
11315    touches,
11316    rtlTranslate: rtl,
11317    slidesGrid,
11318    enabled
11319  } = swiper;
11320  if (!enabled) return;
11321  if (!params.simulateTouch && e.pointerType === 'mouse') return;
11322  if (data.allowTouchCallbacks) {
11323    swiper.emit('touchEnd', e);
11324  }
11325  data.allowTouchCallbacks = false;
11326  if (!data.isTouched) {
11327    if (data.isMoved && params.grabCursor) {
11328      swiper.setGrabCursor(false);
11329    }
11330    data.isMoved = false;
11331    data.startMoving = false;
11332    return;
11333  }
11334
11335  // Return Grab Cursor
11336  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
11337    swiper.setGrabCursor(false);
11338  }
11339
11340  // Time diff
11341  const touchEndTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)();
11342  const timeDiff = touchEndTime - data.touchStartTime;
11343
11344  // Tap, doubleTap, Click
11345  if (swiper.allowClick) {
11346    const pathTree = e.path || e.composedPath && e.composedPath();
11347    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);
11348    swiper.emit('tap click', e);
11349    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
11350      swiper.emit('doubleTap doubleClick', e);
11351    }
11352  }
11353  data.lastClickTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)();
11354  (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => {
11355    if (!swiper.destroyed) swiper.allowClick = true;
11356  });
11357  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {
11358    data.isTouched = false;
11359    data.isMoved = false;
11360    data.startMoving = false;
11361    return;
11362  }
11363  data.isTouched = false;
11364  data.isMoved = false;
11365  data.startMoving = false;
11366  let currentPos;
11367  if (params.followFinger) {
11368    currentPos = rtl ? swiper.translate : -swiper.translate;
11369  } else {
11370    currentPos = -data.currentTranslate;
11371  }
11372  if (params.cssMode) {
11373    return;
11374  }
11375  if (params.freeMode && params.freeMode.enabled) {
11376    swiper.freeMode.onTouchEnd({
11377      currentPos
11378    });
11379    return;
11380  }
11381
11382  // Find current slide
11383  const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;
11384  let stopIndex = 0;
11385  let groupSize = swiper.slidesSizesGrid[0];
11386  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
11387    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
11388    if (typeof slidesGrid[i + increment] !== 'undefined') {
11389      if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {
11390        stopIndex = i;
11391        groupSize = slidesGrid[i + increment] - slidesGrid[i];
11392      }
11393    } else if (swipeToLast || currentPos >= slidesGrid[i]) {
11394      stopIndex = i;
11395      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
11396    }
11397  }
11398  let rewindFirstIndex = null;
11399  let rewindLastIndex = null;
11400  if (params.rewind) {
11401    if (swiper.isBeginning) {
11402      rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
11403    } else if (swiper.isEnd) {
11404      rewindFirstIndex = 0;
11405    }
11406  }
11407  // Find current slide size
11408  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
11409  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
11410  if (timeDiff > params.longSwipesMs) {
11411    // Long touches
11412    if (!params.longSwipes) {
11413      swiper.slideTo(swiper.activeIndex);
11414      return;
11415    }
11416    if (swiper.swipeDirection === 'next') {
11417      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);
11418    }
11419    if (swiper.swipeDirection === 'prev') {
11420      if (ratio > 1 - params.longSwipesRatio) {
11421        swiper.slideTo(stopIndex + increment);
11422      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {
11423        swiper.slideTo(rewindLastIndex);
11424      } else {
11425        swiper.slideTo(stopIndex);
11426      }
11427    }
11428  } else {
11429    // Short swipes
11430    if (!params.shortSwipes) {
11431      swiper.slideTo(swiper.activeIndex);
11432      return;
11433    }
11434    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
11435    if (!isNavButtonTarget) {
11436      if (swiper.swipeDirection === 'next') {
11437        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);
11438      }
11439      if (swiper.swipeDirection === 'prev') {
11440        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);
11441      }
11442    } else if (e.target === swiper.navigation.nextEl) {
11443      swiper.slideTo(stopIndex + increment);
11444    } else {
11445      swiper.slideTo(stopIndex);
11446    }
11447  }
11448}
11449
11450function onResize() {
11451  const swiper = this;
11452  const {
11453    params,
11454    el
11455  } = swiper;
11456  if (el && el.offsetWidth === 0) return;
11457
11458  // Breakpoints
11459  if (params.breakpoints) {
11460    swiper.setBreakpoint();
11461  }
11462
11463  // Save locks
11464  const {
11465    allowSlideNext,
11466    allowSlidePrev,
11467    snapGrid
11468  } = swiper;
11469  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
11470
11471  // Disable locks on resize
11472  swiper.allowSlideNext = true;
11473  swiper.allowSlidePrev = true;
11474  swiper.updateSize();
11475  swiper.updateSlides();
11476  swiper.updateSlidesClasses();
11477  const isVirtualLoop = isVirtual && params.loop;
11478  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {
11479    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
11480  } else {
11481    if (swiper.params.loop && !isVirtual) {
11482      swiper.slideToLoop(swiper.realIndex, 0, false, true);
11483    } else {
11484      swiper.slideTo(swiper.activeIndex, 0, false, true);
11485    }
11486  }
11487  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
11488    clearTimeout(swiper.autoplay.resizeTimeout);
11489    swiper.autoplay.resizeTimeout = setTimeout(() => {
11490      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
11491        swiper.autoplay.resume();
11492      }
11493    }, 500);
11494  }
11495  // Return locks after resize
11496  swiper.allowSlidePrev = allowSlidePrev;
11497  swiper.allowSlideNext = allowSlideNext;
11498  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
11499    swiper.checkOverflow();
11500  }
11501}
11502
11503function onClick(e) {
11504  const swiper = this;
11505  if (!swiper.enabled) return;
11506  if (!swiper.allowClick) {
11507    if (swiper.params.preventClicks) e.preventDefault();
11508    if (swiper.params.preventClicksPropagation && swiper.animating) {
11509      e.stopPropagation();
11510      e.stopImmediatePropagation();
11511    }
11512  }
11513}
11514
11515function onScroll() {
11516  const swiper = this;
11517  const {
11518    wrapperEl,
11519    rtlTranslate,
11520    enabled
11521  } = swiper;
11522  if (!enabled) return;
11523  swiper.previousTranslate = swiper.translate;
11524  if (swiper.isHorizontal()) {
11525    swiper.translate = -wrapperEl.scrollLeft;
11526  } else {
11527    swiper.translate = -wrapperEl.scrollTop;
11528  }
11529  // eslint-disable-next-line
11530  if (swiper.translate === 0) swiper.translate = 0;
11531  swiper.updateActiveIndex();
11532  swiper.updateSlidesClasses();
11533  let newProgress;
11534  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
11535  if (translatesDiff === 0) {
11536    newProgress = 0;
11537  } else {
11538    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
11539  }
11540  if (newProgress !== swiper.progress) {
11541    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
11542  }
11543  swiper.emit('setTranslate', swiper.translate, false);
11544}
11545
11546function onLoad(e) {
11547  const swiper = this;
11548  processLazyPreloader(swiper, e.target);
11549  if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {
11550    return;
11551  }
11552  swiper.update();
11553}
11554
11555function onDocumentTouchStart() {
11556  const swiper = this;
11557  if (swiper.documentTouchHandlerProceeded) return;
11558  swiper.documentTouchHandlerProceeded = true;
11559  if (swiper.params.touchReleaseOnEdges) {
11560    swiper.el.style.touchAction = 'auto';
11561  }
11562}
11563
11564const events = (swiper, method) => {
11565  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
11566  const {
11567    params,
11568    el,
11569    wrapperEl,
11570    device
11571  } = swiper;
11572  const capture = !!params.nested;
11573  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
11574  const swiperMethod = method;
11575  if (!el || typeof el === 'string') return;
11576
11577  // Touch Events
11578  document[domMethod]('touchstart', swiper.onDocumentTouchStart, {
11579    passive: false,
11580    capture
11581  });
11582  el[domMethod]('touchstart', swiper.onTouchStart, {
11583    passive: false
11584  });
11585  el[domMethod]('pointerdown', swiper.onTouchStart, {
11586    passive: false
11587  });
11588  document[domMethod]('touchmove', swiper.onTouchMove, {
11589    passive: false,
11590    capture
11591  });
11592  document[domMethod]('pointermove', swiper.onTouchMove, {
11593    passive: false,
11594    capture
11595  });
11596  document[domMethod]('touchend', swiper.onTouchEnd, {
11597    passive: true
11598  });
11599  document[domMethod]('pointerup', swiper.onTouchEnd, {
11600    passive: true
11601  });
11602  document[domMethod]('pointercancel', swiper.onTouchEnd, {
11603    passive: true
11604  });
11605  document[domMethod]('touchcancel', swiper.onTouchEnd, {
11606    passive: true
11607  });
11608  document[domMethod]('pointerout', swiper.onTouchEnd, {
11609    passive: true
11610  });
11611  document[domMethod]('pointerleave', swiper.onTouchEnd, {
11612    passive: true
11613  });
11614  document[domMethod]('contextmenu', swiper.onTouchEnd, {
11615    passive: true
11616  });
11617
11618  // Prevent Links Clicks
11619  if (params.preventClicks || params.preventClicksPropagation) {
11620    el[domMethod]('click', swiper.onClick, true);
11621  }
11622  if (params.cssMode) {
11623    wrapperEl[domMethod]('scroll', swiper.onScroll);
11624  }
11625
11626  // Resize handler
11627  if (params.updateOnWindowResize) {
11628    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);
11629  } else {
11630    swiper[swiperMethod]('observerUpdate', onResize, true);
11631  }
11632
11633  // Images loader
11634  el[domMethod]('load', swiper.onLoad, {
11635    capture: true
11636  });
11637};
11638function attachEvents() {
11639  const swiper = this;
11640  const {
11641    params
11642  } = swiper;
11643  swiper.onTouchStart = onTouchStart.bind(swiper);
11644  swiper.onTouchMove = onTouchMove.bind(swiper);
11645  swiper.onTouchEnd = onTouchEnd.bind(swiper);
11646  swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);
11647  if (params.cssMode) {
11648    swiper.onScroll = onScroll.bind(swiper);
11649  }
11650  swiper.onClick = onClick.bind(swiper);
11651  swiper.onLoad = onLoad.bind(swiper);
11652  events(swiper, 'on');
11653}
11654function detachEvents() {
11655  const swiper = this;
11656  events(swiper, 'off');
11657}
11658var events$1 = {
11659  attachEvents,
11660  detachEvents
11661};
11662
11663const isGridEnabled = (swiper, params) => {
11664  return swiper.grid && params.grid && params.grid.rows > 1;
11665};
11666function setBreakpoint() {
11667  const swiper = this;
11668  const {
11669    realIndex,
11670    initialized,
11671    params,
11672    el
11673  } = swiper;
11674  const breakpoints = params.breakpoints;
11675  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;
11676
11677  // Get breakpoint for window width and update parameters
11678  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
11679  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
11680  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
11681  const breakpointParams = breakpointOnlyParams || swiper.originalParams;
11682  const wasMultiRow = isGridEnabled(swiper, params);
11683  const isMultiRow = isGridEnabled(swiper, breakpointParams);
11684  const wasGrabCursor = swiper.params.grabCursor;
11685  const isGrabCursor = breakpointParams.grabCursor;
11686  const wasEnabled = params.enabled;
11687  if (wasMultiRow && !isMultiRow) {
11688    el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);
11689    swiper.emitContainerClasses();
11690  } else if (!wasMultiRow && isMultiRow) {
11691    el.classList.add(`${params.containerModifierClass}grid`);
11692    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {
11693      el.classList.add(`${params.containerModifierClass}grid-column`);
11694    }
11695    swiper.emitContainerClasses();
11696  }
11697  if (wasGrabCursor && !isGrabCursor) {
11698    swiper.unsetGrabCursor();
11699  } else if (!wasGrabCursor && isGrabCursor) {
11700    swiper.setGrabCursor();
11701  }
11702
11703  // Toggle navigation, pagination, scrollbar
11704  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {
11705    if (typeof breakpointParams[prop] === 'undefined') return;
11706    const wasModuleEnabled = params[prop] && params[prop].enabled;
11707    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;
11708    if (wasModuleEnabled && !isModuleEnabled) {
11709      swiper[prop].disable();
11710    }
11711    if (!wasModuleEnabled && isModuleEnabled) {
11712      swiper[prop].enable();
11713    }
11714  });
11715  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
11716  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
11717  const wasLoop = params.loop;
11718  if (directionChanged && initialized) {
11719    swiper.changeDirection();
11720  }
11721  (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(swiper.params, breakpointParams);
11722  const isEnabled = swiper.params.enabled;
11723  const hasLoop = swiper.params.loop;
11724  Object.assign(swiper, {
11725    allowTouchMove: swiper.params.allowTouchMove,
11726    allowSlideNext: swiper.params.allowSlideNext,
11727    allowSlidePrev: swiper.params.allowSlidePrev
11728  });
11729  if (wasEnabled && !isEnabled) {
11730    swiper.disable();
11731  } else if (!wasEnabled && isEnabled) {
11732    swiper.enable();
11733  }
11734  swiper.currentBreakpoint = breakpoint;
11735  swiper.emit('_beforeBreakpoint', breakpointParams);
11736  if (initialized) {
11737    if (needsReLoop) {
11738      swiper.loopDestroy();
11739      swiper.loopCreate(realIndex);
11740      swiper.updateSlides();
11741    } else if (!wasLoop && hasLoop) {
11742      swiper.loopCreate(realIndex);
11743      swiper.updateSlides();
11744    } else if (wasLoop && !hasLoop) {
11745      swiper.loopDestroy();
11746    }
11747  }
11748  swiper.emit('breakpoint', breakpointParams);
11749}
11750
11751function getBreakpoint(breakpoints, base, containerEl) {
11752  if (base === void 0) {
11753    base = 'window';
11754  }
11755  if (!breakpoints || base === 'container' && !containerEl) return undefined;
11756  let breakpoint = false;
11757  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
11758  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;
11759  const points = Object.keys(breakpoints).map(point => {
11760    if (typeof point === 'string' && point.indexOf('@') === 0) {
11761      const minRatio = parseFloat(point.substr(1));
11762      const value = currentHeight * minRatio;
11763      return {
11764        value,
11765        point
11766      };
11767    }
11768    return {
11769      value: point,
11770      point
11771    };
11772  });
11773  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
11774  for (let i = 0; i < points.length; i += 1) {
11775    const {
11776      point,
11777      value
11778    } = points[i];
11779    if (base === 'window') {
11780      if (window.matchMedia(`(min-width: ${value}px)`).matches) {
11781        breakpoint = point;
11782      }
11783    } else if (value <= containerEl.clientWidth) {
11784      breakpoint = point;
11785    }
11786  }
11787  return breakpoint || 'max';
11788}
11789
11790var breakpoints = {
11791  setBreakpoint,
11792  getBreakpoint
11793};
11794
11795function prepareClasses(entries, prefix) {
11796  const resultClasses = [];
11797  entries.forEach(item => {
11798    if (typeof item === 'object') {
11799      Object.keys(item).forEach(classNames => {
11800        if (item[classNames]) {
11801          resultClasses.push(prefix + classNames);
11802        }
11803      });
11804    } else if (typeof item === 'string') {
11805      resultClasses.push(prefix + item);
11806    }
11807  });
11808  return resultClasses;
11809}
11810function addClasses() {
11811  const swiper = this;
11812  const {
11813    classNames,
11814    params,
11815    rtl,
11816    el,
11817    device
11818  } = swiper;
11819  // prettier-ignore
11820  const suffixes = prepareClasses(['initialized', params.direction, {
11821    'free-mode': swiper.params.freeMode && params.freeMode.enabled
11822  }, {
11823    'autoheight': params.autoHeight
11824  }, {
11825    'rtl': rtl
11826  }, {
11827    'grid': params.grid && params.grid.rows > 1
11828  }, {
11829    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'
11830  }, {
11831    'android': device.android
11832  }, {
11833    'ios': device.ios
11834  }, {
11835    'css-mode': params.cssMode
11836  }, {
11837    'centered': params.cssMode && params.centeredSlides
11838  }, {
11839    'watch-progress': params.watchSlidesProgress
11840  }], params.containerModifierClass);
11841  classNames.push(...suffixes);
11842  el.classList.add(...classNames);
11843  swiper.emitContainerClasses();
11844}
11845
11846function removeClasses() {
11847  const swiper = this;
11848  const {
11849    el,
11850    classNames
11851  } = swiper;
11852  if (!el || typeof el === 'string') return;
11853  el.classList.remove(...classNames);
11854  swiper.emitContainerClasses();
11855}
11856
11857var classes = {
11858  addClasses,
11859  removeClasses
11860};
11861
11862function checkOverflow() {
11863  const swiper = this;
11864  const {
11865    isLocked: wasLocked,
11866    params
11867  } = swiper;
11868  const {
11869    slidesOffsetBefore
11870  } = params;
11871  if (slidesOffsetBefore) {
11872    const lastSlideIndex = swiper.slides.length - 1;
11873    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
11874    swiper.isLocked = swiper.size > lastSlideRightEdge;
11875  } else {
11876    swiper.isLocked = swiper.snapGrid.length === 1;
11877  }
11878  if (params.allowSlideNext === true) {
11879    swiper.allowSlideNext = !swiper.isLocked;
11880  }
11881  if (params.allowSlidePrev === true) {
11882    swiper.allowSlidePrev = !swiper.isLocked;
11883  }
11884  if (wasLocked && wasLocked !== swiper.isLocked) {
11885    swiper.isEnd = false;
11886  }
11887  if (wasLocked !== swiper.isLocked) {
11888    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
11889  }
11890}
11891var checkOverflow$1 = {
11892  checkOverflow
11893};
11894
11895var defaults = {
11896  init: true,
11897  direction: 'horizontal',
11898  oneWayMovement: false,
11899  swiperElementNodeName: 'SWIPER-CONTAINER',
11900  touchEventsTarget: 'wrapper',
11901  initialSlide: 0,
11902  speed: 300,
11903  cssMode: false,
11904  updateOnWindowResize: true,
11905  resizeObserver: true,
11906  nested: false,
11907  createElements: false,
11908  eventsPrefix: 'swiper',
11909  enabled: true,
11910  focusableElements: 'input, select, option, textarea, button, video, label',
11911  // Overrides
11912  width: null,
11913  height: null,
11914  //
11915  preventInteractionOnTransition: false,
11916  // ssr
11917  userAgent: null,
11918  url: null,
11919  // To support iOS's swipe-to-go-back gesture (when being used in-app).
11920  edgeSwipeDetection: false,
11921  edgeSwipeThreshold: 20,
11922  // Autoheight
11923  autoHeight: false,
11924  // Set wrapper width
11925  setWrapperSize: false,
11926  // Virtual Translate
11927  virtualTranslate: false,
11928  // Effects
11929  effect: 'slide',
11930  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
11931
11932  // Breakpoints
11933  breakpoints: undefined,
11934  breakpointsBase: 'window',
11935  // Slides grid
11936  spaceBetween: 0,
11937  slidesPerView: 1,
11938  slidesPerGroup: 1,
11939  slidesPerGroupSkip: 0,
11940  slidesPerGroupAuto: false,
11941  centeredSlides: false,
11942  centeredSlidesBounds: false,
11943  slidesOffsetBefore: 0,
11944  // in px
11945  slidesOffsetAfter: 0,
11946  // in px
11947  normalizeSlideIndex: true,
11948  centerInsufficientSlides: false,
11949  // Disable swiper and hide navigation when container not overflow
11950  watchOverflow: true,
11951  // Round length
11952  roundLengths: false,
11953  // Touches
11954  touchRatio: 1,
11955  touchAngle: 45,
11956  simulateTouch: true,
11957  shortSwipes: true,
11958  longSwipes: true,
11959  longSwipesRatio: 0.5,
11960  longSwipesMs: 300,
11961  followFinger: true,
11962  allowTouchMove: true,
11963  threshold: 5,
11964  touchMoveStopPropagation: false,
11965  touchStartPreventDefault: true,
11966  touchStartForcePreventDefault: false,
11967  touchReleaseOnEdges: false,
11968  // Unique Navigation Elements
11969  uniqueNavElements: true,
11970  // Resistance
11971  resistance: true,
11972  resistanceRatio: 0.85,
11973  // Progress
11974  watchSlidesProgress: false,
11975  // Cursor
11976  grabCursor: false,
11977  // Clicks
11978  preventClicks: true,
11979  preventClicksPropagation: true,
11980  slideToClickedSlide: false,
11981  // loop
11982  loop: false,
11983  loopAddBlankSlides: true,
11984  loopAdditionalSlides: 0,
11985  loopPreventsSliding: true,
11986  // rewind
11987  rewind: false,
11988  // Swiping/no swiping
11989  allowSlidePrev: true,
11990  allowSlideNext: true,
11991  swipeHandler: null,
11992  // '.swipe-handler',
11993  noSwiping: true,
11994  noSwipingClass: 'swiper-no-swiping',
11995  noSwipingSelector: null,
11996  // Passive Listeners
11997  passiveListeners: true,
11998  maxBackfaceHiddenSlides: 10,
11999  // NS
12000  containerModifierClass: 'swiper-',
12001  // NEW
12002  slideClass: 'swiper-slide',
12003  slideBlankClass: 'swiper-slide-blank',
12004  slideActiveClass: 'swiper-slide-active',
12005  slideVisibleClass: 'swiper-slide-visible',
12006  slideFullyVisibleClass: 'swiper-slide-fully-visible',
12007  slideNextClass: 'swiper-slide-next',
12008  slidePrevClass: 'swiper-slide-prev',
12009  wrapperClass: 'swiper-wrapper',
12010  lazyPreloaderClass: 'swiper-lazy-preloader',
12011  lazyPreloadPrevNext: 0,
12012  // Callbacks
12013  runCallbacksOnInit: true,
12014  // Internals
12015  _emitClasses: false
12016};
12017
12018function moduleExtendParams(params, allModulesParams) {
12019  return function extendParams(obj) {
12020    if (obj === void 0) {
12021      obj = {};
12022    }
12023    const moduleParamName = Object.keys(obj)[0];
12024    const moduleParams = obj[moduleParamName];
12025    if (typeof moduleParams !== 'object' || moduleParams === null) {
12026      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj);
12027      return;
12028    }
12029    if (params[moduleParamName] === true) {
12030      params[moduleParamName] = {
12031        enabled: true
12032      };
12033    }
12034    if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {
12035      params[moduleParamName].auto = true;
12036    }
12037    if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {
12038      params[moduleParamName].auto = true;
12039    }
12040    if (!(moduleParamName in params && 'enabled' in moduleParams)) {
12041      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj);
12042      return;
12043    }
12044    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
12045      params[moduleParamName].enabled = true;
12046    }
12047    if (!params[moduleParamName]) params[moduleParamName] = {
12048      enabled: false
12049    };
12050    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj);
12051  };
12052}
12053
12054/* eslint no-param-reassign: "off" */
12055const prototypes = {
12056  eventsEmitter,
12057  update,
12058  translate,
12059  transition,
12060  slide,
12061  loop,
12062  grabCursor,
12063  events: events$1,
12064  breakpoints,
12065  checkOverflow: checkOverflow$1,
12066  classes
12067};
12068const extendedDefaults = {};
12069class Swiper {
12070  constructor() {
12071    let el;
12072    let params;
12073    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
12074      args[_key] = arguments[_key];
12075    }
12076    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
12077      params = args[0];
12078    } else {
12079      [el, params] = args;
12080    }
12081    if (!params) params = {};
12082    params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params);
12083    if (el && !params.el) params.el = el;
12084    const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
12085    if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {
12086      const swipers = [];
12087      document.querySelectorAll(params.el).forEach(containerEl => {
12088        const newParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params, {
12089          el: containerEl
12090        });
12091        swipers.push(new Swiper(newParams));
12092      });
12093      // eslint-disable-next-line no-constructor-return
12094      return swipers;
12095    }
12096
12097    // Swiper Instance
12098    const swiper = this;
12099    swiper.__swiper__ = true;
12100    swiper.support = getSupport();
12101    swiper.device = getDevice({
12102      userAgent: params.userAgent
12103    });
12104    swiper.browser = getBrowser();
12105    swiper.eventsListeners = {};
12106    swiper.eventsAnyListeners = [];
12107    swiper.modules = [...swiper.__modules__];
12108    if (params.modules && Array.isArray(params.modules)) {
12109      swiper.modules.push(...params.modules);
12110    }
12111    const allModulesParams = {};
12112    swiper.modules.forEach(mod => {
12113      mod({
12114        params,
12115        swiper,
12116        extendParams: moduleExtendParams(params, allModulesParams),
12117        on: swiper.on.bind(swiper),
12118        once: swiper.once.bind(swiper),
12119        off: swiper.off.bind(swiper),
12120        emit: swiper.emit.bind(swiper)
12121      });
12122    });
12123
12124    // Extend defaults with modules params
12125    const swiperParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, defaults, allModulesParams);
12126
12127    // Extend defaults with passed params
12128    swiper.params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, swiperParams, extendedDefaults, params);
12129    swiper.originalParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, swiper.params);
12130    swiper.passedParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params);
12131
12132    // add event listeners
12133    if (swiper.params && swiper.params.on) {
12134      Object.keys(swiper.params.on).forEach(eventName => {
12135        swiper.on(eventName, swiper.params.on[eventName]);
12136      });
12137    }
12138    if (swiper.params && swiper.params.onAny) {
12139      swiper.onAny(swiper.params.onAny);
12140    }
12141
12142    // Extend Swiper
12143    Object.assign(swiper, {
12144      enabled: swiper.params.enabled,
12145      el,
12146      // Classes
12147      classNames: [],
12148      // Slides
12149      slides: [],
12150      slidesGrid: [],
12151      snapGrid: [],
12152      slidesSizesGrid: [],
12153      // isDirection
12154      isHorizontal() {
12155        return swiper.params.direction === 'horizontal';
12156      },
12157      isVertical() {
12158        return swiper.params.direction === 'vertical';
12159      },
12160      // Indexes
12161      activeIndex: 0,
12162      realIndex: 0,
12163      //
12164      isBeginning: true,
12165      isEnd: false,
12166      // Props
12167      translate: 0,
12168      previousTranslate: 0,
12169      progress: 0,
12170      velocity: 0,
12171      animating: false,
12172      cssOverflowAdjustment() {
12173        // Returns 0 unless `translate` is > 2**23
12174        // Should be subtracted from css values to prevent overflow
12175        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;
12176      },
12177      // Locks
12178      allowSlideNext: swiper.params.allowSlideNext,
12179      allowSlidePrev: swiper.params.allowSlidePrev,
12180      // Touch Events
12181      touchEventsData: {
12182        isTouched: undefined,
12183        isMoved: undefined,
12184        allowTouchCallbacks: undefined,
12185        touchStartTime: undefined,
12186        isScrolling: undefined,
12187        currentTranslate: undefined,
12188        startTranslate: undefined,
12189        allowThresholdMove: undefined,
12190        // Form elements to match
12191        focusableElements: swiper.params.focusableElements,
12192        // Last click time
12193        lastClickTime: 0,
12194        clickTimeout: undefined,
12195        // Velocities
12196        velocities: [],
12197        allowMomentumBounce: undefined,
12198        startMoving: undefined,
12199        pointerId: null,
12200        touchId: null
12201      },
12202      // Clicks
12203      allowClick: true,
12204      // Touches
12205      allowTouchMove: swiper.params.allowTouchMove,
12206      touches: {
12207        startX: 0,
12208        startY: 0,
12209        currentX: 0,
12210        currentY: 0,
12211        diff: 0
12212      },
12213      // Images
12214      imagesToLoad: [],
12215      imagesLoaded: 0
12216    });
12217    swiper.emit('_swiper');
12218
12219    // Init
12220    if (swiper.params.init) {
12221      swiper.init();
12222    }
12223
12224    // Return app instance
12225    // eslint-disable-next-line no-constructor-return
12226    return swiper;
12227  }
12228  getDirectionLabel(property) {
12229    if (this.isHorizontal()) {
12230      return property;
12231    }
12232    // prettier-ignore
12233    return {
12234      'width': 'height',
12235      'margin-top': 'margin-left',
12236      'margin-bottom ': 'margin-right',
12237      'margin-left': 'margin-top',
12238      'margin-right': 'margin-bottom',
12239      'padding-left': 'padding-top',
12240      'padding-right': 'padding-bottom',
12241      'marginRight': 'marginBottom'
12242    }[property];
12243  }
12244  getSlideIndex(slideEl) {
12245    const {
12246      slidesEl,
12247      params
12248    } = this;
12249    const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`);
12250    const firstSlideIndex = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slides[0]);
12251    return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slideEl) - firstSlideIndex;
12252  }
12253  getSlideIndexByData(index) {
12254    return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);
12255  }
12256  recalcSlides() {
12257    const swiper = this;
12258    const {
12259      slidesEl,
12260      params
12261    } = swiper;
12262    swiper.slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`);
12263  }
12264  enable() {
12265    const swiper = this;
12266    if (swiper.enabled) return;
12267    swiper.enabled = true;
12268    if (swiper.params.grabCursor) {
12269      swiper.setGrabCursor();
12270    }
12271    swiper.emit('enable');
12272  }
12273  disable() {
12274    const swiper = this;
12275    if (!swiper.enabled) return;
12276    swiper.enabled = false;
12277    if (swiper.params.grabCursor) {
12278      swiper.unsetGrabCursor();
12279    }
12280    swiper.emit('disable');
12281  }
12282  setProgress(progress, speed) {
12283    const swiper = this;
12284    progress = Math.min(Math.max(progress, 0), 1);
12285    const min = swiper.minTranslate();
12286    const max = swiper.maxTranslate();
12287    const current = (max - min) * progress + min;
12288    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);
12289    swiper.updateActiveIndex();
12290    swiper.updateSlidesClasses();
12291  }
12292  emitContainerClasses() {
12293    const swiper = this;
12294    if (!swiper.params._emitClasses || !swiper.el) return;
12295    const cls = swiper.el.className.split(' ').filter(className => {
12296      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
12297    });
12298    swiper.emit('_containerClasses', cls.join(' '));
12299  }
12300  getSlideClasses(slideEl) {
12301    const swiper = this;
12302    if (swiper.destroyed) return '';
12303    return slideEl.className.split(' ').filter(className => {
12304      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
12305    }).join(' ');
12306  }
12307  emitSlidesClasses() {
12308    const swiper = this;
12309    if (!swiper.params._emitClasses || !swiper.el) return;
12310    const updates = [];
12311    swiper.slides.forEach(slideEl => {
12312      const classNames = swiper.getSlideClasses(slideEl);
12313      updates.push({
12314        slideEl,
12315        classNames
12316      });
12317      swiper.emit('_slideClass', slideEl, classNames);
12318    });
12319    swiper.emit('_slideClasses', updates);
12320  }
12321  slidesPerViewDynamic(view, exact) {
12322    if (view === void 0) {
12323      view = 'current';
12324    }
12325    if (exact === void 0) {
12326      exact = false;
12327    }
12328    const swiper = this;
12329    const {
12330      params,
12331      slides,
12332      slidesGrid,
12333      slidesSizesGrid,
12334      size: swiperSize,
12335      activeIndex
12336    } = swiper;
12337    let spv = 1;
12338    if (typeof params.slidesPerView === 'number') return params.slidesPerView;
12339    if (params.centeredSlides) {
12340      let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;
12341      let breakLoop;
12342      for (let i = activeIndex + 1; i < slides.length; i += 1) {
12343        if (slides[i] && !breakLoop) {
12344          slideSize += Math.ceil(slides[i].swiperSlideSize);
12345          spv += 1;
12346          if (slideSize > swiperSize) breakLoop = true;
12347        }
12348      }
12349      for (let i = activeIndex - 1; i >= 0; i -= 1) {
12350        if (slides[i] && !breakLoop) {
12351          slideSize += slides[i].swiperSlideSize;
12352          spv += 1;
12353          if (slideSize > swiperSize) breakLoop = true;
12354        }
12355      }
12356    } else {
12357      // eslint-disable-next-line
12358      if (view === 'current') {
12359        for (let i = activeIndex + 1; i < slides.length; i += 1) {
12360          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;
12361          if (slideInView) {
12362            spv += 1;
12363          }
12364        }
12365      } else {
12366        // previous
12367        for (let i = activeIndex - 1; i >= 0; i -= 1) {
12368          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;
12369          if (slideInView) {
12370            spv += 1;
12371          }
12372        }
12373      }
12374    }
12375    return spv;
12376  }
12377  update() {
12378    const swiper = this;
12379    if (!swiper || swiper.destroyed) return;
12380    const {
12381      snapGrid,
12382      params
12383    } = swiper;
12384    // Breakpoints
12385    if (params.breakpoints) {
12386      swiper.setBreakpoint();
12387    }
12388    [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => {
12389      if (imageEl.complete) {
12390        processLazyPreloader(swiper, imageEl);
12391      }
12392    });
12393    swiper.updateSize();
12394    swiper.updateSlides();
12395    swiper.updateProgress();
12396    swiper.updateSlidesClasses();
12397    function setTranslate() {
12398      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
12399      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
12400      swiper.setTranslate(newTranslate);
12401      swiper.updateActiveIndex();
12402      swiper.updateSlidesClasses();
12403    }
12404    let translated;
12405    if (params.freeMode && params.freeMode.enabled && !params.cssMode) {
12406      setTranslate();
12407      if (params.autoHeight) {
12408        swiper.updateAutoHeight();
12409      }
12410    } else {
12411      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {
12412        const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;
12413        translated = swiper.slideTo(slides.length - 1, 0, false, true);
12414      } else {
12415        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
12416      }
12417      if (!translated) {
12418        setTranslate();
12419      }
12420    }
12421    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
12422      swiper.checkOverflow();
12423    }
12424    swiper.emit('update');
12425  }
12426  changeDirection(newDirection, needUpdate) {
12427    if (needUpdate === void 0) {
12428      needUpdate = true;
12429    }
12430    const swiper = this;
12431    const currentDirection = swiper.params.direction;
12432    if (!newDirection) {
12433      // eslint-disable-next-line
12434      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
12435    }
12436    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
12437      return swiper;
12438    }
12439    swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);
12440    swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);
12441    swiper.emitContainerClasses();
12442    swiper.params.direction = newDirection;
12443    swiper.slides.forEach(slideEl => {
12444      if (newDirection === 'vertical') {
12445        slideEl.style.width = '';
12446      } else {
12447        slideEl.style.height = '';
12448      }
12449    });
12450    swiper.emit('changeDirection');
12451    if (needUpdate) swiper.update();
12452    return swiper;
12453  }
12454  changeLanguageDirection(direction) {
12455    const swiper = this;
12456    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;
12457    swiper.rtl = direction === 'rtl';
12458    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;
12459    if (swiper.rtl) {
12460      swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);
12461      swiper.el.dir = 'rtl';
12462    } else {
12463      swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);
12464      swiper.el.dir = 'ltr';
12465    }
12466    swiper.update();
12467  }
12468  mount(element) {
12469    const swiper = this;
12470    if (swiper.mounted) return true;
12471
12472    // Find el
12473    let el = element || swiper.params.el;
12474    if (typeof el === 'string') {
12475      el = document.querySelector(el);
12476    }
12477    if (!el) {
12478      return false;
12479    }
12480    el.swiper = swiper;
12481    if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {
12482      swiper.isElement = true;
12483    }
12484    const getWrapperSelector = () => {
12485      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;
12486    };
12487    const getWrapper = () => {
12488      if (el && el.shadowRoot && el.shadowRoot.querySelector) {
12489        const res = el.shadowRoot.querySelector(getWrapperSelector());
12490        // Children needs to return slot items
12491        return res;
12492      }
12493      return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, getWrapperSelector())[0];
12494    };
12495    // Find Wrapper
12496    let wrapperEl = getWrapper();
12497    if (!wrapperEl && swiper.params.createElements) {
12498      wrapperEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.wrapperClass);
12499      el.append(wrapperEl);
12500      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, `.${swiper.params.slideClass}`).forEach(slideEl => {
12501        wrapperEl.append(slideEl);
12502      });
12503    }
12504    Object.assign(swiper, {
12505      el,
12506      wrapperEl,
12507      slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,
12508      hostEl: swiper.isElement ? el.parentNode.host : el,
12509      mounted: true,
12510      // RTL
12511      rtl: el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'direction') === 'rtl',
12512      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'direction') === 'rtl'),
12513      wrongRTL: (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(wrapperEl, 'display') === '-webkit-box'
12514    });
12515    return true;
12516  }
12517  init(el) {
12518    const swiper = this;
12519    if (swiper.initialized) return swiper;
12520    const mounted = swiper.mount(el);
12521    if (mounted === false) return swiper;
12522    swiper.emit('beforeInit');
12523
12524    // Set breakpoint
12525    if (swiper.params.breakpoints) {
12526      swiper.setBreakpoint();
12527    }
12528
12529    // Add Classes
12530    swiper.addClasses();
12531
12532    // Update size
12533    swiper.updateSize();
12534
12535    // Update slides
12536    swiper.updateSlides();
12537    if (swiper.params.watchOverflow) {
12538      swiper.checkOverflow();
12539    }
12540
12541    // Set Grab Cursor
12542    if (swiper.params.grabCursor && swiper.enabled) {
12543      swiper.setGrabCursor();
12544    }
12545
12546    // Slide To Initial Slide
12547    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
12548      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);
12549    } else {
12550      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
12551    }
12552
12553    // Create loop
12554    if (swiper.params.loop) {
12555      swiper.loopCreate();
12556    }
12557
12558    // Attach events
12559    swiper.attachEvents();
12560    const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')];
12561    if (swiper.isElement) {
12562      lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]'));
12563    }
12564    lazyElements.forEach(imageEl => {
12565      if (imageEl.complete) {
12566        processLazyPreloader(swiper, imageEl);
12567      } else {
12568        imageEl.addEventListener('load', e => {
12569          processLazyPreloader(swiper, e.target);
12570        });
12571      }
12572    });
12573    preload(swiper);
12574
12575    // Init Flag
12576    swiper.initialized = true;
12577    preload(swiper);
12578
12579    // Emit
12580    swiper.emit('init');
12581    swiper.emit('afterInit');
12582    return swiper;
12583  }
12584  destroy(deleteInstance, cleanStyles) {
12585    if (deleteInstance === void 0) {
12586      deleteInstance = true;
12587    }
12588    if (cleanStyles === void 0) {
12589      cleanStyles = true;
12590    }
12591    const swiper = this;
12592    const {
12593      params,
12594      el,
12595      wrapperEl,
12596      slides
12597    } = swiper;
12598    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
12599      return null;
12600    }
12601    swiper.emit('beforeDestroy');
12602
12603    // Init Flag
12604    swiper.initialized = false;
12605
12606    // Detach events
12607    swiper.detachEvents();
12608
12609    // Destroy loop
12610    if (params.loop) {
12611      swiper.loopDestroy();
12612    }
12613
12614    // Cleanup styles
12615    if (cleanStyles) {
12616      swiper.removeClasses();
12617      if (el && typeof el !== 'string') {
12618        el.removeAttribute('style');
12619      }
12620      if (wrapperEl) {
12621        wrapperEl.removeAttribute('style');
12622      }
12623      if (slides && slides.length) {
12624        slides.forEach(slideEl => {
12625          slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);
12626          slideEl.removeAttribute('style');
12627          slideEl.removeAttribute('data-swiper-slide-index');
12628        });
12629      }
12630    }
12631    swiper.emit('destroy');
12632
12633    // Detach emitter events
12634    Object.keys(swiper.eventsListeners).forEach(eventName => {
12635      swiper.off(eventName);
12636    });
12637    if (deleteInstance !== false) {
12638      if (swiper.el && typeof swiper.el !== 'string') {
12639        swiper.el.swiper = null;
12640      }
12641      (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(swiper);
12642    }
12643    swiper.destroyed = true;
12644    return null;
12645  }
12646  static extendDefaults(newDefaults) {
12647    (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(extendedDefaults, newDefaults);
12648  }
12649  static get extendedDefaults() {
12650    return extendedDefaults;
12651  }
12652  static get defaults() {
12653    return defaults;
12654  }
12655  static installModule(mod) {
12656    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];
12657    const modules = Swiper.prototype.__modules__;
12658    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {
12659      modules.push(mod);
12660    }
12661  }
12662  static use(module) {
12663    if (Array.isArray(module)) {
12664      module.forEach(m => Swiper.installModule(m));
12665      return Swiper;
12666    }
12667    Swiper.installModule(module);
12668    return Swiper;
12669  }
12670}
12671Object.keys(prototypes).forEach(prototypeGroup => {
12672  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {
12673    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
12674  });
12675});
12676Swiper.use([Resize, Observer]);
12677
12678
12679
12680
12681/***/ }),
12682
vendor: 12,739 bytes, lines 12683-13036
12683/***/ "./node_modules/swiper/shared/utils.mjs":
12684/*!**********************************************!*\
12685  !*** ./node_modules/swiper/shared/utils.mjs ***!
12686  \**********************************************/
12687/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12688
12689"use strict";
12690__webpack_require__.r(__webpack_exports__);
12691/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12692/* harmony export */   a: function() { return /* binding */ elementParents; },
12693/* harmony export */   b: function() { return /* binding */ elementOffset; },
12694/* harmony export */   c: function() { return /* binding */ createElement; },
12695/* harmony export */   d: function() { return /* binding */ now; },
12696/* harmony export */   e: function() { return /* binding */ elementChildren; },
12697/* harmony export */   f: function() { return /* binding */ elementOuterSize; },
12698/* harmony export */   g: function() { return /* binding */ getSlideTransformEl; },
12699/* harmony export */   h: function() { return /* binding */ elementIndex; },
12700/* harmony export */   i: function() { return /* binding */ classesToTokens; },
12701/* harmony export */   j: function() { return /* binding */ getTranslate; },
12702/* harmony export */   k: function() { return /* binding */ elementTransitionEnd; },
12703/* harmony export */   l: function() { return /* binding */ isObject; },
12704/* harmony export */   m: function() { return /* binding */ makeElementsArray; },
12705/* harmony export */   n: function() { return /* binding */ nextTick; },
12706/* harmony export */   o: function() { return /* binding */ getRotateFix; },
12707/* harmony export */   p: function() { return /* binding */ elementStyle; },
12708/* harmony export */   q: function() { return /* binding */ elementNextAll; },
12709/* harmony export */   r: function() { return /* binding */ elementPrevAll; },
12710/* harmony export */   s: function() { return /* binding */ setCSSProperty; },
12711/* harmony export */   t: function() { return /* binding */ animateCSSModeScroll; },
12712/* harmony export */   u: function() { return /* binding */ showWarning; },
12713/* harmony export */   v: function() { return /* binding */ elementIsChildOf; },
12714/* harmony export */   w: function() { return /* binding */ extend; },
12715/* harmony export */   x: function() { return /* binding */ deleteProps; }
12716/* harmony export */ });
12717/* harmony import */ var _ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs");
12718
12719
12720function classesToTokens(classes) {
12721  if (classes === void 0) {
12722    classes = '';
12723  }
12724  return classes.trim().split(' ').filter(c => !!c.trim());
12725}
12726
12727function deleteProps(obj) {
12728  const object = obj;
12729  Object.keys(object).forEach(key => {
12730    try {
12731      object[key] = null;
12732    } catch (e) {
12733      // no getter for object
12734    }
12735    try {
12736      delete object[key];
12737    } catch (e) {
12738      // something got wrong
12739    }
12740  });
12741}
12742function nextTick(callback, delay) {
12743  if (delay === void 0) {
12744    delay = 0;
12745  }
12746  return setTimeout(callback, delay);
12747}
12748function now() {
12749  return Date.now();
12750}
12751function getComputedStyle(el) {
12752  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
12753  let style;
12754  if (window.getComputedStyle) {
12755    style = window.getComputedStyle(el, null);
12756  }
12757  if (!style && el.currentStyle) {
12758    style = el.currentStyle;
12759  }
12760  if (!style) {
12761    style = el.style;
12762  }
12763  return style;
12764}
12765function getTranslate(el, axis) {
12766  if (axis === void 0) {
12767    axis = 'x';
12768  }
12769  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
12770  let matrix;
12771  let curTransform;
12772  let transformMatrix;
12773  const curStyle = getComputedStyle(el);
12774  if (window.WebKitCSSMatrix) {
12775    curTransform = curStyle.transform || curStyle.webkitTransform;
12776    if (curTransform.split(',').length > 6) {
12777      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');
12778    }
12779    // Some old versions of Webkit choke when 'none' is passed; pass
12780    // empty string instead in this case
12781    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
12782  } else {
12783    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
12784    matrix = transformMatrix.toString().split(',');
12785  }
12786  if (axis === 'x') {
12787    // Latest Chrome and webkits Fix
12788    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;
12789    // Crazy IE10 Matrix
12790    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
12791    // Normal Browsers
12792    else curTransform = parseFloat(matrix[4]);
12793  }
12794  if (axis === 'y') {
12795    // Latest Chrome and webkits Fix
12796    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;
12797    // Crazy IE10 Matrix
12798    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
12799    // Normal Browsers
12800    else curTransform = parseFloat(matrix[5]);
12801  }
12802  return curTransform || 0;
12803}
12804function isObject(o) {
12805  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';
12806}
12807function isNode(node) {
12808  // eslint-disable-next-line
12809  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {
12810    return node instanceof HTMLElement;
12811  }
12812  return node && (node.nodeType === 1 || node.nodeType === 11);
12813}
12814function extend() {
12815  const to = Object(arguments.length <= 0 ? undefined : arguments[0]);
12816  const noExtend = ['__proto__', 'constructor', 'prototype'];
12817  for (let i = 1; i < arguments.length; i += 1) {
12818    const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
12819    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {
12820      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);
12821      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
12822        const nextKey = keysArray[nextIndex];
12823        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
12824        if (desc !== undefined && desc.enumerable) {
12825          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
12826            if (nextSource[nextKey].__swiper__) {
12827              to[nextKey] = nextSource[nextKey];
12828            } else {
12829              extend(to[nextKey], nextSource[nextKey]);
12830            }
12831          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
12832            to[nextKey] = {};
12833            if (nextSource[nextKey].__swiper__) {
12834              to[nextKey] = nextSource[nextKey];
12835            } else {
12836              extend(to[nextKey], nextSource[nextKey]);
12837            }
12838          } else {
12839            to[nextKey] = nextSource[nextKey];
12840          }
12841        }
12842      }
12843    }
12844  }
12845  return to;
12846}
12847function setCSSProperty(el, varName, varValue) {
12848  el.style.setProperty(varName, varValue);
12849}
12850function animateCSSModeScroll(_ref) {
12851  let {
12852    swiper,
12853    targetPosition,
12854    side
12855  } = _ref;
12856  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
12857  const startPosition = -swiper.translate;
12858  let startTime = null;
12859  let time;
12860  const duration = swiper.params.speed;
12861  swiper.wrapperEl.style.scrollSnapType = 'none';
12862  window.cancelAnimationFrame(swiper.cssModeFrameID);
12863  const dir = targetPosition > startPosition ? 'next' : 'prev';
12864  const isOutOfBound = (current, target) => {
12865    return dir === 'next' && current >= target || dir === 'prev' && current <= target;
12866  };
12867  const animate = () => {
12868    time = new Date().getTime();
12869    if (startTime === null) {
12870      startTime = time;
12871    }
12872    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
12873    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
12874    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);
12875    if (isOutOfBound(currentPosition, targetPosition)) {
12876      currentPosition = targetPosition;
12877    }
12878    swiper.wrapperEl.scrollTo({
12879      [side]: currentPosition
12880    });
12881    if (isOutOfBound(currentPosition, targetPosition)) {
12882      swiper.wrapperEl.style.overflow = 'hidden';
12883      swiper.wrapperEl.style.scrollSnapType = '';
12884      setTimeout(() => {
12885        swiper.wrapperEl.style.overflow = '';
12886        swiper.wrapperEl.scrollTo({
12887          [side]: currentPosition
12888        });
12889      });
12890      window.cancelAnimationFrame(swiper.cssModeFrameID);
12891      return;
12892    }
12893    swiper.cssModeFrameID = window.requestAnimationFrame(animate);
12894  };
12895  animate();
12896}
12897function getSlideTransformEl(slideEl) {
12898  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;
12899}
12900function elementChildren(element, selector) {
12901  if (selector === void 0) {
12902    selector = '';
12903  }
12904  const children = [...element.children];
12905  if (element instanceof HTMLSlotElement) {
12906    children.push(...element.assignedElements());
12907  }
12908  if (!selector) {
12909    return children;
12910  }
12911  return children.filter(el => el.matches(selector));
12912}
12913function elementIsChildOf(el, parent) {
12914  const isChild = parent.contains(el);
12915  if (!isChild && parent instanceof HTMLSlotElement) {
12916    const children = [...parent.assignedElements()];
12917    return children.includes(el);
12918  }
12919  return isChild;
12920}
12921function showWarning(text) {
12922  try {
12923    console.warn(text);
12924    return;
12925  } catch (err) {
12926    // err
12927  }
12928}
12929function createElement(tag, classes) {
12930  if (classes === void 0) {
12931    classes = [];
12932  }
12933  const el = document.createElement(tag);
12934  el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));
12935  return el;
12936}
12937function elementOffset(el) {
12938  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
12939  const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)();
12940  const box = el.getBoundingClientRect();
12941  const body = document.body;
12942  const clientTop = el.clientTop || body.clientTop || 0;
12943  const clientLeft = el.clientLeft || body.clientLeft || 0;
12944  const scrollTop = el === window ? window.scrollY : el.scrollTop;
12945  const scrollLeft = el === window ? window.scrollX : el.scrollLeft;
12946  return {
12947    top: box.top + scrollTop - clientTop,
12948    left: box.left + scrollLeft - clientLeft
12949  };
12950}
12951function elementPrevAll(el, selector) {
12952  const prevEls = [];
12953  while (el.previousElementSibling) {
12954    const prev = el.previousElementSibling; // eslint-disable-line
12955    if (selector) {
12956      if (prev.matches(selector)) prevEls.push(prev);
12957    } else prevEls.push(prev);
12958    el = prev;
12959  }
12960  return prevEls;
12961}
12962function elementNextAll(el, selector) {
12963  const nextEls = [];
12964  while (el.nextElementSibling) {
12965    const next = el.nextElementSibling; // eslint-disable-line
12966    if (selector) {
12967      if (next.matches(selector)) nextEls.push(next);
12968    } else nextEls.push(next);
12969    el = next;
12970  }
12971  return nextEls;
12972}
12973function elementStyle(el, prop) {
12974  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
12975  return window.getComputedStyle(el, null).getPropertyValue(prop);
12976}
12977function elementIndex(el) {
12978  let child = el;
12979  let i;
12980  if (child) {
12981    i = 0;
12982    // eslint-disable-next-line
12983    while ((child = child.previousSibling) !== null) {
12984      if (child.nodeType === 1) i += 1;
12985    }
12986    return i;
12987  }
12988  return undefined;
12989}
12990function elementParents(el, selector) {
12991  const parents = []; // eslint-disable-line
12992  let parent = el.parentElement; // eslint-disable-line
12993  while (parent) {
12994    if (selector) {
12995      if (parent.matches(selector)) parents.push(parent);
12996    } else {
12997      parents.push(parent);
12998    }
12999    parent = parent.parentElement;
13000  }
13001  return parents;
13002}
13003function elementTransitionEnd(el, callback) {
13004  function fireCallBack(e) {
13005    if (e.target !== el) return;
13006    callback.call(el, e);
13007    el.removeEventListener('transitionend', fireCallBack);
13008  }
13009  if (callback) {
13010    el.addEventListener('transitionend', fireCallBack);
13011  }
13012}
13013function elementOuterSize(el, size, includeMargins) {
13014  const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)();
13015  if (includeMargins) {
13016    return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));
13017  }
13018  return el.offsetWidth;
13019}
13020function makeElementsArray(el) {
13021  return (Array.isArray(el) ? el : [el]).filter(e => !!e);
13022}
13023function getRotateFix(swiper) {
13024  return v => {
13025    if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {
13026      return v + 0.001;
13027    }
13028    return v;
13029  };
13030}
13031
13032
13033
13034
13035/***/ }),
13036
vendor: 1,140 bytes, lines 13037-13065
13037/***/ "./node_modules/swiper/swiper.mjs":
13038/*!****************************************!*\
13039  !*** ./node_modules/swiper/swiper.mjs ***!
13040  \****************************************/
13041/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13042
13043"use strict";
13044__webpack_require__.r(__webpack_exports__);
13045/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13046/* harmony export */   Swiper: function() { return /* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S; },
13047/* harmony export */   "default": function() { return /* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S; }
13048/* harmony export */ });
13049/* harmony import */ var _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shared/swiper-core.mjs */ "./node_modules/swiper/shared/swiper-core.mjs");
13050/**
13051 * Swiper 11.1.14
13052 * Most modern mobile touch slider and framework with hardware accelerated transitions
13053 * https://swiperjs.com
13054 *
13055 * Copyright 2014-2024 Vladimir Kharlampidi
13056 *
13057 * Released under the MIT License
13058 *
13059 * Released on: September 12, 2024
13060 */
13061
13062
13063
13064
13065/***/ })
vendor: 4,783 bytes, lines 13065-13162
13065
13066
13067/******/ 	});
13068/************************************************************************/
13069/******/ 	// The module cache
13070/******/ 	var __webpack_module_cache__ = {};
13071/******/ 	
13072/******/ 	// The require function
13073/******/ 	function __webpack_require__(moduleId) {
13074/******/ 		// Check if module is in cache
13075/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
13076/******/ 		if (cachedModule !== undefined) {
13077/******/ 			return cachedModule.exports;
13078/******/ 		}
13079/******/ 		// Create a new module (and put it into the cache)
13080/******/ 		var module = __webpack_module_cache__[moduleId] = {
13081/******/ 			// no module.id needed
13082/******/ 			// no module.loaded needed
13083/******/ 			exports: {}
13084/******/ 		};
13085/******/ 	
13086/******/ 		// Execute the module function
13087/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
13088/******/ 	
13089/******/ 		// Return the exports of the module
13090/******/ 		return module.exports;
13091/******/ 	}
13092/******/ 	
13093/************************************************************************/
13094/******/ 	/* webpack/runtime/compat get default export */
13095/******/ 	!function() {
13096/******/ 		// getDefaultExport function for compatibility with non-harmony modules
13097/******/ 		__webpack_require__.n = function(module) {
13098/******/ 			var getter = module && module.__esModule ?
13099/******/ 				function() { return module['default']; } :
13100/******/ 				function() { return module; };
13101/******/ 			__webpack_require__.d(getter, { a: getter });
13102/******/ 			return getter;
13103/******/ 		};
13104/******/ 	}();
13105/******/ 	
13106/******/ 	/* webpack/runtime/define property getters */
13107/******/ 	!function() {
13108/******/ 		// define getter functions for harmony exports
13109/******/ 		__webpack_require__.d = function(exports, definition) {
13110/******/ 			for(var key in definition) {
13111/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
13112/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
13113/******/ 				}
13114/******/ 			}
13115/******/ 		};
13116/******/ 	}();
13117/******/ 	
13118/******/ 	/* webpack/runtime/global */
13119/******/ 	!function() {
13120/******/ 		__webpack_require__.g = (function() {
13121/******/ 			if (typeof globalThis === 'object') return globalThis;
13122/******/ 			try {
13123/******/ 				return this || new Function('return this')();
13124/******/ 			} catch (e) {
13125/******/ 				if (typeof window === 'object') return window;
13126/******/ 			}
13127/******/ 		})();
13128/******/ 	}();
13129/******/ 	
13130/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
13131/******/ 	!function() {
13132/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
13133/******/ 	}();
13134/******/ 	
13135/******/ 	/* webpack/runtime/make namespace object */
13136/******/ 	!function() {
13137/******/ 		// define __esModule on exports
13138/******/ 		__webpack_require__.r = function(exports) {
13139/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
13140/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
13141/******/ 			}
13142/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
13143/******/ 		};
13144/******/ 	}();
13145/******/ 	
13146/************************************************************************/
13147var __webpack_exports__ = {};
13148// This entry need to be wrapped in an IIFE because it need to be in strict mode.
13149!function() {
13150"use strict";
13151/*!************************!*\
13152  !*** ./src/js/main.js ***!
13153  \************************/
13154__webpack_require__.r(__webpack_exports__);
13155/* harmony import */ var _sass_main_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../sass/main.scss */ "./src/sass/main.scss");
13156/* harmony import */ var _helpers_activeTrigger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers/activeTrigger */ "./src/js/helpers/activeTrigger.js");
13157/* harmony import */ var _components_siteNav__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/siteNav */ "./src/js/components/siteNav/index.js");
13158/* harmony import */ var _components_customSelect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/customSelect */ "./src/js/components/customSelect/index.js");
13159/* harmony import */ var _components_pathways__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/pathways */ "./src/js/components/pathways/index.js");
13160/* harmony import */ var _components_teaserTabs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/teaserTabs */ "./src/js/components/teaserTabs/index.js");
13161/* harmony import */ var _components_profilePopup__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/profilePopup */ "./src/js/components/profilePopup/index.js");
13162/* harmony import */ var _components_alerts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/
13162alerts */ "./src/js/components/alerts/index.js");
13163/* harmony import */ var _components_loadMore__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/loadMore */ "./src/js/components/loadMore/index.js");
13164/* harmony import */ var _components_programFinder__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/programFinder */ "./src/js/components/programFinder/index.js");
13165/* harmony import */ var _components_swiper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/swiper */ "./src/js/components/swiper/index.js");
13166/* harmony import */ var _components_acalog_acalog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/acalog/acalog */ "./src/js/components/acalog/acalog.js");
13167/* harmony import */ var _components_videos__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/videos */ "./src/js/components/videos/index.js");
13168/* harmony import */ var _components_filters__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/filters */ "./src/js/components/filters/index.js");
13169/* harmony import */ var _components_officeFilters__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/officeFilters */ "./src/js/components/officeFilters/index.js");
13170/* harmony import */ var _components_firstSection__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/firstSection */ "./src/js/components/firstSection/index.js");
13171/* harmony import */ var _components_utilities_radioUncheck__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./components/utilities/radioUncheck */ "./src/js/components/utilities/radioUncheck.js");
13172// Import scripts
13173// Styles
13174
13175
13176// Import asset images
13177// import './images';
13178
13179// Import javascript
13180// import debounce from './helpers/debounce';
13181
13182
13183
13184
13185
13186
13187
13188
13189
13190
13191
13192
13193
13194
13195
13196
13197jQuery(document).ready(function () {
13198  window.addEventListener('resize', () => {
13199    let vh = window.innerHeight * 0.01;
13200    document.documentElement.style.setProperty('--vh', `${vh}px`);
13201  });
13202  (0,_helpers_activeTrigger__WEBPACK_IMPORTED_MODULE_1__["default"])();
13203  (0,_components_siteNav__WEBPACK_IMPORTED_MODULE_2__["default"])(jQuery);
13204  (0,_components_customSelect__WEBPACK_IMPORTED_MODULE_3__["default"])(jQuery);
13205  (0,_components_pathways__WEBPACK_IMPORTED_MODULE_4__["default"])(jQuery);
13206  (0,_components_teaserTabs__WEBPACK_IMPORTED_MODULE_5__["default"])(jQuery);
13207  (0,_components_profilePopup__WEBPACK_IMPORTED_MODULE_6__["default"])(jQuery);
13208  (0,_components_alerts__WEBPACK_IMPORTED_MODULE_7__["default"])(jQuery);
13209  (0,_components_loadMore__WEBPACK_IMPORTED_MODULE_8__["default"])(jQuery);
13210  (0,_components_programFinder__WEBPACK_IMPORTED_MODULE_9__["default"])(jQuery);
13211  (0,_components_swiper__WEBPACK_IMPORTED_MODULE_10__["default"])();
13212  (0,_components_videos__WEBPACK_IMPORTED_MODULE_12__["default"])();
13213  (0,_components_filters__WEBPACK_IMPORTED_MODULE_13__["default"])(jQuery);
13214  (0,_components_officeFilters__WEBPACK_IMPORTED_MODULE_14__["default"])(jQuery);
13215  (0,_components_firstSection__WEBPACK_IMPORTED_MODULE_15__["default"])(jQuery);
13216  (0,_components_utilities_radioUncheck__WEBPACK_IMPORTED_MODULE_16__.initializeRadioButtons)();
13217});
13218}();
13219/******/ })()
13220;
13221//# sourceMappingURL=main.js.map

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.