PageSourceSearch

https://www.columbiatnpowersports.com/DesktopModules/Dx1.BrpInventory/dist/brpinventory.bundle.js?cdv=1723

js columbiatnpowersports.com collected 2026-09-30 17:52:03 UTC 595,617 bytes, 14,174 lines download raw bytes

vendor: 5,606 bytes, lines 1-172
1var Dx1BrpInventory;
2/******/ (function() { // webpackBootstrap
3/******/ 	var __webpack_modules__ = ({
4
5/***/ 669:
6/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
7
8module.exports = __webpack_require__(609);
9
10/***/ }),
11
12/***/ 448:
13/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
14
15"use strict";
16
17
18var utils = __webpack_require__(867);
19var settle = __webpack_require__(26);
20var cookies = __webpack_require__(372);
21var buildURL = __webpack_require__(327);
22var buildFullPath = __webpack_require__(97);
23var parseHeaders = __webpack_require__(109);
24var isURLSameOrigin = __webpack_require__(985);
25var transitionalDefaults = __webpack_require__(874);
26var AxiosError = __webpack_require__(648);
27var CanceledError = __webpack_require__(644);
28var parseProtocol = __webpack_require__(205);
29
30module.exports = function xhrAdapter(config) {
31  return new Promise(function dispatchXhrRequest(resolve, reject) {
32    var requestData = config.data;
33    var requestHeaders = config.headers;
34    var responseType = config.responseType;
35    var onCanceled;
36    function done() {
37      if (config.cancelToken) {
38        config.cancelToken.unsubscribe(onCanceled);
39      }
40
41      if (config.signal) {
42        config.signal.removeEventListener('abort', onCanceled);
43      }
44    }
45
46    if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {
47      delete requestHeaders['Content-Type']; // Let the browser set it
48    }
49
50    var request = new XMLHttpRequest();
51
52    // HTTP basic authentication
53    if (config.auth) {
54      var username = config.auth.username || '';
55      var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';
56      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);
57    }
58
59    var fullPath = buildFullPath(config.baseURL, config.url);
60
61    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);
62
63    // Set the request timeout in MS
64    request.timeout = config.timeout;
65
66    function onloadend() {
67      if (!request) {
68        return;
69      }
70      // Prepare the response
71      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
72      var responseData = !responseType || responseType === 'text' ||  responseType === 'json' ?
73        request.responseText : request.response;
74      var response = {
75        data: responseData,
76        status: request.status,
77        statusText: request.statusText,
78        headers: responseHeaders,
79        config: config,
80        request: request
81      };
82
83      settle(function _resolve(value) {
84        resolve(value);
85        done();
86      }, function _reject(err) {
87        reject(err);
88        done();
89      }, response);
90
91      // Clean up request
92      request = null;
93    }
94
95    if ('onloadend' in request) {
96      // Use onloadend if available
97      request.onloadend = onloadend;
98    } else {
99      // Listen for ready state to emulate onloadend
100      request.onreadystatechange = function handleLoad() {
101        if (!request || request.readyState !== 4) {
102          return;
103        }
104
105        // The request errored out and we didn't get a response, this will be
106        // handled by onerror instead
107        // With one exception: request that using file: protocol, most browsers
108        // will return status as 0 even though it's a successful request
109        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
110          return;
111        }
112        // readystate handler is calling before onerror or ontimeout handlers,
113        // so we should call onloadend on the next 'tick'
114        setTimeout(onloadend);
115      };
116    }
117
118    // Handle browser request cancellation (as opposed to a manual cancellation)
119    request.onabort = function handleAbort() {
120      if (!request) {
121        return;
122      }
123
124      reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));
125
126      // Clean up request
127      request = null;
128    };
129
130    // Handle low level network errors
131    request.onerror = function handleError() {
132      // Real errors are hidden from us by the browser
133      // onerror should only fire if it's a network error
134      reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));
135
136      // Clean up request
137      request = null;
138    };
139
140    // Handle timeout
141    request.ontimeout = function handleTimeout() {
142      var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';
143      var transitional = config.transitional || transitionalDefaults;
144      if (config.timeoutErrorMessage) {
145        timeoutErrorMessage = config.timeoutErrorMessage;
146      }
147      reject(new AxiosError(
148        timeoutErrorMessage,
149        transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,
150        config,
151        request));
152
153      // Clean up request
154      request = null;
155    };
156
157    // Add xsrf header
158    // This is only done if running in a standard browser environment.
159    // Specifically not if we're in a web worker, or react-native.
160    if (utils.isStandardBrowserEnv()) {
161      // Add xsrf header
162      var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?
163        cookies.read(config.xsrfCookieName) :
164        undefined;
165
166      if (xsrfValue) {
167        requestHeaders[config.xsrfHeaderName] = xsrfValue;
168      }
169    }
170
171    // Add headers to the request
172    if ('setRequestHeader' in request) {
173      utils.forEach(requestHeaders, function setRequestHeader(val, key) {
174        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {
175          // Remove Content-Type if data is undefined
176          delete requestHeaders[key];
177        } else {
178          // Otherwise add header to the request
179          request.setRequestHeader(key, val);
180        }
181      });
182    }
183
184    // Add withCredentials to request if needed
185    if (!utils.isUndefined(config.withCredentials)) {
186      request.withCredentials = !!config.withCredentials;
187    }
188
189    // Add responseType to request if needed
190    if (responseType && responseType !== 'json') {
191      request.responseType = config.responseType;
192    }
193
194    // Handle progress if needed
195    if (typeof config.onDownloadProgress === 'function') {
196      request.addEventListener('progress', config.onDownloadProgress);
197    }
198
199    // Not all browsers support upload events
200    if (typeof config.onUploadProgress === 'function' && request.upload) {
201      request.upload.addEventListener('progress', config.onUploadProgress);
202    }
203
204    if (config.cancelToken || config.signal) {
205      // Handle cancellation
206      // eslint-disable-next-line func-names
207      onCanceled = function(cancel) {
208        if (!request) {
209          return;
210        }
211        reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);
212        request.abort();
213        request = null;
214      };
215
216      config.cancelToken && config.cancelToken.subscribe(onCanceled);
217      if (config.signal) {
218        config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);
219      }
220    }
221
222    if (!requestData) {
223      requestData = null;
224    }
225
226    var protocol = parseProtocol(fullPath);
227
228    if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {
229      reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));
230      return;
231    }
232
233
234    // Send the request
235    request.send(requestData);
236  });
237};
238
239
240/***/ }),
241
242/***/ 609:
243/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
244
245"use strict";
246
247
248var utils = __webpack_require__(867);
249var bind = __webpack_require__(849);
250var Axios = __webpack_require__(321);
251var mergeConfig = __webpack_require__(185);
252var defaults = __webpack_require__(546);
253
254/**
255 * Create an instance of Axios
256 *
257 * @param {Object} defaultConfig The default config for the instance
258 * @return {Axios} A new instance of Axios
259 */
260function createInstance(defaultConfig) {
261  var context = new Axios(defaultConfig);
262  var instance = bind(Axios.prototype.request, context);
263
264  // Copy axios.prototype to instance
265  utils.extend(instance, Axios.prototype, context);
266
267  // Copy context to instance
268  utils.extend(instance, context);
269
270  // Factory for creating new instances
271  instance.create = function create(instanceConfig) {
272    return createInstance(mergeConfig(defaultConfig, instanceConfig));
273  };
274
275  return instance;
276}
277
278// Create the default instance to be exported
279var axios = createInstance(defaults);
280
281// Expose Axios class to allow class inheritance
282axios.Axios = Axios;
283
284// Expose Cancel & CancelToken
285axios.CanceledError = __webpack_require__(644);
286axios.CancelToken = __webpack_require__(972);
287axios.isCancel = __webpack_require__(502);
288axios.VERSION = (__webpack_require__(288).version);
289axios.toFormData = __webpack_require__(675);
290
291// Expose AxiosError class
292axios.AxiosError = __webpack_require__(648);
293
294// alias for CanceledError for backward compatibility
295axios.Cancel = axios.CanceledError;
296
297// Expose all/spread
298axios.all = function all(promises) {
299  return Promise.all(promises);
300};
301axios.spread = __webpack_require__(713);
302
303// Expose isAxiosError
304axios.isAxiosError = __webpack_require__(268);
305
306module.exports = axios;
307
308// Allow use of default import syntax in TypeScript
309module.exports["default"] = axios;
310
311
312/***/ }),
313
314/***/ 972:
315/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
316
317"use strict";
318
319
320var CanceledError = __webpack_require__(644);
321
322/**
323 * A `CancelToken` is an object that can be used to request cancellation of an operation.
324 *
325 * @class
326 * @param {Function} executor The executor function.
327 */
328function CancelToken(executor) {
329  if (typeof executor !== 'function') {
330    throw new TypeError('executor must be a function.');
331  }
332
333  var resolvePromise;
334
335  this.promise = new Promise(function promiseExecutor(resolve) {
336    resolvePromise = resolve;
337  });
338
339  var token = this;
340
341  // eslint-disable-next-line func-names
342  this.promise.then(function(cancel) {
343    if (!token._listeners) return;
344
345    var i;
346    var l = token._listeners.length;
347
348    for (i = 0; i < l; i++) {
349      token._listeners[i](cancel);
350    }
351    token._listeners = null;
352  });
353
354  // eslint-disable-next-line func-names
355  this.promise.then = function(onfulfilled) {
356    var _resolve;
357    // eslint-disable-next-line func-names
358    var promise = new Promise(function(resolve) {
359      token.subscribe(resolve);
360      _resolve = resolve;
361    }).then(onfulfilled);
362
363    promise.cancel = function reject() {
364      token.unsubscribe(_resolve);
365    };
366
367    return promise;
368  };
369
370  executor(function cancel(message) {
371    if (token.reason) {
372      // Cancellation has already been requested
373      return;
374    }
375
376    token.reason = new CanceledError(message);
377    resolvePromise(token.reason);
378  });
379}
380
381/**
382 * Throws a `CanceledError` if cancellation has been requested.
383 */
384CancelToken.prototype.throwIfRequested = function throwIfRequested() {
385  if (this.reason) {
386    throw this.reason;
387  }
388};
389
390/**
391 * Subscribe to the cancel signal
392 */
393
394CancelToken.prototype.subscribe = function subscribe(listener) {
395  if (this.reason) {
396    listener(this.reason);
397    return;
398  }
399
400  if (this._listeners) {
401    this._listeners.push(listener);
402  } else {
403    this._listeners = [listener];
404  }
405};
406
407/**
408 * Unsubscribe from the cancel signal
409 */
410
411CancelToken.prototype.unsubscribe = function unsubscribe(listener) {
412  if (!this._listeners) {
413    return;
414  }
415  var index = this._listeners.indexOf(listener);
416  if (index !== -1) {
417    this._listeners.splice(index, 1);
418  }
419};
420
421/**
422 * Returns an object that contains a new `CancelToken` and a function that, when called,
423 * cancels the `CancelToken`.
424 */
425CancelToken.source = function source() {
426  var cancel;
427  var token = new CancelToken(function executor(c) {
428    cancel = c;
429  });
430  return {
431    token: token,
432    cancel: cancel
433  };
434};
435
436module.exports = CancelToken;
437
438
439/***/ }),
440
441/***/ 644:
442/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
443
444"use strict";
445
446
447var AxiosError = __webpack_require__(648);
448var utils = __webpack_require__(867);
449
450/**
451 * A `CanceledError` is an object that is thrown when an operation is canceled.
452 *
453 * @class
454 * @param {string=} message The message.
455 */
456function CanceledError(message) {
457  // eslint-disable-next-line no-eq-null,eqeqeq
458  AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);
459  this.name = 'CanceledError';
460}
461
462utils.inherits(CanceledError, AxiosError, {
463  __CANCEL__: true
464});
465
466module.exports = CanceledError;
467
468
469/***/ }),
470
471/***/ 502:
472/***/ (function(module) {
473
474"use strict";
475
476
477module.exports = function isCancel(value) {
478  return !!(value && value.__CANCEL__);
479};
480
481
482/***/ }),
483
484/***/ 321:
485/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
486
487"use strict";
488
489
490var utils = __webpack_require__(867);
491var buildURL = __webpack_require__(327);
492var InterceptorManager = __webpack_require__(782);
493var dispatchRequest = __webpack_require__(572);
494var mergeConfig = __webpack_require__(185);
vendor: 5,566 bytes, lines 495-695
495var buildFullPath = __webpack_require__(97);
496var validator = __webpack_require__(875);
497
498var validators = validator.validators;
499/**
500 * Create a new instance of Axios
501 *
502 * @param {Object} instanceConfig The default config for the instance
503 */
504function Axios(instanceConfig) {
505  this.defaults = instanceConfig;
506  this.interceptors = {
507    request: new InterceptorManager(),
508    response: new InterceptorManager()
509  };
510}
511
512/**
513 * Dispatch a request
514 *
515 * @param {Object} config The config specific for this request (merged with this.defaults)
516 */
517Axios.prototype.request = function request(configOrUrl, config) {
518  /*eslint no-param-reassign:0*/
519  // Allow for axios('example/url'[, config]) a la fetch API
520  if (typeof configOrUrl === 'string') {
521    config = config || {};
522    config.url = configOrUrl;
523  } else {
524    config = configOrUrl || {};
525  }
526
527  config = mergeConfig(this.defaults, config);
528
529  // Set config.method
530  if (config.method) {
531    config.method = config.method.toLowerCase();
532  } else if (this.defaults.method) {
533    config.method = this.defaults.method.toLowerCase();
534  } else {
535    config.method = 'get';
536  }
537
538  var transitional = config.transitional;
539
540  if (transitional !== undefined) {
541    validator.assertOptions(transitional, {
542      silentJSONParsing: validators.transitional(validators.boolean),
543      forcedJSONParsing: validators.transitional(validators.boolean),
544      clarifyTimeoutError: validators.transitional(validators.boolean)
545    }, false);
546  }
547
548  // filter out skipped interceptors
549  var requestInterceptorChain = [];
550  var synchronousRequestInterceptors = true;
551  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
552    if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {
553      return;
554    }
555
556    synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
557
558    requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
559  });
560
561  var responseInterceptorChain = [];
562  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
563    responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
564  });
565
566  var promise;
567
568  if (!synchronousRequestInterceptors) {
569    var chain = [dispatchRequest, undefined];
570
571    Array.prototype.unshift.apply(chain, requestInterceptorChain);
572    chain = chain.concat(responseInterceptorChain);
573
574    promise = Promise.resolve(config);
575    while (chain.length) {
576      promise = promise.then(chain.shift(), chain.shift());
577    }
578
579    return promise;
580  }
581
582
583  var newConfig = config;
584  while (requestInterceptorChain.length) {
585    var onFulfilled = requestInterceptorChain.shift();
586    var onRejected = requestInterceptorChain.shift();
587    try {
588      newConfig = onFulfilled(newConfig);
589    } catch (error) {
590      onRejected(error);
591      break;
592    }
593  }
594
595  try {
596    promise = dispatchRequest(newConfig);
597  } catch (error) {
598    return Promise.reject(error);
599  }
600
601  while (responseInterceptorChain.length) {
602    promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());
603  }
604
605  return promise;
606};
607
608Axios.prototype.getUri = function getUri(config) {
609  config = mergeConfig(this.defaults, config);
610  var fullPath = buildFullPath(config.baseURL, config.url);
611  return buildURL(fullPath, config.params, config.paramsSerializer);
612};
613
614// Provide aliases for supported request methods
615utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
616  /*eslint func-names:0*/
617  Axios.prototype[method] = function(url, config) {
618    return this.request(mergeConfig(config || {}, {
619      method: method,
620      url: url,
621      data: (config || {}).data
622    }));
623  };
624});
625
626utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
627  /*eslint func-names:0*/
628
629  function generateHTTPMethod(isForm) {
630    return function httpMethod(url, data, config) {
631      return this.request(mergeConfig(config || {}, {
632        method: method,
633        headers: isForm ? {
634          'Content-Type': 'multipart/form-data'
635        } : {},
636        url: url,
637        data: data
638      }));
639    };
640  }
641
642  Axios.prototype[method] = generateHTTPMethod();
643
644  Axios.prototype[method + 'Form'] = generateHTTPMethod(true);
645});
646
647module.exports = Axios;
648
649
650/***/ }),
651
652/***/ 648:
653/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
654
655"use strict";
656
657
658var utils = __webpack_require__(867);
659
660/**
661 * Create an Error with the specified message, config, error code, request and response.
662 *
663 * @param {string} message The error message.
664 * @param {string} [code] The error code (for example, 'ECONNABORTED').
665 * @param {Object} [config] The config.
666 * @param {Object} [request] The request.
667 * @param {Object} [response] The response.
668 * @returns {Error} The created error.
669 */
670function AxiosError(message, code, config, request, response) {
671  Error.call(this);
672  this.message = message;
673  this.name = 'AxiosError';
674  code && (this.code = code);
675  config && (this.config = config);
676  request && (this.request = request);
677  response && (this.response = response);
678}
679
680utils.inherits(AxiosError, Error, {
681  toJSON: function toJSON() {
682    return {
683      // Standard
684      message: this.message,
685      name: this.name,
686      // Microsoft
687      description: this.description,
688      number: this.number,
689      // Mozilla
690      fileName: this.fileName,
691      lineNumber: this.lineNumber,
692      columnNumber: this.columnNumber,
693      stack: this.stack,
694      // Axios
695      config: this.config,
vendor: 9,378 bytes, lines 696-1054
696      code: this.code,
697      status: this.response && this.response.status ? this.response.status : null
698    };
699  }
700});
701
702var prototype = AxiosError.prototype;
703var descriptors = {};
704
705[
706  'ERR_BAD_OPTION_VALUE',
707  'ERR_BAD_OPTION',
708  'ECONNABORTED',
709  'ETIMEDOUT',
710  'ERR_NETWORK',
711  'ERR_FR_TOO_MANY_REDIRECTS',
712  'ERR_DEPRECATED',
713  'ERR_BAD_RESPONSE',
714  'ERR_BAD_REQUEST',
715  'ERR_CANCELED'
716// eslint-disable-next-line func-names
717].forEach(function(code) {
718  descriptors[code] = {value: code};
719});
720
721Object.defineProperties(AxiosError, descriptors);
722Object.defineProperty(prototype, 'isAxiosError', {value: true});
723
724// eslint-disable-next-line func-names
725AxiosError.from = function(error, code, config, request, response, customProps) {
726  var axiosError = Object.create(prototype);
727
728  utils.toFlatObject(error, axiosError, function filter(obj) {
729    return obj !== Error.prototype;
730  });
731
732  AxiosError.call(axiosError, error.message, code, config, request, response);
733
734  axiosError.name = error.name;
735
736  customProps && Object.assign(axiosError, customProps);
737
738  return axiosError;
739};
740
741module.exports = AxiosError;
742
743
744/***/ }),
745
746/***/ 782:
747/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
748
749"use strict";
750
751
752var utils = __webpack_require__(867);
753
754function InterceptorManager() {
755  this.handlers = [];
756}
757
758/**
759 * Add a new interceptor to the stack
760 *
761 * @param {Function} fulfilled The function to handle `then` for a `Promise`
762 * @param {Function} rejected The function to handle `reject` for a `Promise`
763 *
764 * @return {Number} An ID used to remove interceptor later
765 */
766InterceptorManager.prototype.use = function use(fulfilled, rejected, options) {
767  this.handlers.push({
768    fulfilled: fulfilled,
769    rejected: rejected,
770    synchronous: options ? options.synchronous : false,
771    runWhen: options ? options.runWhen : null
772  });
773  return this.handlers.length - 1;
774};
775
776/**
777 * Remove an interceptor from the stack
778 *
779 * @param {Number} id The ID that was returned by `use`
780 */
781InterceptorManager.prototype.eject = function eject(id) {
782  if (this.handlers[id]) {
783    this.handlers[id] = null;
784  }
785};
786
787/**
788 * Iterate over all the registered interceptors
789 *
790 * This method is particularly useful for skipping over any
791 * interceptors that may have become `null` calling `eject`.
792 *
793 * @param {Function} fn The function to call for each interceptor
794 */
795InterceptorManager.prototype.forEach = function forEach(fn) {
796  utils.forEach(this.handlers, function forEachHandler(h) {
797    if (h !== null) {
798      fn(h);
799    }
800  });
801};
802
803module.exports = InterceptorManager;
804
805
806/***/ }),
807
808/***/ 97:
809/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
810
811"use strict";
812
813
814var isAbsoluteURL = __webpack_require__(793);
815var combineURLs = __webpack_require__(303);
816
817/**
818 * Creates a new URL by combining the baseURL with the requestedURL,
819 * only when the requestedURL is not already an absolute URL.
820 * If the requestURL is absolute, this function returns the requestedURL untouched.
821 *
822 * @param {string} baseURL The base URL
823 * @param {string} requestedURL Absolute or relative URL to combine
824 * @returns {string} The combined full path
825 */
826module.exports = function buildFullPath(baseURL, requestedURL) {
827  if (baseURL && !isAbsoluteURL(requestedURL)) {
828    return combineURLs(baseURL, requestedURL);
829  }
830  return requestedURL;
831};
832
833
834/***/ }),
835
836/***/ 572:
837/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
838
839"use strict";
840
841
842var utils = __webpack_require__(867);
843var transformData = __webpack_require__(527);
844var isCancel = __webpack_require__(502);
845var defaults = __webpack_require__(546);
846var CanceledError = __webpack_require__(644);
847
848/**
849 * Throws a `CanceledError` if cancellation has been requested.
850 */
851function throwIfCancellationRequested(config) {
852  if (config.cancelToken) {
853    config.cancelToken.throwIfRequested();
854  }
855
856  if (config.signal && config.signal.aborted) {
857    throw new CanceledError();
858  }
859}
860
861/**
862 * Dispatch a request to the server using the configured adapter.
863 *
864 * @param {object} config The config that is to be used for the request
865 * @returns {Promise} The Promise to be fulfilled
866 */
867module.exports = function dispatchRequest(config) {
868  throwIfCancellationRequested(config);
869
870  // Ensure headers exist
871  config.headers = config.headers || {};
872
873  // Transform request data
874  config.data = transformData.call(
875    config,
876    config.data,
877    config.headers,
878    config.transformRequest
879  );
880
881  // Flatten headers
882  config.headers = utils.merge(
883    config.headers.common || {},
884    config.headers[config.method] || {},
885    config.headers
886  );
887
888  utils.forEach(
889    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
890    function cleanHeaderConfig(method) {
891      delete config.headers[method];
892    }
893  );
894
895  var adapter = config.adapter || defaults.adapter;
896
897  return adapter(config).then(function onAdapterResolution(response) {
898    throwIfCancellationRequested(config);
899
900    // Transform response data
901    response.data = transformData.call(
902      config,
903      response.data,
904      response.headers,
905      config.transformResponse
906    );
907
908    return response;
909  }, function onAdapterRejection(reason) {
910    if (!isCancel(reason)) {
911      throwIfCancellationRequested(config);
912
913      // Transform response data
914      if (reason && reason.response) {
915        reason.response.data = transformData.call(
916          config,
917          reason.response.data,
918          reason.response.headers,
919          config.transformResponse
920        );
921      }
922    }
923
924    return Promise.reject(reason);
925  });
926};
927
928
929/***/ }),
930
931/***/ 185:
932/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
933
934"use strict";
935
936
937var utils = __webpack_require__(867);
938
939/**
940 * Config-specific merge-function which creates a new config-object
941 * by merging two configuration objects together.
942 *
943 * @param {Object} config1
944 * @param {Object} config2
945 * @returns {Object} New object resulting from merging config2 to config1
946 */
947module.exports = function mergeConfig(config1, config2) {
948  // eslint-disable-next-line no-param-reassign
949  config2 = config2 || {};
950  var config = {};
951
952  function getMergedValue(target, source) {
953    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {
954      return utils.merge(target, source);
955    } else if (utils.isPlainObject(source)) {
956      return utils.merge({}, source);
957    } else if (utils.isArray(source)) {
958      return source.slice();
959    }
960    return source;
961  }
962
963  // eslint-disable-next-line consistent-return
964  function mergeDeepProperties(prop) {
965    if (!utils.isUndefined(config2[prop])) {
966      return getMergedValue(config1[prop], config2[prop]);
967    } else if (!utils.isUndefined(config1[prop])) {
968      return getMergedValue(undefined, config1[prop]);
969    }
970  }
971
972  // eslint-disable-next-line consistent-return
973  function valueFromConfig2(prop) {
974    if (!utils.isUndefined(config2[prop])) {
975      return getMergedValue(undefined, config2[prop]);
976    }
977  }
978
979  // eslint-disable-next-line consistent-return
980  function defaultToConfig2(prop) {
981    if (!utils.isUndefined(config2[prop])) {
982      return getMergedValue(undefined, config2[prop]);
983    } else if (!utils.isUndefined(config1[prop])) {
984      return getMergedValue(undefined, config1[prop]);
985    }
986  }
987
988  // eslint-disable-next-line consistent-return
989  function mergeDirectKeys(prop) {
990    if (prop in config2) {
991      return getMergedValue(config1[prop], config2[prop]);
992    } else if (prop in config1) {
993      return getMergedValue(undefined, config1[prop]);
994    }
995  }
996
997  var mergeMap = {
998    'url': valueFromConfig2,
999    'method': valueFromConfig2,
1000    'data': valueFromConfig2,
1001    'baseURL': defaultToConfig2,
1002    'transformRequest': defaultToConfig2,
1003    'transformResponse': defaultToConfig2,
1004    'paramsSerializer': defaultToConfig2,
1005    'timeout': defaultToConfig2,
1006    'timeoutMessage': defaultToConfig2,
1007    'withCredentials': defaultToConfig2,
1008    'adapter': defaultToConfig2,
1009    'responseType': defaultToConfig2,
1010    'xsrfCookieName': defaultToConfig2,
1011    'xsrfHeaderName': defaultToConfig2,
1012    'onUploadProgress': defaultToConfig2,
1013    'onDownloadProgress': defaultToConfig2,
1014    'decompress': defaultToConfig2,
1015    'maxContentLength': defaultToConfig2,
1016    'maxBodyLength': defaultToConfig2,
1017    'beforeRedirect': defaultToConfig2,
1018    'transport': defaultToConfig2,
1019    'httpAgent': defaultToConfig2,
1020    'httpsAgent': defaultToConfig2,
1021    'cancelToken': defaultToConfig2,
1022    'socketPath': defaultToConfig2,
1023    'responseEncoding': defaultToConfig2,
1024    'validateStatus': mergeDirectKeys
1025  };
1026
1027  utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {
1028    var merge = mergeMap[prop] || mergeDeepProperties;
1029    var configValue = merge(prop);
1030    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
1031  });
1032
1033  return config;
1034};
1035
1036
1037/***/ }),
1038
1039/***/ 26:
1040/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1041
1042"use strict";
1043
1044
1045var AxiosError = __webpack_require__(648);
1046
1047/**
1048 * Resolve or reject a Promise based on response status.
1049 *
1050 * @param {Function} resolve A function that resolves the promise.
1051 * @param {Function} reject A function that rejects the promise.
1052 * @param {object} response The response.
1053 */
1054module.exports = function settle(resolve, reject, response) {
1055  var validateStatus = response.config.validateStatus;
1056  if (!response.status || !validateStatus || validateStatus(response.status)) {
1057    resolve(response);
1058  } else {
1059    reject(new AxiosError(
1060      'Request failed with status code ' + response.status,
1061      [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],
1062      response.config,
1063      response.request,
1064      response
1065    ));
1066  }
1067};
1068
1069
1070/***/ }),
1071
1072/***/ 527:
1073/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1074
1075"use strict";
1076
1077
1078var utils = __webpack_require__(867);
1079var defaults = __webpack_require__(546);
1080
1081/**
1082 * Transform the data for a request or a response
1083 *
1084 * @param {Object|String} data The data to be transformed
1085 * @param {Array} headers The headers for the request or response
1086 * @param {Array|Function} fns A single function or Array of functions
1087 * @returns {*} The resulting transformed data
1088 */
1089module.exports = function transformData(data, headers, fns) {
1090  var context = this || defaults;
1091  /*eslint no-param-reassign:0*/
1092  utils.forEach(fns, function transform(fn) {
1093    data = fn.call(context, data, headers);
1094  });
1095
1096  return data;
1097};
1098
1099
1100/***/ }),
1101
1102/***/ 546:
1103/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1104
1105"use strict";
1106
1107
1108var utils = __webpack_require__(867);
1109var normalizeHeaderName = __webpack_require__(16);
1110var AxiosError = __webpack_require__(648);
1111var transitionalDefaults = __webpack_require__(874);
1112var toFormData = __webpack_require__(675);
1113
1114var DEFAULT_CONTENT_TYPE = {
1115  'Content-Type': 'application/x-www-form-urlencoded'
1116};
1117
1118function setContentTypeIfUnset(headers, value) {
1119  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {
1120    headers['Content-Type'] = value;
1121  }
1122}
1123
1124function getDefaultAdapter() {
1125  var adapter;
1126  if (typeof XMLHttpRequest !== 'undefined') {
1127    // For browsers use XHR adapter
1128    adapter = __webpack_require__(448);
1129  } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {
1130    // For node use HTTP adapter
1131    adapter = __webpack_require__(448);
1132  }
1133  return adapter;
1134}
1135
1136function stringifySafely(rawValue, parser, encoder) {
1137  if (utils.isString(rawValue)) {
1138    try {
1139      (parser || JSON.parse)(rawValue);
1140      return utils.trim(rawValue);
1141    } catch (e) {
1142      if (e.name !== 'SyntaxError') {
1143        throw e;
1144      }
1145    }
1146  }
1147
1148  return (encoder || JSON.stringify)(rawValue);
1149}
1150
1151var defaults = {
1152
1153  transitional: transitionalDefaults,
1154
1155  adapter: getDefaultAdapter(),
1156
1157  transformRequest: [function transformRequest(data, headers) {
1158    normalizeHeaderName(headers, 'Accept');
1159    normalizeHeaderName(headers, 'Content-Type');
1160
1161    if (utils.isFormData(data) ||
1162      utils.isArrayBuffer(data) ||
1163      utils.isBuffer(data) ||
1164      utils.isStream(data) ||
1165      utils.isFile(data) ||
1166      utils.isBlob(data)
1167    ) {
1168      return data;
1169    }
1170    if (utils.isArrayBufferView(data)) {
1171      return data.buffer;
1172    }
1173    if (utils.isURLSearchParams(data)) {
1174      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
1175      return data.toString();
1176    }
1177
1178    var isObjectPayload = utils.isObject(data);
1179    var contentType = headers && headers['Content-Type'];
1180
1181    var isFileList;
1182
1183    if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {
1184      var _FormData = this.env && this.env.FormData;
1185      return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());
1186    } else if (isObjectPayload || contentType === 'application/json') {
1187      setContentTypeIfUnset(headers, 'application/json');
1188      return stringifySafely(data);
1189    }
1190
1191    return data;
1192  }],
1193
1194  transformResponse: [function transformResponse(data) {
1195    var transitional = this.transitional || defaults.transitional;
1196    var silentJSONParsing = transitional && transitional.silentJSONParsing;
1197    var forcedJSONParsing = transitional && transitional.forcedJSONParsing;
1198    var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';
1199
1200    if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {
vendor: 6,683 bytes, lines 1201-1513
1201      try {
1202        return JSON.parse(data);
1203      } catch (e) {
1204        if (strictJSONParsing) {
1205          if (e.name === 'SyntaxError') {
1206            throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);
1207          }
1208          throw e;
1209        }
1210      }
1211    }
1212
1213    return data;
1214  }],
1215
1216  /**
1217   * A timeout in milliseconds to abort a request. If set to 0 (default) a
1218   * timeout is not created.
1219   */
1220  timeout: 0,
1221
1222  xsrfCookieName: 'XSRF-TOKEN',
1223  xsrfHeaderName: 'X-XSRF-TOKEN',
1224
1225  maxContentLength: -1,
1226  maxBodyLength: -1,
1227
1228  env: {
1229    FormData: __webpack_require__(623)
1230  },
1231
1232  validateStatus: function validateStatus(status) {
1233    return status >= 200 && status < 300;
1234  },
1235
1236  headers: {
1237    common: {
1238      'Accept': 'application/json, text/plain, */*'
1239    }
1240  }
1241};
1242
1243utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
1244  defaults.headers[method] = {};
1245});
1246
1247utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
1248  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);
1249});
1250
1251module.exports = defaults;
1252
1253
1254/***/ }),
1255
1256/***/ 874:
1257/***/ (function(module) {
1258
1259"use strict";
1260
1261
1262module.exports = {
1263  silentJSONParsing: true,
1264  forcedJSONParsing: true,
1265  clarifyTimeoutError: false
1266};
1267
1268
1269/***/ }),
1270
1271/***/ 288:
1272/***/ (function(module) {
1273
1274module.exports = {
1275  "version": "0.27.2"
1276};
1277
1278/***/ }),
1279
1280/***/ 849:
1281/***/ (function(module) {
1282
1283"use strict";
1284
1285
1286module.exports = function bind(fn, thisArg) {
1287  return function wrap() {
1288    var args = new Array(arguments.length);
1289    for (var i = 0; i < args.length; i++) {
1290      args[i] = arguments[i];
1291    }
1292    return fn.apply(thisArg, args);
1293  };
1294};
1295
1296
1297/***/ }),
1298
1299/***/ 327:
1300/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1301
1302"use strict";
1303
1304
1305var utils = __webpack_require__(867);
1306
1307function encode(val) {
1308  return encodeURIComponent(val).
1309    replace(/%3A/gi, ':').
1310    replace(/%24/g, '$').
1311    replace(/%2C/gi, ',').
1312    replace(/%20/g, '+').
1313    replace(/%5B/gi, '[').
1314    replace(/%5D/gi, ']');
1315}
1316
1317/**
1318 * Build a URL by appending params to the end
1319 *
1320 * @param {string} url The base of the url (e.g., http://www.google.com)
1321 * @param {object} [params] The params to be appended
1322 * @returns {string} The formatted url
1323 */
1324module.exports = function buildURL(url, params, paramsSerializer) {
1325  /*eslint no-param-reassign:0*/
1326  if (!params) {
1327    return url;
1328  }
1329
1330  var serializedParams;
1331  if (paramsSerializer) {
1332    serializedParams = paramsSerializer(params);
1333  } else if (utils.isURLSearchParams(params)) {
1334    serializedParams = params.toString();
1335  } else {
1336    var parts = [];
1337
1338    utils.forEach(params, function serialize(val, key) {
1339      if (val === null || typeof val === 'undefined') {
1340        return;
1341      }
1342
1343      if (utils.isArray(val)) {
1344        key = key + '[]';
1345      } else {
1346        val = [val];
1347      }
1348
1349      utils.forEach(val, function parseValue(v) {
1350        if (utils.isDate(v)) {
1351          v = v.toISOString();
1352        } else if (utils.isObject(v)) {
1353          v = JSON.stringify(v);
1354        }
1355        parts.push(encode(key) + '=' + encode(v));
1356      });
1357    });
1358
1359    serializedParams = parts.join('&');
1360  }
1361
1362  if (serializedParams) {
1363    var hashmarkIndex = url.indexOf('#');
1364    if (hashmarkIndex !== -1) {
1365      url = url.slice(0, hashmarkIndex);
1366    }
1367
1368    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
1369  }
1370
1371  return url;
1372};
1373
1374
1375/***/ }),
1376
1377/***/ 303:
1378/***/ (function(module) {
1379
1380"use strict";
1381
1382
1383/**
1384 * Creates a new URL by combining the specified URLs
1385 *
1386 * @param {string} baseURL The base URL
1387 * @param {string} relativeURL The relative URL
1388 * @returns {string} The combined URL
1389 */
1390module.exports = function combineURLs(baseURL, relativeURL) {
1391  return relativeURL
1392    ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '')
1393    : baseURL;
1394};
1395
1396
1397/***/ }),
1398
1399/***/ 372:
1400/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1401
1402"use strict";
1403
1404
1405var utils = __webpack_require__(867);
1406
1407module.exports = (
1408  utils.isStandardBrowserEnv() ?
1409
1410  // Standard browser envs support document.cookie
1411    (function standardBrowserEnv() {
1412      return {
1413        write: function write(name, value, expires, path, domain, secure) {
1414          var cookie = [];
1415          cookie.push(name + '=' + encodeURIComponent(value));
1416
1417          if (utils.isNumber(expires)) {
1418            cookie.push('expires=' + new Date(expires).toGMTString());
1419          }
1420
1421          if (utils.isString(path)) {
1422            cookie.push('path=' + path);
1423          }
1424
1425          if (utils.isString(domain)) {
1426            cookie.push('domain=' + domain);
1427          }
1428
1429          if (secure === true) {
1430            cookie.push('secure');
1431          }
1432
1433          document.cookie = cookie.join('; ');
1434        },
1435
1436        read: function read(name) {
1437          var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
1438          return (match ? decodeURIComponent(match[3]) : null);
1439        },
1440
1441        remove: function remove(name) {
1442          this.write(name, '', Date.now() - 86400000);
1443        }
1444      };
1445    })() :
1446
1447  // Non standard browser env (web workers, react-native) lack needed support.
1448    (function nonStandardBrowserEnv() {
1449      return {
1450        write: function write() {},
1451        read: function read() { return null; },
1452        remove: function remove() {}
1453      };
1454    })()
1455);
1456
1457
1458/***/ }),
1459
1460/***/ 793:
1461/***/ (function(module) {
1462
1463"use strict";
1464
1465
1466/**
1467 * Determines whether the specified URL is absolute
1468 *
1469 * @param {string} url The URL to test
1470 * @returns {boolean} True if the specified URL is absolute, otherwise false
1471 */
1472module.exports = function isAbsoluteURL(url) {
1473  // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
1474  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
1475  // by any combination of letters, digits, plus, period, or hyphen.
1476  return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
1477};
1478
1479
1480/***/ }),
1481
1482/***/ 268:
1483/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1484
1485"use strict";
1486
1487
1488var utils = __webpack_require__(867);
1489
1490/**
1491 * Determines whether the payload is an error thrown by Axios
1492 *
1493 * @param {*} payload The value to test
1494 * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
1495 */
1496module.exports = function isAxiosError(payload) {
1497  return utils.isObject(payload) && (payload.isAxiosError === true);
1498};
1499
1500
1501/***/ }),
1502
1503/***/ 985:
1504/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1505
1506"use strict";
1507
1508
1509var utils = __webpack_require__(867);
1510
1511module.exports = (
1512  utils.isStandardBrowserEnv() ?
1513
vendor: 3,836 bytes, lines 1514-1647
1514  // Standard browser envs have full support of the APIs needed to test
1515  // whether the request URL is of the same origin as current location.
1516    (function standardBrowserEnv() {
1517      var msie = /(msie|trident)/i.test(navigator.userAgent);
1518      var urlParsingNode = document.createElement('a');
1519      var originURL;
1520
1521      /**
1522    * Parse a URL to discover it's components
1523    *
1524    * @param {String} url The URL to be parsed
1525    * @returns {Object}
1526    */
1527      function resolveURL(url) {
1528        var href = url;
1529
1530        if (msie) {
1531        // IE needs attribute set twice to normalize properties
1532          urlParsingNode.setAttribute('href', href);
1533          href = urlParsingNode.href;
1534        }
1535
1536        urlParsingNode.setAttribute('href', href);
1537
1538        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
1539        return {
1540          href: urlParsingNode.href,
1541          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
1542          host: urlParsingNode.host,
1543          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
1544          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
1545          hostname: urlParsingNode.hostname,
1546          port: urlParsingNode.port,
1547          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
1548            urlParsingNode.pathname :
1549            '/' + urlParsingNode.pathname
1550        };
1551      }
1552
1553      originURL = resolveURL(window.location.href);
1554
1555      /**
1556    * Determine if a URL shares the same origin as the current location
1557    *
1558    * @param {String} requestURL The URL to test
1559    * @returns {boolean} True if URL shares the same origin, otherwise false
1560    */
1561      return function isURLSameOrigin(requestURL) {
1562        var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;
1563        return (parsed.protocol === originURL.protocol &&
1564            parsed.host === originURL.host);
1565      };
1566    })() :
1567
1568  // Non standard browser envs (web workers, react-native) lack needed support.
1569    (function nonStandardBrowserEnv() {
1570      return function isURLSameOrigin() {
1571        return true;
1572      };
1573    })()
1574);
1575
1576
1577/***/ }),
1578
1579/***/ 16:
1580/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1581
1582"use strict";
1583
1584
1585var utils = __webpack_require__(867);
1586
1587module.exports = function normalizeHeaderName(headers, normalizedName) {
1588  utils.forEach(headers, function processHeader(value, name) {
1589    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {
1590      headers[normalizedName] = value;
1591      delete headers[name];
1592    }
1593  });
1594};
1595
1596
1597/***/ }),
1598
1599/***/ 623:
1600/***/ (function(module) {
1601
1602// eslint-disable-next-line strict
1603module.exports = null;
1604
1605
1606/***/ }),
1607
1608/***/ 109:
1609/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1610
1611"use strict";
1612
1613
1614var utils = __webpack_require__(867);
1615
1616// Headers whose duplicates are ignored by node
1617// c.f. https://nodejs.org/api/http.html#http_message_headers
1618var ignoreDuplicateOf = [
1619  'age', 'authorization', 'content-length', 'content-type', 'etag',
1620  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
1621  'last-modified', 'location', 'max-forwards', 'proxy-authorization',
1622  'referer', 'retry-after', 'user-agent'
1623];
1624
1625/**
1626 * Parse headers into an object
1627 *
1628 * ```
1629 * Date: Wed, 27 Aug 2014 08:58:49 GMT
1630 * Content-Type: application/json
1631 * Connection: keep-alive
1632 * Transfer-Encoding: chunked
1633 * ```
1634 *
1635 * @param {String} headers Headers needing to be parsed
1636 * @returns {Object} Headers parsed into an object
1637 */
1638module.exports = function parseHeaders(headers) {
1639  var parsed = {};
1640  var key;
1641  var val;
1642  var i;
1643
1644  if (!headers) { return parsed; }
1645
1646  utils.forEach(headers.split('\n'), function parser(line) {
1647    i = line.indexOf(':');
1648    key = utils.trim(line.substr(0, i)).toLowerCase();
1649    val = utils.trim(line.substr(i + 1));
1650
1651    if (key) {
1652      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
1653        return;
1654      }
1655      if (key === 'set-cookie') {
1656        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);
1657      } else {
1658        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
1659      }
1660    }
1661  });
1662
1663  return parsed;
1664};
1665
1666
1667/***/ }),
1668
1669/***/ 205:
1670/***/ (function(module) {
1671
1672"use strict";
1673
1674
1675module.exports = function parseProtocol(url) {
1676  var match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
1677  return match && match[1] || '';
1678};
1679
1680
1681/***/ }),
1682
1683/***/ 713:
1684/***/ (function(module) {
1685
1686"use strict";
1687
1688
1689/**
1690 * Syntactic sugar for invoking a function and expanding an array for arguments.
1691 *
1692 * Common use case would be to use `Function.prototype.apply`.
1693 *
1694 *  ```js
1695 *  function f(x, y, z) {}
1696 *  var args = [1, 2, 3];
1697 *  f.apply(null, args);
1698 *  ```
1699 *
1700 * With `spread` this example can be re-written.
1701 *
1702 *  ```js
1703 *  spread(function(x, y, z) {})([1, 2, 3]);
1704 *  ```
1705 *
1706 * @param {Function} callback
1707 * @returns {Function}
1708 */
1709module.exports = function spread(callback) {
1710  return function wrap(arr) {
1711    return callback.apply(null, arr);
1712  };
1713};
1714
1715
1716/***/ }),
1717
1718/***/ 675:
1719/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1720
1721"use strict";
1722
1723
1724var utils = __webpack_require__(867);
1725
1726/**
1727 * Convert a data object to FormData
1728 * @param {Object} obj
1729 * @param {?Object} [formData]
1730 * @returns {Object}
1731 **/
1732
1733function toFormData(obj, formData) {
1734  // eslint-disable-next-line no-param-reassign
1735  formData = formData || new FormData();
1736
1737  var stack = [];
1738
1739  function convertValue(value) {
1740    if (value === null) return '';
1741
1742    if (utils.isDate(value)) {
1743      return value.toISOString();
1744    }
1745
1746    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {
1747      return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);
1748    }
1749
1750    return value;
1751  }
1752
1753  function build(data, parentKey) {
1754    if (utils.isPlainObject(data) || utils.isArray(data)) {
1755      if (stack.indexOf(data) !== -1) {
1756        throw Error('Circular reference detected in ' + parentKey);
1757      }
1758
1759      stack.push(data);
1760
1761      utils.forEach(data, function each(value, key) {
1762        if (utils.isUndefined(value)) return;
1763        var fullKey = parentKey ? parentKey + '.' + key : key;
1764        var arr;
1765
1766        if (value && !parentKey && typeof value === 'object') {
1767          if (utils.endsWith(key, '{}')) {
1768            // eslint-disable-next-line no-param-reassign
1769            value = JSON.stringify(value);
1770          } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {
1771            // eslint-disable-next-line func-names
1772            arr.forEach(function(el) {
1773              !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));
1774            });
1775            return;
1776          }
1777        }
1778
1779        build(value, fullKey);
1780      });
1781
1782      stack.pop();
1783    } else {
1784      formData.append(parentKey, convertValue(data));
1785    }
1786  }
1787
1788  build(obj);
1789
1790  return formData;
1791}
1792
1793module.exports = toFormData;
1794
1795
1796/***/ }),
1797
1798/***/ 875:
1799/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1800
1801"use strict";
1802
1803
1804var VERSION = (__webpack_require__(288).version);
1805var AxiosError = __webpack_require__(648);
1806
1807var validators = {};
1808
1809// eslint-disable-next-line func-names
1810['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {
1811  validators[type] = function validator(thing) {
1812    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
1813  };
1814});
1815
1816var deprecatedWarnings = {};
1817
1818/**
1819 * Transitional option validator
1820 * @param {function|boolean?} validator - set to false if the transitional option has been removed
1821 * @param {string?} version - deprecated version / removed since version
1822 * @param {string?} message - some message with additional info
1823 * @returns {function}
1824 */
1825validators.transitional = function transitional(validator, version, message) {
1826  function formatMessage(opt, desc) {
1827    return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
1828  }
1829
1830  // eslint-disable-next-line func-names
1831  return function(value, opt, opts) {
1832    if (validator === false) {
1833      throw new AxiosError(
1834        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),
1835        AxiosError.ERR_DEPRECATED
1836      );
1837    }
1838
1839    if (version && !deprecatedWarnings[opt]) {
1840      deprecatedWarnings[opt] = true;
1841      // eslint-disable-next-line no-console
1842      console.warn(
1843        formatMessage(
1844          opt,
1845          ' has been deprecated since v' + version + ' and will be removed in the near future'
1846        )
1847      );
1848    }
1849
1850    return validator ? validator(value, opt, opts) : true;
1851  };
1852};
1853
1854/**
1855 * Assert object's properties type
1856 * @param {object} options
1857 * @param {object} schema
1858 * @param {boolean?} allowUnknown
1859 */
1860
1861function assertOptions(options, schema, allowUnknown) {
1862  if (typeof options !== 'object') {
1863    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);
1864  }
1865  var keys = Object.keys(options);
1866  var i = keys.length;
1867  while (i-- > 0) {
1868    var opt = keys[i];
vendor: 9,570 bytes, lines 1869-2245
1869    var validator = schema[opt];
1870    if (validator) {
1871      var value = options[opt];
1872      var result = value === undefined || validator(value, opt, options);
1873      if (result !== true) {
1874        throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);
1875      }
1876      continue;
1877    }
1878    if (allowUnknown !== true) {
1879      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);
1880    }
1881  }
1882}
1883
1884module.exports = {
1885  assertOptions: assertOptions,
1886  validators: validators
1887};
1888
1889
1890/***/ }),
1891
1892/***/ 867:
1893/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1894
1895"use strict";
1896
1897
1898var bind = __webpack_require__(849);
1899
1900// utils is a library of generic helper functions non-specific to axios
1901
1902var toString = Object.prototype.toString;
1903
1904// eslint-disable-next-line func-names
1905var kindOf = (function(cache) {
1906  // eslint-disable-next-line func-names
1907  return function(thing) {
1908    var str = toString.call(thing);
1909    return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
1910  };
1911})(Object.create(null));
1912
1913function kindOfTest(type) {
1914  type = type.toLowerCase();
1915  return function isKindOf(thing) {
1916    return kindOf(thing) === type;
1917  };
1918}
1919
1920/**
1921 * Determine if a value is an Array
1922 *
1923 * @param {Object} val The value to test
1924 * @returns {boolean} True if value is an Array, otherwise false
1925 */
1926function isArray(val) {
1927  return Array.isArray(val);
1928}
1929
1930/**
1931 * Determine if a value is undefined
1932 *
1933 * @param {Object} val The value to test
1934 * @returns {boolean} True if the value is undefined, otherwise false
1935 */
1936function isUndefined(val) {
1937  return typeof val === 'undefined';
1938}
1939
1940/**
1941 * Determine if a value is a Buffer
1942 *
1943 * @param {Object} val The value to test
1944 * @returns {boolean} True if value is a Buffer, otherwise false
1945 */
1946function isBuffer(val) {
1947  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
1948    && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);
1949}
1950
1951/**
1952 * Determine if a value is an ArrayBuffer
1953 *
1954 * @function
1955 * @param {Object} val The value to test
1956 * @returns {boolean} True if value is an ArrayBuffer, otherwise false
1957 */
1958var isArrayBuffer = kindOfTest('ArrayBuffer');
1959
1960
1961/**
1962 * Determine if a value is a view on an ArrayBuffer
1963 *
1964 * @param {Object} val The value to test
1965 * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
1966 */
1967function isArrayBufferView(val) {
1968  var result;
1969  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
1970    result = ArrayBuffer.isView(val);
1971  } else {
1972    result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));
1973  }
1974  return result;
1975}
1976
1977/**
1978 * Determine if a value is a String
1979 *
1980 * @param {Object} val The value to test
1981 * @returns {boolean} True if value is a String, otherwise false
1982 */
1983function isString(val) {
1984  return typeof val === 'string';
1985}
1986
1987/**
1988 * Determine if a value is a Number
1989 *
1990 * @param {Object} val The value to test
1991 * @returns {boolean} True if value is a Number, otherwise false
1992 */
1993function isNumber(val) {
1994  return typeof val === 'number';
1995}
1996
1997/**
1998 * Determine if a value is an Object
1999 *
2000 * @param {Object} val The value to test
2001 * @returns {boolean} True if value is an Object, otherwise false
2002 */
2003function isObject(val) {
2004  return val !== null && typeof val === 'object';
2005}
2006
2007/**
2008 * Determine if a value is a plain Object
2009 *
2010 * @param {Object} val The value to test
2011 * @return {boolean} True if value is a plain Object, otherwise false
2012 */
2013function isPlainObject(val) {
2014  if (kindOf(val) !== 'object') {
2015    return false;
2016  }
2017
2018  var prototype = Object.getPrototypeOf(val);
2019  return prototype === null || prototype === Object.prototype;
2020}
2021
2022/**
2023 * Determine if a value is a Date
2024 *
2025 * @function
2026 * @param {Object} val The value to test
2027 * @returns {boolean} True if value is a Date, otherwise false
2028 */
2029var isDate = kindOfTest('Date');
2030
2031/**
2032 * Determine if a value is a File
2033 *
2034 * @function
2035 * @param {Object} val The value to test
2036 * @returns {boolean} True if value is a File, otherwise false
2037 */
2038var isFile = kindOfTest('File');
2039
2040/**
2041 * Determine if a value is a Blob
2042 *
2043 * @function
2044 * @param {Object} val The value to test
2045 * @returns {boolean} True if value is a Blob, otherwise false
2046 */
2047var isBlob = kindOfTest('Blob');
2048
2049/**
2050 * Determine if a value is a FileList
2051 *
2052 * @function
2053 * @param {Object} val The value to test
2054 * @returns {boolean} True if value is a File, otherwise false
2055 */
2056var isFileList = kindOfTest('FileList');
2057
2058/**
2059 * Determine if a value is a Function
2060 *
2061 * @param {Object} val The value to test
2062 * @returns {boolean} True if value is a Function, otherwise false
2063 */
2064function isFunction(val) {
2065  return toString.call(val) === '[object Function]';
2066}
2067
2068/**
2069 * Determine if a value is a Stream
2070 *
2071 * @param {Object} val The value to test
2072 * @returns {boolean} True if value is a Stream, otherwise false
2073 */
2074function isStream(val) {
2075  return isObject(val) && isFunction(val.pipe);
2076}
2077
2078/**
2079 * Determine if a value is a FormData
2080 *
2081 * @param {Object} thing The value to test
2082 * @returns {boolean} True if value is an FormData, otherwise false
2083 */
2084function isFormData(thing) {
2085  var pattern = '[object FormData]';
2086  return thing && (
2087    (typeof FormData === 'function' && thing instanceof FormData) ||
2088    toString.call(thing) === pattern ||
2089    (isFunction(thing.toString) && thing.toString() === pattern)
2090  );
2091}
2092
2093/**
2094 * Determine if a value is a URLSearchParams object
2095 * @function
2096 * @param {Object} val The value to test
2097 * @returns {boolean} True if value is a URLSearchParams object, otherwise false
2098 */
2099var isURLSearchParams = kindOfTest('URLSearchParams');
2100
2101/**
2102 * Trim excess whitespace off the beginning and end of a string
2103 *
2104 * @param {String} str The String to trim
2105 * @returns {String} The String freed of excess whitespace
2106 */
2107function trim(str) {
2108  return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, '');
2109}
2110
2111/**
2112 * Determine if we're running in a standard browser environment
2113 *
2114 * This allows axios to run in a web worker, and react-native.
2115 * Both environments support XMLHttpRequest, but not fully standard globals.
2116 *
2117 * web workers:
2118 *  typeof window -> undefined
2119 *  typeof document -> undefined
2120 *
2121 * react-native:
2122 *  navigator.product -> 'ReactNative'
2123 * nativescript
2124 *  navigator.product -> 'NativeScript' or 'NS'
2125 */
2126function isStandardBrowserEnv() {
2127  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||
2128                                           navigator.product === 'NativeScript' ||
2129                                           navigator.product === 'NS')) {
2130    return false;
2131  }
2132  return (
2133    typeof window !== 'undefined' &&
2134    typeof document !== 'undefined'
2135  );
2136}
2137
2138/**
2139 * Iterate over an Array or an Object invoking a function for each item.
2140 *
2141 * If `obj` is an Array callback will be called passing
2142 * the value, index, and complete array for each item.
2143 *
2144 * If 'obj' is an Object callback will be called passing
2145 * the value, key, and complete object for each property.
2146 *
2147 * @param {Object|Array} obj The object to iterate
2148 * @param {Function} fn The callback to invoke for each item
2149 */
2150function forEach(obj, fn) {
2151  // Don't bother if no value provided
2152  if (obj === null || typeof obj === 'undefined') {
2153    return;
2154  }
2155
2156  // Force an array if not already something iterable
2157  if (typeof obj !== 'object') {
2158    /*eslint no-param-reassign:0*/
2159    obj = [obj];
2160  }
2161
2162  if (isArray(obj)) {
2163    // Iterate over array values
2164    for (var i = 0, l = obj.length; i < l; i++) {
2165      fn.call(null, obj[i], i, obj);
2166    }
2167  } else {
2168    // Iterate over object keys
2169    for (var key in obj) {
2170      if (Object.prototype.hasOwnProperty.call(obj, key)) {
2171        fn.call(null, obj[key], key, obj);
2172      }
2173    }
2174  }
2175}
2176
2177/**
2178 * Accepts varargs expecting each argument to be an object, then
2179 * immutably merges the properties of each object and returns result.
2180 *
2181 * When multiple objects contain the same key the later object in
2182 * the arguments list will take precedence.
2183 *
2184 * Example:
2185 *
2186 * ```js
2187 * var result = merge({foo: 123}, {foo: 456});
2188 * console.log(result.foo); // outputs 456
2189 * ```
2190 *
2191 * @param {Object} obj1 Object to merge
2192 * @returns {Object} Result of all merge properties
2193 */
2194function merge(/* obj1, obj2, obj3, ... */) {
2195  var result = {};
2196  function assignValue(val, key) {
2197    if (isPlainObject(result[key]) && isPlainObject(val)) {
2198      result[key] = merge(result[key], val);
2199    } else if (isPlainObject(val)) {
2200      result[key] = merge({}, val);
2201    } else if (isArray(val)) {
2202      result[key] = val.slice();
2203    } else {
2204      result[key] = val;
2205    }
2206  }
2207
2208  for (var i = 0, l = arguments.length; i < l; i++) {
2209    forEach(arguments[i], assignValue);
2210  }
2211  return result;
2212}
2213
2214/**
2215 * Extends object a by mutably adding to it the properties of object b.
2216 *
2217 * @param {Object} a The object to be extended
2218 * @param {Object} b The object to copy properties from
2219 * @param {Object} thisArg The object to bind function to
2220 * @return {Object} The resulting value of object a
2221 */
2222function extend(a, b, thisArg) {
2223  forEach(b, function assignValue(val, key) {
2224    if (thisArg && typeof val === 'function') {
2225      a[key] = bind(val, thisArg);
2226    } else {
2227      a[key] = val;
2228    }
2229  });
2230  return a;
2231}
2232
2233/**
2234 * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
2235 *
2236 * @param {string} content with BOM
2237 * @return {string} content value without BOM
2238 */
2239function stripBOM(content) {
2240  if (content.charCodeAt(0) === 0xFEFF) {
2241    content = content.slice(1);
2242  }
2243  return content;
2244}
2245
vendor: 4,519 bytes, lines 2246-2389
2246/**
2247 * Inherit the prototype methods from one constructor into another
2248 * @param {function} constructor
2249 * @param {function} superConstructor
2250 * @param {object} [props]
2251 * @param {object} [descriptors]
2252 */
2253
2254function inherits(constructor, superConstructor, props, descriptors) {
2255  constructor.prototype = Object.create(superConstructor.prototype, descriptors);
2256  constructor.prototype.constructor = constructor;
2257  props && Object.assign(constructor.prototype, props);
2258}
2259
2260/**
2261 * Resolve object with deep prototype chain to a flat object
2262 * @param {Object} sourceObj source object
2263 * @param {Object} [destObj]
2264 * @param {Function} [filter]
2265 * @returns {Object}
2266 */
2267
2268function toFlatObject(sourceObj, destObj, filter) {
2269  var props;
2270  var i;
2271  var prop;
2272  var merged = {};
2273
2274  destObj = destObj || {};
2275
2276  do {
2277    props = Object.getOwnPropertyNames(sourceObj);
2278    i = props.length;
2279    while (i-- > 0) {
2280      prop = props[i];
2281      if (!merged[prop]) {
2282        destObj[prop] = sourceObj[prop];
2283        merged[prop] = true;
2284      }
2285    }
2286    sourceObj = Object.getPrototypeOf(sourceObj);
2287  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);
2288
2289  return destObj;
2290}
2291
2292/*
2293 * determines whether a string ends with the characters of a specified string
2294 * @param {String} str
2295 * @param {String} searchString
2296 * @param {Number} [position= 0]
2297 * @returns {boolean}
2298 */
2299function endsWith(str, searchString, position) {
2300  str = String(str);
2301  if (position === undefined || position > str.length) {
2302    position = str.length;
2303  }
2304  position -= searchString.length;
2305  var lastIndex = str.indexOf(searchString, position);
2306  return lastIndex !== -1 && lastIndex === position;
2307}
2308
2309
2310/**
2311 * Returns new array from array like object
2312 * @param {*} [thing]
2313 * @returns {Array}
2314 */
2315function toArray(thing) {
2316  if (!thing) return null;
2317  var i = thing.length;
2318  if (isUndefined(i)) return null;
2319  var arr = new Array(i);
2320  while (i-- > 0) {
2321    arr[i] = thing[i];
2322  }
2323  return arr;
2324}
2325
2326// eslint-disable-next-line func-names
2327var isTypedArray = (function(TypedArray) {
2328  // eslint-disable-next-line func-names
2329  return function(thing) {
2330    return TypedArray && thing instanceof TypedArray;
2331  };
2332})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));
2333
2334module.exports = {
2335  isArray: isArray,
2336  isArrayBuffer: isArrayBuffer,
2337  isBuffer: isBuffer,
2338  isFormData: isFormData,
2339  isArrayBufferView: isArrayBufferView,
2340  isString: isString,
2341  isNumber: isNumber,
2342  isObject: isObject,
2343  isPlainObject: isPlainObject,
2344  isUndefined: isUndefined,
2345  isDate: isDate,
2346  isFile: isFile,
2347  isBlob: isBlob,
2348  isFunction: isFunction,
2349  isStream: isStream,
2350  isURLSearchParams: isURLSearchParams,
2351  isStandardBrowserEnv: isStandardBrowserEnv,
2352  forEach: forEach,
2353  merge: merge,
2354  extend: extend,
2355  trim: trim,
2356  stripBOM: stripBOM,
2357  inherits: inherits,
2358  toFlatObject: toFlatObject,
2359  kindOf: kindOf,
2360  kindOfTest: kindOfTest,
2361  endsWith: endsWith,
2362  toArray: toArray,
2363  isTypedArray: isTypedArray,
2364  isFileList: isFileList
2365};
2366
2367
2368/***/ }),
2369
2370/***/ 101:
2371/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
2372
2373"use strict";
2374/**
2375 * @license React
2376 * react-dom.production.min.js
2377 *
2378 * Copyright (c) Facebook, Inc. and its affiliates.
2379 *
2380 * This source code is licensed under the MIT license found in the
2381 * LICENSE file in the root directory of this source tree.
2382 */
2383/*
2384 Modernizr 3.0.0pre (Custom Build) | MIT
2385*/
2386var aa=__webpack_require__(294),ca=__webpack_require__(840);function p(a){for(var b="https://reactjs.org/docs/error-decoder.html?invariant="+a,c=1;c<arguments.length;c++)b+="&args[]="+encodeURIComponent(arguments[c]);return"Minified React error #"+a+"; visit "+b+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+"Capture",b)}
2387function ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}
2388var ia=!("undefined"===typeof window||"undefined"===typeof window.document||"undefined"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,la=
2389{},ma={};function oa(a){if(ja.call(ma,a))return!0;
vendor: 7,993 bytes, lines 2389-2406
2389if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case "function":case "symbol":return!0;case "boolean":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return"data-"!==a&&"aria-"!==a;default:return!1}}
2390function qa(a,b,c,d){if(null===b||"undefined"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};
2391"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});
2392["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});
2393["checked","multiple","muted","selected"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});["capture","download"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});["cols","rows","size","span"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});["rowSpan","start"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}
2394"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a){var b=a.replace(ra,
2395sa);z[b]=new v(b,1,!1,a,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});
2396z.xlinkHref=new v("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});
2397function ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||"o"!==b[0]&&"O"!==b[0]||"n"!==b[1]&&"N"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,""+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:"":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?"":""+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}
2398var ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for("react.element"),wa=Symbol.for("react.portal"),ya=Symbol.for("react.fragment"),za=Symbol.for("react.strict_mode"),Aa=Symbol.for("react.profiler"),Ba=Symbol.for("react.provider"),Ca=Symbol.for("react.context"),Da=Symbol.for("react.forward_ref"),Ea=Symbol.for("react.suspense"),Fa=Symbol.for("react.suspense_list"),Ga=Symbol.for("react.memo"),Ha=Symbol.for("react.lazy");Symbol.for("react.scope");Symbol.for("react.debug_trace_mode");
2399var Ia=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden");Symbol.for("react.cache");Symbol.for("react.tracing_marker");var Ja=Symbol.iterator;function Ka(a){if(null===a||"object"!==typeof a)return null;a=Ja&&a[Ja]||a["@@iterator"];return"function"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\n( *(at )?)/);La=b&&b[1]||""}return"\n"+La+a}var Na=!1;
2400function Oa(a,b){if(!a||Na)return"";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,"props",{set:function(){throw Error();}}),"object"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&"string"===typeof l.stack){for(var e=l.stack.split("\n"),
2401f=d.stack.split("\n"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k="\n"+e[g].replace(" at new "," at ");a.displayName&&k.includes("<anonymous>")&&(k=k.replace("<anonymous>",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:"")?Ma(a):""}
2402function Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma("Lazy");case 13:return Ma("Suspense");case 19:return Ma("SuspenseList");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return""}}
2403function Qa(a){if(null==a)return null;if("function"===typeof a)return a.displayName||a.name||null;if("string"===typeof a)return a;switch(a){case ya:return"Fragment";case wa:return"Portal";case Aa:return"Profiler";case za:return"StrictMode";case Ea:return"Suspense";case Fa:return"SuspenseList"}if("object"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||"Context")+".Consumer";case Ba:return(a._context.displayName||"Context")+".Provider";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||
2404b.name||"",a=""!==a?"ForwardRef("+a+")":"ForwardRef");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||"Memo";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}
2405function Ra(a){var b=a.type;switch(a.tag){case 24:return"Cache";case 9:return(b.displayName||"Context")+".Consumer";case 10:return(b._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return a=b.render,a=a.displayName||a.name||"",b.displayName||(""!==a?"ForwardRef("+a+")":"ForwardRef");case 7:return"Fragment";case 5:return b;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Qa(b);case 8:return b===za?"StrictMode":"Mode";case 22:return"Offscreen";
2406case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"===typeof b)return b.displayName||b.n
vendor: 5,619 bytes, lines 2406-2421
2406ame||null;if("string"===typeof b)return b}return null}function Sa(a){switch(typeof a){case "boolean":case "number":case "string":case "undefined":return a;case "object":return a;default:return""}}
2407function Ta(a){var b=a.type;return(a=a.nodeName)&&"input"===a.toLowerCase()&&("checkbox"===b||"radio"===b)}
2408function Ua(a){var b=Ta(a)?"checked":"value",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=""+a[b];if(!a.hasOwnProperty(b)&&"undefined"!==typeof c&&"function"===typeof c.get&&"function"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=""+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=""+a},stopTracking:function(){a._valueTracker=
2409null;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d="";a&&(d=Ta(a)?a.checked?"true":"false":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}
2410function Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?"":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:"checkbox"===b.type||"radio"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,"checked",b,!1)}
2411function bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if("number"===d){if(0===c&&""===a.value||a.value!=c)a.value=""+c}else a.value!==""+c&&(a.value=""+c);else if("submit"===d||"reset"===d){a.removeAttribute("value");return}b.hasOwnProperty("value")?cb(a,b.type,c):b.hasOwnProperty("defaultValue")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}
2412function db(a,b,c){if(b.hasOwnProperty("value")||b.hasOwnProperty("defaultValue")){var d=b.type;if(!("submit"!==d&&"reset"!==d||void 0!==b.value&&null!==b.value))return;b=""+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;""!==c&&(a.name="");a.defaultChecked=!!a._wrapperState.initialChecked;""!==c&&(a.name=c)}
2413function cb(a,b,c){if("number"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=""+a._wrapperState.initialValue:a.defaultValue!==""+c&&(a.defaultValue=""+c)}var eb=Array.isArray;
2414function fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b["$"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty("$"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=""+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}
2415function gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:""+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b="");c=b}a._wrapperState={initialValue:Sa(c)}}
2416function ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=""+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&""!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";case "math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}
2417function lb(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?kb(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a}
2418var mb,nb=function(a){return"undefined"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if("http://www.w3.org/2000/svg"!==a.namespaceURI||"innerHTML"in a)a.innerHTML=b;else{mb=mb||document.createElement("div");mb.innerHTML="<svg>"+b.valueOf().toString()+"</svg>";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});
2419function ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}
2420var pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,
2421zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=["Webkit","ms","Moz","O"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(""+b).trim():b+"px"}
vendor: 10,537 bytes, lines 2422-2448
2422function sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),e=rb(c,b[c],d);"float"===c&&(c="cssFloat");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});
2423function ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if("object"!==typeof b.dangerouslySetInnerHTML||!("__html"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&"object"!==typeof b.style)throw Error(p(62));}}
2424function vb(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;
2425function Bb(a){if(a=Cb(a)){if("function"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}
2426function Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case "onClick":case "onClickCapture":case "onDoubleClick":case "onDoubleClickCapture":case "onMouseDown":case "onMouseDownCapture":case "onMouseMove":case "onMouseMoveCapture":case "onMouseUp":case "onMouseUpCapture":case "onMouseEnter":(d=!d.disabled)||(a=a.type,d=!("button"===a||"input"===a||"select"===a||"textarea"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&"function"!==
2427typeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,"passive",{get:function(){Lb=!0}});window.addEventListener("test",Mb,Mb);window.removeEventListener("test",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}
2428function Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}
2429function Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===
2430c){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}
2431var ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&"function"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}
2432var oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;
2433function tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;
2434default:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}
2435function vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}
2436function wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}
2437function Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}
2438function Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");
2439function Sc(a,b){switch(a){case "focusin":case "focusout":Lc=null;break;case "dragenter":case "dragleave":Mc=null;break;case "mouseover":case "mouseout":Nc=null;break;case "pointerover":case "pointerout":Oc.delete(b.pointerId);break;case "gotpointercapture":case "lostpointercapture":Pc.delete(b.pointerId)}}
2440function Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}
2441function Uc(a,b,c,d,e){switch(b){case "focusin":return Lc=Tc(Lc,a,b,c,d,e),!0;case "dragenter":return Mc=Tc(Mc,a,b,c,d,e),!0;case "mouseover":return Nc=Tc(Nc,a,b,c,d,e),!0;case "pointerover":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case "gotpointercapture":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}
2442function Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}
2443function Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}
2444function ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}
2445function bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;
2446function ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}
2447function fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;
2448function Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}
2449function jd(a){switch(a){case "cancel":case "click":case "close":case "contextmenu":case "copy":case "cut":case "auxclick":case "dblclick":case "dragend":case "dragstart":case "drop":case "focusin":case "focusout":case "input":case "invalid":case "keydown":case "keypress":case "keyup":case "mousedown":case "mouseup":case "paste":case "pause":case "play":case "pointercancel":case "pointerdown":case "pointerup":case "ratechange":case "reset":case "resize":case "seeked":case "submit":case "touchcancel":case "touchend":case "touchstart":case "volumechange":case "change":case "selectionchange":case "textInput":case "compositionstart":case "compositionend":case "compositionupdate":case "beforeblur":case "afterblur":case "beforeinput":case "blur":case "fullscreenchange":case "focus":case "hashchange":case "popstate":case "select":case "selectstart":return 1;case "drag":case "dragenter":case "dragexit":case "dragleave":case "dragover":case "mousemove":case "mouseout":case "mouseover":case "pointermove":case "pointerout":case "pointerover":case "scroll":case "toggle":case "touchmove":case "wheel":case "mouseenter":case "mouseleave":case "pointerenter":case "pointerleave":return 4;
2450case "message":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;
vendor: 4,326 bytes, lines 2450-2460
2450function nd(){if(md)return md;var a,b=ld,c=b.length,d,e="value"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}
2451function od(a){var b=a.keyCode;"charCode"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}
2452function rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():"unknown"!==typeof a.returnValue&&
2453(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():"unknown"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}
2454var sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if("movementX"in
2455a)return a.movementX;a!==yd&&(yd&&"mousemove"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return"movementY"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return"clipboardData"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:"Escape",
2456Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Nd={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",
2457119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Od={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}
2458var Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if("Unidentified"!==b)return b}return"keypress"===a.type?(a=od(a),13===a?"Enter":String.fromCharCode(a)):"keydown"===a.type||"keyup"===a.type?Nd[a.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return"keypress"===a.type?od(a):0},keyCode:function(a){return"keydown"===a.type||"keyup"===a.type?a.keyCode:0},which:function(a){return"keypress"===
2459a.type?od(a):"keydown"===a.type||"keyup"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return"deltaX"in a?a.deltaX:"wheelDeltaX"in a?-a.wheelDeltaX:0},
2460deltaY:function(a){return"deltaY"in a?a.deltaY:"wheelDeltaY"in a?-a.wheelDeltaY:"wheelDelta"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&"CompositionEvent"in window,be=null;ia&&"documentMode"in document&&(be=document.documentMode);var ce=ia&&"TextEvent"in window&&!be,de=ia&&(!ae||be&&8<be&&11>
vendor: 14,933 bytes, lines 2460-2494
2460=be),ee=String.fromCharCode(32),fe=!1;
2461function ge(a,b){switch(a){case "keyup":return-1!==$d.indexOf(b.keyCode);case "keydown":return 229!==b.keyCode;case "keypress":case "mousedown":case "focusout":return!0;default:return!1}}function he(a){a=a.detail;return"object"===typeof a&&"data"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case "compositionend":return he(b);case "keypress":if(32!==b.which)return null;fe=!0;return ee;case "textInput":return a=b.data,a===ee&&fe?null:a;default:return null}}
2462function ke(a,b){if(ie)return"compositionend"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case "paste":return null;case "keypress":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case "compositionend":return de&&"ko"!==b.locale?null:b.data;default:return null}}
2463var le={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return"input"===b?!!le[a.type]:"textarea"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,"onChange");0<b.length&&(c=new td("onChange","change",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}
2464function ve(a,b){if("change"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye="oninput"in document;if(!ye){var ze=document.createElement("div");ze.setAttribute("oninput","return;");ye="function"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent("onpropertychange",Be),qe=pe=null)}function Be(a){if("value"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}
2465function Ce(a,b,c){"focusin"===a?(Ae(),pe=b,qe=c,pe.attachEvent("onpropertychange",Be)):"focusout"===a&&Ae()}function De(a){if("selectionchange"===a||"keyup"===a||"keydown"===a)return te(qe)}function Ee(a,b){if("click"===a)return te(b)}function Fe(a,b){if("input"===a||"change"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He="function"===typeof Object.is?Object.is:Ge;
2466function Ie(a,b){if(He(a,b))return!0;if("object"!==typeof a||null===a||"object"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}
2467function Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}
2468function Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c="string"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}
2469function Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,
2470d);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});"function"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}
2471var Pe=ia&&"documentMode"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;
2472function Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,"selectionStart"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,"onSelect"),0<d.length&&(b=new td("onSelect","select",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}
2473function Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c["Webkit"+a]="webkit"+b;c["Moz"+a]="moz"+b;return c}var We={animationend:Ve("Animation","AnimationEnd"),animationiteration:Ve("Animation","AnimationIteration"),animationstart:Ve("Animation","AnimationStart"),transitionend:Ve("Transition","TransitionEnd")},Xe={},Ye={};
2474ia&&(Ye=document.createElement("div").style,"AnimationEvent"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),"TransitionEvent"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze("animationend"),af=Ze("animationiteration"),bf=Ze("animationstart"),cf=Ze("transitionend"),df=new Map,ef="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");
2475function ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,"on"+kf)}ff($e,"onAnimationEnd");ff(af,"onAnimationIteration");ff(bf,"onAnimationStart");ff("dblclick","onDoubleClick");ff("focusin","onFocus");ff("focusout","onBlur");ff(cf,"onTransitionEnd");ha("onMouseEnter",["mouseout","mouseover"]);ha("onMouseLeave",["mouseout","mouseover"]);ha("onPointerEnter",["pointerout","pointerover"]);
2476ha("onPointerLeave",["pointerout","pointerover"]);fa("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));fa("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));fa("onBeforeInput",["compositionend","keypress","textInput","paste"]);fa("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));fa("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));
2477fa("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var lf="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),mf=new Set("cancel close invalid load scroll toggle".split(" ").concat(lf));
2478function nf(a,b,c){var d=a.type||"unknown-event";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}
2479function se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}
2480function D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+"__bubble";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf="_reactListening"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){"selectionchange"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf("selectionchange",!1,b))}}
2481function pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||"touchstart"!==b&&"touchmove"!==b&&"wheel"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}
2482function hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];
2483a:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case "keypress":if(0===od(c))break a;case "keydown":case "keyup":k=Rd;break;case "focusin":n="focus";k=Fd;break;case "focusout":n="blur";k=Fd;break;case "beforeblur":case "afterblur":k=Fd;break;case "click":if(2===c.button)break a;case "auxclick":case "dblclick":case "mousedown":case "mousemove":case "mouseup":case "mouseout":case "mouseover":case "contextmenu":k=Bd;break;case "drag":case "dragend":case "dragenter":case "dragexit":case "dragleave":case "dragover":case "dragstart":case "drop":k=
2484Dd;break;case "touchcancel":case "touchend":case "touchmove":case "touchstart":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case "scroll":k=vd;break;case "wheel":k=Zd;break;case "copy":case "cut":case "paste":k=Jd;break;case "gotpointercapture":case "lostpointercapture":case "pointercancel":case "pointerdown":case "pointermove":case "pointerout":case "pointerover":case "pointerup":k=Td}var t=0!==(b&4),J=!t&&"scroll"===a,x=t?null!==h?h+"Capture":null:h;t=[];for(var w=d,u;null!==
2485w;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h="mouseover"===a||"pointerover"===a;k="mouseout"===a||"pointerout"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==
2486n&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F="onMouseLeave";x="onMouseEnter";w="mouse";if("pointerout"===a||"pointerover"===a)t=Td,F="onPointerLeave",x="onPointerEnter",w="pointer";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+"leave",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+"enter",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=
2487vf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if("select"===k||"input"===k&&"file"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&"input"===k.toLowerCase()&&("checkbox"===h.type||"radio"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);"focusout"===a&&(xa=h._wrapperState)&&
2488xa.controlled&&"number"===h.type&&cb(h,"number",h.value)}xa=d?ue(d):window;switch(a){case "focusin":if(me(xa)||"true"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case "focusout":Se=Re=Qe=null;break;case "mousedown":Te=!0;break;case "contextmenu":case "mouseup":case "dragend":Te=!1;Ue(g,c,e);break;case "selectionchange":if(Pe)break;case "keydown":case "keyup":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case "compositionstart":var ba="onCompositionStart";break b;case "compositionend":ba="onCompositionEnd";
2489break b;case "compositionupdate":ba="onCompositionUpdate";break b}ba=void 0}else ie?ge(a,c)&&(ba="onCompositionEnd"):"keydown"===a&&229===c.keyCode&&(ba="onCompositionStart");ba&&(de&&"ko"!==c.locale&&(ie||"onCompositionStart"!==ba?"onCompositionEnd"===ba&&ie&&($a=nd()):(kd=e,ld="value"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,"onBeforeInput"),
24900<d.length&&(e=new Ld("onBeforeInput","beforeinput",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+"Capture",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}
2491function wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\r\n?/g,yf=/\u0000|\uFFFD/g;function zf(a){return("string"===typeof a?a:""+a).replace(xf,"\n").replace(yf,"")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}
2492var Cf=null,Df=null;function Ef(a,b){return"textarea"===a||"noscript"===a||"string"===typeof b.children||"number"===typeof b.children||"object"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}
2493var Ff="function"===typeof setTimeout?setTimeout:void 0,Gf="function"===typeof clearTimeout?clearTimeout:void 0,Hf="function"===typeof Promise?Promise:void 0,Jf="function"===typeof queueMicrotask?queueMicrotask:"undefined"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}
2494function Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);
2494if(e&&8===e.nodeType)if(c=e.data,"/$"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else"$"!==c&&"$?"!==c&&"$!"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if("$"===b||"$!"===b||"$?"===b)break;if("/$"===b)return null}}return a}
2495function Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if("$"===c||"$!"===c||"$?"===c){if(0===b)return a;b--}else"/$"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of="__reactFiber$"+Nf,Pf="__reactProps$"+Nf,uf="__reactContainer$"+Nf,of="__reactEvents$"+Nf,Qf="__reactListeners$"+Nf,Rf="__reactHandles$"+Nf;
2496function Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}
2497function E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}
2498function Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if("function"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||"Unknown",e));return A({},c,d)}
2499function cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}
2500function jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg="";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}
2501function ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}
2501function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;
2502function Ag(a,b){var c=Bg(5,null,null,0);c.elementType="DELETED";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}
2503function Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=
2504null,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}
2505function Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b="head"!==b&&"body"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if("/$"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else"$"!==c&&"$!"!==c&&"$?"!==c||b++}a=a.nextSibling}yg=
2506null}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}
2507function Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}
2508function Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;
vendor: 73,848 bytes, lines 2508-2682
2508return Zg(a,d)}
2509function Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}
2510function bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}
2511function dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}
2512function fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=
2513b;c.lastBaseUpdate=b}
2514function gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,
2515next:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if("function"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r="function"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;
2516h=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}
2517function ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if("function"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}
2518var nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=
2519lh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return"function"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}
2520function ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;"object"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}
2521function qh(a,b,c,d){a=b.state;"function"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);"function"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}
2522function rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;"object"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;"function"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);"function"===typeof b.getDerivedStateFromProps||"function"===typeof e.getSnapshotBeforeUpdate||"function"!==typeof e.UNSAFE_componentWillMount&&"function"!==typeof e.componentWillMount||(b=e.state,
2523"function"===typeof e.componentWillMount&&e.componentWillMount(),"function"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);"function"===typeof e.componentDidMount&&(a.flags|=4194308)}
2524function sh(a,b,c){a=c.ref;if(null!==a&&"function"!==typeof a&&"object"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=""+a;if(null!==b&&null!==b.ref&&"function"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if("string"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}
2525function th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,"[object Object]"===a?"object with keys {"+Object.keys(b).join(", ")+"}":a));}function uh(a){var b=a._init;return b(a._payload)}
2526function vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&
2527null===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||"object"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||
2528b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if("string"===typeof b&&""!==b||"number"===typeof b)return b=xh(""+b,a.mode,c),b.return=a,b;if("object"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),
2529c.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if("string"===typeof c&&""!==c||"number"===typeof c)return null!==e?null:h(a,b,""+c,d);if("object"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,
2530b,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if("string"===typeof d&&""!==d||"number"===typeof d)return a=a.get(c)||null,h(b,a,""+d,e);if("object"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}
2531function n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===
2532x.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if("function"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,
2533m),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){"object"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if("object"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=
2534f.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||"object"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==
2535d;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return"string"===typeof f&&""!==f||"number"===typeof f?(f=""+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):
2536(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,"");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}
2537function Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);
2538function Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||"$?"===c.data||"$!"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];
2539function Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}
2540function Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}
2541function ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}
2542function ei(a,b){return"function"===typeof b?b(a):b}
2543function fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,
2544eagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}
2545function gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(Ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function hi(){}
2546function ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}
2547function mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}
2548function qi(a){var b=ci();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}
2549function li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}
2550function ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}
2551function yi(a,b){if("function"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}
2552function Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}
2553function Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}
2554function ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}
2555function Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}
2556var ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,
25574,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=
2558ci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,
2559f,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=":"+b+"R"+c;c=Uh++;0<c&&(b+="H"+c.toString(32));b+=":"}else c=Vh++,b=":"+b+"r"+c.toString(32)+":";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},
2560useDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===
2561O?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c="",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e="\nError generating stack: "+f.message+"\n"+f.stack}return{value:a,source:b,stack:e,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}
2562function Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni="function"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}
2563function Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if("function"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&"function"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);"function"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:""})});return c}
2564function Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}
2565function Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}
2566function Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}
2567function aj(a,b,c,d,e){if(null===a){var f=c.type;if("function"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}
2568function cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}
2569function ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if("hidden"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==
2570f?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}
2571function ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;"object"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q="function"===typeof m||"function"===typeof g.getSnapshotBeforeUpdate;q||"function"!==typeof g.UNSAFE_componentWillReceiveProps&&"function"!==typeof g.componentWillReceiveProps||
2572(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?("function"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||"function"!==typeof g.UNSAFE_componentWillMount&&"function"!==typeof g.componentWillMount||("function"===typeof g.componentWillMount&&g.componentWillMount(),"function"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),"function"===typeof g.componentDidMount&&(b.flags|=4194308)):
2573("function"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):("function"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;"object"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m="function"===typeof y||"function"===typeof g.getSnapshotBeforeUpdate)||
2574"function"!==typeof g.UNSAFE_componentWillReceiveProps&&"function"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?("function"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||"function"!==typeof g.UNSAFE_componentWillUpdate&&"function"!==typeof g.componentWillUpdate||("function"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),"function"===typeof g.UNSAFE_componentWillUpdate&&
2575g.UNSAFE_componentWillUpdate(d,n,k)),"function"===typeof g.componentDidUpdate&&(b.flags|=4),"function"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):("function"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),"function"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):("function"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===
2576a.memoizedState||(b.flags|=4),"function"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}
2577function kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&"function"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}
2578function mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}
2579function pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:"$!"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:"hidden",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=
2580g):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:"hidden",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=
2581b;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:"visible",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}
2582function rj(a,b){b=qj({mode:"visible",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}
2583function sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:"visible",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if("$!"===e.data){d=e.nextSibling&&e.nextSibling.dataset;
2584if(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;
25850!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if("$?"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}
2586function xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}
2587function yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=
2588null;else switch(e){case "forwards":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case "backwards":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case "together":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}
2589function jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}
2590function zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&
2591b.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;
2592Aj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};
2593Cj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case "input":e=Ya(a,e);d=Ya(a,d);f=[];break;case "select":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case "textarea":e=gb(a,e);d=gb(a,d);f=[];break;default:"function"!==typeof e.onClick&&"function"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if("style"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&
2594(c||(c={}),c[g]="")}else"dangerouslySetInnerHTML"!==l&&"children"!==l&&"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if("style"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]="");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,
2595c)),c=k;else"dangerouslySetInnerHTML"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):"children"===l?"string"!==typeof k&&"number"!==typeof k||(f=f||[]).push(l,""+k):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&(ea.hasOwnProperty(l)?(null!=k&&"onScroll"===l&&D("scroll",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push("style",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};
2596function Ej(a,b){if(!I)switch(a.tailMode){case "hidden":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case "collapsed":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}
2597function S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}
2598function Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);
2599c=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case "dialog":D("cancel",d);D("close",d);break;case "iframe":case "object":case "embed":D("load",d);break;case "video":case "audio":for(e=0;e<lf.length;e++)D(lf[e],d);break;case "source":D("error",d);break;case "img":case "image":case "link":D("error",
2600d);D("load",d);break;case "details":D("toggle",d);break;case "input":Za(d,f);D("invalid",d);break;case "select":d._wrapperState={wasMultiple:!!f.multiple};D("invalid",d);break;case "textarea":hb(d,f),D("invalid",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];"children"===g?"string"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=["children",h]):"number"===typeof h&&d.textContent!==""+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,
2601h,a),e=["children",""+h]):ea.hasOwnProperty(g)&&null!=h&&"onScroll"===g&&D("scroll",d)}switch(c){case "input":Va(d);db(d,f,!0);break;case "textarea":Va(d);jb(d);break;case "select":case "option":break;default:"function"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;"http://www.w3.org/1999/xhtml"===a&&(a=kb(c));"http://www.w3.org/1999/xhtml"===a?"script"===c?(a=g.createElement("div"),a.innerHTML="<script>\x3c/script>",a=a.removeChild(a.firstChild)):
2602"string"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),"select"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case "dialog":D("cancel",a);D("close",a);e=d;break;case "iframe":case "object":case "embed":D("load",a);e=d;break;case "video":case "audio":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case "source":D("error",a);e=d;break;case "img":case "image":case "link":D("error",
2603a);D("load",a);e=d;break;case "details":D("toggle",a);e=d;break;case "input":Za(a,d);e=Ya(a,d);D("invalid",a);break;case "option":e=d;break;case "select":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D("invalid",a);break;case "textarea":hb(a,d);e=gb(a,d);D("invalid",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];"style"===f?sb(a,k):"dangerouslySetInnerHTML"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):"children"===f?"string"===typeof k?("textarea"!==
2604c||""!==k)&&ob(a,k):"number"===typeof k&&ob(a,""+k):"suppressContentEditableWarning"!==f&&"suppressHydrationWarning"!==f&&"autoFocus"!==f&&(ea.hasOwnProperty(f)?null!=k&&"onScroll"===f&&D("scroll",a):null!=k&&ta(a,f,k,g))}switch(c){case "input":Va(a);db(a,d,!1);break;case "textarea":Va(a);jb(a);break;case "option":null!=d.value&&a.setAttribute("value",""+Sa(d.value));break;case "select":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,
2605!0);break;default:"function"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case "button":case "input":case "select":case "textarea":d=!!d.autoFocus;break a;case "img":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if("string"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=
2606xg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===
2607a){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),
2608Bj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,
2609g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=
2610a.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&"hidden"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=
2611b,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}
2612function Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),
2613null;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj="function"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if("function"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;
2614function Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if("selectionStart"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=
2615q.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;
2616case 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent="":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}
2617function Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}"function"===typeof b?b(a):b.current=a}}
2618function Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}
2619function Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}
2620function Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}
2621function Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}
2622function ak(a,b,c){if(lc&&"function"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;
2623Zj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,"function"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==
2624c.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}
2625function dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}
2626function ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,"")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;
2627a.updateQueue=null;if(null!==k)try{"input"===h&&"radio"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];"style"===m?sb(e,q):"dangerouslySetInnerHTML"===m?nb(e,q):"children"===m?ob(e,q):ta(e,m,q,l)}switch(h){case "input":bb(e,f);break;case "textarea":ib(e,f);break;case "select":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,
2628f.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:"",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||
2629null!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if("function"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=
2630b.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,"function"===typeof f.setProperty?f.setProperty("display","none","important"):f.display="none"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty("display")?k.display:null,h.style.display=
2631rb("display",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?"":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,
2632a),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,""),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}
2633function jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}
2634function lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=
2635b.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case "button":case "input":case "select":case "textarea":k.autoFocus&&c.focus();break;case "img":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;
2636default:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}
2637function kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if("function"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}
2638var mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}
2639function lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}
2640function Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}
2641function Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);
2642else{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===
2643d)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}
2644function Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}
2645function Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}
2646function Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}
2647function Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}
2648function Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=
26490;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}
2650function Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&"object"===typeof k&&"function"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,
2651m.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;
2652b&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&("function"===typeof w.getDerivedStateFromError||null!==u&&"function"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}
2653function uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}
2654function Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}
2655function Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;
2656var g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}
2657function Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===
2658l){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==
2659u)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&"function"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}
2660function W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if("function"===typeof b.type.getDerivedStateFromError||"function"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}
2661function Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}
2662function ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;
2663Wk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;"object"===typeof e&&null!==e&&"function"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=
2664null,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,
2665d,""));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=
2666f,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),
2667hj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;
2668g=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,
2669c,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),
2670b.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}
2671function al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}
2672function $k(a){if("function"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}
2673function wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};
2674c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}
2675function yh(a,b,c,d,e,f){var g=2;d=a;if("function"===typeof a)bj(a)&&(g=1);else if("string"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if("object"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;
2676break a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,""));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}
2677function zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}
2678function bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=
2679null}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:""+d,children:a,containerInfo:b,implementation:c}}
2680function el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}
2681function fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}
2682function hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;
2682a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll="function"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}
2683nl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}
2684nl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||" react-mount-point-unstable "!==a.nodeValue))}function ql(){}
2685function rl(a,b,c,d,e){if(e){if("function"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,"",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if("function"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,"",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}
2686function sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if("function"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};
2687Fc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};
2688yb=function(a,b,c){switch(b){case "input":bb(a,c);b=c.name;if("radio"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll("input[name="+JSON.stringify(""+b)+'][type="radio"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case "textarea":ib(a,c);break;case "select":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;
2689var tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:"18.2.0",rendererPackageName:"react-dom"};
2690var vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||
2691kl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0-next-9e3b772b8-20220608"};if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;
2692exports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d="",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};
vendor: 5,881 bytes, lines 2693-2789
2693exports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if("function"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(",");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};
2694exports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f="",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,
2695e);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;
2696exports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version="18.2.0-next-9e3b772b8-20220608";
2697
2698
2699/***/ }),
2700
2701/***/ 745:
2702/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
2703
2704"use strict";
2705var __webpack_unused_export__;
2706
2707
2708var m = __webpack_require__(935);
2709if (true) {
2710  exports.s = m.createRoot;
2711  __webpack_unused_export__ = m.hydrateRoot;
2712} else { var i; }
2713
2714
2715/***/ }),
2716
2717/***/ 935:
2718/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2719
2720"use strict";
2721
2722
2723function checkDCE() {
2724  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
2725  if (
2726    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||
2727    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'
2728  ) {
2729    return;
2730  }
2731  if (false) {}
2732  try {
2733    // Verify that the code above has been dead code eliminated (DCE'd).
2734    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);
2735  } catch (err) {
2736    // DevTools shouldn't crash React, no matter what.
2737    // We should still report in case we break this code.
2738    console.error(err);
2739  }
2740}
2741
2742if (true) {
2743  // DCE check should happen before ReactDOM bundle executes so that
2744  // DevTools can report bad minification during injection.
2745  checkDCE();
2746  module.exports = __webpack_require__(101);
2747} else {}
2748
2749
2750/***/ }),
2751
2752/***/ 251:
2753/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
2754
2755"use strict";
2756/**
2757 * @license React
2758 * react-jsx-runtime.production.min.js
2759 *
2760 * Copyright (c) Facebook, Inc. and its affiliates.
2761 *
2762 * This source code is licensed under the MIT license found in the
2763 * LICENSE file in the root directory of this source tree.
2764 */
2765var f=__webpack_require__(294),k=Symbol.for("react.element"),l=Symbol.for("react.fragment"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};
2766function q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=""+g);void 0!==a.key&&(e=""+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;
2767
2768
2769/***/ }),
2770
2771/***/ 408:
2772/***/ (function(__unused_webpack_module, exports) {
2773
2774"use strict";
2775/**
2776 * @license React
2777 * react.production.min.js
2778 *
2779 * Copyright (c) Facebook, Inc. and its affiliates.
2780 *
2781 * This source code is licensed under the MIT license found in the
2782 * LICENSE file in the root directory of this source tree.
2783 */
2784var l=Symbol.for("react.element"),n=Symbol.for("react.portal"),p=Symbol.for("react.fragment"),q=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),t=Symbol.for("react.provider"),u=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),w=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),z=Symbol.iterator;function A(a){if(null===a||"object"!==typeof a)return null;a=z&&a[z]||a["@@iterator"];return"function"===typeof a?a:null}
2785var B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};
2786E.prototype.setState=function(a,b){if("object"!==typeof a&&"function"!==typeof a&&null!=a)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,a,b,"setState")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,"forceUpdate")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;
2787H.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};
2788function M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=""+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}
2789function N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}
vendor: 5,107 bytes, lines 2789-2831
2789function O(a){return"object"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={"=":"=0",":":"=2"};return"$"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\/+/g;function Q(a,b){return"object"===typeof a&&null!==a&&null!=a.key?escape(""+a.key):b.toString(36)}
2790function R(a,b,e,d,c){var k=typeof a;if("undefined"===k||"boolean"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case "string":case "number":h=!0;break;case "object":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=""===d?"."+Q(h,0):d,I(c)?(e="",null!=a&&(e=a.replace(P,"$&/")+"/"),R(c,b,e,"",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?"":(""+c.key).replace(P,"$&/")+"/")+a)),b.push(c)),1;h=0;d=""===d?".":d+":";if(I(a))for(var g=0;g<a.length;g++){k=
2791a[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),"function"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if("object"===k)throw b=String(a),Error("Objects are not valid as a React child (found: "+("[object Object]"===b?"object with keys {"+Object.keys(a).join(", ")+"}":b)+"). If you meant to render a collection of children, use an array instead.");return h}
2792function S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,"","",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}
2793var U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error("React.Children.only expected to receive a single React element child.");return a}};exports.Component=E;exports.Fragment=p;
2794exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;
2795exports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+a+".");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=""+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);
2796for(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};
2797exports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error("act(...) is not supported in production builds of React.");};
2798exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};
2799exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};
2800exports.useTransition=function(){return U.current.useTransition()};exports.version="18.2.0";
2801
2802
2803/***/ }),
2804
2805/***/ 294:
2806/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2807
2808"use strict";
2809
2810
2811if (true) {
2812  module.exports = __webpack_require__(408);
2813} else {}
2814
2815
2816/***/ }),
2817
2818/***/ 893:
2819/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2820
2821"use strict";
2822
2823
2824if (true) {
2825  module.exports = __webpack_require__(251);
2826} else {}
2827
2828
2829/***/ }),
2830
2831/***/ 53:
vendor: 4,571 bytes, lines 2832-2877
2832/***/ (function(__unused_webpack_module, exports) {
2833
2834"use strict";
2835/**
2836 * @license React
2837 * scheduler.production.min.js
2838 *
2839 * Copyright (c) Facebook, Inc. and its affiliates.
2840 *
2841 * This source code is licensed under the MIT license found in the
2842 * LICENSE file in the root directory of this source tree.
2843 */
2844function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}
2845function g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if("object"===typeof performance&&"function"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D="function"===typeof setTimeout?setTimeout:null,E="function"===typeof clearTimeout?clearTimeout:null,F="undefined"!==typeof setImmediate?setImmediate:null;
2846"undefined"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}
2847function J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if("function"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();"function"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;
2848function M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if("function"===typeof F)S=function(){F(R)};else if("undefined"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}
2849exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};
2850exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};
2851exports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};
2852exports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();"object"===typeof c&&null!==c?(c=c.delay,c="number"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};
2853exports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};
2854
2855
2856/***/ }),
2857
2858/***/ 840:
2859/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2860
2861"use strict";
2862
2863
2864if (true) {
2865  module.exports = __webpack_require__(53);
2866} else {}
2867
2868
2869/***/ }),
2870
2871/***/ 811:
2872/***/ (function(module) {
2873
2874/* global btoa */
2875(function (root) {
2876  let base64
2877
2878  // This function's sole purpose is to help us ignore lone surrogates so that
2879  // malformed strings don't throw in the browser while being processed
2880  // permissively in Node.js. If we didn't care about parity, we could get rid
2881  // of it.
2882  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt
2883  function getWholeCharAndI (str, i) {
2884    const code = str.charCodeAt(i)
2885
2886    // This is a coherence check. `code` should never be `NaN`.
2887    /* istanbul ignore if */
2888    if (isNaN(code)) {
2889      throw new RangeError('Index ' + i + ' out of range for string "' + str + '"; please open an issue at https://github.com/Trott/slug/issues/new')
2890    }
2891    if (code < 0xD800 || code > 0xDFFF) {
2892      return [str.charAt(i), i] // Non-surrogate character, keeping 'i' the same
2893    }
2894
2895    // High surrogate
2896    if (code >= 0xD800 && code <= 0xDBFF) {
2897      if (str.length <= (i + 1)) {
2898        // High surrogate without following low surrogate
2899        return [' ', i]
2900      }
2901      const next = str.charCodeAt(i + 1)
2902      if (next < 0xDC00 || next > 0xDFFF) {
2903        // High surrogate without following low surrogate
2904        return [' ', i]
2905      }
2906      return [str.charAt(i) + str.charAt(i + 1), i + 1]
2907    }
2908
2909    // Low surrogate (0xDC00 <= code && code <= 0xDFFF)
2910    if (i === 0) {
2911      // Low surrogate without preceding high surrogate
2912      return [' ', i]
2913    }
2914
2915    const prev = str.charCodeAt(i - 1)
2916
2917    /* istanbul ignore else */
2918    if (prev < 0xD800 || prev > 0xDBFF) {
2919      // Low surrogate without preceding high surrogate
2920      return [' ', i]
2921    }
2922
2923    /* istanbul ignore next */
2924    throw new Error('String "' + str + '" reaches code believed to be unreachable; please open an issue at https://github.com/Trott/slug/issues/new')
2925  }
2926
2927  if (typeof window !== 'undefined') {
2928    if (window.btoa) {
2929      base64 = function (input) {
2930        return btoa(unescape(encodeURIComponent(input)))
2931      }
2932    } else {
2933      // Polyfill for environments that don't have btoa or Buffer class (notably, React Native).
2934      // Based on https://github.com/davidchambers/Base64.js/blob/a121f75bb10c8dd5d557886c4b1069b31258d230/base64.js
2935      base64 = function (input) {
2936        const str = unescape(encodeURIComponent(input + ''))
2937        let output = ''
2938        for (
2939          let block, charCode, idx = 0, map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
2940          str.charAt(idx | 0) || (map = '=', idx % 1);
2941          output += map.charAt(63 & block >> 8 - idx % 1 * 8)
2942        ) {
2943          charCode = str.charCodeAt(idx += 3 / 4)
2944          // This is a coherence check. The result of unescape(encodeURIComponent()) should always be
2945          // characters with code points that fit into two bytes.
2946          /* istanbul ignore next */
2947          if (charCode > 0xFF) {
2948            throw new Error("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.")
2949          }
2950          block = block << 8 | charCode
2951        }
2952        return output
2953      }
2954    }
2955  } else {
2956    base64 = function (input) {
2957      return Buffer.from(input).toString('base64')
2958    }
2959  }
2960
2961  function slug (string, opts) {
2962    let result = slugify(string, opts)
2963    const fallback = opts && opts.fallback !== undefined ? opts.fallback : slug.defaults.fallback
2964    // If output is an empty string, try slug for base64 of string.
2965    if (fallback === true && result === '') {
2966      // Get rid of lone surrogates.
2967      let input = ''
2968      for (let i = 0; i < string.length; i++) {
2969        const charAndI = getWholeCharAndI(string, i)
2970        i = charAndI[1]
2971        input += charAndI[0]
2972      }
2973      result = slugify(base64(input), opts)
2974    }
2975    return result
2976  }
2977
2978  const locales = {
2979    // http://www.eki.ee/wgrs/rom1_bg.pdf
2980    bg: { Й: 'Y', й: 'y', X: 'H', x: 'h', Ц: 'Ts', ц: 'ts', Щ: 'Sht', щ: 'sht', Ъ: 'A', ъ: 'a', Ь: 'Y', ь: 'y' },
2981    // Need a reference URL for German, although this is pretty well-known.
2982    de: { Ä: 'AE', ä: 'ae', Ö: 'OE', ö: 'oe', Ü: 'UE', ü: 'ue' },
2983    // Need a reference URL for Serbian.
2984    sr: { đ: 'dj', Đ: 'DJ' },
2985    // https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/864314/ROMANIZATION_OF_UKRAINIAN.pdf
2986    uk: { И: 'Y', и: 'y', Й: 'Y', й: 'y', Ц: 'Ts', ц: 'ts', Х: 'Kh', х: 'kh', Щ: 'Shch', щ: 'shch', Г: 'H', г: 'h' }
2987  }
2988
2989  let defaultLocale = {}
2990
2991  function slugify (string, opts) {
2992    if (typeof string !== 'string') {
2993      throw new Error('slug() requires a string argument, received ' + typeof string)
2994    }
2995    if (typeof opts === 'string') { opts = { replacement: opts } }
2996    opts = opts ? Object.assign({}, opts) : {}
2997    opts.mode = opts.mode || slug.defaults.mode
2998    const defaults = slug.defaults.modes[opts.mode]
vendor: 6,119 bytes, lines 2999-3348
2999    const keys = ['replacement', 'multicharmap', 'charmap', 'remove', 'lower', 'trim']
3000    for (let key, i = 0, l = keys.length; i < l; i++) {
3001      key = keys[i]
3002      opts[key] = (key in opts) ? opts[key] : defaults[key]
3003    }
3004    const localeMap = locales[opts.locale] || defaultLocale
3005
3006    let lengths = []
3007    for (const key in opts.multicharmap) {
3008      if (!Object.prototype.hasOwnProperty.call(opts.multicharmap, key)) { continue }
3009
3010      const len = key.length
3011      if (lengths.indexOf(len) === -1) { lengths.push(len) }
3012    }
3013
3014    // We want to match the longest string if there are multiple matches, so
3015    // sort lengths in descending order.
3016    lengths = lengths.sort(function (a, b) { return b - a })
3017
3018    const disallowedChars = opts.mode === 'rfc3986' ? /[^\w\s\-.~]/ : /[^A-Za-z0-9\s]/
3019
3020    let result = ''
3021    for (let char, i = 0, l = string.length; i < l; i++) {
3022      char = string[i]
3023      let matchedMultichar = false
3024      for (let j = 0; j < lengths.length; j++) {
3025        const len = lengths[j]
3026        const str = string.substr(i, len)
3027        if (opts.multicharmap[str]) {
3028          i += len - 1
3029          char = opts.multicharmap[str]
3030          matchedMultichar = true
3031          break
3032        }
3033      }
3034      if (!matchedMultichar) {
3035        if (localeMap[char]) {
3036          char = localeMap[char]
3037        } else if (opts.charmap[char]) {
3038          char = opts.charmap[char].replace(opts.replacement, ' ')
3039        } else if (char.includes(opts.replacement)) {
3040          // preserve the replacement character in case it is excluded by disallowedChars
3041          char = char.replace(opts.replacement, ' ')
3042        } else {
3043          char = char.replace(disallowedChars, '')
3044        }
3045      }
3046      result += char
3047    }
3048
3049    if (opts.remove) {
3050      result = result.replace(opts.remove, '')
3051    }
3052    if (opts.trim) {
3053      result = result.trim()
3054    }
3055    result = result.replace(/\s+/g, opts.replacement) // convert spaces
3056    if (opts.lower) {
3057      result = result.toLowerCase()
3058    }
3059    return result
3060  }
3061
3062  const initialMulticharmap = {
3063    // multibyte devanagari characters (hindi, sanskrit, etc.)
3064    फ़: 'Fi',
3065    ग़: 'Ghi',
3066    ख़: 'Khi',
3067    क़: 'Qi',
3068    ड़: 'ugDha',
3069    ढ़: 'ugDhha',
3070    य़: 'Yi',
3071    ज़: 'Za',
3072    // hebrew
3073    // Refs: http://www.eki.ee/wgrs/rom1_he.pdf
3074    // Refs: https://en.wikipedia.org/wiki/Niqqud
3075    בִי: 'i',
3076    בֵ: 'e',
3077    בֵי: 'e',
3078    בֶ: 'e',
3079    בַ: 'a',
3080    בָ: 'a',
3081    בֹ: 'o',
3082    וֹ: 'o',
3083    בֻ: 'u',
3084    וּ: 'u',
3085    בּ: 'b',
3086    כּ: 'k',
3087    ךּ: 'k',
3088    פּ: 'p',
3089    שׁ: 'sh',
3090    שׂ: 's',
3091    בְ: 'e',
3092    חֱ: 'e',
3093    חֲ: 'a',
3094    חֳ: 'o',
3095    בִ: 'i'
3096  }
3097
3098  // https://github.com/django/django/blob/master/django/contrib/admin/static/admin/js/urlify.js
3099  const initialCharmap = {
3100    // latin
3101    À: 'A',
3102    Á: 'A',
3103    Â: 'A',
3104    Ã: 'A',
3105    Ä: 'A',
3106    Å: 'A',
3107    Æ: 'AE',
3108    Ç: 'C',
3109    È: 'E',
3110    É: 'E',
3111    Ê: 'E',
3112    Ë: 'E',
3113    Ì: 'I',
3114    Í: 'I',
3115    Î: 'I',
3116    Ï: 'I',
3117    Ð: 'D',
3118    Ñ: 'N',
3119    Ò: 'O',
3120    Ó: 'O',
3121    Ô: 'O',
3122    Õ: 'O',
3123    Ö: 'O',
3124    Ő: 'O',
3125    Ø: 'O',
3126    Ō: 'O',
3127    Ù: 'U',
3128    Ú: 'U',
3129    Û: 'U',
3130    Ü: 'U',
3131    Ű: 'U',
3132    Ý: 'Y',
3133    Þ: 'TH',
3134    ß: 'ss',
3135    à: 'a',
3136    á: 'a',
3137    â: 'a',
3138    ã: 'a',
3139    ä: 'a',
3140    å: 'a',
3141    æ: 'ae',
3142    ç: 'c',
3143    è: 'e',
3144    é: 'e',
3145    ê: 'e',
3146    ë: 'e',
3147    ì: 'i',
3148    í: 'i',
3149    î: 'i',
3150    ï: 'i',
3151    ð: 'd',
3152    ñ: 'n',
3153    ò: 'o',
3154    ó: 'o',
3155    ô: 'o',
3156    õ: 'o',
3157    ö: 'o',
3158    ő: 'o',
3159    ø: 'o',
3160    ō: 'o',
3161    Œ: 'OE',
3162    œ: 'oe',
3163    ù: 'u',
3164    ú: 'u',
3165    û: 'u',
3166    ü: 'u',
3167    ű: 'u',
3168    ý: 'y',
3169    þ: 'th',
3170    ÿ: 'y',
3171    ẞ: 'SS',
3172    // greek
3173    α: 'a',
3174    β: 'b',
3175    γ: 'g',
3176    δ: 'd',
3177    ε: 'e',
3178    ζ: 'z',
3179    η: 'h',
3180    θ: '8',
3181    ι: 'i',
3182    κ: 'k',
3183    λ: 'l',
3184    μ: 'm',
3185    ν: 'n',
3186    ξ: '3',
3187    ο: 'o',
3188    π: 'p',
3189    ρ: 'r',
3190    σ: 's',
3191    τ: 't',
3192    υ: 'y',
3193    φ: 'f',
3194    χ: 'x',
3195    ψ: 'ps',
3196    ω: 'w',
3197    ά: 'a',
3198    έ: 'e',
3199    ί: 'i',
3200    ό: 'o',
3201    ύ: 'y',
3202    ή: 'h',
3203    ώ: 'w',
3204    ς: 's',
3205    ϊ: 'i',
3206    ΰ: 'y',
3207    ϋ: 'y',
3208    ΐ: 'i',
3209    Α: 'A',
3210    Β: 'B',
3211    Γ: 'G',
3212    Δ: 'D',
3213    Ε: 'E',
3214    Ζ: 'Z',
3215    Η: 'H',
3216    Θ: '8',
3217    Ι: 'I',
3218    Κ: 'K',
3219    Λ: 'L',
3220    Μ: 'M',
3221    Ν: 'N',
3222    Ξ: '3',
3223    Ο: 'O',
3224    Π: 'P',
3225    Ρ: 'R',
3226    Σ: 'S',
3227    Τ: 'T',
3228    Υ: 'Y',
3229    Φ: 'F',
3230    Χ: 'X',
3231    Ψ: 'PS',
3232    Ω: 'W',
3233    Ά: 'A',
3234    Έ: 'E',
3235    Ί: 'I',
3236    Ό: 'O',
3237    Ύ: 'Y',
3238    Ή: 'H',
3239    Ώ: 'W',
3240    Ϊ: 'I',
3241    Ϋ: 'Y',
3242    // turkish
3243    ş: 's',
3244    Ş: 'S',
3245    ı: 'i',
3246    İ: 'I',
3247    ğ: 'g',
3248    Ğ: 'G',
3249    // russian
3250    а: 'a',
3251    б: 'b',
3252    в: 'v',
3253    г: 'g',
3254    д: 'd',
3255    е: 'e',
3256    ё: 'yo',
3257    ж: 'zh',
3258    з: 'z',
3259    и: 'i',
3260    й: 'j',
3261    к: 'k',
3262    л: 'l',
3263    м: 'm',
3264    н: 'n',
3265    о: 'o',
3266    п: 'p',
3267    р: 'r',
3268    с: 's',
3269    т: 't',
3270    у: 'u',
3271    ф: 'f',
3272    х: 'h',
3273    ц: 'c',
3274    ч: 'ch',
3275    ш: 'sh',
3276    щ: 'sh',
3277    ъ: 'u',
3278    ы: 'y',
3279    ь: '',
3280    э: 'e',
3281    ю: 'yu',
3282    я: 'ya',
3283    А: 'A',
3284    Б: 'B',
3285    В: 'V',
3286    Г: 'G',
3287    Д: 'D',
3288    Е: 'E',
3289    Ё: 'Yo',
3290    Ж: 'Zh',
3291    З: 'Z',
3292    И: 'I',
3293    Й: 'J',
3294    К: 'K',
3295    Л: 'L',
3296    М: 'M',
3297    Н: 'N',
3298    О: 'O',
3299    П: 'P',
3300    Р: 'R',
3301    С: 'S',
3302    Т: 'T',
3303    У: 'U',
3304    Ф: 'F',
3305    Х: 'H',
3306    Ц: 'C',
3307    Ч: 'Ch',
3308    Ш: 'Sh',
3309    Щ: 'Sh',
3310    Ъ: 'U',
3311    Ы: 'Y',
3312    Ь: '',
3313    Э: 'E',
3314    Ю: 'Yu',
3315    Я: 'Ya',
3316    // ukranian
3317    Є: 'Ye',
3318    І: 'I',
3319    Ї: 'Yi',
3320    Ґ: 'G',
3321    є: 'ye',
3322    і: 'i',
3323    ї: 'yi',
3324    ґ: 'g',
3325    // czech
3326    č: 'c',
3327    ď: 'd',
3328    ě: 'e',
3329    ň: 'n',
3330    ř: 'r',
3331    Å¡: 's',
3332    ť: 't',
3333    ů: 'u',
3334    ž: 'z',
3335    Č: 'C',
3336    Ď: 'D',
3337    Ě: 'E',
3338    Ň: 'N',
3339    Ř: 'R',
3340    Å : 'S',
3341    Ť: 'T',
3342    Å®: 'U',
3343    Ž: 'Z',
3344    // slovak
3345    ľ: 'l',
3346    ĺ: 'l',
3347    ŕ: 'r',
3348    Ľ: 'L',
3349    Ĺ: 'L',
3350    Ŕ: 'R',
3351    // polish
3352    ą: 'a',
3353    ć: 'c',
3354    ę: 'e',
3355    ł: 'l',
3356    ń: 'n',
3357    ś: 's',
3358    ź: 'z',
3359    ż: 'z',
3360    Ą: 'A',
3361    Ć: 'C',
3362    Ę: 'E',
3363    Ł: 'L',
3364    Ń: 'N',
3365    Ś: 'S',
3366    Ź: 'Z',
3367    Å»: 'Z',
3368    // latvian
3369    ā: 'a',
3370    ē: 'e',
3371    ģ: 'g',
3372    Ä«: 'i',
3373    Ä·: 'k',
3374    ļ: 'l',
3375    ņ: 'n',
3376    Å«: 'u',
3377    Ā: 'A',
3378    Ē: 'E',
3379    Ģ: 'G',
3380    Ī: 'I',
3381    Ķ: 'K',
3382    Ä»: 'L',
3383    Ņ: 'N',
3384    Ū: 'U',
3385    // arabic
3386    أ: 'a',
3387    إ: 'i',
3388    ب: 'b',
3389    ت: 't',
3390    Ø«: 'th',
3391    ج: 'g',
3392    Ø­: 'h',
3393    Ø®: 'kh',
3394    د: 'd',
3395    ذ: 'th',
3396    ر: 'r',
3397    ز: 'z',
3398    س: 's',
3399    Ø´: 'sh',
3400    ص: 's',
3401    ض: 'd',
3402    Ø·: 't',
3403    ظ: 'th',
3404    ع: 'aa',
3405    غ: 'gh',
3406    ف: 'f',
3407    ق: 'k',
3408    ك: 'k',
3409    ل: 'l',
3410    م: 'm',
3411    ن: 'n',
3412    ه: 'h',
3413    و: 'o',
3414    ي: 'y',
3415    Ø¡: 'aa',
3416    Ø©: 'a',
3417    // farsi
3418    آ: 'a',
3419    ا: 'a',
3420    Ù¾: 'p',
3421    ژ: 'zh',
3422    Ú¯: 'g',
3423    چ: 'ch',
3424    Ú©: 'k',
3425    ی: 'i',
3426    // lithuanian
3427    ė: 'e',
3428    į: 'i',
3429    ų: 'u',
3430    Ė: 'E',
3431    Ä®: 'I',
3432    Ų: 'U',
3433    // romanian
3434    ț: 't',
3435    Ț: 'T',
3436    ţ: 't',
3437    Ţ: 'T',
3438    ș: 's',
3439    Ș: 'S',
3440    ă: 'a',
3441    Ă: 'A',
3442    // vietnamese
3443    Ạ: 'A',
3444    Ả: 'A',
3445    Ầ: 'A',
3446    Ấ: 'A',
3447    Ậ: 'A',
3448    Ẩ: 'A',
3449    Ẫ: 'A',
3450    Ằ: 'A',
3451    Ắ: 'A',
3452    Ặ: 'A',
3453    Ẳ: 'A',
3454    Ẵ: 'A',
3455    Ẹ: 'E',
3456    Ẻ: 'E',
3457    Ẽ: 'E',
3458    Ề: 'E',
3459    Ế: 'E',
3460    Ệ: 'E',
3461    Ể: 'E',
3462    Ễ: 'E',
3463    Ị: 'I',
3464    Ỉ: 'I',
3465    Ĩ: 'I',
3466    Ọ: 'O',
3467    Ỏ: 'O',
3468    Ồ: 'O',
3469    Ố: 'O',
3470    Ộ: 'O',
3471    Ổ: 'O',
3472    Ỗ: 'O',
3473    Æ : 'O',
3474    Ờ: 'O',
3475    Ớ: 'O',
3476    Ợ: 'O',
3477    Ở: 'O',
3478    á» : 'O',
3479    Ụ: 'U',
3480    Ủ: 'U',
3481    Ũ: 'U',
3482    Ư: 'U',
3483    Ừ: 'U',
3484    Ứ: 'U',
3485    á»°: 'U',
3486    Ử: 'U',
3487    á»®: 'U',
3488    Ỳ: 'Y',
3489    á»´: 'Y',
3490    á»¶: 'Y',
3491    Ỹ: 'Y',
3492    Đ: 'D',
3493    ạ: 'a',
3494    ả: 'a',
3495    ầ: 'a',
3496    ấ: 'a',
3497    ậ: 'a',
3498    ẩ: 'a',
3499    ẫ: 'a',
3500    ằ: 'a',
3501    ắ: 'a',
3502    ặ: 'a',
3503    ẳ: 'a',
3504    ẵ: 'a',
3505    ẹ: 'e',
3506    ẻ: 'e',
3507    ẽ: 'e',
3508    ề: 'e',
3509    ế: 'e',
3510    ệ: 'e',
3511    ể: 'e',
3512    ễ: 'e',
3513    ị: 'i',
3514    ỉ: 'i',
3515    Ä©: 'i',
3516    ọ: 'o',
3517    ỏ: 'o',
3518    ồ: 'o',
3519    ố: 'o',
3520    ộ: 'o',
3521    ổ: 'o',
3522    ỗ: 'o',
3523    Æ¡: 'o',
3524    ờ: 'o',
3525    ớ: 'o',
3526    ợ: 'o',
3527    ở: 'o',
3528    ỡ: 'o',
3529    ụ: 'u',
3530    á»§: 'u',
3531    Å©: 'u',
3532    ư: 'u',
3533    ừ: 'u',
3534    ứ: 'u',
3535    á»±: 'u',
3536    á»­: 'u',
3537    ữ: 'u',
3538    ỳ: 'y',
3539    ỵ: 'y',
3540    á»·: 'y',
3541    ỹ: 'y',
3542    đ: 'd',
3543    // kazakh
3544    Ә: 'AE',
3545    ә: 'ae',
3546    Ғ: 'GH',
3547    ғ: 'gh',
3548    Қ: 'KH',
3549    қ: 'kh',
3550    Ò¢: 'NG',
3551    Ò£: 'ng',
3552    Ò®: 'UE',
3553    Ò¯: 'ue',
3554    Ò°: 'U',
3555    Ò±: 'u',
3556    Òº: 'H',
3557    Ò»: 'h',
3558    Ó¨: 'OE',
3559    Ó©: 'oe',
3560    // serbian
3561    ђ: 'dj',
3562    ј: 'j',
3563    љ: 'lj',
3564    њ: 'nj',
3565    ћ: 'c',
3566    џ: 'dz',
3567    Ђ: 'Dj',
3568    Ј: 'j',
3569    Љ: 'Lj',
3570    Њ: 'Nj',
3571    Ћ: 'C',
3572    Џ: 'Dz',
3573    nj: 'nj',
3574    lj: 'lj',
3575    Nj: 'NJ',
3576    Lj: 'LJ',
3577    // hindi
3578    अ: 'a',
3579    आ: 'aa',
3580    ए: 'e',
3581    ई: 'ii',
3582    ऍ: 'ei',
3583    ऎ: 'ae',
3584    ऐ: 'ai',
3585    इ: 'i',
3586    ओ: 'o',
3587    ऑ: 'oi',
3588    ऒ: 'oii',
3589    ऊ: 'uu',
3590    औ: 'ou',
3591    उ: 'u',
3592    ब: 'B',
3593    भ: 'Bha',
3594    च: 'Ca',
3595    छ: 'Chha',
3596    ड: 'Da',
3597    ढ: 'Dha',
3598    फ: 'Fa',
3599    ग: 'Ga',
3600    घ: 'Gha',
3601    ग़: 'Ghi',
3602    ह: 'Ha',
3603    ज: 'Ja',
3604    झ: 'Jha',
3605    क: 'Ka',
3606    ख: 'Kha',
3607    ख़: 'Khi',
3608    ल: 'L',
3609    ळ: 'Li',
3610    ऌ: 'Li',
3611    ऴ: 'Lii',
3612    ॡ: 'Lii',
3613    म: 'Ma',
3614    न: 'Na',
3615    ङ: 'Na',
3616    ञ: 'Nia',
3617    ण: 'Nae',
3618    ऩ: 'Ni',
3619    ॐ: 'oms',
3620    प: 'Pa',
3621    क़: 'Qi',
3622    र: 'Ra',
3623    ऋ: 'Ri',
3624    ॠ: 'Ri',
3625    ऱ: 'Ri',
3626    स: 'Sa',
3627    श: 'Sha',
3628    ष: 'Shha',
3629    ट: 'Ta',
3630    त: 'Ta',
3631    ठ: 'Tha',
3632    द: 'Tha',
3633    थ: 'Tha',
3634    ध: 'Thha',
3635    ड़: 'ugDha',
3636    ढ़: 'ugDhha',
3637    व: 'Va',
3638    य: 'Ya',
3639    य़: 'Yi',
3640    ज़: 'Za',
3641    // azerbaijani
3642    ə: 'e',
3643    Ə: 'E',
3644    // georgian
3645    ა: 'a',
3646    ბ: 'b',
3647    გ: 'g',
3648    დ: 'd',
3649    ე: 'e',
3650    ვ: 'v',
3651    ზ: 'z',
3652    თ: 't',
3653    ი: 'i',
3654    კ: 'k',
3655    ლ: 'l',
3656    მ: 'm',
3657    ნ: 'n',
3658    ო: 'o',
3659    პ: 'p',
3660    ჟ: 'zh',
3661    რ: 'r',
3662    ს: 's',
3663    ტ: 't',
3664    უ: 'u',
3665    ფ: 'p',
3666    ქ: 'k',
3667    ღ: 'gh',
3668    ყ: 'q',
3669    შ: 'sh',
3670    ჩ: 'ch',
3671    ც: 'ts',
3672    ძ: 'dz',
3673    წ: 'ts',
3674    ჭ: 'ch',
3675    ხ: 'kh',
3676    ჯ: 'j',
3677    ჰ: 'h',
3678    // hebrew
3679    ב: 'v',
3680    גּ: 'g',
3681    ג: 'g',
3682    ד: 'd',
3683    דּ: 'd',
3684    ה: 'h',
3685    ו: 'v',
3686    ז: 'z',
3687    ח: 'h',
3688    ט: 't',
3689    י: 'y',
3690    כ: 'kh',
3691    ך: 'kh',
3692    ל: 'l',
3693    מ: 'm',
3694    ם: 'm',
3695    × : 'n',
3696    ן: 'n',
3697    ס: 's',
3698    פ: 'f',
3699    ×£: 'f',
3700    ×¥: 'ts',
3701    צ: 'ts',
3702    ×§: 'k',
3703    ר: 'r',
3704    תּ: 't',
3705    ת: 't'
3706  }
3707
3708  slug.charmap = Object.assign({}, initialCharmap)
3709  slug.multicharmap = Object.assign({}, initialMulticharmap)
3710  slug.defaults = {
3711    charmap: slug.charmap,
3712    mode: 'pretty',
3713    modes: {
3714      rfc3986: {
3715        replacement: '-',
3716        remove: null,
3717        lower: true,
3718        charmap: slug.charmap,
3719        multicharmap: slug.multicharmap,
3720        trim: true
3721      },
3722      pretty: {
3723        replacement: '-',
3724        remove: null,
3725        lower: true,
3726        charmap: slug.charmap,
3727        multicharmap: slug.multicharmap,
3728        trim: true
3729      }
3730    },
3731    multicharmap: slug.multicharmap,
3732    fallback: true
3733  }
3734
3735  slug.reset = function () {
3736    slug.defaults.modes.rfc3986.charmap = slug.defaults.modes.pretty.charmap = slug.charmap = slug.defaults.charmap = Object.assign({}, initialCharmap)
3737    slug.defaults.modes.rfc3986.multicharmap = slug.defaults.modes.pretty.multicharmap = slug.multicharmap = slug.defaults.multicharmap = Object.assign({}, initialMulticharmap)
3738    defaultLocale = ''
3739  }
3740
3741  slug.extend = function (customMap) {
3742    const keys = Object.keys(customMap)
3743    const multi = {}
3744    const single = {}
3745    for (let i = 0; i < keys.length; i++) {
3746      if (keys[i].length > 1) {
3747        multi[keys[i]] = customMap[keys[i]]
3748      } else {
3749        single[keys[i]] = customMap[keys[i]]
3750      }
3751    }
3752    Object.assign(slug.charmap, single)
3753    Object.assign(slug.multicharmap, multi)
3754  }
3755
3756  slug.setLocale = function (locale) {
3757    defaultLocale = locales[locale] || {}
3758  }
3759
3760  if ( true && module.exports) { // CommonJS
3761    module.exports = slug
3762  } else { // Script tag
3763    root.slug = slug
3764  }
3765}(this))
3766
3767
3768/***/ })
3769
3770/******/ 	});
3771/************************************************************************/
3772/******/ 	// The module cache
3773/******/ 	var __webpack_module_cache__ = {};
3774/******/ 	
3775/******/ 	// The require function
3776/******/ 	function __webpack_require__(moduleId) {
3777/******/ 		// Check if module is in cache
3778/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
3779/******/ 		if (cachedModule !== undefined) {
3780/******/ 			return cachedModule.exports;
3781/******/ 		}
3782/******/ 		// Create a new module (and put it into the cache)
3783/******/ 		var module = __webpack_module_cache__[moduleId] = {
3784/******/ 			// no module.id needed
3785/******/ 			// no module.loaded needed
3786/******/ 			exports: {}
3787/******/ 		};
3788/******/ 	
3789/******/ 		// Execute the module function
3790/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
3791/******/ 	
3792/******/ 		// Return the exports of the module
3793/******/ 		return module.exports;
3794/******/ 	}
3795/******/ 	
3796/************************************************************************/
3797/******/ 	/* webpack/runtime/compat get default export */
3798/******/ 	!function() {
3799/******/ 		// getDefaultExport function for compatibility with non-harmony modules
3800/******/ 		__webpack_require__.n = function(module) {
3801/******/ 			var getter = module && module.__esModule ?
3802/******/ 				function() { return module['default']; } :
3803/******/ 				function() { return module; };
3804/******/ 			__webpack_require__.d(getter, { a: getter });
3805/******/ 			return getter;
3806/******/ 		};
3807/******/ 	}();
3808/******/ 	
3809/******/ 	/* webpack/runtime/define property getters */
3810/******/ 	!function() {
3811/******/ 		// define getter functions for harmony exports
3812/******/ 		__webpack_require__.d = function(exports, definition) {
3813/******/ 			for(var key in definition) {
3814/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
3815/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
3816/******/ 				}
3817/******/ 			}
3818/******/ 		};
3819/******/ 	}();
3820/******/ 	
3821/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
3822/******/ 	!function() {
3823/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
3824/******/ 	}();
3825/******/ 	
3826/******/ 	/* webpack/runtime/make namespace object */
3827/******/ 	!function() {
3828/******/ 		// define __esModule on exports
3829/******/ 		__webpack_require__.r = function(exports) {
3830/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
3831/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
3832/******/ 			}
3833/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
3834/******/ 		};
3835/******/ 	}();
3836/******/ 	
3837/************************************************************************/
3838var __webpack_exports__ = {};
3839// This entry need to be wrapped in an IIFE because it need to be in strict mode.
3840!function() {
3841"use strict";
vendor: 4,033 bytes, lines 3842-3935
3842// ESM COMPAT FLAG
3843__webpack_require__.r(__webpack_exports__);
3844
3845// EXPORTS
3846__webpack_require__.d(__webpack_exports__, {
3847  "initModule": function() { return /* binding */ initModule; }
3848});
3849
3850// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
3851var jsx_runtime = __webpack_require__(893);
3852// EXTERNAL MODULE: ./node_modules/react/index.js
3853var react = __webpack_require__(294);
3854;// CONCATENATED MODULE: ./node_modules/react-loading-skeleton/dist/index.mjs
3855
3856
3857/**
3858 * @internal
3859 */
3860const SkeletonThemeContext = react.createContext({});
3861
3862/* eslint-disable react/no-array-index-key */
3863const defaultEnableAnimation = true;
3864// For performance & cleanliness, don't add any inline styles unless we have to
3865function styleOptionsToCssProperties({ baseColor, highlightColor, width, height, borderRadius, circle, direction, duration, enableAnimation = defaultEnableAnimation, }) {
3866    const style = {};
3867    if (direction === 'rtl')
3868        style['--animation-direction'] = 'reverse';
3869    if (typeof duration === 'number')
3870        style['--animation-duration'] = `${duration}s`;
3871    if (!enableAnimation)
3872        style['--pseudo-element-display'] = 'none';
3873    if (typeof width === 'string' || typeof width === 'number')
3874        style.width = width;
3875    if (typeof height === 'string' || typeof height === 'number')
3876        style.height = height;
3877    if (typeof borderRadius === 'string' || typeof borderRadius === 'number')
3878        style.borderRadius = borderRadius;
3879    if (circle)
3880        style.borderRadius = '50%';
3881    if (typeof baseColor !== 'undefined')
3882        style['--base-color'] = baseColor;
3883    if (typeof highlightColor !== 'undefined')
3884        style['--highlight-color'] = highlightColor;
3885    return style;
3886}
3887function Skeleton({ count = 1, wrapper: Wrapper, className: customClassName, containerClassName, containerTestId, circle = false, style: styleProp, ...originalPropsStyleOptions }) {
3888    var _a, _b, _c;
3889    const contextStyleOptions = react.useContext(SkeletonThemeContext);
3890    const propsStyleOptions = { ...originalPropsStyleOptions };
3891    // DO NOT overwrite style options from the context if `propsStyleOptions`
3892    // has properties explicity set to undefined
3893    for (const [key, value] of Object.entries(originalPropsStyleOptions)) {
3894        if (typeof value === 'undefined') {
3895            delete propsStyleOptions[key];
3896        }
3897    }
3898    // Props take priority over context
3899    const styleOptions = {
3900        ...contextStyleOptions,
3901        ...propsStyleOptions,
3902        circle,
3903    };
3904    // `styleProp` has the least priority out of everything
3905    const style = {
3906        ...styleProp,
3907        ...styleOptionsToCssProperties(styleOptions),
3908    };
3909    let className = 'react-loading-skeleton';
3910    if (customClassName)
3911        className += ` ${customClassName}`;
3912    const inline = (_a = styleOptions.inline) !== null && _a !== void 0 ? _a : false;
3913    const elements = [];
3914    const countCeil = Math.ceil(count);
3915    for (let i = 0; i < countCeil; i++) {
3916        let thisStyle = style;
3917        if (countCeil > count && i === countCeil - 1) {
3918            // count is not an integer and we've reached the last iteration of
3919            // the loop, so add a "fractional" skeleton.
3920            //
3921            // For example, if count is 3.5, we've already added 3 full
3922            // skeletons, so now we add one more skeleton that is 0.5 times the
3923            // original width.
3924            const width = (_b = thisStyle.width) !== null && _b !== void 0 ? _b : '100%'; // 100% is the default since that's what's in the CSS
3925            const fractionalPart = count % 1;
3926            const fractionalWidth = typeof width === 'number'
3927                ? width * fractionalPart
3928                : `calc(${width} * ${fractionalPart})`;
3929            thisStyle = { ...thisStyle, width: fractionalWidth };
3930        }
3931        const skeletonSpan = (react.createElement("span", { className: className, style: thisStyle, key: i }, "\u200C"));
3932        if (inline) {
3933            elements.push(skeletonSpan);
3934        }
3935        else {
3936            // Without the <br />, the skeleton lines will all run together if
3937            // `width` is specified
3938            elements.push(react.createElement(react.Fragment, { key: i },
3939                skeletonSpan,
3940                react.createElement("br", null)));
3941        }
3942    }
3943    return (react.createElement("span", { className: containerClassName, "data-testid": containerTestId, "aria-live": "polite", "aria-busy": (_c = styleOptions.enableAnimation) !== null && _c !== void 0 ? _c : defaultEnableAnimation }, Wrapper
3944        ? elements.map((el, i) => react.createElement(Wrapper, { key: i }, el))
3945        : elements));
3946}
3947
3948function SkeletonTheme({ children, ...styleOptions }) {
3949    return (React.createElement(SkeletonThemeContext.Provider, { value: styleOptions }, children));
3950}
3951
3952
3953
3954// EXTERNAL MODULE: ./node_modules/slug/slug.js
3955var slug = __webpack_require__(811);
3956var slug_default = /*#__PURE__*/__webpack_require__.n(slug);
3957;// CONCATENATED MODULE: ./src/lib/url.ts
3958
3959function getDefaultSlugOptions() {
3960    let options = $.extend({}, (slug_default()).defaults.modes.pretty);
3961    options.symbols = false;
3962    options.lower = false;
3963    let charmap = options.charmap;
3964    let charsReplaceWithSpace = ["(", ")", "\u0026", "\u00AE", "\u2122"];
3965    charsReplaceWithSpace.forEach(x => { charmap[x] = " "; });
3966    return options;
3967}
3968function convertToFriendlyName(name) {
3969    if (!name) {
3970        return "";
3971    }
3972    let options = getDefaultSlugOptions();
3973    return slug_default()(name.trim(), options).replace(/(\-)+/ig, "-").replace(/^[\-]+/, "").replace(/[\-]+$/, "");
3974}
3975function convertToThumbnailUrl(url) {
3976    if (!url) {
3977        return null;
3978    }
3979    if (/(_480px)(\..*)$/.test(url)) {
3980        return url;
3981    }
3982    return url.replace(/(.*)(\..*)$/, "$1_480px$2");
3983}
3984
3985;// CONCATENATED MODULE: ./src/lib/stringFormat.ts
3986function formatNumber(price) {
3987    if (price % 1 === 0) {
3988        return price.toLocaleString("en-US");
3989    }
3990    else {
3991        return price.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
3992    }
3993}
3994function formatCurrency(price) {
3995    return `$${formatNumber(price)}`;
3996}
3997function formatPrice(price, hidePriceText) {
3998    if (!price) {
3999        return hidePriceText;
4000    }
4001    return formatCurrency(price);
4002}
4003
4004;// CONCATENATED MODULE: ./src/domain/webSellableItem.ts
4005
4006
4007function transform(item, showroomAlgoliaSetting) {
4008    transformShowroomUrl(item);
4009    transformWebSellableItemPricing(item, showroomAlgoliaSetting.priceDisplaySetting);
4010    transformWebSellableItemOdometerData(item);
4011    transformWebSellableItemModelNameDisplayText(item);
4012    if (item && item.PhotoUrl) {
4013        item.PhotoUrl = convertToThumbnailUrl(item.PhotoUrl);
4014    }
4015    item.HasPhoto = item.NumberPhoto > 0;
4016    if (!item.HasPhoto) {
4017        item.DefaultPhotoUrl = "https://cdpcdn.dx1app.com/products-private/defaultproductimage.jpg";
4018    }
4019    item.IsDisplayDealershipLocation = showroomAlgoliaSetting.productSetting.isDisplayDealershipLocation;
4020    item.BannerUrl = item.HasBannerUrl ? item.BannerUrl : null;
4021    if (!item.BannerCaption) {
4022        item.BannerCaption = "No Caption";
4023    }
4024    return item;
4025}
4026function transformShowroomUrl(item) {
4027    const urlParts = [
4028        convertToFriendlyName(item.ProductCategory),
4029        convertToFriendlyName(item.Manufacturer),
4030        convertToFriendlyName(item.ProductName),
4031        convertToFriendlyName(item.Year != null && item.Year != undefined ? item.Year.toString() : ""),
4032        convertToFriendlyName(item.City),
4033        convertToFriendlyName(item.StateProvinceCode),
4034        item.Id
4035    ];
4036    const pagePath = urlParts.join("-");
4037    item.ShowroomUrl = `${location.origin}/${pagePath}`;
4038}
4039function setMarketingIncentiveData(item) {
4040    const hasMarketingIncentive = item.MarketingIncentive
4041        && item.MarketingIncentive.length > 0
4042        && item.MarketingIncentive.some(x => x.Amount > 0);
4043    item.IsShowMarketingIncentive = item.Price > 0 && hasMarketingIncentive;
4044    item.HasMarketingIncentive = hasMarketingIncentive;
4045}
4046function transformWebSellableItemPricing(item, priceDisplaySetting) {
4047    const displayPrice = item.TotalPrice > 0 ? item.TotalPrice : item.Price;
4048    item.FormattedPrice = formatPrice(displayPrice, priceDisplaySetting.hidePriceText);
4049    const originalPrice = item.Condition.toLowerCase() === "new" ? item.Msrp : item.Dsp;
4050    item.FormattedOriginalPrice = formatPrice(originalPrice, priceDisplaySetting.hidePriceText);
4051    item.IsShowPrice = item.HasPrice && !item.IsHidePrice && !item.IsSendPriceOnRequest && !item.HasDateSold;
4052    item.IsDisplaySalePrice = priceDisplaySetting.isDisplaySalePrice && originalPrice > item.Price;
4053    item.IsHidePriceOrPriceIsZero = (!item.HasPrice || item.IsHidePrice) && !item.IsSendPriceOnRequest && !item.HasDateSold;
4054    item.IsSendPriceOnRequest = item.IsSendPriceOnRequest && !item.HasDateSold;
4055    item.HidePriceText = priceDisplaySetting.hidePriceText ? priceDisplaySetting.hidePriceText : "Get Price";
4056    item.SendPriceOnRequestText = priceDisplaySetting.sendPriceOnRequestText ? priceDisplaySetting.sendPriceOnRequestText : "Get Price";
4057    if (item.IsActivateMonthlyPayment) {
4058        if (item.MonthlyPaymentExpirationDate) {
4059            const monthlyPaymentExpirationDate = new Date(item.MonthlyPaymentExpirationDate);
4060            const currentDate = new Date();
4061            const utcDate = new Date(currentDate.getFullYear(), currentDate.getUTCMonth(), currentDate.getUTCDate());
4062            item.IsDisplayMonthlyPayment = monthlyPaymentExpirationDate >= utcDate;
4063        }
4064        else {
4065            item.IsDisplayMonthlyPayment = true;
4066        }
4067        item.FormattedEstimatedMonthlyPayment = formatCurrency(item.EstimateMonthlyPayment);
4068        item.FormattedDownPayment = formatCurrency(item.DownPayment);
4069    }
4070    setMarketingIncentiveData(item);
4071}
4072function transformWebSellableItemOdometerData(item) {
4073    let odometerUomName = "";
4074    if (item.HasOdometer) {
4075        odometerUomName = item.OdometerUomCode === "HRs" ? "Hours" : "Miles";
4076        if (item.Odometer) {
4077            item.Odometer = formatNumber(item.Odometer);
4078        }
4079    }
4080    item.OdometerUomName = odometerUomName;
4081}
4082function transformWebSellableItemModelNameDisplayText(item) {
4083    let items = [item.Manufacturer, item.ProductName];
4084    if (item.Year) {
4085        items = [item.Year.toString()].concat(items);
4086    }
4087    item.ModelNameDisplayText = items.join(" ");
4088}
4089
4090// EXTERNAL MODULE: ./node_modules/axios/index.js
4091var axios = __webpack_require__(669);
4092var axios_default = /*#__PURE__*/__webpack_require__.n(axios);
4093;// CONCATENATED MODULE: external "jQuery"
4094var external_jQuery_namespaceObject = jQuery;
4095var external_jQuery_default = /*#__PURE__*/__webpack_require__.n(external_jQuery_namespaceObject);
4096;// CONCATENATED MODULE: ./src/service/brpInventoryModuleApiService.ts
4097
4098
4099const getAntiForgeryValue = () => {
4100    return external_jQuery_default()('[name="__RequestVerificationToken"]').val();
4101};
4102function useBrpInventoryModuleApiService(moduleId) {
4103    const instance = axios_default().create();
4104    instance.interceptors.request.use(req => {
4105        if (moduleId) {
4106            const sf = external_jQuery_default().ServicesFramework(moduleId);
4107            if (!req.headers) {
4108                req.headers = {};
4109            }
4110            req.headers['ModuleId'] = moduleId;
4111            req.headers['TabId'] = sf.getTabId();
4112            const afValue = getAntiForgeryValue();
4113            if (afValue) {
4114                req.headers['RequestVerificationToken'] = afValue;
4115            }
4116            req.baseURL = '/desktopmodules/dx1brpinventory/api/';
4117        }
4118        return req;
4119    });
4120    instance.interceptors.response.use(res => {
4121        return res;
4122    }, error => {
4123        console.info(error);
4124    });
4125    return instance;
4126}
4127/* harmony default export */ var brpInventoryModuleApiService = (useBrpInventoryModuleApiService);
4128
4129;// CONCATENATED MODULE: ./src/service/brpServiceAdapter.ts
4130var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
4131    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4132    return new (P || (P = Promise))(function (resolve, reject) {
4133        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4134        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
4135        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
4136        step((generator = generator.apply(thisArg, _arguments || [])).next());
4137    });
4138};
4139
4140function useBrpService(moduleId) {
4141    const api = brpInventoryModuleApiService(moduleId);
4142    const getData = (url, abortSignal) => {
4143        return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
4144            const result = yield api.get(url, {
4145                signal: abortSignal
4146            });
4147            if (result && result.status === 200) {
4148                resolve(result.data);
4149            }
4150        }));
4151    };
4152    return {
4153        getWebSellableItem: (itemId, abortSignal) => {
4154            const params = new URLSearchParams();
4155            params.append('itemId', itemId);
4156            const queryString = params.toString();
4157            const url = `/module/GetWebSellableItem?${queryString}`;
4158            return getData(url, abortSignal);
4159        },
4160        getWebSellableImages: (vendorGuid, lineupLevel2Code, abort
4160Signal) => {
4161            const params = new URLSearchParams();
4162            params.append('vendorGuid', vendorGuid);
4163            params.append('lineupLevel2Code', lineupLevel2Code);
4164            const queryString = params.toString();
4165            const url = `/module/GetWebSellableImages?${queryString}`;
4166            return getData(url, abortSignal);
4167        },
4168        getWebSellableItems: (familyName, year, hasInventory, abortSignal) => {
4169            const params = new URLSearchParams();
4170            params.append('familyName', familyName !== null && familyName !== void 0 ? familyName : "");
4171            params.append('year', year.toString());
4172            params.append('hasInventory', hasInventory.toString());
4173            const queryString = params.toString();
4174            const url = `/module/getWebSellableItems?${queryString}`;
4175            return getData(url, abortSignal);
4176        }
4177    };
4178}
4179
4180;// CONCATENATED MODULE: ./src/hooks/useHash.ts
4181
4182function useHash() {
4183    const [hash, setHash] = (0,react.useState)(window.location.hash);
4184    const updateHash = (0,react.useCallback)((newHash) => {
4185        window.location.hash = newHash;
4186        setHash(newHash);
4187    }, []);
4188    (0,react.useEffect)(() => {
4189        const onHashChange = () => setHash(window.location.hash);
4190        window.addEventListener('hashchange', onHashChange);
4191        return () => window.removeEventListener('hashchange', onHashChange);
4192    }, []);
4193    return [hash, updateHash];
4194}
4195
4196;// CONCATENATED MODULE: ./src/data/anchortag.json
4197var anchortag_namespaceObject = JSON.parse('[{"brand":"Can-Am","categoies":[{"anchorTag":"side-by-side","categoryName":"Utility Vehicles"},{"anchorTag":"atv","categoryName":"ATVs"},{"anchorTag":"3wv","categoryName":"Motorcycles"},{"anchorTag":"em","categoryName":"Electric Motorcycle"}]},{"brand":"Sea-Doo","categoies":[{"anchorTag":"pwc","categoryName":"Watercraft"},{"anchorTag":"pontoon","categoryName":"Power Boats Inboard"}]}]');
4198;// CONCATENATED MODULE: ./src/provider/brpInventoryProvider.tsx
4199var brpInventoryProvider_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
4200    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4201    return new (P || (P = Promise))(function (resolve, reject) {
4202        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4203        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
4204        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
4205        step((generator = generator.apply(thisArg, _arguments || [])).next());
4206    });
4207};
4208
4209
4210
4211
4212
4213
4214
4215const BrpCategoryChangedEvent = "brp-category-changed";
4216const BrpInventoryContext = react.createContext({});
4217const BrpInventoryProvider = ({ moduleContext, children }) => {
4218    const [selectedBrand, setSelectedBrand] = (0,react.useState)(moduleContext.brand);
4219    const [selectedCategory, setSelectedCategory] = (0,react.useState)(null);
4220    const [selectedGroup, setSelectedGroup] = (0,react.useState)(null);
4221    const [images, setImages] = (0,react.useState)([]);
4222    const [webSellableItems, setWebSellableItems] = (0,react.useState)([]);
4223    const [hasInventory, setHasInventory] = (0,react.useState)(false);
4224    const [isFormDialogInitialized, setIsFormDialogInitialized] = (0,react.useState)(false);
4225    const [hashValue, updateHash] = useHash();
4226    const [isWebSellableLoaded, setIsWebSellableLoaded] = (0,react.useState)(false);
4227    const [isScrollToBrpInventory, setIsScrollToBrpInventory] = (0,react.useState)(false);
4228    moduleContext.categories.forEach(category => {
4229        category.groups.forEach(group => {
4230            group.formatPrice = formatPrice(group.price, moduleContext.showroomAlgoliaSetting.priceDisplaySetting.hidePriceText);
4231        });
4232    });
4233    const categories = moduleContext.categories;
4234    const brpService = useBrpService(moduleContext.moduleId);
4235    (0,react.useEffect)(() => {
4236        const webSellableItemAbortController = new AbortController();
4237        const webSellableItemsAbortController = new AbortController();
4238        const getBrpData = () => brpInventoryProvider_awaiter(void 0, void 0, void 0, function* () {
4239            setImages([]);
4240            setWebSellableItems(null);
4241            const images = yield brpService.getWebSellableImages(selectedGroup.vendorGuid, selectedGroup.lineupLevel2Code, webSellableItemAbortController.signal);
4242            setImages(images);
4243            let webSellableItems = yield brpService.getWebSellableItems(selectedGroup.productFamilyName, selectedGroup.year, selectedGroup.hasInventory, webSellableItemsAbortController.signal);
4244            webSellableItems = webSellableItems.map(webSellableItem => transform(webSellableItem, moduleContext.showroomAlgoliaSetting));
4245            setWebSellableItems(webSellableItems);
4246            if (!isWebSellableLoaded) {
4247                setIsWebSellableLoaded(true);
4248            }
4249            if (webSellableItems.length > 0 && webSellableItems[0].DealerInventoryId) {
4250                setHasInventory(true);
4251            }
4252            else {
4253                setHasInventory(false);
4254            }
4255        });
4256        if (selectedGroup) {
4257            getBrpData();
4258        }
4259        return () => {
4260            webSellableItemAbortController.abort();
4261            webSellableItemsAbortController.abort();
4262        };
4263    }, [selectedGroup]);
4264    (0,react.useEffect)(() => {
4265        if (selectedCategory) {
4266            setBrpCategoryToSessionStorage(selectedCategory);
4267        }
4268    }, [selectedCategory]);
4269    const scrollToSelector = (selector) => {
4270        const element = document.querySelector(selector);
4271        element.scrollIntoView();
4272        const newScrollY = window.scrollY - document.getElementById("BRPHeader").offsetHeight;
4273        window.scrollTo({ top: newScrollY });
4274    };
4275    const scrollToAnchor = () => {
4276        if (hashValue === "#getdirections") {
4277            scrollToSelector("#DealerLocationInfo");
4278        }
4279        else if (hashValue === "#reviews") {
4280            scrollToSelector("#DealerReviews");
4281        }
4282        else if (hashValue === "#promo") {
4283            scrollToSelector(".dx1-brppromotion");
4284        }
4285        else if (hashValue === "#lineup") {
4286            scrollToSelector(".dx1-brpinventory");
4287        }
4288    };
4289    (0,react.useEffect)(() => {
4290        if (isWebSellableLoaded && hashValue) {
4291            if (isScrollToBrpInventory) {
4292                scrollToBrpInventory();
4293            }
4294            else {
4295                scrollToAnchor();
4296            }
4297        }
4298    }, [isWebSellableLoaded]);
4299    const setBrpCategoryToSessionStorage = (category) => {
4300        const key = 'brpCategory';
4301        sessionStorage.setItem(key, JSON.stringify(category));
4302        window.dispatchEvent(new CustomEvent(BrpCategoryChangedEvent, { detail: category }));
4303    };
4304    function onSelectedCategoryChanged(category) {
4305        setSelectedCategory(category);
4306        setSelectedGroup(category.groups[0]);
4307        // UCS150 - Vehicle line-up selector
4308        brpAnalyticHelper.sendAnalyticsUserActionEvent("vehicle_selector", "cta", category.categoryDisplayName);
4309    }
4310    function onSelectedGroupChanged(group, source = "click", category = selectedCategory) {
4311        setSelectedGroup(group);
4312        let productLine = category === null || category === void 0 ? void 0 : category.categoryDisplayName;
4313        if (!productLine) {
4314            productLine = group.groupName;
4315        }
4316        if (source === "click") {
4317            brpAnalyticHelper.sendAnalyticsUserActionEvent(group.groupName, "model selection");
4318            return;
4319        }
4320        // UCS151 - Product Line/PDP PV
4321        brpAnalyticHelper.sendAnalyticsEvent("PV", {}, {
4322            "hostname": window.location.origin,
4323            "path": window.location.pathname,
4324            "country": "US",
4325            "language": "en",
4326            "siteType": "dealer marketing",
4327            "pageType": "product inventory",
4328            "vendor": "dx1",
4329        }, productLine);
4330    }
4331    function onFormDialogInitialized() {
4332        setIsFormDialogInitialized(true);
4333    }
4334    const defaultValue = {
4335        moduleContext,
4336        onSelectedCategoryChanged,
4337        onSelectedGroupChanged,
4338        categories,
4339        selectedBrand,
4340        selectedCategory,
4341        selectedGroup,
4342        images,
4343        webSellableItems,
4344        hasInventory,
4345        isFormDialogInitialized,
4346        onFormDialogInitialized,
4347    };
4348    const scrollToBrpInventory = () => {
4349        scrollToSelector(".family-nav .button.active");
4350    };
4351    const getBrpCategoryAndGroupByHash = () => {
4352        let brpCategory = null;
4353        let brpGroup = null;
4354        if (hashValue) {
4355            if (hashValue.indexOf("#cat-") > -1) {
4356                const originalCategoryNameHash = hashValue.substring("#cat-".length);
4357                const categoryNameHash = originalCategoryNameHash.replace(/-/g, "").toLowerCase();
4358                const category = categories.find(category => {
4359                    const categoryName = category.categoryName.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
4360                    return categoryName.indexOf(categoryNameHash) > -1;
4361                });
4362                if (category) {
4363                    brpCategory = category;
4364                    brpGroup = brpCategory.groups[0];
4365                }
4366                const anchorTagBrands = anchortag_namespaceObject;
4367                const anchorTagBrand = anchorTagBrands.find(anchorTagBrand => anchorTagBrand.brand === selectedBrand);
4368                const anchorTagCategory = anchorTagBrand === null || anchorTagBrand === void 0 ? void 0 : anchorTagBrand.categoies.find(category => category.anchorTag === originalCategoryNameHash);
4369                if (anchorTagBrand && anchorTagCategory) {
4370                    const category = categories.find(category => category.categoryName === anchorTagCategory.categoryName);
4371                    if (category) {
4372                        brpCategory = category;
4373                        brpGroup = brpCategory.groups[0];
4374                    }
4375                }
4376            }
4377            else if (hashValue.indexOf("#model-") > -1) {
4378                let isGroupNameContainHash = false;
4379                const modelHash = hashValue.substring("#model-".length).replace(/-/g, "").toLowerCase();
4380                categories.forEach(category => {
4381                    category.groups.forEach(group => {
4382                        const groupName = group.groupName.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
4383                        if (groupName === modelHash
4384                            || (!isGroupNameContainHash && groupName.indexOf(modelHash) > -1)) {
4385                            brpCategory = category;
4386                            brpGroup = group;
4387                            if (groupName.indexOf(modelHash) > -1) {
4388                                isGroupNameContainHash = true;
4389                            }
4390                        }
4391                    });
4392                });
4393            }
4394        }
4395        return brpCategory ? { brpCategory, brpGroup } : null;
4396    };
4397    (0,react.useEffect)(() => {
4398        let brpCategory = moduleContext.categories[0];
4399        let brpGroup = brpCategory.groups[0];
4400        let shouldSendAnchorPageView = false;
4401        if (hashValue) {
4402            setIsScrollToBrpInventory(false);
4403            const result = getBrpCategoryAndGroupByHash();
4404            if (result != null) {
4405                brpCategory = result.brpCategory;
4406                brpGroup = result.brpGroup;
4407                setIsWebSellableLoaded(false);
4408                setIsScrollToBrpInventory(true);
4409                shouldSendAnchorPageView = true;
4410            }
4411            else if (isWebSellableLoaded) {
4412                scrollToAnchor();
4413            }
4414        }
4415        setSelectedCategory(brpCategory);
4416        if (shouldSendAnchorPageView) {
4417            onSelectedGroupChanged(brpGroup, "anchor", brpCategory);
4418            return;
4419        }
4420        setSelectedGroup(brpGroup);
4421    }, [hashValue]);
4422    return ((0,jsx_runtime.jsx)(BrpInventoryContext.Provider, Object.assign({ value: defaultValue }, { children: children })));
4423};
4424
4425
4426;// CONCATENATED MODULE: ./src/ui/item.tsx
4427
4428
4429
4430
4431const ItemPrice = ({ item }) => {
4432    const price = item.IsShowPrice ? (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { children: [item.HasCurrentPriceReplaceText &&
4433                (0,jsx_runtime.jsx)("span", { className: "replace-text", dangerouslySetInnerHTML: { __html: `${item.CurrentPriceReplaceText}: ` } }), (0,jsx_runtime.jsx)("h3", Object.assign({ className: "price active-price" }, { children: item.FormattedPrice })), item.IsDisplaySalePrice &&
4434                (0,jsx_runtime.jsxs)("div", Object.assign({ className: "msrp strike-through" }, { children: [item.HasMsrpOrDspReplaceText &&
4435                            (0,jsx_runtime.jsx)("span", { className: "title", dangerouslySetInnerHTML: { __html: `${item.MsrpOrDspReplaceText}: ` } }), item.FormattedOriginalPrice] }))] }) : (0,jsx_runtime.jsx)(jsx_runtime.Fragment, {});
4436    return (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { children: [item.IsShowPrice && price, item.HasDateSold &&
4437                (0,jsx_runtime.jsx)("h3", Object.assign({ className: "price sold" }, { children: "Sold" })), item.IsHidePriceOrPriceIsZero &&
4438                (0,jsx_runtime.jsx)("h3", Object.assign({ className: "price hide-price" }, { children: (0,jsx_runtime.jsx)("span", { dangerouslySetInnerHTML: { __html: item.HidePriceText } }) })), item.IsSendPriceOnRequest &&
4439                (0,jsx_runtime.jsx)("h3", Object.assign({ className: "price request-price" }, { children: (0,jsx_runtime.jsx)("span", { dangerouslySetInnerHTML: { __html: item.SendPriceOnRequestText } }) }))] });
4440};
4441const ItemSpecs = ({ item }) => {
4442    return (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { children: [item.StockNumber &&
4443                (0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-6 spec" }, { children: [(0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-title" }, { children: "Stock #:" })), (0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-info" }, { children: item.StockNumber }))] })), item.HasEngineSize &&
4444                (0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-6 spec" }, { children: [(0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-title" }, { children: "Engine Size:" })), (0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-info" }, { children: item.EngineSize }))] })), item.HasOdometer &&
4445                (0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-6 spec" }, { children: [(0,jsx_runtime.jsxs)("span", Object.assign({ className: "spec-title" }, { children: [item.OdometerUomName, ":"] })), (0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-info" }, { children: item.Odometer }))] })), item.HasColor &&
4446                (0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-6 spec" }, { children: [(0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-title" }, { children: "Color:" })), (0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-info" }, { children: item.Color }))] })), item.Vin &&
4447                (0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-6 spec hidden" }, { children: [(0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-title" }, { children: "VIN:" })), (0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-info" }, { children: item.Vin }))] }))] });
4448};
4449const ImageWithSkeleton = ({ src, alt, className, maxWidth }) => {
4450    const [loaded, setLoaded] = (0,react.useState)(false);
4451    const imgEl = (0,react.useRef)();
4452    const onImageLoaded = () => {
4453        setLoaded(true);
4454    };
4455    (0,react.useEffect)(() => {
4456        const imgElCurrent = imgEl.current;
4457        if (imgElCurrent) {
4458            if (imgElCurrent.complete && imgElCurrent.naturalWidth > 0) {
4459                setLoaded(true);
4460            }
4461            else {
4462                imgElCurrent.addEventListener('load', onImageLoaded);
4463                return () => imgElCurrent.removeEventListener('load', onImageLoaded);
4464            }
4465        }
4466    }, [imgEl]);
4467    return ((0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { children: [(0,jsx_runtime.jsx)("img", { src: src, alt: alt, className: `${className} ${loaded ? "loaded" : ""}`, loading: "lazy", ref: imgEl }), !loaded &&
4468                (0,jsx_runtime.jsx)(Skeleton, { style: { aspectRatio: "4/3", lineHeight: 2, maxWidth: maxWidth }, borderRadius: 0, containerClassName: "skeleton-container" })] }));
4469};
4470const Item = ({ item }) => {
4471    const { moduleContext, isFormDialogInitialized, onFormDialogInitialized, } = (0,react.useContext)(BrpInventoryContext);
4472    const onViewDetailButtonClick = (item) => {
4473        // UCS 141 (View Detail)
4474        brpAnalyticHelper.sendAnalyticsUserActionEvent("View Details | " + item.ProductName);
4475        brpAnalyticHelper.selectItem = item;
4476        return false;
4477    };
4478    const onReserveUnitButtonClick = (item) => {
4479        // UCS142 (Reserve Unit)
4480        // UCS142 - Click on Contact Dealer in Model Info
4481        brpAnalyticHelper.sendAnalyticsUserActionEvent("Contact Dealer | " + item.ProductName);
4482        brpAnalyticHelper.selectItem = item;
4483        const modalTitle = "Contact Us Today";
4484        const modalId = `ContactUsToday_${moduleContext.moduleId}`;
4485        const options = {
4486            modalId: modalId,
4487            modalTitle: modalTitle,
4488            panelSelector: "#" + modalId,
4489            url: "/DesktopModules/Dominion/Common/Forms/FormDialogView.aspx",
4490            portalId: moduleContext.portalId,
4491            moduleId: moduleContext.moduleId,
4492            productId: item.Id,
4493            isSendPriceOnRequest: false,
4494            formName: "",
4495            brpBrand: "",
4496            formId: moduleContext.brpRequestMoreInformationFormId,
4497        };
4498        if (!isFormDialogInitialized) {
4499            FormDialog.addDialogContent(options);
4500            onFormDialogInitialized();
4501        }
4502        FormDialog.displayDialog(options);
4503    };
4504    return (0,jsx_runtime.jsx)(jsx_runtime.Fragment, { children: (0,jsx_runtime.jsxs)("div", Object.assign({ className: "brp-item list-item", "data-itemid": item.Id }, { children: [(0,jsx_runtime.jsxs)("div", Object.assign({ className: "row model-header" }, { children: [(0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-8 model-info" }, { children: [(0,jsx_runtime.jsx)("h2", Object.assign({ className: "model-name" }, { children: item.ModelNameDisplayText })), (0,jsx_runtime.jsxs)("div", Object.assign({ className: "model-category" }, { children: [(0,jsx_runtime.jsx)("span", Object.assign({ className: "condition" }, { children: item.Condition })), " ", (0,jsx_runtime.jsx)("span", Object.assign({ className: "category" }, { children: item.ProductCategory })), " \u2022 ", (0,jsx_runtime.jsx)("span", Object.assign({ className: "model-type" }, { children: item.ProductType }))] })), item.IsDisplayDealershipLocation &&
4505                                    (0,jsx_runtime.jsxs)("div", Object.assign({ className: "model-location" }, { children: ["Available at ", (0,jsx_runtime.jsx)("span", Object.assign({ className: "location" }, { children: item.DealershipName }))] }))] })), (0,jsx_runtime.jsx)("div", Object.assign({ className: "col-sm-4 price-info" }, { children: (0,jsx_runtime.jsx)(ItemPrice, { item: item }) }))] })), (0,jsx_runtime.jsxs)("div", Object.assign({ className: "row model-details" }, { children: [(0,jsx_runtime.jsx)("div", Object.assign({ className: "col-sm-4" }, { children: (0,jsx_runtime.jsx)("div", Object.assign({ className: "thumbnail-frame" }, { children: (0,jsx_runtime.jsx)(ImageWithSkeleton, { src: item.HasPhoto ? item.PhotoUrl : item.DefaultPhotoUrl, alt: item.ImageCaption, className: "img-responsive", maxWidth: "480px" }) })) })), (0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-8 summary" }, { children: [(0,jsx_runtime.jsxs)("div", Object.assign({ className: "row model-desc" }, { children: [(0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-12" }, { children: [item.IsShowPrice && item.IsDisplayMonthlyPayment &&
4506                                                    (0,jsx_runtime.jsxs)("div", Object.assign({ className: "monthly-payment" }, { children: [(0,jsx_runtime.jsxs)("div", Object.assign({ className: "estimated-monthly-payment" }, { children: [item.FormattedEstimatedMonthlyPayment, "/mo"] })), (0,jsx_runtime.jsxs)("div", Object.assign({ className: "monthly-payment-desc" }, { children: [item.LoanTerm, " Months, ", item.InterestRate, "% APR, ", item.FormattedDownPayment, " down"] }))] })), item.IsShowMarketingIncentive &&
4507                                                    (0,jsx_runtime.jsxs)("a", Object.assign({ className: "discounts-badge", href: item.ShowroomUrl }, { children: [(0,jsx_runtime.jsx)("i", { className: "btn-icon fa fa-money" }), "Offers"] }))] })), (0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-12" }, { children: [(0,jsx_runtime.jsx)("div", Object.assign({ className: "row model-specs" }, { children: (0,jsx_runtime.jsx)(ItemSpecs, { item: item }) })), item.HasTagLine &&
4508                                                    (0,jsx_runtime.jsx)("div", Object.assign({ className: "row" }, { children: (0,jsx_runtime.jsx)("div", Object.assign({ className: "col-sm-12 tagline" }, { children: item.TagLine })) }))] }))] })), (0,jsx_runtime.jsx)("div", Object.assign({ className: "row" }, { children: (0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-12 cta" }, { children: [(0,jsx_runtime.jsx)("a", Object.assign({ href: item.ShowroomUrl, onClick: () => onViewDetailButtonClick(item), className: "btn btn-primary", title: "See More Details" }, { children: (0,jsx_runtime.jsx)("span", Object.assign({ className: "btn-text" }, { children: "View Details" })) })), (0,jsx_runtime.jsx)("a", Object.assign({ className: "btn btn-default btn-reserve", onClick: () => onReserveUnitButtonClick(item) }, { children: (0,jsx_runtime.jsx)("span", Object.assign({ className: "btn-text" }, { children: "Reserve Unit" })) }))] })) }))] }))] }))] })) });
4509};
4510const SkeletonItem = () => {
4511    return (0,jsx_runtime.jsx)(jsx_runtime.Fragment, { children: (0,jsx_runtime.jsxs)("div", Object.assign({ className: "brp-item list-item" }, { children: [(0,jsx_runtime.jsxs)("div", Object.assign({ className: "row model-header" }, { children: [(0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-8 model-info" }, { children: [(0,jsx_runtime.jsx)("h2", Object.assign({ className: "model-name" }, { children: (0,jsx_runtime.jsx)(Skeleton, { inline: true, width: "240px" }) })), (0,jsx_runtime.jsxs)("div", Object.assign({ className: "model-category" }, { children: [(0,jsx_runtime.jsx)("span", Object.assign({ className: "condition" }, { children: (0,jsx_runtime.jsx)(Skeleton, { inline: true, width: "40px" }) })), " ", (0,jsx_runtime.jsx)("span", Object.assign({ className: "category" }, { children: (0,jsx_runtime.jsx)(Skeleton, { inline: true, width: "70px" }) })), " ", (0,jsx_runtime.jsx)("span", Object.assign({ className: "model-type" }, { children: (0,jsx_runtime.jsx)(Skeleton, { inline: true, width: "70px" }) }))] }))] })), (0,jsx_runtime.jsx)("div", Object.assign({ className: "col-sm-4 price-info" }, { children: (0,jsx_runtime.jsx)(Skeleton, { inline: true, width: "120px" }) }))] })), (0,jsx_runtime.jsxs)("div", Object.assign({ className: "row model-details" }, { children: [(0,jsx_runtime.jsx)("div", Object.assign({ className: "col-sm-4" }, { children: (0,jsx_runtime.jsx)("div", Object.assign({ className: "thumbnail-frame" }, { children: (0,jsx_runtime.jsx)(Skeleton, { style: { aspectRatio: "4/3", lineHeight: 2, maxWidth: "480px" }, borderRadius: 0, containerClassName: "skeleton-container" }) })) })), (0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-8 summary" }, { children: [(0,jsx_runtime.jsx)("div", Object.assign({ className: "row model-desc" }, { children: (0,jsx_runtime.jsx)("div", Object.assign({ className: "col-sm-12" }, { children: (0,jsx_runtime.jsxs)("div", Object.assign({ className: "row model-specs" }, { children: [(0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-6 spec" }, { children: [(0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-title" }, { children: (0,jsx_runtime.jsx)(Skeleton, { inline: true, width: "50px" }) })), (0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-info" }, { children: (0,jsx_runtime.jsx)(Skeleton, { inline: true, width: "100px" }) }))] })), (0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-6 spec" }, { children: [(0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-title" }, { children: (0,jsx_runtime.jsx)(Skeleton, { inline: true, width: "50px" }) })), (0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-info" }, { children: (0,jsx_runtime.jsx)(Skeleton, { inline: true, width: "100px" }) }))] })), (0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-sm-6 spec" }, { children: [(0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-title" }, { children: (0,jsx_runtime.jsx)(Skeleton, { inline: true, width: "50px" }) })), (0,jsx_runtime.jsx)("span", Object.assign({ className: "spec-info" }, { children: (0,jsx_runtime.jsx)(Skeleton, { inline: true, width: "100px" }) }))] }))] })) })) })), (0,jsx_runtime.jsx)("div", Object.assign({ className: "row" }, { children: (0,jsx_runtime.jsx)("div", Object.assign({ className: "col-sm-12 cta" }, { children: [1, 2].map((i) => (0,jsx_runtime.jsx)("div", Object.assign({ style: { flex: "1 1 50%", padding: "0 5px" } }, { children: (0,jsx_runtime.jsx)(Skeleton, { height: "35px" }) }), i)) })) }))] }))] }))] })) });
4512};
4513
4514
4515;// CONCATENATED MODULE: ./src/ui/brpItemList.tsx
4516
4517
4518
4519
4520
4521
4522const BrpItemList = () => {
4523    const [viewAllUrl, setViewAllUrl] = (0,react.useState)();
4524    const { webSellableItems, selectedGroup, hasInventory, module
4524Context } = (0,react.useContext)(BrpInventoryContext);
4525    (0,react.useEffect)(() => {
4526        const familyName = convertToFriendlyName(selectedGroup.productFamilyName);
4527        let viewAllUrl;
4528        if (hasInventory) {
4529            viewAllUrl = `${moduleContext.algoliaSearchResultPageUrl}${familyName ? "/" + familyName : ""}/${selectedGroup.year}`;
4530        }
4531        else {
4532            viewAllUrl = `${moduleContext.gridListingPageUrl}/${selectedGroup.year}?family=${familyName}`;
4533        }
4534        setViewAllUrl(viewAllUrl);
4535    }, [hasInventory, selectedGroup]);
4536    const onViewAllButtonClick = () => {
4537        // UCS140 - Click on view all inventory 
4538        brpAnalyticHelper.sendAnalyticsUserActionEvent("Model Info | view all");
4539        return false;
4540    };
4541    return (0,jsx_runtime.jsx)(jsx_runtime.Fragment, { children: (0,jsx_runtime.jsxs)("div", Object.assign({ className: "item-list-container" }, { children: [(0,jsx_runtime.jsxs)("div", Object.assign({ className: "item-list-header" }, { children: [(0,jsx_runtime.jsx)("h3", Object.assign({ className: "item-list-header-text eng" }, { children: webSellableItems
4542                                ? `Current ${selectedGroup === null || selectedGroup === void 0 ? void 0 : selectedGroup.groupName} Inventory`
4543                                : (0,jsx_runtime.jsx)(Skeleton, { inline: true, style: { width: "280px" } }) })), (0,jsx_runtime.jsx)("h3", Object.assign({ className: "item-list-header-text esp" }, { children: webSellableItems
4544                                ? `Inventario ${selectedGroup === null || selectedGroup === void 0 ? void 0 : selectedGroup.groupName} Actual`
4545                                : (0,jsx_runtime.jsx)(Skeleton, { inline: true, style: { width: "280px" } }) })), webSellableItems
4546                            ? (0,jsx_runtime.jsxs)("a", Object.assign({ className: "btn btn-primary item-list-button", onClick: onViewAllButtonClick, href: viewAllUrl }, { children: [(0,jsx_runtime.jsx)("span", Object.assign({ className: "eng" }, { children: "View All" })), (0,jsx_runtime.jsx)("span", Object.assign({ className: "esp" }, { children: "Ver Todo" }))] }))
4547                            : (0,jsx_runtime.jsx)(Skeleton, { inline: true, style: { width: "110px", height: "35px" } })] })), (0,jsx_runtime.jsx)("div", Object.assign({ className: "item-list" }, { children: webSellableItems
4548                        ? webSellableItems.map((item, i) => (0,jsx_runtime.jsx)(Item, { item: item }, i))
4549                        : [1, 2, 3].map((x) => (0,jsx_runtime.jsx)(SkeletonItem, {}, x)) }))] })) });
4550};
4551
4552
4553;// CONCATENATED MODULE: ./node_modules/swiper/shared/ssr-window.esm.mjs
4554/**
4555 * SSR Window 4.0.2
4556 * Better handling for window object in SSR environment
4557 * https://github.com/nolimits4web/ssr-window
4558 *
4559 * Copyright 2021, Vladimir Kharlampidi
4560 *
4561 * Licensed under MIT
4562 *
4563 * Released on: December 13, 2021
4564 */
4565/* eslint-disable no-param-reassign */
4566function ssr_window_esm_isObject(obj) {
4567  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;
4568}
4569function extend(target, src) {
4570  if (target === void 0) {
4571    target = {};
4572  }
4573  if (src === void 0) {
4574    src = {};
4575  }
4576  Object.keys(src).forEach(key => {
4577    if (typeof target[key] === 'undefined') target[key] = src[key];else if (ssr_window_esm_isObject(src[key]) && ssr_window_esm_isObject(target[key]) && Object.keys(src[key]).length > 0) {
4578      extend(target[key], src[key]);
4579    }
4580  });
4581}
4582const ssrDocument = {
4583  body: {},
4584  addEventListener() {},
4585  removeEventListener() {},
4586  activeElement: {
4587    blur() {},
4588    nodeName: ''
4589  },
4590  querySelector() {
4591    return null;
4592  },
4593  querySelectorAll() {
4594    return [];
4595  },
4596  getElementById() {
4597    return null;
4598  },
4599  createEvent() {
4600    return {
4601      initEvent() {}
4602    };
4603  },
4604  createElement() {
4605    return {
4606      children: [],
4607      childNodes: [],
4608      style: {},
4609      setAttribute() {},
4610      getElementsByTagName() {
4611        return [];
4612      }
4613    };
4614  },
4615  createElementNS() {
4616    return {};
4617  },
4618  importNode() {
4619    return null;
4620  },
4621  location: {
4622    hash: '',
4623    host: '',
4624    hostname: '',
4625    href: '',
4626    origin: '',
4627    pathname: '',
4628    protocol: '',
4629    search: ''
4630  }
4631};
4632function ssr_window_esm_getDocument() {
4633  const doc = typeof document !== 'undefined' ? document : {};
4634  extend(doc, ssrDocument);
4635  return doc;
4636}
4637const ssrWindow = {
4638  document: ssrDocument,
4639  navigator: {
4640    userAgent: ''
4641  },
4642  location: {
4643    hash: '',
4644    host: '',
4645    hostname: '',
4646    href: '',
4647    origin: '',
4648    pathname: '',
4649    protocol: '',
4650    search: ''
4651  },
4652  history: {
4653    replaceState() {},
4654    pushState() {},
4655    go() {},
4656    back() {}
4657  },
4658  CustomEvent: function CustomEvent() {
4659    return this;
4660  },
4661  addEventListener() {},
4662  removeEventListener() {},
4663  getComputedStyle() {
4664    return {
4665      getPropertyValue() {
4666        return '';
4667      }
4668    };
4669  },
4670  Image() {},
4671  Date() {},
4672  screen: {},
4673  setTimeout() {},
vendor: 5,855 bytes, lines 4674-4856
4674  clearTimeout() {},
4675  matchMedia() {
4676    return {};
4677  },
4678  requestAnimationFrame(callback) {
4679    if (typeof setTimeout === 'undefined') {
4680      callback();
4681      return null;
4682    }
4683    return setTimeout(callback, 0);
4684  },
4685  cancelAnimationFrame(id) {
4686    if (typeof setTimeout === 'undefined') {
4687      return;
4688    }
4689    clearTimeout(id);
4690  }
4691};
4692function ssr_window_esm_getWindow() {
4693  const win = typeof window !== 'undefined' ? window : {};
4694  extend(win, ssrWindow);
4695  return win;
4696}
4697
4698
4699
4700;// CONCATENATED MODULE: ./node_modules/swiper/shared/utils.mjs
4701
4702
4703function utils_classesToTokens(classes) {
4704  if (classes === void 0) {
4705    classes = '';
4706  }
4707  return classes.trim().split(' ').filter(c => !!c.trim());
4708}
4709
4710function deleteProps(obj) {
4711  const object = obj;
4712  Object.keys(object).forEach(key => {
4713    try {
4714      object[key] = null;
4715    } catch (e) {
4716      // no getter for object
4717    }
4718    try {
4719      delete object[key];
4720    } catch (e) {
4721      // something got wrong
4722    }
4723  });
4724}
4725function utils_nextTick(callback, delay) {
4726  if (delay === void 0) {
4727    delay = 0;
4728  }
4729  return setTimeout(callback, delay);
4730}
4731function utils_now() {
4732  return Date.now();
4733}
4734function utils_getComputedStyle(el) {
4735  const window = ssr_window_esm_getWindow();
4736  let style;
4737  if (window.getComputedStyle) {
4738    style = window.getComputedStyle(el, null);
4739  }
4740  if (!style && el.currentStyle) {
4741    style = el.currentStyle;
4742  }
4743  if (!style) {
4744    style = el.style;
4745  }
4746  return style;
4747}
4748function utils_getTranslate(el, axis) {
4749  if (axis === void 0) {
4750    axis = 'x';
4751  }
4752  const window = ssr_window_esm_getWindow();
4753  let matrix;
4754  let curTransform;
4755  let transformMatrix;
4756  const curStyle = utils_getComputedStyle(el);
4757  if (window.WebKitCSSMatrix) {
4758    curTransform = curStyle.transform || curStyle.webkitTransform;
4759    if (curTransform.split(',').length > 6) {
4760      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');
4761    }
4762    // Some old versions of Webkit choke when 'none' is passed; pass
4763    // empty string instead in this case
4764    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
4765  } else {
4766    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
4767    matrix = transformMatrix.toString().split(',');
4768  }
4769  if (axis === 'x') {
4770    // Latest Chrome and webkits Fix
4771    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;
4772    // Crazy IE10 Matrix
4773    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
4774    // Normal Browsers
4775    else curTransform = parseFloat(matrix[4]);
4776  }
4777  if (axis === 'y') {
4778    // Latest Chrome and webkits Fix
4779    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;
4780    // Crazy IE10 Matrix
4781    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
4782    // Normal Browsers
4783    else curTransform = parseFloat(matrix[5]);
4784  }
4785  return curTransform || 0;
4786}
4787function utils_isObject(o) {
4788  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';
4789}
4790function isNode(node) {
4791  // eslint-disable-next-line
4792  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {
4793    return node instanceof HTMLElement;
4794  }
4795  return node && (node.nodeType === 1 || node.nodeType === 11);
4796}
4797function utils_extend() {
4798  const to = Object(arguments.length <= 0 ? undefined : arguments[0]);
4799  const noExtend = ['__proto__', 'constructor', 'prototype'];
4800  for (let i = 1; i < arguments.length; i += 1) {
4801    const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
4802    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {
4803      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);
4804      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
4805        const nextKey = keysArray[nextIndex];
4806        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
4807        if (desc !== undefined && desc.enumerable) {
4808          if (utils_isObject(to[nextKey]) && utils_isObject(nextSource[nextKey])) {
4809            if (nextSource[nextKey].__swiper__) {
4810              to[nextKey] = nextSource[nextKey];
4811            } else {
4812              utils_extend(to[nextKey], nextSource[nextKey]);
4813            }
4814          } else if (!utils_isObject(to[nextKey]) && utils_isObject(nextSource[nextKey])) {
4815            to[nextKey] = {};
4816            if (nextSource[nextKey].__swiper__) {
4817              to[nextKey] = nextSource[nextKey];
4818            } else {
4819              utils_extend(to[nextKey], nextSource[nextKey]);
4820            }
4821          } else {
4822            to[nextKey] = nextSource[nextKey];
4823          }
4824        }
4825      }
4826    }
4827  }
4828  return to;
4829}
4830function utils_setCSSProperty(el, varName, varValue) {
4831  el.style.setProperty(varName, varValue);
4832}
4833function animateCSSModeScroll(_ref) {
4834  let {
4835    swiper,
4836    targetPosition,
4837    side
4838  } = _ref;
4839  const window = ssr_window_esm_getWindow();
4840  const startPosition = -swiper.translate;
4841  let startTime = null;
4842  let time;
4843  const duration = swiper.params.speed;
4844  swiper.wrapperEl.style.scrollSnapType = 'none';
4845  window.cancelAnimationFrame(swiper.cssModeFrameID);
4846  const dir = targetPosition > startPosition ? 'next' : 'prev';
4847  const isOutOfBound = (current, target) => {
4848    return dir === 'next' && current >= target || dir === 'prev' && current <= target;
4849  };
4850  const animate = () => {
4851    time = new Date().getTime();
4852    if (startTime === null) {
4853      startTime = time;
4854    }
4855    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
4856    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
vendor: 5,305 bytes, lines 4857-5029
4857    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);
4858    if (isOutOfBound(currentPosition, targetPosition)) {
4859      currentPosition = targetPosition;
4860    }
4861    swiper.wrapperEl.scrollTo({
4862      [side]: currentPosition
4863    });
4864    if (isOutOfBound(currentPosition, targetPosition)) {
4865      swiper.wrapperEl.style.overflow = 'hidden';
4866      swiper.wrapperEl.style.scrollSnapType = '';
4867      setTimeout(() => {
4868        swiper.wrapperEl.style.overflow = '';
4869        swiper.wrapperEl.scrollTo({
4870          [side]: currentPosition
4871        });
4872      });
4873      window.cancelAnimationFrame(swiper.cssModeFrameID);
4874      return;
4875    }
4876    swiper.cssModeFrameID = window.requestAnimationFrame(animate);
4877  };
4878  animate();
4879}
4880function utils_getSlideTransformEl(slideEl) {
4881  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;
4882}
4883function utils_elementChildren(element, selector) {
4884  if (selector === void 0) {
4885    selector = '';
4886  }
4887  const children = [...element.children];
4888  if (element instanceof HTMLSlotElement) {
4889    children.push(...element.assignedElements());
4890  }
4891  if (!selector) {
4892    return children;
4893  }
4894  return children.filter(el => el.matches(selector));
4895}
4896function elementIsChildOf(el, parent) {
4897  const isChild = parent.contains(el);
4898  if (!isChild && parent instanceof HTMLSlotElement) {
4899    const children = [...parent.assignedElements()];
4900    return children.includes(el);
4901  }
4902  return isChild;
4903}
4904function showWarning(text) {
4905  try {
4906    console.warn(text);
4907    return;
4908  } catch (err) {
4909    // err
4910  }
4911}
4912function utils_createElement(tag, classes) {
4913  if (classes === void 0) {
4914    classes = [];
4915  }
4916  const el = document.createElement(tag);
4917  el.classList.add(...(Array.isArray(classes) ? classes : utils_classesToTokens(classes)));
4918  return el;
4919}
4920function utils_elementOffset(el) {
4921  const window = getWindow();
4922  const document = getDocument();
4923  const box = el.getBoundingClientRect();
4924  const body = document.body;
4925  const clientTop = el.clientTop || body.clientTop || 0;
4926  const clientLeft = el.clientLeft || body.clientLeft || 0;
4927  const scrollTop = el === window ? window.scrollY : el.scrollTop;
4928  const scrollLeft = el === window ? window.scrollX : el.scrollLeft;
4929  return {
4930    top: box.top + scrollTop - clientTop,
4931    left: box.left + scrollLeft - clientLeft
4932  };
4933}
4934function elementPrevAll(el, selector) {
4935  const prevEls = [];
4936  while (el.previousElementSibling) {
4937    const prev = el.previousElementSibling; // eslint-disable-line
4938    if (selector) {
4939      if (prev.matches(selector)) prevEls.push(prev);
4940    } else prevEls.push(prev);
4941    el = prev;
4942  }
4943  return prevEls;
4944}
4945function elementNextAll(el, selector) {
4946  const nextEls = [];
4947  while (el.nextElementSibling) {
4948    const next = el.nextElementSibling; // eslint-disable-line
4949    if (selector) {
4950      if (next.matches(selector)) nextEls.push(next);
4951    } else nextEls.push(next);
4952    el = next;
4953  }
4954  return nextEls;
4955}
4956function elementStyle(el, prop) {
4957  const window = ssr_window_esm_getWindow();
4958  return window.getComputedStyle(el, null).getPropertyValue(prop);
4959}
4960function utils_elementIndex(el) {
4961  let child = el;
4962  let i;
4963  if (child) {
4964    i = 0;
4965    // eslint-disable-next-line
4966    while ((child = child.previousSibling) !== null) {
4967      if (child.nodeType === 1) i += 1;
4968    }
4969    return i;
4970  }
4971  return undefined;
4972}
4973function utils_elementParents(el, selector) {
4974  const parents = []; // eslint-disable-line
4975  let parent = el.parentElement; // eslint-disable-line
4976  while (parent) {
4977    if (selector) {
4978      if (parent.matches(selector)) parents.push(parent);
4979    } else {
4980      parents.push(parent);
4981    }
4982    parent = parent.parentElement;
4983  }
4984  return parents;
4985}
4986function utils_elementTransitionEnd(el, callback) {
4987  function fireCallBack(e) {
4988    if (e.target !== el) return;
4989    callback.call(el, e);
4990    el.removeEventListener('transitionend', fireCallBack);
4991  }
4992  if (callback) {
4993    el.addEventListener('transitionend', fireCallBack);
4994  }
4995}
4996function utils_elementOuterSize(el, size, includeMargins) {
4997  const window = ssr_window_esm_getWindow();
4998  if (includeMargins) {
4999    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'));
5000  }
5001  return el.offsetWidth;
5002}
5003function utils_makeElementsArray(el) {
5004  return (Array.isArray(el) ? el : [el]).filter(e => !!e);
5005}
5006function utils_getRotateFix(swiper) {
5007  return v => {
5008    if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {
5009      return v + 0.001;
5010    }
5011    return v;
5012  };
5013}
5014
5015
5016
5017;// CONCATENATED MODULE: ./node_modules/swiper/shared/swiper-core.mjs
5018
5019
5020
5021let support;
5022function calcSupport() {
5023  const window = ssr_window_esm_getWindow();
5024  const document = ssr_window_esm_getDocument();
5025  return {
5026    smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,
5027    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)
5028  };
5029}
vendor: 14,978 bytes, lines 5030-5495
5030function getSupport() {
5031  if (!support) {
5032    support = calcSupport();
5033  }
5034  return support;
5035}
5036
5037let deviceCached;
5038function calcDevice(_temp) {
5039  let {
5040    userAgent
5041  } = _temp === void 0 ? {} : _temp;
5042  const support = getSupport();
5043  const window = ssr_window_esm_getWindow();
5044  const platform = window.navigator.platform;
5045  const ua = userAgent || window.navigator.userAgent;
5046  const device = {
5047    ios: false,
5048    android: false
5049  };
5050  const screenWidth = window.screen.width;
5051  const screenHeight = window.screen.height;
5052  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
5053  let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
5054  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
5055  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
5056  const windows = platform === 'Win32';
5057  let macos = platform === 'MacIntel';
5058
5059  // iPadOs 13 fix
5060  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
5061  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {
5062    ipad = ua.match(/(Version)\/([\d.]+)/);
5063    if (!ipad) ipad = [0, 1, '13_0_0'];
5064    macos = false;
5065  }
5066
5067  // Android
5068  if (android && !windows) {
5069    device.os = 'android';
5070    device.android = true;
5071  }
5072  if (ipad || iphone || ipod) {
5073    device.os = 'ios';
5074    device.ios = true;
5075  }
5076
5077  // Export object
5078  return device;
5079}
5080function getDevice(overrides) {
5081  if (overrides === void 0) {
5082    overrides = {};
5083  }
5084  if (!deviceCached) {
5085    deviceCached = calcDevice(overrides);
5086  }
5087  return deviceCached;
5088}
5089
5090let browser;
5091function calcBrowser() {
5092  const window = ssr_window_esm_getWindow();
5093  const device = getDevice();
5094  let needPerspectiveFix = false;
5095  function isSafari() {
5096    const ua = window.navigator.userAgent.toLowerCase();
5097    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
5098  }
5099  if (isSafari()) {
5100    const ua = String(window.navigator.userAgent);
5101    if (ua.includes('Version/')) {
5102      const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));
5103      needPerspectiveFix = major < 16 || major === 16 && minor < 2;
5104    }
5105  }
5106  const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);
5107  const isSafariBrowser = isSafari();
5108  const need3dFix = isSafariBrowser || isWebView && device.ios;
5109  return {
5110    isSafari: needPerspectiveFix || isSafariBrowser,
5111    needPerspectiveFix,
5112    need3dFix,
5113    isWebView
5114  };
5115}
5116function getBrowser() {
5117  if (!browser) {
5118    browser = calcBrowser();
5119  }
5120  return browser;
5121}
5122
5123function Resize(_ref) {
5124  let {
5125    swiper,
5126    on,
5127    emit
5128  } = _ref;
5129  const window = ssr_window_esm_getWindow();
5130  let observer = null;
5131  let animationFrame = null;
5132  const resizeHandler = () => {
5133    if (!swiper || swiper.destroyed || !swiper.initialized) return;
5134    emit('beforeResize');
5135    emit('resize');
5136  };
5137  const createObserver = () => {
5138    if (!swiper || swiper.destroyed || !swiper.initialized) return;
5139    observer = new ResizeObserver(entries => {
5140      animationFrame = window.requestAnimationFrame(() => {
5141        const {
5142          width,
5143          height
5144        } = swiper;
5145        let newWidth = width;
5146        let newHeight = height;
5147        entries.forEach(_ref2 => {
5148          let {
5149            contentBoxSize,
5150            contentRect,
5151            target
5152          } = _ref2;
5153          if (target && target !== swiper.el) return;
5154          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
5155          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
5156        });
5157        if (newWidth !== width || newHeight !== height) {
5158          resizeHandler();
5159        }
5160      });
5161    });
5162    observer.observe(swiper.el);
5163  };
5164  const removeObserver = () => {
5165    if (animationFrame) {
5166      window.cancelAnimationFrame(animationFrame);
5167    }
5168    if (observer && observer.unobserve && swiper.el) {
5169      observer.unobserve(swiper.el);
5170      observer = null;
5171    }
5172  };
5173  const orientationChangeHandler = () => {
5174    if (!swiper || swiper.destroyed || !swiper.initialized) return;
5175    emit('orientationchange');
5176  };
5177  on('init', () => {
5178    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {
5179      createObserver();
5180      return;
5181    }
5182    window.addEventListener('resize', resizeHandler);
5183    window.addEventListener('orientationchange', orientationChangeHandler);
5184  });
5185  on('destroy', () => {
5186    removeObserver();
5187    window.removeEventListener('resize', resizeHandler);
5188    window.removeEventListener('orientationchange', orientationChangeHandler);
5189  });
5190}
5191
5192function Observer(_ref) {
5193  let {
5194    swiper,
5195    extendParams,
5196    on,
5197    emit
5198  } = _ref;
5199  const observers = [];
5200  const window = ssr_window_esm_getWindow();
5201  const attach = function (target, options) {
5202    if (options === void 0) {
5203      options = {};
5204    }
5205    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
5206    const observer = new ObserverFunc(mutations => {
5207      // The observerUpdate event should only be triggered
5208      // once despite the number of mutations.  Additional
5209      // triggers are redundant and are very costly
5210      if (swiper.__preventObserver__) return;
5211      if (mutations.length === 1) {
5212        emit('observerUpdate', mutations[0]);
5213        return;
5214      }
5215      const observerUpdate = function observerUpdate() {
5216        emit('observerUpdate', mutations[0]);
5217      };
5218      if (window.requestAnimationFrame) {
5219        window.requestAnimationFrame(observerUpdate);
5220      } else {
5221        window.setTimeout(observerUpdate, 0);
5222      }
5223    });
5224    observer.observe(target, {
5225      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
5226      childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,
5227      characterData: typeof options.characterData === 'undefined' ? true : options.characterData
5228    });
5229    observers.push(observer);
5230  };
5231  const init = () => {
5232    if (!swiper.params.observer) return;
5233    if (swiper.params.observeParents) {
5234      const containerParents = utils_elementParents(swiper.hostEl);
5235      for (let i = 0; i < containerParents.length; i += 1) {
5236        attach(containerParents[i]);
5237      }
5238    }
5239    // Observe container
5240    attach(swiper.hostEl, {
5241      childList: swiper.params.observeSlideChildren
5242    });
5243
5244    // Observe wrapper
5245    attach(swiper.wrapperEl, {
5246      attributes: false
5247    });
5248  };
5249  const destroy = () => {
5250    observers.forEach(observer => {
5251      observer.disconnect();
5252    });
5253    observers.splice(0, observers.length);
5254  };
5255  extendParams({
5256    observer: false,
5257    observeParents: false,
5258    observeSlideChildren: false
5259  });
5260  on('init', init);
5261  on('destroy', destroy);
5262}
5263
5264/* eslint-disable no-underscore-dangle */
5265
5266var eventsEmitter = {
5267  on(events, handler, priority) {
5268    const self = this;
5269    if (!self.eventsListeners || self.destroyed) return self;
5270    if (typeof handler !== 'function') return self;
5271    const method = priority ? 'unshift' : 'push';
5272    events.split(' ').forEach(event => {
5273      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
5274      self.eventsListeners[event][method](handler);
5275    });
5276    return self;
5277  },
5278  once(events, handler, priority) {
5279    const self = this;
5280    if (!self.eventsListeners || self.destroyed) return self;
5281    if (typeof handler !== 'function') return self;
5282    function onceHandler() {
5283      self.off(events, onceHandler);
5284      if (onceHandler.__emitterProxy) {
5285        delete onceHandler.__emitterProxy;
5286      }
5287      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
5288        args[_key] = arguments[_key];
5289      }
5290      handler.apply(self, args);
5291    }
5292    onceHandler.__emitterProxy = handler;
5293    return self.on(events, onceHandler, priority);
5294  },
5295  onAny(handler, priority) {
5296    const self = this;
5297    if (!self.eventsListeners || self.destroyed) return self;
5298    if (typeof handler !== 'function') return self;
5299    const method = priority ? 'unshift' : 'push';
5300    if (self.eventsAnyListeners.indexOf(handler) < 0) {
5301      self.eventsAnyListeners[method](handler);
5302    }
5303    return self;
5304  },
5305  offAny(handler) {
5306    const self = this;
5307    if (!self.eventsListeners || self.destroyed) return self;
5308    if (!self.eventsAnyListeners) return self;
5309    const index = self.eventsAnyListeners.indexOf(handler);
5310    if (index >= 0) {
5311      self.eventsAnyListeners.splice(index, 1);
5312    }
5313    return self;
5314  },
5315  off(events, handler) {
5316    const self = this;
5317    if (!self.eventsListeners || self.destroyed) return self;
5318    if (!self.eventsListeners) return self;
5319    events.split(' ').forEach(event => {
5320      if (typeof handler === 'undefined') {
5321        self.eventsListeners[event] = [];
5322      } else if (self.eventsListeners[event]) {
5323        self.eventsListeners[event].forEach((eventHandler, index) => {
5324          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
5325            self.eventsListeners[event].splice(index, 1);
5326          }
5327        });
5328      }
5329    });
5330    return self;
5331  },
5332  emit() {
5333    const self = this;
5334    if (!self.eventsListeners || self.destroyed) return self;
5335    if (!self.eventsListeners) return self;
5336    let events;
5337    let data;
5338    let context;
5339    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
5340      args[_key2] = arguments[_key2];
5341    }
5342    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
5343      events = args[0];
5344      data = args.slice(1, args.length);
5345      context = self;
5346    } else {
5347      events = args[0].events;
5348      data = args[0].data;
5349      context = args[0].context || self;
5350    }
5351    data.unshift(context);
5352    const eventsArray = Array.isArray(events) ? events : events.split(' ');
5353    eventsArray.forEach(event => {
5354      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
5355        self.eventsAnyListeners.forEach(eventHandler => {
5356          eventHandler.apply(context, [event, ...data]);
5357        });
5358      }
5359      if (self.eventsListeners && self.eventsListeners[event]) {
5360        self.eventsListeners[event].forEach(eventHandler => {
5361          eventHandler.apply(context, data);
5362        });
5363      }
5364    });
5365    return self;
5366  }
5367};
5368
5369function updateSize() {
5370  const swiper = this;
5371  let width;
5372  let height;
5373  const el = swiper.el;
5374  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
5375    width = swiper.params.width;
5376  } else {
5377    width = el.clientWidth;
5378  }
5379  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {
5380    height = swiper.params.height;
5381  } else {
5382    height = el.clientHeight;
5383  }
5384  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
5385    return;
5386  }
5387
5388  // Subtract paddings
5389  width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);
5390  height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);
5391  if (Number.isNaN(width)) width = 0;
5392  if (Number.isNaN(height)) height = 0;
5393  Object.assign(swiper, {
5394    width,
5395    height,
5396    size: swiper.isHorizontal() ? width : height
5397  });
5398}
5399
5400function updateSlides() {
5401  const swiper = this;
5402  function getDirectionPropertyValue(node, label) {
5403    return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);
5404  }
5405  const params = swiper.params;
5406  const {
5407    wrapperEl,
5408    slidesEl,
5409    size: swiperSize,
5410    rtlTranslate: rtl,
5411    wrongRTL
5412  } = swiper;
5413  const isVirtual = swiper.virtual && params.virtual.enabled;
5414  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
5415  const slides = utils_elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);
5416  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
5417  let snapGrid = [];
5418  const slidesGrid = [];
5419  const slidesSizesGrid = [];
5420  let offsetBefore = params.slidesOffsetBefore;
5421  if (typeof offsetBefore === 'function') {
5422    offsetBefore = params.slidesOffsetBefore.call(swiper);
5423  }
5424  let offsetAfter = params.slidesOffsetAfter;
5425  if (typeof offsetAfter === 'function') {
5426    offsetAfter = params.slidesOffsetAfter.call(swiper);
5427  }
5428  const previousSnapGridLength = swiper.snapGrid.length;
5429  const previousSlidesGridLength = swiper.slidesGrid.length;
5430  let spaceBetween = params.spaceBetween;
5431  let slidePosition = -offsetBefore;
5432  let prevSlideSize = 0;
5433  let index = 0;
5434  if (typeof swiperSize === 'undefined') {
5435    return;
5436  }
5437  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
5438    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
5439  } else if (typeof spaceBetween === 'string') {
5440    spaceBetween = parseFloat(spaceBetween);
5441  }
5442  swiper.virtualSize = -spaceBetween;
5443
5444  // reset margins
5445  slides.forEach(slideEl => {
5446    if (rtl) {
5447      slideEl.style.marginLeft = '';
5448    } else {
5449      slideEl.style.marginRight = '';
5450    }
5451    slideEl.style.marginBottom = '';
5452    slideEl.style.marginTop = '';
5453  });
5454
5455  // reset cssMode offsets
5456  if (params.centeredSlides && params.cssMode) {
5457    utils_setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');
5458    utils_setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');
5459  }
5460  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
5461  if (gridEnabled) {
5462    swiper.grid.initSlides(slides);
5463  } else if (swiper.grid) {
5464    swiper.grid.unsetSlides();
5465  }
5466
5467  // Calc slides
5468  let slideSize;
5469  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {
5470    return typeof params.breakpoints[key].slidesPerView !== 'undefined';
5471  }).length > 0;
5472  for (let i = 0; i < slidesLength; i += 1) {
5473    slideSize = 0;
5474    let slide;
5475    if (slides[i]) slide = slides[i];
5476    if (gridEnabled) {
5477      swiper.grid.updateSlide(i, slide, slides);
5478    }
5479    if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line
5480
5481    if (params.slidesPerView === 'auto') {
5482      if (shouldResetSlideSize) {
5483        slides[i].style[swiper.getDirectionLabel('width')] = ``;
5484      }
5485      const slideStyles = getComputedStyle(slide);
5486      const currentTransform = slide.style.transform;
5487      const currentWebKitTransform = slide.style.webkitTransform;
5488      if (currentTransform) {
5489        slide.style.transform = 'none';
5490      }
5491      if (currentWebKitTransform) {
5492        slide.style.webkitTransform = 'none';
5493      }
5494      if (params.roundLengths) {
5495        slideSize = swiper.isHorizontal() ? utils_elementOuterSize(slide, 'width', true) : utils_
vendor: 6,154 bytes, lines 5495-5643
5495elementOuterSize(slide, 'height', true);
5496      } else {
5497        // eslint-disable-next-line
5498        const width = getDirectionPropertyValue(slideStyles, 'width');
5499        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');
5500        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');
5501        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');
5502        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');
5503        const boxSizing = slideStyles.getPropertyValue('box-sizing');
5504        if (boxSizing && boxSizing === 'border-box') {
5505          slideSize = width + marginLeft + marginRight;
5506        } else {
5507          const {
5508            clientWidth,
5509            offsetWidth
5510          } = slide;
5511          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
5512        }
5513      }
5514      if (currentTransform) {
5515        slide.style.transform = currentTransform;
5516      }
5517      if (currentWebKitTransform) {
5518        slide.style.webkitTransform = currentWebKitTransform;
5519      }
5520      if (params.roundLengths) slideSize = Math.floor(slideSize);
5521    } else {
5522      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
5523      if (params.roundLengths) slideSize = Math.floor(slideSize);
5524      if (slides[i]) {
5525        slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;
5526      }
5527    }
5528    if (slides[i]) {
5529      slides[i].swiperSlideSize = slideSize;
5530    }
5531    slidesSizesGrid.push(slideSize);
5532    if (params.centeredSlides) {
5533      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
5534      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
5535      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
5536      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
5537      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
5538      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
5539      slidesGrid.push(slidePosition);
5540    } else {
5541      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
5542      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
5543      slidesGrid.push(slidePosition);
5544      slidePosition = slidePosition + slideSize + spaceBetween;
5545    }
5546    swiper.virtualSize += slideSize + spaceBetween;
5547    prevSlideSize = slideSize;
5548    index += 1;
5549  }
5550  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
5551  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
5552    wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;
5553  }
5554  if (params.setWrapperSize) {
5555    wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;
5556  }
5557  if (gridEnabled) {
5558    swiper.grid.updateWrapperSize(slideSize, snapGrid);
5559  }
5560
5561  // Remove last grid elements depending on width
5562  if (!params.centeredSlides) {
5563    const newSlidesGrid = [];
5564    for (let i = 0; i < snapGrid.length; i += 1) {
5565      let slidesGridItem = snapGrid[i];
5566      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
5567      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
5568        newSlidesGrid.push(slidesGridItem);
5569      }
5570    }
5571    snapGrid = newSlidesGrid;
5572    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
5573      snapGrid.push(swiper.virtualSize - swiperSize);
5574    }
5575  }
5576  if (isVirtual && params.loop) {
5577    const size = slidesSizesGrid[0] + spaceBetween;
5578    if (params.slidesPerGroup > 1) {
5579      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);
5580      const groupSize = size * params.slidesPerGroup;
5581      for (let i = 0; i < groups; i += 1) {
5582        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);
5583      }
5584    }
5585    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {
5586      if (params.slidesPerGroup === 1) {
5587        snapGrid.push(snapGrid[snapGrid.length - 1] + size);
5588      }
5589      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);
5590      swiper.virtualSize += size;
5591    }
5592  }
5593  if (snapGrid.length === 0) snapGrid = [0];
5594  if (spaceBetween !== 0) {
5595    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');
5596    slides.filter((_, slideIndex) => {
5597      if (!params.cssMode || params.loop) return true;
5598      if (slideIndex === slides.length - 1) {
5599        return false;
5600      }
5601      return true;
5602    }).forEach(slideEl => {
5603      slideEl.style[key] = `${spaceBetween}px`;
5604    });
5605  }
5606  if (params.centeredSlides && params.centeredSlidesBounds) {
5607    let allSlidesSize = 0;
5608    slidesSizesGrid.forEach(slideSizeValue => {
5609      allSlidesSize += slideSizeValue + (spaceBetween || 0);
5610    });
5611    allSlidesSize -= spaceBetween;
5612    const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;
5613    snapGrid = snapGrid.map(snap => {
5614      if (snap <= 0) return -offsetBefore;
5615      if (snap > maxSnap) return maxSnap + offsetAfter;
5616      return snap;
5617    });
5618  }
5619  if (params.centerInsufficientSlides) {
5620    let allSlidesSize = 0;
5621    slidesSizesGrid.forEach(slideSizeValue => {
5622      allSlidesSize += slideSizeValue + (spaceBetween || 0);
5623    });
5624    allSlidesSize -= spaceBetween;
5625    const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);
5626    if (allSlidesSize + offsetSize < swiperSize) {
5627      const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;
5628      snapGrid.forEach((snap, snapIndex) => {
5629        snapGrid[snapIndex] = snap - allSlidesOffset;
5630      });
5631      slidesGrid.forEach((snap, snapIndex) => {
5632        slidesGrid[snapIndex] = snap + allSlidesOffset;
5633      });
5634    }
5635  }
5636  Object.assign(swiper, {
5637    slides,
5638    snapGrid,
5639    slidesGrid,
5640    slidesSizesGrid
5641  });
5642  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {
5643    
5643utils_setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);
5644    utils_setCSSProperty
vendor: 8,507 bytes, lines 5644-5865
5644(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);
5645    const addToSnapGrid = -swiper.snapGrid[0];
5646    const addToSlidesGrid = -swiper.slidesGrid[0];
5647    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);
5648    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);
5649  }
5650  if (slidesLength !== previousSlidesLength) {
5651    swiper.emit('slidesLengthChange');
5652  }
5653  if (snapGrid.length !== previousSnapGridLength) {
5654    if (swiper.params.watchOverflow) swiper.checkOverflow();
5655    swiper.emit('snapGridLengthChange');
5656  }
5657  if (slidesGrid.length !== previousSlidesGridLength) {
5658    swiper.emit('slidesGridLengthChange');
5659  }
5660  if (params.watchSlidesProgress) {
5661    swiper.updateSlidesOffset();
5662  }
5663  swiper.emit('slidesUpdated');
5664  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {
5665    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;
5666    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);
5667    if (slidesLength <= params.maxBackfaceHiddenSlides) {
5668      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);
5669    } else if (hasClassBackfaceClassAdded) {
5670      swiper.el.classList.remove(backFaceHiddenClass);
5671    }
5672  }
5673}
5674
5675function updateAutoHeight(speed) {
5676  const swiper = this;
5677  const activeSlides = [];
5678  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
5679  let newHeight = 0;
5680  let i;
5681  if (typeof speed === 'number') {
5682    swiper.setTransition(speed);
5683  } else if (speed === true) {
5684    swiper.setTransition(swiper.params.speed);
5685  }
5686  const getSlideByIndex = index => {
5687    if (isVirtual) {
5688      return swiper.slides[swiper.getSlideIndexByData(index)];
5689    }
5690    return swiper.slides[index];
5691  };
5692  // Find slides currently in view
5693  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
5694    if (swiper.params.centeredSlides) {
5695      (swiper.visibleSlides || []).forEach(slide => {
5696        activeSlides.push(slide);
5697      });
5698    } else {
5699      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
5700        const index = swiper.activeIndex + i;
5701        if (index > swiper.slides.length && !isVirtual) break;
5702        activeSlides.push(getSlideByIndex(index));
5703      }
5704    }
5705  } else {
5706    activeSlides.push(getSlideByIndex(swiper.activeIndex));
5707  }
5708
5709  // Find new height from highest slide in view
5710  for (i = 0; i < activeSlides.length; i += 1) {
5711    if (typeof activeSlides[i] !== 'undefined') {
5712      const height = activeSlides[i].offsetHeight;
5713      newHeight = height > newHeight ? height : newHeight;
5714    }
5715  }
5716
5717  // Update Height
5718  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;
5719}
5720
5721function updateSlidesOffset() {
5722  const swiper = this;
5723  const slides = swiper.slides;
5724  // eslint-disable-next-line
5725  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;
5726  for (let i = 0; i < slides.length; i += 1) {
5727    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();
5728  }
5729}
5730
5731const toggleSlideClasses$1 = (slideEl, condition, className) => {
5732  if (condition && !slideEl.classList.contains(className)) {
5733    slideEl.classList.add(className);
5734  } else if (!condition && slideEl.classList.contains(className)) {
5735    slideEl.classList.remove(className);
5736  }
5737};
5738function updateSlidesProgress(translate) {
5739  if (translate === void 0) {
5740    translate = this && this.translate || 0;
5741  }
5742  const swiper = this;
5743  const params = swiper.params;
5744  const {
5745    slides,
5746    rtlTranslate: rtl,
5747    snapGrid
5748  } = swiper;
5749  if (slides.length === 0) return;
5750  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
5751  let offsetCenter = -translate;
5752  if (rtl) offsetCenter = translate;
5753  swiper.visibleSlidesIndexes = [];
5754  swiper.visibleSlides = [];
5755  let spaceBetween = params.spaceBetween;
5756  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
5757    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;
5758  } else if (typeof spaceBetween === 'string') {
5759    spaceBetween = parseFloat(spaceBetween);
5760  }
5761  for (let i = 0; i < slides.length; i += 1) {
5762    const slide = slides[i];
5763    let slideOffset = slide.swiperSlideOffset;
5764    if (params.cssMode && params.centeredSlides) {
5765      slideOffset -= slides[0].swiperSlideOffset;
5766    }
5767    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);
5768    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);
5769    const slideBefore = -(offsetCenter - slideOffset);
5770    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
5771    const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];
5772    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
5773    if (isVisible) {
5774      swiper.visibleSlides.push(slide);
5775      swiper.visibleSlidesIndexes.push(i);
5776    }
5777    toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);
5778    toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);
5779    slide.progress = rtl ? -slideProgress : slideProgress;
5780    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
5781  }
5782}
5783
5784function updateProgress(translate) {
5785  const swiper = this;
5786  if (typeof translate === 'undefined') {
5787    const multiplier = swiper.rtlTranslate ? -1 : 1;
5788    // eslint-disable-next-line
5789    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
5790  }
5791  const params = swiper.params;
5792  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
5793  let {
5794    progress,
5795    isBeginning,
5796    isEnd,
5797    progressLoop
5798  } = swiper;
5799  const wasBeginning = isBeginning;
5800  const wasEnd = isEnd;
5801  if (translatesDiff === 0) {
5802    progress = 0;
5803    isBeginning = true;
5804    isEnd = true;
5805  } else {
5806    progress = (translate - swiper.minTranslate()) / translatesDiff;
5807    const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;
5808    const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;
5809    isBeginning = isBeginningRounded || progress <= 0;
5810    isEnd = isEndRounded || progress >= 1;
5811    if (isBeginningRounded) progress = 0;
5812    if (isEndRounded) progress = 1;
5813  }
5814  if (params.loop) {
5815    const firstSlideIndex = swiper.getSlideIndexByData(0);
5816    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);
5817    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];
5818    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];
5819    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];
5820    const translateAbs = Math.abs(translate);
5821    if (translateAbs >= firstSlideTranslate) {
5822      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;
5823    } else {
5824      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;
5825    }
5826    if (progressLoop > 1) progressLoop -= 1;
5827  }
5828  Object.assign(swiper, {
5829    progress,
5830    progressLoop,
5831    isBeginning,
5832    isEnd
5833  });
5834  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
5835  if (isBeginning && !wasBeginning) {
5836    swiper.emit('reachBeginning toEdge');
5837  }
5838  if (isEnd && !wasEnd) {
5839    swiper.emit('reachEnd toEdge');
5840  }
5841  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
5842    swiper.emit('fromEdge');
5843  }
5844  swiper.emit('progress', progress);
5845}
5846
5847const toggleSlideClasses = (slideEl, condition, className) => {
5848  if (condition && !slideEl.classList.contains(className)) {
5849    slideEl.classList.add(className);
5850  } else if (!condition && slideEl.classList.contains(className)) {
5851    slideEl.classList.remove(className);
5852  }
5853};
5854function updateSlidesClasses() {
5855  const swiper = this;
5856  const {
5857    slides,
5858    params,
5859    slidesEl,
5860    activeIndex
5861  } = swiper;
5862  const isVirtual = swiper.virtual && params.virtual.enabled;
5863  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
5864  const getFilteredSlide = selector => {
5865    return 
5865utils_elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];
5866  };
5867  let activeSlide;
5868  let prevSlide;
5869  let nextSlide;
5870  if (isVirtual) {
5871    if (params.loop) {
5872      let slideIndex = activeIndex - swiper.virtual.slidesBefore;
5873      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;
5874      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;
5875      activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`);
5876    } else {
5877      activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`);
5878    }
5879  } else {
5880    if (gridEnabled) {
5881      activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];
5882      nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];
5883      prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]
vendor: 5,932 bytes, lines 5883-6048
5883;
5884    } else {
5885      activeSlide = slides[activeIndex];
5886    }
5887  }
5888  if (activeSlide) {
5889    if (!gridEnabled) {
5890      // Next Slide
5891      nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];
5892      if (params.loop && !nextSlide) {
5893        nextSlide = slides[0];
5894      }
5895
5896      // Prev Slide
5897      prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];
5898      if (params.loop && !prevSlide === 0) {
5899        prevSlide = slides[slides.length - 1];
5900      }
5901    }
5902  }
5903  slides.forEach(slideEl => {
5904    toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);
5905    toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);
5906    toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);
5907  });
5908  swiper.emitSlidesClasses();
5909}
5910
5911const processLazyPreloader = (swiper, imageEl) => {
5912  if (!swiper || swiper.destroyed || !swiper.params) return;
5913  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;
5914  const slideEl = imageEl.closest(slideSelector());
5915  if (slideEl) {
5916    let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);
5917    if (!lazyEl && swiper.isElement) {
5918      if (slideEl.shadowRoot) {
5919        lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);
5920      } else {
5921        // init later
5922        requestAnimationFrame(() => {
5923          if (slideEl.shadowRoot) {
5924            lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);
5925            if (lazyEl) lazyEl.remove();
5926          }
5927        });
5928      }
5929    }
5930    if (lazyEl) lazyEl.remove();
5931  }
5932};
5933const unlazy = (swiper, index) => {
5934  if (!swiper.slides[index]) return;
5935  const imageEl = swiper.slides[index].querySelector('[loading="lazy"]');
5936  if (imageEl) imageEl.removeAttribute('loading');
5937};
5938const preload = swiper => {
5939  if (!swiper || swiper.destroyed || !swiper.params) return;
5940  let amount = swiper.params.lazyPreloadPrevNext;
5941  const len = swiper.slides.length;
5942  if (!len || !amount || amount < 0) return;
5943  amount = Math.min(amount, len);
5944  const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);
5945  const activeIndex = swiper.activeIndex;
5946  if (swiper.params.grid && swiper.params.grid.rows > 1) {
5947    const activeColumn = activeIndex;
5948    const preloadColumns = [activeColumn - amount];
5949    preloadColumns.push(...Array.from({
5950      length: amount
5951    }).map((_, i) => {
5952      return activeColumn + slidesPerView + i;
5953    }));
5954    swiper.slides.forEach((slideEl, i) => {
5955      if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);
5956    });
5957    return;
5958  }
5959  const slideIndexLastInView = activeIndex + slidesPerView - 1;
5960  if (swiper.params.rewind || swiper.params.loop) {
5961    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {
5962      const realIndex = (i % len + len) % len;
5963      if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);
5964    }
5965  } else {
5966    for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {
5967      if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {
5968        unlazy(swiper, i);
5969      }
5970    }
5971  }
5972};
5973
5974function getActiveIndexByTranslate(swiper) {
5975  const {
5976    slidesGrid,
5977    params
5978  } = swiper;
5979  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
5980  let activeIndex;
5981  for (let i = 0; i < slidesGrid.length; i += 1) {
5982    if (typeof slidesGrid[i + 1] !== 'undefined') {
5983      if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
5984        activeIndex = i;
5985      } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
5986        activeIndex = i + 1;
5987      }
5988    } else if (translate >= slidesGrid[i]) {
5989      activeIndex = i;
5990    }
5991  }
5992  // Normalize slideIndex
5993  if (params.normalizeSlideIndex) {
5994    if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
5995  }
5996  return activeIndex;
5997}
5998function updateActiveIndex(newActiveIndex) {
5999  const swiper = this;
6000  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
6001  const {
6002    snapGrid,
6003    params,
6004    activeIndex: previousIndex,
6005    realIndex: previousRealIndex,
6006    snapIndex: previousSnapIndex
6007  } = swiper;
6008  let activeIndex = newActiveIndex;
6009  let snapIndex;
6010  const getVirtualRealIndex = aIndex => {
6011    let realIndex = aIndex - swiper.virtual.slidesBefore;
6012    if (realIndex < 0) {
6013      realIndex = swiper.virtual.slides.length + realIndex;
6014    }
6015    if (realIndex >= swiper.virtual.slides.length) {
6016      realIndex -= swiper.virtual.slides.length;
6017    }
6018    return realIndex;
6019  };
6020  if (typeof activeIndex === 'undefined') {
6021    activeIndex = getActiveIndexByTranslate(swiper);
6022  }
6023  if (snapGrid.indexOf(translate) >= 0) {
6024    snapIndex = snapGrid.indexOf(translate);
6025  } else {
6026    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
6027    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
6028  }
6029  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
6030  if (activeIndex === previousIndex && !swiper.params.loop) {
6031    if (snapIndex !== previousSnapIndex) {
6032      swiper.snapIndex = snapIndex;
6033      swiper.emit('snapIndexChange');
6034    }
6035    return;
6036  }
6037  if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
6038    swiper.realIndex = getVirtualRealIndex(activeIndex);
6039    return;
6040  }
6041  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
6042
6043  // Get real index
6044  let realIndex;
6045  if (swiper.virtual && params.virtual.enabled && params.loop) {
6046    realIndex = getVirtualRealIndex(activeIndex);
6047  } else if (gridEnabled) {
6048    const firstSlideInColumn = swiper.slides.fi
vendor: 1,341 bytes, lines 6048-6089
6048lter(slideEl => slideEl.column === activeIndex)[0];
6049    let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);
6050    if (Number.isNaN(activeSlideIndex)) {
6051      activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);
6052    }
6053    realIndex = Math.floor(activeSlideIndex / params.grid.rows);
6054  } else if (swiper.slides[activeIndex]) {
6055    const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');
6056    if (slideIndex) {
6057      realIndex = parseInt(slideIndex, 10);
6058    } else {
6059      realIndex = activeIndex;
6060    }
6061  } else {
6062    realIndex = activeIndex;
6063  }
6064  Object.assign(swiper, {
6065    previousSnapIndex,
6066    snapIndex,
6067    previousRealIndex,
6068    realIndex,
6069    previousIndex,
6070    activeIndex
6071  });
6072  if (swiper.initialized) {
6073    preload(swiper);
6074  }
6075  swiper.emit('activeIndexChange');
6076  swiper.emit('snapIndexChange');
6077  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
6078    if (previousRealIndex !== realIndex) {
6079      swiper.emit('realIndexChange');
6080    }
6081    swiper.emit('slideChange');
6082  }
6083}
6084
6085function updateClickedSlide(el, path) {
6086  const swiper = this;
6087  const params = swiper.params;
6088  let slide = el.closest(`.${params.slideClass}, swiper-slide`);
6089  if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {
vendor: 5,481 bytes, lines 6090-6285
6090    [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {
6091      if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {
6092        slide = pathEl;
6093      }
6094    });
6095  }
6096  let slideFound = false;
6097  let slideIndex;
6098  if (slide) {
6099    for (let i = 0; i < swiper.slides.length; i += 1) {
6100      if (swiper.slides[i] === slide) {
6101        slideFound = true;
6102        slideIndex = i;
6103        break;
6104      }
6105    }
6106  }
6107  if (slide && slideFound) {
6108    swiper.clickedSlide = slide;
6109    if (swiper.virtual && swiper.params.virtual.enabled) {
6110      swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);
6111    } else {
6112      swiper.clickedIndex = slideIndex;
6113    }
6114  } else {
6115    swiper.clickedSlide = undefined;
6116    swiper.clickedIndex = undefined;
6117    return;
6118  }
6119  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
6120    swiper.slideToClickedSlide();
6121  }
6122}
6123
6124var update = {
6125  updateSize,
6126  updateSlides,
6127  updateAutoHeight,
6128  updateSlidesOffset,
6129  updateSlidesProgress,
6130  updateProgress,
6131  updateSlidesClasses,
6132  updateActiveIndex,
6133  updateClickedSlide
6134};
6135
6136function getSwiperTranslate(axis) {
6137  if (axis === void 0) {
6138    axis = this.isHorizontal() ? 'x' : 'y';
6139  }
6140  const swiper = this;
6141  const {
6142    params,
6143    rtlTranslate: rtl,
6144    translate,
6145    wrapperEl
6146  } = swiper;
6147  if (params.virtualTranslate) {
6148    return rtl ? -translate : translate;
6149  }
6150  if (params.cssMode) {
6151    return translate;
6152  }
6153  let currentTranslate = utils_getTranslate(wrapperEl, axis);
6154  currentTranslate += swiper.cssOverflowAdjustment();
6155  if (rtl) currentTranslate = -currentTranslate;
6156  return currentTranslate || 0;
6157}
6158
6159function setTranslate(translate, byController) {
6160  const swiper = this;
6161  const {
6162    rtlTranslate: rtl,
6163    params,
6164    wrapperEl,
6165    progress
6166  } = swiper;
6167  let x = 0;
6168  let y = 0;
6169  const z = 0;
6170  if (swiper.isHorizontal()) {
6171    x = rtl ? -translate : translate;
6172  } else {
6173    y = translate;
6174  }
6175  if (params.roundLengths) {
6176    x = Math.floor(x);
6177    y = Math.floor(y);
6178  }
6179  swiper.previousTranslate = swiper.translate;
6180  swiper.translate = swiper.isHorizontal() ? x : y;
6181  if (params.cssMode) {
6182    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
6183  } else if (!params.virtualTranslate) {
6184    if (swiper.isHorizontal()) {
6185      x -= swiper.cssOverflowAdjustment();
6186    } else {
6187      y -= swiper.cssOverflowAdjustment();
6188    }
6189    wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;
6190  }
6191
6192  // Check if we need to update progress
6193  let newProgress;
6194  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
6195  if (translatesDiff === 0) {
6196    newProgress = 0;
6197  } else {
6198    newProgress = (translate - swiper.minTranslate()) / translatesDiff;
6199  }
6200  if (newProgress !== progress) {
6201    swiper.updateProgress(translate);
6202  }
6203  swiper.emit('setTranslate', swiper.translate, byController);
6204}
6205
6206function minTranslate() {
6207  return -this.snapGrid[0];
6208}
6209
6210function maxTranslate() {
6211  return -this.snapGrid[this.snapGrid.length - 1];
6212}
6213
6214function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
6215  if (translate === void 0) {
6216    translate = 0;
6217  }
6218  if (speed === void 0) {
6219    speed = this.params.speed;
6220  }
6221  if (runCallbacks === void 0) {
6222    runCallbacks = true;
6223  }
6224  if (translateBounds === void 0) {
6225    translateBounds = true;
6226  }
6227  const swiper = this;
6228  const {
6229    params,
6230    wrapperEl
6231  } = swiper;
6232  if (swiper.animating && params.preventInteractionOnTransition) {
6233    return false;
6234  }
6235  const minTranslate = swiper.minTranslate();
6236  const maxTranslate = swiper.maxTranslate();
6237  let newTranslate;
6238  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;
6239
6240  // Update progress
6241  swiper.updateProgress(newTranslate);
6242  if (params.cssMode) {
6243    const isH = swiper.isHorizontal();
6244    if (speed === 0) {
6245      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
6246    } else {
6247      if (!swiper.support.smoothScroll) {
6248        animateCSSModeScroll({
6249          swiper,
6250          targetPosition: -newTranslate,
6251          side: isH ? 'left' : 'top'
6252        });
6253        return true;
6254      }
6255      wrapperEl.scrollTo({
6256        [isH ? 'left' : 'top']: -newTranslate,
6257        behavior: 'smooth'
6258      });
6259    }
6260    return true;
6261  }
6262  if (speed === 0) {
6263    swiper.setTransition(0);
6264    swiper.setTranslate(newTranslate);
6265    if (runCallbacks) {
6266      swiper.emit('beforeTransitionStart', speed, internal);
6267      swiper.emit('transitionEnd');
6268    }
6269  } else {
6270    swiper.setTransition(speed);
6271    swiper.setTranslate(newTranslate);
6272    if (runCallbacks) {
6273      swiper.emit('beforeTransitionStart', speed, internal);
6274      swiper.emit('transitionStart');
6275    }
6276    if (!swiper.animating) {
6277      swiper.animating = true;
6278      if (!swiper.onTranslateToWrapperTransitionEnd) {
6279        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
6280          if (!swiper || swiper.destroyed) return;
6281          if (e.target !== this) return;
6282          swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
6283          swiper.onTranslateToWrapperTransitionEnd = null;
6284          delete swiper.onTranslateToWrapperTransitionEnd;
6285          swiper.animating = false;
vendor: 4,176 bytes, lines 6286-6442
6286          if (runCallbacks) {
6287            swiper.emit('transitionEnd');
6288          }
6289        };
6290      }
6291      swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
6292    }
6293  }
6294  return true;
6295}
6296
6297var translate = {
6298  getTranslate: getSwiperTranslate,
6299  setTranslate,
6300  minTranslate,
6301  maxTranslate,
6302  translateTo
6303};
6304
6305function setTransition(duration, byController) {
6306  const swiper = this;
6307  if (!swiper.params.cssMode) {
6308    swiper.wrapperEl.style.transitionDuration = `${duration}ms`;
6309    swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';
6310  }
6311  swiper.emit('setTransition', duration, byController);
6312}
6313
6314function transitionEmit(_ref) {
6315  let {
6316    swiper,
6317    runCallbacks,
6318    direction,
6319    step
6320  } = _ref;
6321  const {
6322    activeIndex,
6323    previousIndex
6324  } = swiper;
6325  let dir = direction;
6326  if (!dir) {
6327    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
6328  }
6329  swiper.emit(`transition${step}`);
6330  if (runCallbacks && activeIndex !== previousIndex) {
6331    if (dir === 'reset') {
6332      swiper.emit(`slideResetTransition${step}`);
6333      return;
6334    }
6335    swiper.emit(`slideChangeTransition${step}`);
6336    if (dir === 'next') {
6337      swiper.emit(`slideNextTransition${step}`);
6338    } else {
6339      swiper.emit(`slidePrevTransition${step}`);
6340    }
6341  }
6342}
6343
6344function transitionStart(runCallbacks, direction) {
6345  if (runCallbacks === void 0) {
6346    runCallbacks = true;
6347  }
6348  const swiper = this;
6349  const {
6350    params
6351  } = swiper;
6352  if (params.cssMode) return;
6353  if (params.autoHeight) {
6354    swiper.updateAutoHeight();
6355  }
6356  transitionEmit({
6357    swiper,
6358    runCallbacks,
6359    direction,
6360    step: 'Start'
6361  });
6362}
6363
6364function transitionEnd(runCallbacks, direction) {
6365  if (runCallbacks === void 0) {
6366    runCallbacks = true;
6367  }
6368  const swiper = this;
6369  const {
6370    params
6371  } = swiper;
6372  swiper.animating = false;
6373  if (params.cssMode) return;
6374  swiper.setTransition(0);
6375  transitionEmit({
6376    swiper,
6377    runCallbacks,
6378    direction,
6379    step: 'End'
6380  });
6381}
6382
6383var transition = {
6384  setTransition,
6385  transitionStart,
6386  transitionEnd
6387};
6388
6389function slideTo(index, speed, runCallbacks, internal, initial) {
6390  if (index === void 0) {
6391    index = 0;
6392  }
6393  if (runCallbacks === void 0) {
6394    runCallbacks = true;
6395  }
6396  if (typeof index === 'string') {
6397    index = parseInt(index, 10);
6398  }
6399  const swiper = this;
6400  let slideIndex = index;
6401  if (slideIndex < 0) slideIndex = 0;
6402  const {
6403    params,
6404    snapGrid,
6405    slidesGrid,
6406    previousIndex,
6407    activeIndex,
6408    rtlTranslate: rtl,
6409    wrapperEl,
6410    enabled
6411  } = swiper;
6412  if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {
6413    return false;
6414  }
6415  if (typeof speed === 'undefined') {
6416    speed = swiper.params.speed;
6417  }
6418  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
6419  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
6420  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
6421  const translate = -snapGrid[snapIndex];
6422  // Normalize slideIndex
6423  if (params.normalizeSlideIndex) {
6424    for (let i = 0; i < slidesGrid.length; i += 1) {
6425      const normalizedTranslate = -Math.floor(translate * 100);
6426      const normalizedGrid = Math.floor(slidesGrid[i] * 100);
6427      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
6428      if (typeof slidesGrid[i + 1] !== 'undefined') {
6429        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {
6430          slideIndex = i;
6431        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {
6432          slideIndex = i + 1;
6433        }
6434      } else if (normalizedTranslate >= normalizedGrid) {
6435        slideIndex = i;
6436      }
6437    }
6438  }
6439  // Directions locks
6440  if (swiper.initialized && slideIndex !== activeIndex) {
6441    if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {
6442      return false;
vendor: 8,692 bytes, lines 6443-6692
6443    }
6444    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
6445      if ((activeIndex || 0) !== slideIndex) {
6446        return false;
6447      }
6448    }
6449  }
6450  if (slideIndex !== (previousIndex || 0) && runCallbacks) {
6451    swiper.emit('beforeSlideChangeStart');
6452  }
6453
6454  // Update progress
6455  swiper.updateProgress(translate);
6456  let direction;
6457  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';
6458
6459  // initial virtual
6460  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
6461  const isInitialVirtual = isVirtual && initial;
6462  // Update Index
6463  if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {
6464    swiper.updateActiveIndex(slideIndex);
6465    // Update Height
6466    if (params.autoHeight) {
6467      swiper.updateAutoHeight();
6468    }
6469    swiper.updateSlidesClasses();
6470    if (params.effect !== 'slide') {
6471      swiper.setTranslate(translate);
6472    }
6473    if (direction !== 'reset') {
6474      swiper.transitionStart(runCallbacks, direction);
6475      swiper.transitionEnd(runCallbacks, direction);
6476    }
6477    return false;
6478  }
6479  if (params.cssMode) {
6480    const isH = swiper.isHorizontal();
6481    const t = rtl ? translate : -translate;
6482    if (speed === 0) {
6483      if (isVirtual) {
6484        swiper.wrapperEl.style.scrollSnapType = 'none';
6485        swiper._immediateVirtual = true;
6486      }
6487      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {
6488        swiper._cssModeVirtualInitialSet = true;
6489        requestAnimationFrame(() => {
6490          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
6491        });
6492      } else {
6493        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
6494      }
6495      if (isVirtual) {
6496        requestAnimationFrame(() => {
6497          swiper.wrapperEl.style.scrollSnapType = '';
6498          swiper._immediateVirtual = false;
6499        });
6500      }
6501    } else {
6502      if (!swiper.support.smoothScroll) {
6503        animateCSSModeScroll({
6504          swiper,
6505          targetPosition: t,
6506          side: isH ? 'left' : 'top'
6507        });
6508        return true;
6509      }
6510      wrapperEl.scrollTo({
6511        [isH ? 'left' : 'top']: t,
6512        behavior: 'smooth'
6513      });
6514    }
6515    return true;
6516  }
6517  swiper.setTransition(speed);
6518  swiper.setTranslate(translate);
6519  swiper.updateActiveIndex(slideIndex);
6520  swiper.updateSlidesClasses();
6521  swiper.emit('beforeTransitionStart', speed, internal);
6522  swiper.transitionStart(runCallbacks, direction);
6523  if (speed === 0) {
6524    swiper.transitionEnd(runCallbacks, direction);
6525  } else if (!swiper.animating) {
6526    swiper.animating = true;
6527    if (!swiper.onSlideToWrapperTransitionEnd) {
6528      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
6529        if (!swiper || swiper.destroyed) return;
6530        if (e.target !== this) return;
6531        swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
6532        swiper.onSlideToWrapperTransitionEnd = null;
6533        delete swiper.onSlideToWrapperTransitionEnd;
6534        swiper.transitionEnd(runCallbacks, direction);
6535      };
6536    }
6537    swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
6538  }
6539  return true;
6540}
6541
6542function slideToLoop(index, speed, runCallbacks, internal) {
6543  if (index === void 0) {
6544    index = 0;
6545  }
6546  if (runCallbacks === void 0) {
6547    runCallbacks = true;
6548  }
6549  if (typeof index === 'string') {
6550    const indexAsNumber = parseInt(index, 10);
6551    index = indexAsNumber;
6552  }
6553  const swiper = this;
6554  if (swiper.destroyed) return;
6555  if (typeof speed === 'undefined') {
6556    speed = swiper.params.speed;
6557  }
6558  const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;
6559  let newIndex = index;
6560  if (swiper.params.loop) {
6561    if (swiper.virtual && swiper.params.virtual.enabled) {
6562      // eslint-disable-next-line
6563      newIndex = newIndex + swiper.virtual.slidesBefore;
6564    } else {
6565      let targetSlideIndex;
6566      if (gridEnabled) {
6567        const slideIndex = newIndex * swiper.params.grid.rows;
6568        targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;
6569      } else {
6570        targetSlideIndex = swiper.getSlideIndexByData(newIndex);
6571      }
6572      const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;
6573      const {
6574        centeredSlides
6575      } = swiper.params;
6576      let slidesPerView = swiper.params.slidesPerView;
6577      if (slidesPerView === 'auto') {
6578        slidesPerView = swiper.slidesPerViewDynamic();
6579      } else {
6580        slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));
6581        if (centeredSlides && slidesPerView % 2 === 0) {
6582          slidesPerView = slidesPerView + 1;
6583        }
6584      }
6585      let needLoopFix = cols - targetSlideIndex < slidesPerView;
6586      if (centeredSlides) {
6587        needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);
6588      }
6589      if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {
6590        needLoopFix = false;
6591      }
6592      if (needLoopFix) {
6593        const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';
6594        swiper.loopFix({
6595          direction,
6596          slideTo: true,
6597          activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,
6598          slideRealIndex: direction === 'next' ? swiper.realIndex : undefined
6599        });
6600      }
6601      if (gridEnabled) {
6602        const slideIndex = newIndex * swiper.params.grid.rows;
6603        newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;
6604      } else {
6605        newIndex = swiper.getSlideIndexByData(newIndex);
6606      }
6607    }
6608  }
6609  requestAnimationFrame(() => {
6610    swiper.slideTo(newIndex, speed, runCallbacks, internal);
6611  });
6612  return swiper;
6613}
6614
6615/* eslint no-unused-vars: "off" */
6616function slideNext(speed, runCallbacks, internal) {
6617  if (runCallbacks === void 0) {
6618    runCallbacks = true;
6619  }
6620  const swiper = this;
6621  const {
6622    enabled,
6623    params,
6624    animating
6625  } = swiper;
6626  if (!enabled || swiper.destroyed) return swiper;
6627  if (typeof speed === 'undefined') {
6628    speed = swiper.params.speed;
6629  }
6630  let perGroup = params.slidesPerGroup;
6631  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
6632    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);
6633  }
6634  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;
6635  const isVirtual = swiper.virtual && params.virtual.enabled;
6636  if (params.loop) {
6637    if (animating && !isVirtual && params.loopPreventsSliding) return false;
6638    swiper.loopFix({
6639      direction: 'next'
6640    });
6641    // eslint-disable-next-line
6642    swiper._clientLeft = swiper.wrapperEl.clientLeft;
6643    if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {
6644      requestAnimationFrame(() => {
6645        swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
6646      });
6647      return true;
6648    }
6649  }
6650  if (params.rewind && swiper.isEnd) {
6651    return swiper.slideTo(0, speed, runCallbacks, internal);
6652  }
6653  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
6654}
6655
6656/* eslint no-unused-vars: "off" */
6657function slidePrev(speed, runCallbacks, internal) {
6658  if (runCallbacks === void 0) {
6659    runCallbacks = true;
6660  }
6661  const swiper = this;
6662  const {
6663    params,
6664    snapGrid,
6665    slidesGrid,
6666    rtlTranslate,
6667    enabled,
6668    animating
6669  } = swiper;
6670  if (!enabled || swiper.destroyed) return swiper;
6671  if (typeof speed === 'undefined') {
6672    speed = swiper.params.speed;
6673  }
6674  const isVirtual = swiper.virtual && params.virtual.enabled;
6675  if (params.loop) {
6676    if (animating && !isVirtual && params.loopPreventsSliding) return false;
6677    swiper.loopFix({
6678      direction: 'prev'
6679    });
6680    // eslint-disable-next-line
6681    swiper._clientLeft = swiper.wrapperEl.clientLeft;
6682  }
6683  const translate = rtlTranslate ? swiper.translate : -swiper.translate;
6684  function normalize(val) {
6685    if (val < 0) return -Math.floor(Math.abs(val));
6686    return Math.floor(val);
6687  }
6688  const normalizedTranslate = normalize(translate);
6689  const normalizedSnapGrid = snapGrid.map(val => normalize(val));
6690  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
6691  if (typeof prevSnap === 'undefined' && params.cssMode) {
6692    let prevSnapIndex;
vendor: 10,284 bytes, lines 6693-6956
6693    snapGrid.forEach((snap, snapIndex) => {
6694      if (normalizedTranslate >= snap) {
6695        // prevSnap = snap;
6696        prevSnapIndex = snapIndex;
6697      }
6698    });
6699    if (typeof prevSnapIndex !== 'undefined') {
6700      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
6701    }
6702  }
6703  let prevIndex = 0;
6704  if (typeof prevSnap !== 'undefined') {
6705    prevIndex = slidesGrid.indexOf(prevSnap);
6706    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
6707    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
6708      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;
6709      prevIndex = Math.max(prevIndex, 0);
6710    }
6711  }
6712  if (params.rewind && swiper.isBeginning) {
6713    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
6714    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);
6715  } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {
6716    requestAnimationFrame(() => {
6717      swiper.slideTo(prevIndex, speed, runCallbacks, internal);
6718    });
6719    return true;
6720  }
6721  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
6722}
6723
6724/* eslint no-unused-vars: "off" */
6725function slideReset(speed, runCallbacks, internal) {
6726  if (runCallbacks === void 0) {
6727    runCallbacks = true;
6728  }
6729  const swiper = this;
6730  if (swiper.destroyed) return;
6731  if (typeof speed === 'undefined') {
6732    speed = swiper.params.speed;
6733  }
6734  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
6735}
6736
6737/* eslint no-unused-vars: "off" */
6738function slideToClosest(speed, runCallbacks, internal, threshold) {
6739  if (runCallbacks === void 0) {
6740    runCallbacks = true;
6741  }
6742  if (threshold === void 0) {
6743    threshold = 0.5;
6744  }
6745  const swiper = this;
6746  if (swiper.destroyed) return;
6747  if (typeof speed === 'undefined') {
6748    speed = swiper.params.speed;
6749  }
6750  let index = swiper.activeIndex;
6751  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
6752  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
6753  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
6754  if (translate >= swiper.snapGrid[snapIndex]) {
6755    // The current translate is on or after the current snap index, so the choice
6756    // is between the current index and the one after it.
6757    const currentSnap = swiper.snapGrid[snapIndex];
6758    const nextSnap = swiper.snapGrid[snapIndex + 1];
6759    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
6760      index += swiper.params.slidesPerGroup;
6761    }
6762  } else {
6763    // The current translate is before the current snap index, so the choice
6764    // is between the current index and the one before it.
6765    const prevSnap = swiper.snapGrid[snapIndex - 1];
6766    const currentSnap = swiper.snapGrid[snapIndex];
6767    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {
6768      index -= swiper.params.slidesPerGroup;
6769    }
6770  }
6771  index = Math.max(index, 0);
6772  index = Math.min(index, swiper.slidesGrid.length - 1);
6773  return swiper.slideTo(index, speed, runCallbacks, internal);
6774}
6775
6776function slideToClickedSlide() {
6777  const swiper = this;
6778  if (swiper.destroyed) return;
6779  const {
6780    params,
6781    slidesEl
6782  } = swiper;
6783  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
6784  let slideToIndex = swiper.clickedIndex;
6785  let realIndex;
6786  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;
6787  if (params.loop) {
6788    if (swiper.animating) return;
6789    realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);
6790    if (params.centeredSlides) {
6791      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
6792        swiper.loopFix();
6793        slideToIndex = swiper.getSlideIndex(utils_elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
6794        utils_nextTick(() => {
6795          swiper.slideTo(slideToIndex);
6796        });
6797      } else {
6798        swiper.slideTo(slideToIndex);
6799      }
6800    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
6801      swiper.loopFix();
6802      slideToIndex = swiper.getSlideIndex(utils_elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
6803      utils_nextTick(() => {
6804        swiper.slideTo(slideToIndex);
6805      });
6806    } else {
6807      swiper.slideTo(slideToIndex);
6808    }
6809  } else {
6810    swiper.slideTo(slideToIndex);
6811  }
6812}
6813
6814var slide = {
6815  slideTo,
6816  slideToLoop,
6817  slideNext,
6818  slidePrev,
6819  slideReset,
6820  slideToClosest,
6821  slideToClickedSlide
6822};
6823
6824function loopCreate(slideRealIndex) {
6825  const swiper = this;
6826  const {
6827    params,
6828    slidesEl
6829  } = swiper;
6830  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
6831  const initSlides = () => {
6832    const slides = utils_elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);
6833    slides.forEach((el, index) => {
6834      el.setAttribute('data-swiper-slide-index', index);
6835    });
6836  };
6837  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
6838  const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);
6839  const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;
6840  const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;
6841  const addBlankSlides = amountOfSlides => {
6842    for (let i = 0; i < amountOfSlides; i += 1) {
6843      const slideEl = swiper.isElement ? utils_createElement('swiper-slide', [params.slideBlankClass]) : utils_createElement('div', [params.slideClass, params.slideBlankClass]);
6844      swiper.slidesEl.append(slideEl);
6845    }
6846  };
6847  if (shouldFillGroup) {
6848    if (params.loopAddBlankSlides) {
6849      const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;
6850      addBlankSlides(slidesToAdd);
6851      swiper.recalcSlides();
6852      swiper.updateSlides();
6853    } else {
6854      showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');
6855    }
6856    initSlides();
6857  } else if (shouldFillGrid) {
6858    if (params.loopAddBlankSlides) {
6859      const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;
6860      addBlankSlides(slidesToAdd);
6861      swiper.recalcSlides();
6862      swiper.updateSlides();
6863    } else {
6864      showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');
6865    }
6866    initSlides();
6867  } else {
6868    initSlides();
6869  }
6870  swiper.loopFix({
6871    slideRealIndex,
6872    direction: params.centeredSlides ? undefined : 'next'
6873  });
6874}
6875
6876function loopFix(_temp) {
6877  let {
6878    slideRealIndex,
6879    slideTo = true,
6880    direction,
6881    setTranslate,
6882    activeSlideIndex,
6883    byController,
6884    byMousewheel
6885  } = _temp === void 0 ? {} : _temp;
6886  const swiper = this;
6887  if (!swiper.params.loop) return;
6888  swiper.emit('beforeLoopFix');
6889  const {
6890    slides,
6891    allowSlidePrev,
6892    allowSlideNext,
6893    slidesEl,
6894    params
6895  } = swiper;
6896  const {
6897    centeredSlides
6898  } = params;
6899  swiper.allowSlidePrev = true;
6900  swiper.allowSlideNext = true;
6901  if (swiper.virtual && params.virtual.enabled) {
6902    if (slideTo) {
6903      if (!params.centeredSlides && swiper.snapIndex === 0) {
6904        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);
6905      } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {
6906        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);
6907      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {
6908        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);
6909      }
6910    }
6911    swiper.allowSlidePrev = allowSlidePrev;
6912    swiper.allowSlideNext = allowSlideNext;
6913    swiper.emit('loopFix');
6914    return;
6915  }
6916  let slidesPerView = params.slidesPerView;
6917  if (slidesPerView === 'auto') {
6918    slidesPerView = swiper.slidesPerViewDynamic();
6919  } else {
6920    slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));
6921    if (centeredSlides && slidesPerView % 2 === 0) {
6922      slidesPerView = slidesPerView + 1;
6923    }
6924  }
6925  const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;
6926  let loopedSlides = slidesPerGroup;
6927  if (loopedSlides % slidesPerGroup !== 0) {
6928    loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;
6929  }
6930  loopedSlides += params.loopAdditionalSlides;
6931  swiper.loopedSlides = loopedSlides;
6932  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
6933  if (slides.length < slidesPerView + loopedSlides) {
6934    showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');
6935  } else if (gridEnabled && params.grid.fill === 'row') {
6936    showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');
6937  }
6938  const prependSlidesIndexes = [];
6939  const appendSlidesIndexes = [];
6940  let activeIndex = swiper.activeIndex;
6941  if (typeof activeSlideIndex === 'undefined') {
6942    activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);
6943  } else {
6944    activeIndex = activeSlideIndex;
6945  }
6946  const isNext = direction === 'next' || !direction;
6947  const isPrev = direction === 'prev' || !direction;
6948  let slidesPrepended = 0;
6949  let slidesAppended = 0;
6950  const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;
6951  const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;
6952  const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);
6953  // prepend last slides before start
6954  if (activeColIndexWithShift < loopedSlides) {
6955    slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);
6956    for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {
vendor: 5,179 bytes, lines 6957-7089
6957      const index = i - Math.floor(i / cols) * cols;
6958      if (gridEnabled) {
6959        const colIndexToPrepend = cols - index - 1;
6960        for (let i = slides.length - 1; i >= 0; i -= 1) {
6961          if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);
6962        }
6963        // slides.forEach((slide, slideIndex) => {
6964        //   if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);
6965        // });
6966      } else {
6967        prependSlidesIndexes.push(cols - index - 1);
6968      }
6969    }
6970  } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {
6971    slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);
6972    for (let i = 0; i < slidesAppended; i += 1) {
6973      const index = i - Math.floor(i / cols) * cols;
6974      if (gridEnabled) {
6975        slides.forEach((slide, slideIndex) => {
6976          if (slide.column === index) appendSlidesIndexes.push(slideIndex);
6977        });
6978      } else {
6979        appendSlidesIndexes.push(index);
6980      }
6981    }
6982  }
6983  swiper.__preventObserver__ = true;
6984  requestAnimationFrame(() => {
6985    swiper.__preventObserver__ = false;
6986  });
6987  if (isPrev) {
6988    prependSlidesIndexes.forEach(index => {
6989      slides[index].swiperLoopMoveDOM = true;
6990      slidesEl.prepend(slides[index]);
6991      slides[index].swiperLoopMoveDOM = false;
6992    });
6993  }
6994  if (isNext) {
6995    appendSlidesIndexes.forEach(index => {
6996      slides[index].swiperLoopMoveDOM = true;
6997      slidesEl.append(slides[index]);
6998      slides[index].swiperLoopMoveDOM = false;
6999    });
7000  }
7001  swiper.recalcSlides();
7002  if (params.slidesPerView === 'auto') {
7003    swiper.updateSlides();
7004  } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {
7005    swiper.slides.forEach((slide, slideIndex) => {
7006      swiper.grid.updateSlide(slideIndex, slide, swiper.slides);
7007    });
7008  }
7009  if (params.watchSlidesProgress) {
7010    swiper.updateSlidesOffset();
7011  }
7012  if (slideTo) {
7013    if (prependSlidesIndexes.length > 0 && isPrev) {
7014      if (typeof slideRealIndex === 'undefined') {
7015        const currentSlideTranslate = swiper.slidesGrid[activeIndex];
7016        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];
7017        const diff = newSlideTranslate - currentSlideTranslate;
7018        if (byMousewheel) {
7019          swiper.setTranslate(swiper.translate - diff);
7020        } else {
7021          swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);
7022          if (setTranslate) {
7023            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;
7024            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;
7025          }
7026        }
7027      } else {
7028        if (setTranslate) {
7029          const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;
7030          swiper.slideTo(swiper.activeIndex + shift, 0, false, true);
7031          swiper.touchEventsData.currentTranslate = swiper.translate;
7032        }
7033      }
7034    } else if (appendSlidesIndexes.length > 0 && isNext) {
7035      if (typeof slideRealIndex === 'undefined') {
7036        const currentSlideTranslate = swiper.slidesGrid[activeIndex];
7037        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];
7038        const diff = newSlideTranslate - currentSlideTranslate;
7039        if (byMousewheel) {
7040          swiper.setTranslate(swiper.translate - diff);
7041        } else {
7042          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);
7043          if (setTranslate) {
7044            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;
7045            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;
7046          }
7047        }
7048      } else {
7049        const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;
7050        swiper.slideTo(swiper.activeIndex - shift, 0, false, true);
7051      }
7052    }
7053  }
7054  swiper.allowSlidePrev = allowSlidePrev;
7055  swiper.allowSlideNext = allowSlideNext;
7056  if (swiper.controller && swiper.controller.control && !byController) {
7057    const loopParams = {
7058      slideRealIndex,
7059      direction,
7060      setTranslate,
7061      activeSlideIndex,
7062      byController: true
7063    };
7064    if (Array.isArray(swiper.controller.control)) {
7065      swiper.controller.control.forEach(c => {
7066        if (!c.destroyed && c.params.loop) c.loopFix({
7067          ...loopParams,
7068          slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false
7069        });
7070      });
7071    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {
7072      swiper.controller.control.loopFix({
7073        ...loopParams,
7074        slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false
7075      });
7076    }
7077  }
7078  swiper.emit('loopFix');
7079}
7080
7081function loopDestroy() {
7082  const swiper = this;
7083  const {
7084    params,
7085    slidesEl
7086  } = swiper;
7087  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
7088  swiper.recalcSlides();
7089  const newSlidesOrder = [];
vendor: 5,446 bytes, lines 7090-7260
7090  swiper.slides.forEach(slideEl => {
7091    const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;
7092    newSlidesOrder[index] = slideEl;
7093  });
7094  swiper.slides.forEach(slideEl => {
7095    slideEl.removeAttribute('data-swiper-slide-index');
7096  });
7097  newSlidesOrder.forEach(slideEl => {
7098    slidesEl.append(slideEl);
7099  });
7100  swiper.recalcSlides();
7101  swiper.slideTo(swiper.realIndex, 0);
7102}
7103
7104var loop = {
7105  loopCreate,
7106  loopFix,
7107  loopDestroy
7108};
7109
7110function setGrabCursor(moving) {
7111  const swiper = this;
7112  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
7113  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;
7114  if (swiper.isElement) {
7115    swiper.__preventObserver__ = true;
7116  }
7117  el.style.cursor = 'move';
7118  el.style.cursor = moving ? 'grabbing' : 'grab';
7119  if (swiper.isElement) {
7120    requestAnimationFrame(() => {
7121      swiper.__preventObserver__ = false;
7122    });
7123  }
7124}
7125
7126function unsetGrabCursor() {
7127  const swiper = this;
7128  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
7129    return;
7130  }
7131  if (swiper.isElement) {
7132    swiper.__preventObserver__ = true;
7133  }
7134  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';
7135  if (swiper.isElement) {
7136    requestAnimationFrame(() => {
7137      swiper.__preventObserver__ = false;
7138    });
7139  }
7140}
7141
7142var grabCursor = {
7143  setGrabCursor,
7144  unsetGrabCursor
7145};
7146
7147// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd
7148function closestElement(selector, base) {
7149  if (base === void 0) {
7150    base = this;
7151  }
7152  function __closestFrom(el) {
7153    if (!el || el === ssr_window_esm_getDocument() || el === ssr_window_esm_getWindow()) return null;
7154    if (el.assignedSlot) el = el.assignedSlot;
7155    const found = el.closest(selector);
7156    if (!found && !el.getRootNode) {
7157      return null;
7158    }
7159    return found || __closestFrom(el.getRootNode().host);
7160  }
7161  return __closestFrom(base);
7162}
7163function preventEdgeSwipe(swiper, event, startX) {
7164  const window = ssr_window_esm_getWindow();
7165  const {
7166    params
7167  } = swiper;
7168  const edgeSwipeDetection = params.edgeSwipeDetection;
7169  const edgeSwipeThreshold = params.edgeSwipeThreshold;
7170  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {
7171    if (edgeSwipeDetection === 'prevent') {
7172      event.preventDefault();
7173      return true;
7174    }
7175    return false;
7176  }
7177  return true;
7178}
7179function onTouchStart(event) {
7180  const swiper = this;
7181  const document = ssr_window_esm_getDocument();
7182  let e = event;
7183  if (e.originalEvent) e = e.originalEvent;
7184  const data = swiper.touchEventsData;
7185  if (e.type === 'pointerdown') {
7186    if (data.pointerId !== null && data.pointerId !== e.pointerId) {
7187      return;
7188    }
7189    data.pointerId = e.pointerId;
7190  } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {
7191    data.touchId = e.targetTouches[0].identifier;
7192  }
7193  if (e.type === 'touchstart') {
7194    // don't proceed touch event
7195    preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);
7196    return;
7197  }
7198  const {
7199    params,
7200    touches,
7201    enabled
7202  } = swiper;
7203  if (!enabled) return;
7204  if (!params.simulateTouch && e.pointerType === 'mouse') return;
7205  if (swiper.animating && params.preventInteractionOnTransition) {
7206    return;
7207  }
7208  if (!swiper.animating && params.cssMode && params.loop) {
7209    swiper.loopFix();
7210  }
7211  let targetEl = e.target;
7212  if (params.touchEventsTarget === 'wrapper') {
7213    if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;
7214  }
7215  if ('which' in e && e.which === 3) return;
7216  if ('button' in e && e.button > 0) return;
7217  if (data.isTouched && data.isMoved) return;
7218
7219  // change target el for shadow root component
7220  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';
7221  // eslint-disable-next-line
7222  const eventPath = e.composedPath ? e.composedPath() : e.path;
7223  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {
7224    targetEl = eventPath[0];
7225  }
7226  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;
7227  const isTargetShadow = !!(e.target && e.target.shadowRoot);
7228
7229  // use closestElement for shadow root element to get the actual closest for nested shadow root element
7230  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {
7231    swiper.allowClick = true;
7232    return;
7233  }
7234  if (params.swipeHandler) {
7235    if (!targetEl.closest(params.swipeHandler)) return;
7236  }
7237  touches.currentX = e.pageX;
7238  touches.currentY = e.pageY;
7239  const startX = touches.currentX;
7240  const startY = touches.currentY;
7241
7242  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
7243
7244  if (!preventEdgeSwipe(swiper, e, startX)) {
7245    return;
7246  }
7247  Object.assign(data, {
7248    isTouched: true,
7249    isMoved: false,
7250    allowTouchCallbacks: true,
7251    isScrolling: undefined,
7252    startMoving: undefined
7253  });
7254  touches.startX = startX;
7255  touches.startY = startY;
7256  data.touchStartTime = utils_now();
7257  swiper.allowClick = true;
7258  swiper.updateSize();
7259  swiper.swipeDirection = undefined;
7260  if (params.threshold > 0) data.allowThresholdMove = false;
vendor: 4,615 bytes, lines 7261-7388
7261  let preventDefault = true;
7262  if (targetEl.matches(data.focusableElements)) {
7263    preventDefault = false;
7264    if (targetEl.nodeName === 'SELECT') {
7265      data.isTouched = false;
7266    }
7267  }
7268  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {
7269    document.activeElement.blur();
7270  }
7271  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
7272  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {
7273    e.preventDefault();
7274  }
7275  if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {
7276    swiper.freeMode.onTouchStart();
7277  }
7278  swiper.emit('touchStart', e);
7279}
7280
7281function onTouchMove(event) {
7282  const document = ssr_window_esm_getDocument();
7283  const swiper = this;
7284  const data = swiper.touchEventsData;
7285  const {
7286    params,
7287    touches,
7288    rtlTranslate: rtl,
7289    enabled
7290  } = swiper;
7291  if (!enabled) return;
7292  if (!params.simulateTouch && event.pointerType === 'mouse') return;
7293  let e = event;
7294  if (e.originalEvent) e = e.originalEvent;
7295  if (e.type === 'pointermove') {
7296    if (data.touchId !== null) return; // return from pointer if we use touch
7297    const id = e.pointerId;
7298    if (id !== data.pointerId) return;
7299  }
7300  let targetTouch;
7301  if (e.type === 'touchmove') {
7302    targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];
7303    if (!targetTouch || targetTouch.identifier !== data.touchId) return;
7304  } else {
7305    targetTouch = e;
7306  }
7307  if (!data.isTouched) {
7308    if (data.startMoving && data.isScrolling) {
7309      swiper.emit('touchMoveOpposite', e);
7310    }
7311    return;
7312  }
7313  const pageX = targetTouch.pageX;
7314  const pageY = targetTouch.pageY;
7315  if (e.preventedByNestedSwiper) {
7316    touches.startX = pageX;
7317    touches.startY = pageY;
7318    return;
7319  }
7320  if (!swiper.allowTouchMove) {
7321    if (!e.target.matches(data.focusableElements)) {
7322      swiper.allowClick = false;
7323    }
7324    if (data.isTouched) {
7325      Object.assign(touches, {
7326        startX: pageX,
7327        startY: pageY,
7328        currentX: pageX,
7329        currentY: pageY
7330      });
7331      data.touchStartTime = utils_now();
7332    }
7333    return;
7334  }
7335  if (params.touchReleaseOnEdges && !params.loop) {
7336    if (swiper.isVertical()) {
7337      // Vertical
7338      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
7339        data.isTouched = false;
7340        data.isMoved = false;
7341        return;
7342      }
7343    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
7344      return;
7345    }
7346  }
7347  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {
7348    document.activeElement.blur();
7349  }
7350  if (document.activeElement) {
7351    if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {
7352      data.isMoved = true;
7353      swiper.allowClick = false;
7354      return;
7355    }
7356  }
7357  if (data.allowTouchCallbacks) {
7358    swiper.emit('touchMove', e);
7359  }
7360  touches.previousX = touches.currentX;
7361  touches.previousY = touches.currentY;
7362  touches.currentX = pageX;
7363  touches.currentY = pageY;
7364  const diffX = touches.currentX - touches.startX;
7365  const diffY = touches.currentY - touches.startY;
7366  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;
7367  if (typeof data.isScrolling === 'undefined') {
7368    let touchAngle;
7369    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
7370      data.isScrolling = false;
7371    } else {
7372      // eslint-disable-next-line
7373      if (diffX * diffX + diffY * diffY >= 25) {
7374        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
7375        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
7376      }
7377    }
7378  }
7379  if (data.isScrolling) {
7380    swiper.emit('touchMoveOpposite', e);
7381  }
7382  if (typeof data.startMoving === 'undefined') {
7383    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
7384      data.startMoving = true;
7385    }
7386  }
7387  if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {
7388    data.isTouched = false;
vendor: 7,261 bytes, lines 7389-7581
7389    return;
7390  }
7391  if (!data.startMoving) {
7392    return;
7393  }
7394  swiper.allowClick = false;
7395  if (!params.cssMode && e.cancelable) {
7396    e.preventDefault();
7397  }
7398  if (params.touchMoveStopPropagation && !params.nested) {
7399    e.stopPropagation();
7400  }
7401  let diff = swiper.isHorizontal() ? diffX : diffY;
7402  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;
7403  if (params.oneWayMovement) {
7404    diff = Math.abs(diff) * (rtl ? 1 : -1);
7405    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);
7406  }
7407  touches.diff = diff;
7408  diff *= params.touchRatio;
7409  if (rtl) {
7410    diff = -diff;
7411    touchesDiff = -touchesDiff;
7412  }
7413  const prevTouchesDirection = swiper.touchesDirection;
7414  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
7415  swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';
7416  const isLoop = swiper.params.loop && !params.cssMode;
7417  const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;
7418  if (!data.isMoved) {
7419    if (isLoop && allowLoopFix) {
7420      swiper.loopFix({
7421        direction: swiper.swipeDirection
7422      });
7423    }
7424    data.startTranslate = swiper.getTranslate();
7425    swiper.setTransition(0);
7426    if (swiper.animating) {
7427      const evt = new window.CustomEvent('transitionend', {
7428        bubbles: true,
7429        cancelable: true,
7430        detail: {
7431          bySwiperTouchMove: true
7432        }
7433      });
7434      swiper.wrapperEl.dispatchEvent(evt);
7435    }
7436    data.allowMomentumBounce = false;
7437    // Grab Cursor
7438    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
7439      swiper.setGrabCursor(true);
7440    }
7441    swiper.emit('sliderFirstMove', e);
7442  }
7443  let loopFixed;
7444  new Date().getTime();
7445  if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {
7446    Object.assign(touches, {
7447      startX: pageX,
7448      startY: pageY,
7449      currentX: pageX,
7450      currentY: pageY,
7451      startTranslate: data.currentTranslate
7452    });
7453    data.loopSwapReset = true;
7454    data.startTranslate = data.currentTranslate;
7455    return;
7456  }
7457  swiper.emit('sliderMove', e);
7458  data.isMoved = true;
7459  data.currentTranslate = diff + data.startTranslate;
7460  let disableParentSwiper = true;
7461  let resistanceRatio = params.resistanceRatio;
7462  if (params.touchReleaseOnEdges) {
7463    resistanceRatio = 0;
7464  }
7465  if (diff > 0) {
7466    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())) {
7467      swiper.loopFix({
7468        direction: 'prev',
7469        setTranslate: true,
7470        activeSlideIndex: 0
7471      });
7472    }
7473    if (data.currentTranslate > swiper.minTranslate()) {
7474      disableParentSwiper = false;
7475      if (params.resistance) {
7476        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;
7477      }
7478    }
7479  } else if (diff < 0) {
7480    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())) {
7481      swiper.loopFix({
7482        direction: 'next',
7483        setTranslate: true,
7484        activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))
7485      });
7486    }
7487    if (data.currentTranslate < swiper.maxTranslate()) {
7488      disableParentSwiper = false;
7489      if (params.resistance) {
7490        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;
7491      }
7492    }
7493  }
7494  if (disableParentSwiper) {
7495    e.preventedByNestedSwiper = true;
7496  }
7497
7498  // Directions locks
7499  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
7500    data.currentTranslate = data.startTranslate;
7501  }
7502  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
7503    data.currentTranslate = data.startTranslate;
7504  }
7505  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
7506    data.currentTranslate = data.startTranslate;
7507  }
7508
7509  // Threshold
7510  if (params.threshold > 0) {
7511    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
7512      if (!data.allowThresholdMove) {
7513        data.allowThresholdMove = true;
7514        touches.startX = touches.currentX;
7515        touches.startY = touches.currentY;
7516        data.currentTranslate = data.startTranslate;
7517        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
7518        return;
7519      }
7520    } else {
7521      data.currentTranslate = data.startTranslate;
7522      return;
7523    }
7524  }
7525  if (!params.followFinger || params.cssMode) return;
7526
7527  // Update active index in free mode
7528  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {
7529    swiper.updateActiveIndex();
7530    swiper.updateSlidesClasses();
7531  }
7532  if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {
7533    swiper.freeMode.onTouchMove();
7534  }
7535  // Update progress
7536  swiper.updateProgress(data.currentTranslate);
7537  // Update translate
7538  swiper.setTranslate(data.currentTranslate);
7539}
7540
7541function onTouchEnd(event) {
7542  const swiper = this;
7543  const data = swiper.touchEventsData;
7544  let e = event;
7545  if (e.originalEvent) e = e.originalEvent;
7546  let targetTouch;
7547  const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';
7548  if (!isTouchEvent) {
7549    if (data.touchId !== null) return; // return from pointer if we use touch
7550    if (e.pointerId !== data.pointerId) return;
7551    targetTouch = e;
7552  } else {
7553    targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];
7554    if (!targetTouch || targetTouch.identifier !== data.touchId) return;
7555  }
7556  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {
7557    const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);
7558    if (!proceed) {
7559      return;
7560    }
7561  }
7562  data.pointerId = null;
7563  data.touchId = null;
7564  const {
7565    params,
7566    touches,
7567    rtlTranslate: rtl,
7568    slidesGrid,
7569    enabled
7570  } = swiper;
7571  if (!enabled) return;
7572  if (!params.simulateTouch && e.pointerType === 'mouse') return;
7573  if (data.allowTouchCallbacks) {
7574    swiper.emit('touchEnd', e);
7575  }
7576  data.allowTouchCallbacks = false;
7577  if (!data.isTouched) {
7578    if (data.isMoved && params.grabCursor) {
7579      swiper.setGrabCursor(false);
7580    }
7581    data.isMoved = false;
vendor: 4,404 bytes, lines 7582-7708
7582    data.startMoving = false;
7583    return;
7584  }
7585
7586  // Return Grab Cursor
7587  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
7588    swiper.setGrabCursor(false);
7589  }
7590
7591  // Time diff
7592  const touchEndTime = utils_now();
7593  const timeDiff = touchEndTime - data.touchStartTime;
7594
7595  // Tap, doubleTap, Click
7596  if (swiper.allowClick) {
7597    const pathTree = e.path || e.composedPath && e.composedPath();
7598    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);
7599    swiper.emit('tap click', e);
7600    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
7601      swiper.emit('doubleTap doubleClick', e);
7602    }
7603  }
7604  data.lastClickTime = utils_now();
7605  utils_nextTick(() => {
7606    if (!swiper.destroyed) swiper.allowClick = true;
7607  });
7608  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {
7609    data.isTouched = false;
7610    data.isMoved = false;
7611    data.startMoving = false;
7612    return;
7613  }
7614  data.isTouched = false;
7615  data.isMoved = false;
7616  data.startMoving = false;
7617  let currentPos;
7618  if (params.followFinger) {
7619    currentPos = rtl ? swiper.translate : -swiper.translate;
7620  } else {
7621    currentPos = -data.currentTranslate;
7622  }
7623  if (params.cssMode) {
7624    return;
7625  }
7626  if (params.freeMode && params.freeMode.enabled) {
7627    swiper.freeMode.onTouchEnd({
7628      currentPos
7629    });
7630    return;
7631  }
7632
7633  // Find current slide
7634  const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;
7635  let stopIndex = 0;
7636  let groupSize = swiper.slidesSizesGrid[0];
7637  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
7638    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
7639    if (typeof slidesGrid[i + increment] !== 'undefined') {
7640      if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {
7641        stopIndex = i;
7642        groupSize = slidesGrid[i + increment] - slidesGrid[i];
7643      }
7644    } else if (swipeToLast || currentPos >= slidesGrid[i]) {
7645      stopIndex = i;
7646      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
7647    }
7648  }
7649  let rewindFirstIndex = null;
7650  let rewindLastIndex = null;
7651  if (params.rewind) {
7652    if (swiper.isBeginning) {
7653      rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
7654    } else if (swiper.isEnd) {
7655      rewindFirstIndex = 0;
7656    }
7657  }
7658  // Find current slide size
7659  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
7660  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
7661  if (timeDiff > params.longSwipesMs) {
7662    // Long touches
7663    if (!params.longSwipes) {
7664      swiper.slideTo(swiper.activeIndex);
7665      return;
7666    }
7667    if (swiper.swipeDirection === 'next') {
7668      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);
7669    }
7670    if (swiper.swipeDirection === 'prev') {
7671      if (ratio > 1 - params.longSwipesRatio) {
7672        swiper.slideTo(stopIndex + increment);
7673      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {
7674        swiper.slideTo(rewindLastIndex);
7675      } else {
7676        swiper.slideTo(stopIndex);
7677      }
7678    }
7679  } else {
7680    // Short swipes
7681    if (!params.shortSwipes) {
7682      swiper.slideTo(swiper.activeIndex);
7683      return;
7684    }
7685    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
7686    if (!isNavButtonTarget) {
7687      if (swiper.swipeDirection === 'next') {
7688        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);
7689      }
7690      if (swiper.swipeDirection === 'prev') {
7691        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);
7692      }
7693    } else if (e.target === swiper.navigation.nextEl) {
7694      swiper.slideTo(stopIndex + increment);
7695    } else {
7696      swiper.slideTo(stopIndex);
7697    }
7698  }
7699}
7700
7701function onResize() {
7702  const swiper = this;
7703  const {
7704    params,
7705    el
7706  } = swiper;
7707  if (el && el.offsetWidth === 0) return;
7708
vendor: 6,099 bytes, lines 7709-7928
7709  // Breakpoints
7710  if (params.breakpoints) {
7711    swiper.setBreakpoint();
7712  }
7713
7714  // Save locks
7715  const {
7716    allowSlideNext,
7717    allowSlidePrev,
7718    snapGrid
7719  } = swiper;
7720  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
7721
7722  // Disable locks on resize
7723  swiper.allowSlideNext = true;
7724  swiper.allowSlidePrev = true;
7725  swiper.updateSize();
7726  swiper.updateSlides();
7727  swiper.updateSlidesClasses();
7728  const isVirtualLoop = isVirtual && params.loop;
7729  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {
7730    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
7731  } else {
7732    if (swiper.params.loop && !isVirtual) {
7733      swiper.slideToLoop(swiper.realIndex, 0, false, true);
7734    } else {
7735      swiper.slideTo(swiper.activeIndex, 0, false, true);
7736    }
7737  }
7738  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
7739    clearTimeout(swiper.autoplay.resizeTimeout);
7740    swiper.autoplay.resizeTimeout = setTimeout(() => {
7741      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
7742        swiper.autoplay.resume();
7743      }
7744    }, 500);
7745  }
7746  // Return locks after resize
7747  swiper.allowSlidePrev = allowSlidePrev;
7748  swiper.allowSlideNext = allowSlideNext;
7749  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
7750    swiper.checkOverflow();
7751  }
7752}
7753
7754function onClick(e) {
7755  const swiper = this;
7756  if (!swiper.enabled) return;
7757  if (!swiper.allowClick) {
7758    if (swiper.params.preventClicks) e.preventDefault();
7759    if (swiper.params.preventClicksPropagation && swiper.animating) {
7760      e.stopPropagation();
7761      e.stopImmediatePropagation();
7762    }
7763  }
7764}
7765
7766function onScroll() {
7767  const swiper = this;
7768  const {
7769    wrapperEl,
7770    rtlTranslate,
7771    enabled
7772  } = swiper;
7773  if (!enabled) return;
7774  swiper.previousTranslate = swiper.translate;
7775  if (swiper.isHorizontal()) {
7776    swiper.translate = -wrapperEl.scrollLeft;
7777  } else {
7778    swiper.translate = -wrapperEl.scrollTop;
7779  }
7780  // eslint-disable-next-line
7781  if (swiper.translate === 0) swiper.translate = 0;
7782  swiper.updateActiveIndex();
7783  swiper.updateSlidesClasses();
7784  let newProgress;
7785  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
7786  if (translatesDiff === 0) {
7787    newProgress = 0;
7788  } else {
7789    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
7790  }
7791  if (newProgress !== swiper.progress) {
7792    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
7793  }
7794  swiper.emit('setTranslate', swiper.translate, false);
7795}
7796
7797function onLoad(e) {
7798  const swiper = this;
7799  processLazyPreloader(swiper, e.target);
7800  if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {
7801    return;
7802  }
7803  swiper.update();
7804}
7805
7806function onDocumentTouchStart() {
7807  const swiper = this;
7808  if (swiper.documentTouchHandlerProceeded) return;
7809  swiper.documentTouchHandlerProceeded = true;
7810  if (swiper.params.touchReleaseOnEdges) {
7811    swiper.el.style.touchAction = 'auto';
7812  }
7813}
7814
7815const events = (swiper, method) => {
7816  const document = ssr_window_esm_getDocument();
7817  const {
7818    params,
7819    el,
7820    wrapperEl,
7821    device
7822  } = swiper;
7823  const capture = !!params.nested;
7824  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
7825  const swiperMethod = method;
7826  if (!el || typeof el === 'string') return;
7827
7828  // Touch Events
7829  document[domMethod]('touchstart', swiper.onDocumentTouchStart, {
7830    passive: false,
7831    capture
7832  });
7833  el[domMethod]('touchstart', swiper.onTouchStart, {
7834    passive: false
7835  });
7836  el[domMethod]('pointerdown', swiper.onTouchStart, {
7837    passive: false
7838  });
7839  document[domMethod]('touchmove', swiper.onTouchMove, {
7840    passive: false,
7841    capture
7842  });
7843  document[domMethod]('pointermove', swiper.onTouchMove, {
7844    passive: false,
7845    capture
7846  });
7847  document[domMethod]('touchend', swiper.onTouchEnd, {
7848    passive: true
7849  });
7850  document[domMethod]('pointerup', swiper.onTouchEnd, {
7851    passive: true
7852  });
7853  document[domMethod]('pointercancel', swiper.onTouchEnd, {
7854    passive: true
7855  });
7856  document[domMethod]('touchcancel', swiper.onTouchEnd, {
7857    passive: true
7858  });
7859  document[domMethod]('pointerout', swiper.onTouchEnd, {
7860    passive: true
7861  });
7862  document[domMethod]('pointerleave', swiper.onTouchEnd, {
7863    passive: true
7864  });
7865  document[domMethod]('contextmenu', swiper.onTouchEnd, {
7866    passive: true
7867  });
7868
7869  // Prevent Links Clicks
7870  if (params.preventClicks || params.preventClicksPropagation) {
7871    el[domMethod]('click', swiper.onClick, true);
7872  }
7873  if (params.cssMode) {
7874    wrapperEl[domMethod]('scroll', swiper.onScroll);
7875  }
7876
7877  // Resize handler
7878  if (params.updateOnWindowResize) {
7879    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);
7880  } else {
7881    swiper[swiperMethod]('observerUpdate', onResize, true);
7882  }
7883
7884  // Images loader
7885  el[domMethod]('load', swiper.onLoad, {
7886    capture: true
7887  });
7888};
7889function attachEvents() {
7890  const swiper = this;
7891  const {
7892    params
7893  } = swiper;
7894  swiper.onTouchStart = onTouchStart.bind(swiper);
7895  swiper.onTouchMove = onTouchMove.bind(swiper);
7896  swiper.onTouchEnd = onTouchEnd.bind(swiper);
7897  swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);
7898  if (params.cssMode) {
7899    swiper.onScroll = onScroll.bind(swiper);
7900  }
7901  swiper.onClick = onClick.bind(swiper);
7902  swiper.onLoad = onLoad.bind(swiper);
7903  events(swiper, 'on');
7904}
7905function detachEvents() {
7906  const swiper = this;
7907  events(swiper, 'off');
7908}
7909var events$1 = {
7910  attachEvents,
7911  detachEvents
7912};
7913
7914const isGridEnabled = (swiper, params) => {
7915  return swiper.grid && params.grid && params.grid.rows > 1;
7916};
7917function setBreakpoint() {
7918  const swiper = this;
7919  const {
7920    realIndex,
7921    initialized,
7922    params,
7923    el
7924  } = swiper;
7925  const breakpoints = params.breakpoints;
7926  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;
7927
7928  // Get breakpoint for window width and update parameters
vendor: 11,461 bytes, lines 7929-8326
7929  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
7930  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
7931  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
7932  const breakpointParams = breakpointOnlyParams || swiper.originalParams;
7933  const wasMultiRow = isGridEnabled(swiper, params);
7934  const isMultiRow = isGridEnabled(swiper, breakpointParams);
7935  const wasGrabCursor = swiper.params.grabCursor;
7936  const isGrabCursor = breakpointParams.grabCursor;
7937  const wasEnabled = params.enabled;
7938  if (wasMultiRow && !isMultiRow) {
7939    el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);
7940    swiper.emitContainerClasses();
7941  } else if (!wasMultiRow && isMultiRow) {
7942    el.classList.add(`${params.containerModifierClass}grid`);
7943    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {
7944      el.classList.add(`${params.containerModifierClass}grid-column`);
7945    }
7946    swiper.emitContainerClasses();
7947  }
7948  if (wasGrabCursor && !isGrabCursor) {
7949    swiper.unsetGrabCursor();
7950  } else if (!wasGrabCursor && isGrabCursor) {
7951    swiper.setGrabCursor();
7952  }
7953
7954  // Toggle navigation, pagination, scrollbar
7955  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {
7956    if (typeof breakpointParams[prop] === 'undefined') return;
7957    const wasModuleEnabled = params[prop] && params[prop].enabled;
7958    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;
7959    if (wasModuleEnabled && !isModuleEnabled) {
7960      swiper[prop].disable();
7961    }
7962    if (!wasModuleEnabled && isModuleEnabled) {
7963      swiper[prop].enable();
7964    }
7965  });
7966  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
7967  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
7968  const wasLoop = params.loop;
7969  if (directionChanged && initialized) {
7970    swiper.changeDirection();
7971  }
7972  utils_extend(swiper.params, breakpointParams);
7973  const isEnabled = swiper.params.enabled;
7974  const hasLoop = swiper.params.loop;
7975  Object.assign(swiper, {
7976    allowTouchMove: swiper.params.allowTouchMove,
7977    allowSlideNext: swiper.params.allowSlideNext,
7978    allowSlidePrev: swiper.params.allowSlidePrev
7979  });
7980  if (wasEnabled && !isEnabled) {
7981    swiper.disable();
7982  } else if (!wasEnabled && isEnabled) {
7983    swiper.enable();
7984  }
7985  swiper.currentBreakpoint = breakpoint;
7986  swiper.emit('_beforeBreakpoint', breakpointParams);
7987  if (initialized) {
7988    if (needsReLoop) {
7989      swiper.loopDestroy();
7990      swiper.loopCreate(realIndex);
7991      swiper.updateSlides();
7992    } else if (!wasLoop && hasLoop) {
7993      swiper.loopCreate(realIndex);
7994      swiper.updateSlides();
7995    } else if (wasLoop && !hasLoop) {
7996      swiper.loopDestroy();
7997    }
7998  }
7999  swiper.emit('breakpoint', breakpointParams);
8000}
8001
8002function getBreakpoint(breakpoints, base, containerEl) {
8003  if (base === void 0) {
8004    base = 'window';
8005  }
8006  if (!breakpoints || base === 'container' && !containerEl) return undefined;
8007  let breakpoint = false;
8008  const window = ssr_window_esm_getWindow();
8009  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;
8010  const points = Object.keys(breakpoints).map(point => {
8011    if (typeof point === 'string' && point.indexOf('@') === 0) {
8012      const minRatio = parseFloat(point.substr(1));
8013      const value = currentHeight * minRatio;
8014      return {
8015        value,
8016        point
8017      };
8018    }
8019    return {
8020      value: point,
8021      point
8022    };
8023  });
8024  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
8025  for (let i = 0; i < points.length; i += 1) {
8026    const {
8027      point,
8028      value
8029    } = points[i];
8030    if (base === 'window') {
8031      if (window.matchMedia(`(min-width: ${value}px)`).matches) {
8032        breakpoint = point;
8033      }
8034    } else if (value <= containerEl.clientWidth) {
8035      breakpoint = point;
8036    }
8037  }
8038  return breakpoint || 'max';
8039}
8040
8041var breakpoints = {
8042  setBreakpoint,
8043  getBreakpoint
8044};
8045
8046function prepareClasses(entries, prefix) {
8047  const resultClasses = [];
8048  entries.forEach(item => {
8049    if (typeof item === 'object') {
8050      Object.keys(item).forEach(classNames => {
8051        if (item[classNames]) {
8052          resultClasses.push(prefix + classNames);
8053        }
8054      });
8055    } else if (typeof item === 'string') {
8056      resultClasses.push(prefix + item);
8057    }
8058  });
8059  return resultClasses;
8060}
8061function addClasses() {
8062  const swiper = this;
8063  const {
8064    classNames,
8065    params,
8066    rtl,
8067    el,
8068    device
8069  } = swiper;
8070  // prettier-ignore
8071  const suffixes = prepareClasses(['initialized', params.direction, {
8072    'free-mode': swiper.params.freeMode && params.freeMode.enabled
8073  }, {
8074    'autoheight': params.autoHeight
8075  }, {
8076    'rtl': rtl
8077  }, {
8078    'grid': params.grid && params.grid.rows > 1
8079  }, {
8080    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'
8081  }, {
8082    'android': device.android
8083  }, {
8084    'ios': device.ios
8085  }, {
8086    'css-mode': params.cssMode
8087  }, {
8088    'centered': params.cssMode && params.centeredSlides
8089  }, {
8090    'watch-progress': params.watchSlidesProgress
8091  }], params.containerModifierClass);
8092  classNames.push(...suffixes);
8093  el.classList.add(...classNames);
8094  swiper.emitContainerClasses();
8095}
8096
8097function removeClasses() {
8098  const swiper = this;
8099  const {
8100    el,
8101    classNames
8102  } = swiper;
8103  if (!el || typeof el === 'string') return;
8104  el.classList.remove(...classNames);
8105  swiper.emitContainerClasses();
8106}
8107
8108var classes = {
8109  addClasses,
8110  removeClasses
8111};
8112
8113function checkOverflow() {
8114  const swiper = this;
8115  const {
8116    isLocked: wasLocked,
8117    params
8118  } = swiper;
8119  const {
8120    slidesOffsetBefore
8121  } = params;
8122  if (slidesOffsetBefore) {
8123    const lastSlideIndex = swiper.slides.length - 1;
8124    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
8125    swiper.isLocked = swiper.size > lastSlideRightEdge;
8126  } else {
8127    swiper.isLocked = swiper.snapGrid.length === 1;
8128  }
8129  if (params.allowSlideNext === true) {
8130    swiper.allowSlideNext = !swiper.isLocked;
8131  }
8132  if (params.allowSlidePrev === true) {
8133    swiper.allowSlidePrev = !swiper.isLocked;
8134  }
8135  if (wasLocked && wasLocked !== swiper.isLocked) {
8136    swiper.isEnd = false;
8137  }
8138  if (wasLocked !== swiper.isLocked) {
8139    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
8140  }
8141}
8142var checkOverflow$1 = {
8143  checkOverflow
8144};
8145
8146var defaults = {
8147  init: true,
8148  direction: 'horizontal',
8149  oneWayMovement: false,
8150  swiperElementNodeName: 'SWIPER-CONTAINER',
8151  touchEventsTarget: 'wrapper',
8152  initialSlide: 0,
8153  speed: 300,
8154  cssMode: false,
8155  updateOnWindowResize: true,
8156  resizeObserver: true,
8157  nested: false,
8158  createElements: false,
8159  eventsPrefix: 'swiper',
8160  enabled: true,
8161  focusableElements: 'input, select, option, textarea, button, video, label',
8162  // Overrides
8163  width: null,
8164  height: null,
8165  //
8166  preventInteractionOnTransition: false,
8167  // ssr
8168  userAgent: null,
8169  url: null,
8170  // To support iOS's swipe-to-go-back gesture (when being used in-app).
8171  edgeSwipeDetection: false,
8172  edgeSwipeThreshold: 20,
8173  // Autoheight
8174  autoHeight: false,
8175  // Set wrapper width
8176  setWrapperSize: false,
8177  // Virtual Translate
8178  virtualTranslate: false,
8179  // Effects
8180  effect: 'slide',
8181  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
8182
8183  // Breakpoints
8184  breakpoints: undefined,
8185  breakpointsBase: 'window',
8186  // Slides grid
8187  spaceBetween: 0,
8188  slidesPerView: 1,
8189  slidesPerGroup: 1,
8190  slidesPerGroupSkip: 0,
8191  slidesPerGroupAuto: false,
8192  centeredSlides: false,
8193  centeredSlidesBounds: false,
8194  slidesOffsetBefore: 0,
8195  // in px
8196  slidesOffsetAfter: 0,
8197  // in px
8198  normalizeSlideIndex: true,
8199  centerInsufficientSlides: false,
8200  // Disable swiper and hide navigation when container not overflow
8201  watchOverflow: true,
8202  // Round length
8203  roundLengths: false,
8204  // Touches
8205  touchRatio: 1,
8206  touchAngle: 45,
8207  simulateTouch: true,
8208  shortSwipes: true,
8209  longSwipes: true,
8210  longSwipesRatio: 0.5,
8211  longSwipesMs: 300,
8212  followFinger: true,
8213  allowTouchMove: true,
8214  threshold: 5,
8215  touchMoveStopPropagation: false,
8216  touchStartPreventDefault: true,
8217  touchStartForcePreventDefault: false,
8218  touchReleaseOnEdges: false,
8219  // Unique Navigation Elements
8220  uniqueNavElements: true,
8221  // Resistance
8222  resistance: true,
8223  resistanceRatio: 0.85,
8224  // Progress
8225  watchSlidesProgress: false,
8226  // Cursor
8227  grabCursor: false,
8228  // Clicks
8229  preventClicks: true,
8230  preventClicksPropagation: true,
8231  slideToClickedSlide: false,
8232  // loop
8233  loop: false,
8234  loopAddBlankSlides: true,
8235  loopAdditionalSlides: 0,
8236  loopPreventsSliding: true,
8237  // rewind
8238  rewind: false,
8239  // Swiping/no swiping
8240  allowSlidePrev: true,
8241  allowSlideNext: true,
8242  swipeHandler: null,
8243  // '.swipe-handler',
8244  noSwiping: true,
8245  noSwipingClass: 'swiper-no-swiping',
8246  noSwipingSelector: null,
8247  // Passive Listeners
8248  passiveListeners: true,
8249  maxBackfaceHiddenSlides: 10,
8250  // NS
8251  containerModifierClass: 'swiper-',
8252  // NEW
8253  slideClass: 'swiper-slide',
8254  slideBlankClass: 'swiper-slide-blank',
8255  slideActiveClass: 'swiper-slide-active',
8256  slideVisibleClass: 'swiper-slide-visible',
8257  slideFullyVisibleClass: 'swiper-slide-fully-visible',
8258  slideNextClass: 'swiper-slide-next',
8259  slidePrevClass: 'swiper-slide-prev',
8260  wrapperClass: 'swiper-wrapper',
8261  lazyPreloaderClass: 'swiper-lazy-preloader',
8262  lazyPreloadPrevNext: 0,
8263  // Callbacks
8264  runCallbacksOnInit: true,
8265  // Internals
8266  _emitClasses: false
8267};
8268
8269function moduleExtendParams(params, allModulesParams) {
8270  return function extendParams(obj) {
8271    if (obj === void 0) {
8272      obj = {};
8273    }
8274    const moduleParamName = Object.keys(obj)[0];
8275    const moduleParams = obj[moduleParamName];
8276    if (typeof moduleParams !== 'object' || moduleParams === null) {
8277      utils_extend(allModulesParams, obj);
8278      return;
8279    }
8280    if (params[moduleParamName] === true) {
8281      params[moduleParamName] = {
8282        enabled: true
8283      };
8284    }
8285    if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {
8286      params[moduleParamName].auto = true;
8287    }
8288    if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {
8289      params[moduleParamName].auto = true;
8290    }
8291    if (!(moduleParamName in params && 'enabled' in moduleParams)) {
8292      utils_extend(allModulesParams, obj);
8293      return;
8294    }
8295    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
8296      params[moduleParamName].enabled = true;
8297    }
8298    if (!params[moduleParamName]) params[moduleParamName] = {
8299      enabled: false
8300    };
8301    utils_extend(allModulesParams, obj);
8302  };
8303}
8304
8305/* eslint no-param-reassign: "off" */
8306const prototypes = {
8307  eventsEmitter,
8308  update,
8309  translate,
8310  transition,
8311  slide,
8312  loop,
8313  grabCursor,
8314  events: events$1,
8315  breakpoints,
8316  checkOverflow: checkOverflow$1,
8317  classes
8318};
8319const extendedDefaults = {};
8320class Swiper {
8321  constructor() {
8322    let el;
8323    let params;
8324    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
8325      args[_key] = arguments[_key];
8326    }
vendor: 2,005 bytes, lines 8327-8384
8327    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
8328      params = args[0];
8329    } else {
8330      [el, params] = args;
8331    }
8332    if (!params) params = {};
8333    params = utils_extend({}, params);
8334    if (el && !params.el) params.el = el;
8335    const document = ssr_window_esm_getDocument();
8336    if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {
8337      const swipers = [];
8338      document.querySelectorAll(params.el).forEach(containerEl => {
8339        const newParams = utils_extend({}, params, {
8340          el: containerEl
8341        });
8342        swipers.push(new Swiper(newParams));
8343      });
8344      // eslint-disable-next-line no-constructor-return
8345      return swipers;
8346    }
8347
8348    // Swiper Instance
8349    const swiper = this;
8350    swiper.__swiper__ = true;
8351    swiper.support = getSupport();
8352    swiper.device = getDevice({
8353      userAgent: params.userAgent
8354    });
8355    swiper.browser = getBrowser();
8356    swiper.eventsListeners = {};
8357    swiper.eventsAnyListeners = [];
8358    swiper.modules = [...swiper.__modules__];
8359    if (params.modules && Array.isArray(params.modules)) {
8360      swiper.modules.push(...params.modules);
8361    }
8362    const allModulesParams = {};
8363    swiper.modules.forEach(mod => {
8364      mod({
8365        params,
8366        swiper,
8367        extendParams: moduleExtendParams(params, allModulesParams),
8368        on: swiper.on.bind(swiper),
8369        once: swiper.once.bind(swiper),
8370        off: swiper.off.bind(swiper),
8371        emit: swiper.emit.bind(swiper)
8372      });
8373    });
8374
8375    // Extend defaults with modules params
8376    const swiperParams = utils_extend({}, defaults, allModulesParams);
8377
8378    // Extend defaults with passed params
8379    swiper.params = utils_extend({}, swiperParams, extendedDefaults, params);
8380    swiper.originalParams = utils_extend({}, swiper.params);
8381    swiper.passedParams = utils_extend({}, params);
8382
8383    // add event listeners
8384    if (swiper.params && swiper.params.on) {
vendor: 3,446 bytes, lines 8385-8513
8385      Object.keys(swiper.params.on).forEach(eventName => {
8386        swiper.on(eventName, swiper.params.on[eventName]);
8387      });
8388    }
8389    if (swiper.params && swiper.params.onAny) {
8390      swiper.onAny(swiper.params.onAny);
8391    }
8392
8393    // Extend Swiper
8394    Object.assign(swiper, {
8395      enabled: swiper.params.enabled,
8396      el,
8397      // Classes
8398      classNames: [],
8399      // Slides
8400      slides: [],
8401      slidesGrid: [],
8402      snapGrid: [],
8403      slidesSizesGrid: [],
8404      // isDirection
8405      isHorizontal() {
8406        return swiper.params.direction === 'horizontal';
8407      },
8408      isVertical() {
8409        return swiper.params.direction === 'vertical';
8410      },
8411      // Indexes
8412      activeIndex: 0,
8413      realIndex: 0,
8414      //
8415      isBeginning: true,
8416      isEnd: false,
8417      // Props
8418      translate: 0,
8419      previousTranslate: 0,
8420      progress: 0,
8421      velocity: 0,
8422      animating: false,
8423      cssOverflowAdjustment() {
8424        // Returns 0 unless `translate` is > 2**23
8425        // Should be subtracted from css values to prevent overflow
8426        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;
8427      },
8428      // Locks
8429      allowSlideNext: swiper.params.allowSlideNext,
8430      allowSlidePrev: swiper.params.allowSlidePrev,
8431      // Touch Events
8432      touchEventsData: {
8433        isTouched: undefined,
8434        isMoved: undefined,
8435        allowTouchCallbacks: undefined,
8436        touchStartTime: undefined,
8437        isScrolling: undefined,
8438        currentTranslate: undefined,
8439        startTranslate: undefined,
8440        allowThresholdMove: undefined,
8441        // Form elements to match
8442        focusableElements: swiper.params.focusableElements,
8443        // Last click time
8444        lastClickTime: 0,
8445        clickTimeout: undefined,
8446        // Velocities
8447        velocities: [],
8448        allowMomentumBounce: undefined,
8449        startMoving: undefined,
8450        pointerId: null,
8451        touchId: null
8452      },
8453      // Clicks
8454      allowClick: true,
8455      // Touches
8456      allowTouchMove: swiper.params.allowTouchMove,
8457      touches: {
8458        startX: 0,
8459        startY: 0,
8460        currentX: 0,
8461        currentY: 0,
8462        diff: 0
8463      },
8464      // Images
8465      imagesToLoad: [],
8466      imagesLoaded: 0
8467    });
8468    swiper.emit('_swiper');
8469
8470    // Init
8471    if (swiper.params.init) {
8472      swiper.init();
8473    }
8474
8475    // Return app instance
8476    // eslint-disable-next-line no-constructor-return
8477    return swiper;
8478  }
8479  getDirectionLabel(property) {
8480    if (this.isHorizontal()) {
8481      return property;
8482    }
8483    // prettier-ignore
8484    return {
8485      'width': 'height',
8486      'margin-top': 'margin-left',
8487      'margin-bottom ': 'margin-right',
8488      'margin-left': 'margin-top',
8489      'margin-right': 'margin-bottom',
8490      'padding-left': 'padding-top',
8491      'padding-right': 'padding-bottom',
8492      'marginRight': 'marginBottom'
8493    }[property];
8494  }
8495  getSlideIndex(slideEl) {
8496    const {
8497      slidesEl,
8498      params
8499    } = this;
8500    const slides = utils_elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);
8501    const firstSlideIndex = utils_elementIndex(slides[0]);
8502    return utils_elementIndex(slideEl) - firstSlideIndex;
8503  }
8504  getSlideIndexByData(index) {
8505    return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);
8506  }
8507  recalcSlides() {
8508    const swiper = this;
8509    const {
8510      slidesEl,
8511      params
8512    } = swiper;
8513    swiper.slides = utils_
vendor: 7,673 bytes, lines 8513-8744
8513elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);
8514  }
8515  enable() {
8516    const swiper = this;
8517    if (swiper.enabled) return;
8518    swiper.enabled = true;
8519    if (swiper.params.grabCursor) {
8520      swiper.setGrabCursor();
8521    }
8522    swiper.emit('enable');
8523  }
8524  disable() {
8525    const swiper = this;
8526    if (!swiper.enabled) return;
8527    swiper.enabled = false;
8528    if (swiper.params.grabCursor) {
8529      swiper.unsetGrabCursor();
8530    }
8531    swiper.emit('disable');
8532  }
8533  setProgress(progress, speed) {
8534    const swiper = this;
8535    progress = Math.min(Math.max(progress, 0), 1);
8536    const min = swiper.minTranslate();
8537    const max = swiper.maxTranslate();
8538    const current = (max - min) * progress + min;
8539    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);
8540    swiper.updateActiveIndex();
8541    swiper.updateSlidesClasses();
8542  }
8543  emitContainerClasses() {
8544    const swiper = this;
8545    if (!swiper.params._emitClasses || !swiper.el) return;
8546    const cls = swiper.el.className.split(' ').filter(className => {
8547      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
8548    });
8549    swiper.emit('_containerClasses', cls.join(' '));
8550  }
8551  getSlideClasses(slideEl) {
8552    const swiper = this;
8553    if (swiper.destroyed) return '';
8554    return slideEl.className.split(' ').filter(className => {
8555      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
8556    }).join(' ');
8557  }
8558  emitSlidesClasses() {
8559    const swiper = this;
8560    if (!swiper.params._emitClasses || !swiper.el) return;
8561    const updates = [];
8562    swiper.slides.forEach(slideEl => {
8563      const classNames = swiper.getSlideClasses(slideEl);
8564      updates.push({
8565        slideEl,
8566        classNames
8567      });
8568      swiper.emit('_slideClass', slideEl, classNames);
8569    });
8570    swiper.emit('_slideClasses', updates);
8571  }
8572  slidesPerViewDynamic(view, exact) {
8573    if (view === void 0) {
8574      view = 'current';
8575    }
8576    if (exact === void 0) {
8577      exact = false;
8578    }
8579    const swiper = this;
8580    const {
8581      params,
8582      slides,
8583      slidesGrid,
8584      slidesSizesGrid,
8585      size: swiperSize,
8586      activeIndex
8587    } = swiper;
8588    let spv = 1;
8589    if (typeof params.slidesPerView === 'number') return params.slidesPerView;
8590    if (params.centeredSlides) {
8591      let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;
8592      let breakLoop;
8593      for (let i = activeIndex + 1; i < slides.length; i += 1) {
8594        if (slides[i] && !breakLoop) {
8595          slideSize += Math.ceil(slides[i].swiperSlideSize);
8596          spv += 1;
8597          if (slideSize > swiperSize) breakLoop = true;
8598        }
8599      }
8600      for (let i = activeIndex - 1; i >= 0; i -= 1) {
8601        if (slides[i] && !breakLoop) {
8602          slideSize += slides[i].swiperSlideSize;
8603          spv += 1;
8604          if (slideSize > swiperSize) breakLoop = true;
8605        }
8606      }
8607    } else {
8608      // eslint-disable-next-line
8609      if (view === 'current') {
8610        for (let i = activeIndex + 1; i < slides.length; i += 1) {
8611          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;
8612          if (slideInView) {
8613            spv += 1;
8614          }
8615        }
8616      } else {
8617        // previous
8618        for (let i = activeIndex - 1; i >= 0; i -= 1) {
8619          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;
8620          if (slideInView) {
8621            spv += 1;
8622          }
8623        }
8624      }
8625    }
8626    return spv;
8627  }
8628  update() {
8629    const swiper = this;
8630    if (!swiper || swiper.destroyed) return;
8631    const {
8632      snapGrid,
8633      params
8634    } = swiper;
8635    // Breakpoints
8636    if (params.breakpoints) {
8637      swiper.setBreakpoint();
8638    }
8639    [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => {
8640      if (imageEl.complete) {
8641        processLazyPreloader(swiper, imageEl);
8642      }
8643    });
8644    swiper.updateSize();
8645    swiper.updateSlides();
8646    swiper.updateProgress();
8647    swiper.updateSlidesClasses();
8648    function setTranslate() {
8649      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
8650      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
8651      swiper.setTranslate(newTranslate);
8652      swiper.updateActiveIndex();
8653      swiper.updateSlidesClasses();
8654    }
8655    let translated;
8656    if (params.freeMode && params.freeMode.enabled && !params.cssMode) {
8657      setTranslate();
8658      if (params.autoHeight) {
8659        swiper.updateAutoHeight();
8660      }
8661    } else {
8662      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {
8663        const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;
8664        translated = swiper.slideTo(slides.length - 1, 0, false, true);
8665      } else {
8666        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
8667      }
8668      if (!translated) {
8669        setTranslate();
8670      }
8671    }
8672    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
8673      swiper.checkOverflow();
8674    }
8675    swiper.emit('update');
8676  }
8677  changeDirection(newDirection, needUpdate) {
8678    if (needUpdate === void 0) {
8679      needUpdate = true;
8680    }
8681    const swiper = this;
8682    const currentDirection = swiper.params.direction;
8683    if (!newDirection) {
8684      // eslint-disable-next-line
8685      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
8686    }
8687    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
8688      return swiper;
8689    }
8690    swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);
8691    swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);
8692    swiper.emitContainerClasses();
8693    swiper.params.direction = newDirection;
8694    swiper.slides.forEach(slideEl => {
8695      if (newDirection === 'vertical') {
8696        slideEl.style.width = '';
8697      } else {
8698        slideEl.style.height = '';
8699      }
8700    });
8701    swiper.emit('changeDirection');
8702    if (needUpdate) swiper.update();
8703    return swiper;
8704  }
8705  changeLanguageDirection(direction) {
8706    const swiper = this;
8707    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;
8708    swiper.rtl = direction === 'rtl';
8709    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;
8710    if (swiper.rtl) {
8711      swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);
8712      swiper.el.dir = 'rtl';
8713    } else {
8714      swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);
8715      swiper.el.dir = 'ltr';
8716    }
8717    swiper.update();
8718  }
8719  mount(element) {
8720    const swiper = this;
8721    if (swiper.mounted) return true;
8722
8723    // Find el
8724    let el = element || swiper.params.el;
8725    if (typeof el === 'string') {
8726      el = document.querySelector(el);
8727    }
8728    if (!el) {
8729      return false;
8730    }
8731    el.swiper = swiper;
8732    if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {
8733      swiper.isElement = true;
8734    }
8735    const getWrapperSelector = () => {
8736      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;
8737    };
8738    const getWrapper = () => {
8739      if (el && el.shadowRoot && el.shadowRoot.querySelector) {
8740        const res = el.shadowRoot.querySelector(getWrapperSelector());
8741        // Children needs to return slot items
8742        return res;
8743      }
8744      return 
8744utils_elementChildren(el, getWrapperSelector())[0];
8745    };
8746    // Find Wrapper
8747    let wrapperEl = getWrapper();
8748    if (!wrapperEl && swiper.params.createElements) {
8749      wrapperEl = utils_createElement('div', swiper.params.wrapperClass);
8750      el.append(wrapperEl);
8751      utils_elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {
8752        wrapperEl.append(slideEl);
8753      });
8754    }
8755    Object.assign(swiper, {
8756      el,
8757      wrapperEl,
8758      slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,
8759      hostEl: swiper.isElement ? el.parentNode.host : el,
8760      mounted: true,
8761      // RTL
8762      rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',
8763      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),
8764      wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'
8765    });
8766    return true;
8767  }
8768  init(el) {
8769    const swiper = this;
8770    if (swiper.initialized) return swiper;
8771    const mounted = swiper.mount(el);
8772    if (mounted === false) return swiper;
8773    swiper.emit('beforeInit');
8774
8775    // Set breakpoint
8776    if (swiper.params.breakpoints) {
8777      swiper.setBreakpoint();
8778    }
8779
8780    // Add Classes
8781    swiper.addClasses();
8782
8783    // Update size
8784    swiper.updateSize();
8785
8786    // Update slides
8787    swiper.updateSlides();
8788    if (swiper.params.watchOverflow) {
8789      swiper.checkOverflow();
8790    }
8791
8792    // Set Grab Cursor
8793    if (swiper.params.grabCursor && swiper.enabled) {
8794      swiper.setGrabCursor();
8795    }
8796
8797    // Slide To Initial Slide
8798    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
8799      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);
8800    } else {
8801      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
8802    }
8803
8804    // Create loop
8805    if (swiper.params.loop) {
8806      swiper.loopCreate();
8807    }
8808
8809    // Attach events
8810    swiper.attachEvents();
8811    const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')];
8812    if (swiper.isElement) {
8813      lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]'));
8814    }
8815    lazyElements.forEach(imageEl => {
8816      if (imageEl.complete) {
8817        processLazyPreloader(swiper, imageEl);
8818      } else {
8819        imageEl.addEventListener('load', e => {
8820          processLazyPreloader(swiper, e.target);
8821        });
8822      }
8823    });
8824    preload(swiper);
8825
8826    // Init Flag
8827    swiper.initialized = true;
8828    preload(swiper);
8829
8830    // Emit
8831    swiper.emit('init');
8832    swiper.emit('afterInit');
8833    return swiper;
8834  }
8835  destroy(deleteInstance, cleanStyles) {
8836    if (deleteInstance === void 0) {
8837      deleteInstance = true;
8838    }
8839    if (cleanStyles === void 0) {
8840      cleanStyles = true;
8841    }
8842    const swiper = this;
8843    const {
8844      params,
8845      el,
8846      wrapperEl,
8847      slides
8848    } = swiper;
8849    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
8850      return null;
8851    }
8852    swiper.emit('beforeDestroy');
8853
8854    // Init Flag
8855    swiper.initialized = false;
8856
8857    // Detach events
8858    swiper.detachEvents();
8859
8860    // Destroy loop
8861    if (params.loop) {
8862      swiper.loopDestroy();
8863    }
8864
8865    // Cleanup styles
8866    if (cleanStyles) {
8867      swiper.removeClasses();
8868      if (el && typeof el !== 'string') {
8869        el.removeAttribute('style');
8870      }
8871      if (wrapperEl) {
8872        wrapperEl.removeAttribute('style');
8873      }
8874      if (slides && slides.length) {
vendor: 2,563 bytes, lines 8875-8979
8875        slides.forEach(slideEl => {
8876          slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);
8877          slideEl.removeAttribute('style');
8878          slideEl.removeAttribute('data-swiper-slide-index');
8879        });
8880      }
8881    }
8882    swiper.emit('destroy');
8883
8884    // Detach emitter events
8885    Object.keys(swiper.eventsListeners).forEach(eventName => {
8886      swiper.off(eventName);
8887    });
8888    if (deleteInstance !== false) {
8889      if (swiper.el && typeof swiper.el !== 'string') {
8890        swiper.el.swiper = null;
8891      }
8892      deleteProps(swiper);
8893    }
8894    swiper.destroyed = true;
8895    return null;
8896  }
8897  static extendDefaults(newDefaults) {
8898    utils_extend(extendedDefaults, newDefaults);
8899  }
8900  static get extendedDefaults() {
8901    return extendedDefaults;
8902  }
8903  static get defaults() {
8904    return defaults;
8905  }
8906  static installModule(mod) {
8907    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];
8908    const modules = Swiper.prototype.__modules__;
8909    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {
8910      modules.push(mod);
8911    }
8912  }
8913  static use(module) {
8914    if (Array.isArray(module)) {
8915      module.forEach(m => Swiper.installModule(m));
8916      return Swiper;
8917    }
8918    Swiper.installModule(module);
8919    return Swiper;
8920  }
8921}
8922Object.keys(prototypes).forEach(prototypeGroup => {
8923  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {
8924    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
8925  });
8926});
8927Swiper.use([Resize, Observer]);
8928
8929
8930
8931;// CONCATENATED MODULE: ./node_modules/swiper/swiper.mjs
8932/**
8933 * Swiper 11.1.14
8934 * Most modern mobile touch slider and framework with hardware accelerated transitions
8935 * https://swiperjs.com
8936 *
8937 * Copyright 2014-2024 Vladimir Kharlampidi
8938 *
8939 * Released under the MIT License
8940 *
8941 * Released on: September 12, 2024
8942 */
8943
8944
8945
8946;// CONCATENATED MODULE: ./node_modules/swiper/modules/virtual.mjs
8947
8948
8949
8950function Virtual(_ref) {
8951  let {
8952    swiper,
8953    extendParams,
8954    on,
8955    emit
8956  } = _ref;
8957  extendParams({
8958    virtual: {
8959      enabled: false,
8960      slides: [],
8961      cache: true,
8962      renderSlide: null,
8963      renderExternal: null,
8964      renderExternalUpdate: true,
8965      addSlidesBefore: 0,
8966      addSlidesAfter: 0
8967    }
8968  });
8969  let cssModeTimeout;
8970  const document = getDocument();
8971  swiper.virtual = {
8972    cache: {},
8973    from: undefined,
8974    to: undefined,
8975    slides: [],
8976    offset: 0,
8977    slidesGrid: []
8978  };
8979  const tempDOM = document.createElement('div');
8980  function renderSlide(slide, index) {
8981    const params = swiper.params.virtual;
8982    if (params.cache && swiper.virtual.cache[index]) {
8983      return swiper.virtual.cache[index];
8984    }
8985    // eslint-disable-next-line
8986    let slideEl;
8987    if (params.renderSlide) {
8988      slideEl = params.renderSlide.call(swiper, slide, index);
8989      if (typeof slideEl === 'string') {
8990        tempDOM.innerHTML = slideEl;
8991        slideEl = tempDOM.children[0];
8992      }
8993    } else if (swiper.isElement) {
8994      slideEl = createElement('swiper-slide');
8995    } else {
8996      slideEl = createElement('div', swiper.params.slideClass);
8997    }
8998    slideEl.setAttribute('data-swiper-slide-index', index);
8999    if (!params.renderSlide) {
9000      slideEl.innerHTML = slide;
9001    }
9002    if (params.cache) {
9003      swiper.virtual.cache[index] = slideEl;
9004    }
9005    return slideEl;
9006  }
9007  function update(force, beforeInit) {
9008    const {
9009      slidesPerView,
9010      slidesPerGroup,
9011      centeredSlides,
9012      loop: isLoop,
9013      initialSlide
9014    } = swiper.params;
9015    if (beforeInit && !isLoop && initialSlide > 0) {
9016      return;
9017    }
9018    const {
9019      addSlidesBefore,
9020      addSlidesAfter
9021    } = swiper.params.virtual;
9022    const {
9023      from: previousFrom,
9024      to: previousTo,
9025      slides,
9026      slidesGrid: previousSlidesGrid,
9027      offset: previousOffset
9028    } = swiper.virtual;
9029    if (!swiper.params.cssMode) {
9030      swiper.updateActiveIndex();
9031    }
9032    const activeIndex = swiper.activeIndex || 0;
9033    let offsetProp;
9034    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
9035    let slidesAfter;
9036    let slidesBefore;
9037    if (centeredSlides) {
9038      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
9039      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
9040    } else {
9041      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
9042      slidesBefore = (isLoop ? slidesPerView
vendor: 3,781 bytes, lines 9042-9155
9042 : slidesPerGroup) + addSlidesBefore;
9043    }
9044    let from = activeIndex - slidesBefore;
9045    let to = activeIndex + slidesAfter;
9046    if (!isLoop) {
9047      from = Math.max(from, 0);
9048      to = Math.min(to, slides.length - 1);
9049    }
9050    let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
9051    if (isLoop && activeIndex >= slidesBefore) {
9052      from -= slidesBefore;
9053      if (!centeredSlides) offset += swiper.slidesGrid[0];
9054    } else if (isLoop && activeIndex < slidesBefore) {
9055      from = -slidesBefore;
9056      if (centeredSlides) offset += swiper.slidesGrid[0];
9057    }
9058    Object.assign(swiper.virtual, {
9059      from,
9060      to,
9061      offset,
9062      slidesGrid: swiper.slidesGrid,
9063      slidesBefore,
9064      slidesAfter
9065    });
9066    function onRendered() {
9067      swiper.updateSlides();
9068      swiper.updateProgress();
9069      swiper.updateSlidesClasses();
9070      emit('virtualUpdate');
9071    }
9072    if (previousFrom === from && previousTo === to && !force) {
9073      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
9074        swiper.slides.forEach(slideEl => {
9075          slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;
9076        });
9077      }
9078      swiper.updateProgress();
9079      emit('virtualUpdate');
9080      return;
9081    }
9082    if (swiper.params.virtual.renderExternal) {
9083      swiper.params.virtual.renderExternal.call(swiper, {
9084        offset,
9085        from,
9086        to,
9087        slides: function getSlides() {
9088          const slidesToRender = [];
9089          for (let i = from; i <= to; i += 1) {
9090            slidesToRender.push(slides[i]);
9091          }
9092          return slidesToRender;
9093        }()
9094      });
9095      if (swiper.params.virtual.renderExternalUpdate) {
9096        onRendered();
9097      } else {
9098        emit('virtualUpdate');
9099      }
9100      return;
9101    }
9102    const prependIndexes = [];
9103    const appendIndexes = [];
9104    const getSlideIndex = index => {
9105      let slideIndex = index;
9106      if (index < 0) {
9107        slideIndex = slides.length + index;
9108      } else if (slideIndex >= slides.length) {
9109        // eslint-disable-next-line
9110        slideIndex = slideIndex - slides.length;
9111      }
9112      return slideIndex;
9113    };
9114    if (force) {
9115      swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {
9116        slideEl.remove();
9117      });
9118    } else {
9119      for (let i = previousFrom; i <= previousTo; i += 1) {
9120        if (i < from || i > to) {
9121          const slideIndex = getSlideIndex(i);
9122          swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => {
9123            slideEl.remove();
9124          });
9125        }
9126      }
9127    }
9128    const loopFrom = isLoop ? -slides.length : 0;
9129    const loopTo = isLoop ? slides.length * 2 : slides.length;
9130    for (let i = loopFrom; i < loopTo; i += 1) {
9131      if (i >= from && i <= to) {
9132        const slideIndex = getSlideIndex(i);
9133        if (typeof previousTo === 'undefined' || force) {
9134          appendIndexes.push(slideIndex);
9135        } else {
9136          if (i > previousTo) appendIndexes.push(slideIndex);
9137          if (i < previousFrom) prependIndexes.push(slideIndex);
9138        }
9139      }
9140    }
9141    appendIndexes.forEach(index => {
9142      swiper.slidesEl.append(renderSlide(slides[index], index));
9143    });
9144    if (isLoop) {
9145      for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {
9146        const index = prependIndexes[i];
9147        swiper.slidesEl.prepend(renderSlide(slides[index], index));
9148      }
9149    } else {
9150      prependIndexes.sort((a, b) => b - a);
9151      prependIndexes.forEach(index => {
9152        swiper.slidesEl.prepend(renderSlide(slides[index], index));
9153      });
9154    }
9155    
9155elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(sli
vendor: 5,535 bytes, lines 9155-9327
9155deEl => {
9156      slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;
9157    });
9158    onRendered();
9159  }
9160  function appendSlide(slides) {
9161    if (typeof slides === 'object' && 'length' in slides) {
9162      for (let i = 0; i < slides.length; i += 1) {
9163        if (slides[i]) swiper.virtual.slides.push(slides[i]);
9164      }
9165    } else {
9166      swiper.virtual.slides.push(slides);
9167    }
9168    update(true);
9169  }
9170  function prependSlide(slides) {
9171    const activeIndex = swiper.activeIndex;
9172    let newActiveIndex = activeIndex + 1;
9173    let numberOfNewSlides = 1;
9174    if (Array.isArray(slides)) {
9175      for (let i = 0; i < slides.length; i += 1) {
9176        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
9177      }
9178      newActiveIndex = activeIndex + slides.length;
9179      numberOfNewSlides = slides.length;
9180    } else {
9181      swiper.virtual.slides.unshift(slides);
9182    }
9183    if (swiper.params.virtual.cache) {
9184      const cache = swiper.virtual.cache;
9185      const newCache = {};
9186      Object.keys(cache).forEach(cachedIndex => {
9187        const cachedEl = cache[cachedIndex];
9188        const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');
9189        if (cachedElIndex) {
9190          cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);
9191        }
9192        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;
9193      });
9194      swiper.virtual.cache = newCache;
9195    }
9196    update(true);
9197    swiper.slideTo(newActiveIndex, 0);
9198  }
9199  function removeSlide(slidesIndexes) {
9200    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
9201    let activeIndex = swiper.activeIndex;
9202    if (Array.isArray(slidesIndexes)) {
9203      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
9204        if (swiper.params.virtual.cache) {
9205          delete swiper.virtual.cache[slidesIndexes[i]];
9206          // shift cache indexes
9207          Object.keys(swiper.virtual.cache).forEach(key => {
9208            if (key > slidesIndexes) {
9209              swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];
9210              swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);
9211              delete swiper.virtual.cache[key];
9212            }
9213          });
9214        }
9215        swiper.virtual.slides.splice(slidesIndexes[i], 1);
9216        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
9217        activeIndex = Math.max(activeIndex, 0);
9218      }
9219    } else {
9220      if (swiper.params.virtual.cache) {
9221        delete swiper.virtual.cache[slidesIndexes];
9222        // shift cache indexes
9223        Object.keys(swiper.virtual.cache).forEach(key => {
9224          if (key > slidesIndexes) {
9225            swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];
9226            swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);
9227            delete swiper.virtual.cache[key];
9228          }
9229        });
9230      }
9231      swiper.virtual.slides.splice(slidesIndexes, 1);
9232      if (slidesIndexes < activeIndex) activeIndex -= 1;
9233      activeIndex = Math.max(activeIndex, 0);
9234    }
9235    update(true);
9236    swiper.slideTo(activeIndex, 0);
9237  }
9238  function removeAllSlides() {
9239    swiper.virtual.slides = [];
9240    if (swiper.params.virtual.cache) {
9241      swiper.virtual.cache = {};
9242    }
9243    update(true);
9244    swiper.slideTo(0, 0);
9245  }
9246  on('beforeInit', () => {
9247    if (!swiper.params.virtual.enabled) return;
9248    let domSlidesAssigned;
9249    if (typeof swiper.passedParams.virtual.slides === 'undefined') {
9250      const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));
9251      if (slides && slides.length) {
9252        swiper.virtual.slides = [...slides];
9253        domSlidesAssigned = true;
9254        slides.forEach((slideEl, slideIndex) => {
9255          slideEl.setAttribute('data-swiper-slide-index', slideIndex);
9256          swiper.virtual.cache[slideIndex] = slideEl;
9257          slideEl.remove();
9258        });
9259      }
9260    }
9261    if (!domSlidesAssigned) {
9262      swiper.virtual.slides = swiper.params.virtual.slides;
9263    }
9264    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
9265    swiper.params.watchSlidesProgress = true;
9266    swiper.originalParams.watchSlidesProgress = true;
9267    update(false, true);
9268  });
9269  on('setTranslate', () => {
9270    if (!swiper.params.virtual.enabled) return;
9271    if (swiper.params.cssMode && !swiper._immediateVirtual) {
9272      clearTimeout(cssModeTimeout);
9273      cssModeTimeout = setTimeout(() => {
9274        update();
9275      }, 100);
9276    } else {
9277      update();
9278    }
9279  });
9280  on('init update resize', () => {
9281    if (!swiper.params.virtual.enabled) return;
9282    if (swiper.params.cssMode) {
9283      setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);
9284    }
9285  });
9286  Object.assign(swiper.virtual, {
9287    appendSlide,
9288    prependSlide,
9289    removeSlide,
9290    removeAllSlides,
9291    update
9292  });
9293}
9294
9295
9296
9297;// CONCATENATED MODULE: ./node_modules/swiper/modules/keyboard.mjs
9298
9299
9300
9301/* eslint-disable consistent-return */
9302function Keyboard(_ref) {
9303  let {
9304    swiper,
9305    extendParams,
9306    on,
9307    emit
9308  } = _ref;
9309  const document = getDocument();
9310  const window = getWindow();
9311  swiper.keyboard = {
9312    enabled: false
9313  };
9314  extendParams({
9315    keyboard: {
9316      enabled: false,
9317      onlyInViewport: true,
9318      pageUpDown: true
9319    }
9320  });
9321  function handle(event) {
9322    if (!swiper.enabled) return;
9323    const {
9324      rtlTranslate: rtl
9325    } = swiper;
9326    let e = event;
9327    if (e.originalEvent) e = e.originalEvent; // jquery fix
vendor: 3,953 bytes, lines 9328-9433
9328    const kc = e.keyCode || e.charCode;
9329    const pageUpDown = swiper.params.keyboard.pageUpDown;
9330    const isPageUp = pageUpDown && kc === 33;
9331    const isPageDown = pageUpDown && kc === 34;
9332    const isArrowLeft = kc === 37;
9333    const isArrowRight = kc === 39;
9334    const isArrowUp = kc === 38;
9335    const isArrowDown = kc === 40;
9336    // Directions locks
9337    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
9338      return false;
9339    }
9340    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
9341      return false;
9342    }
9343    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
9344      return undefined;
9345    }
9346    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
9347      return undefined;
9348    }
9349    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
9350      let inView = false;
9351      // Check that swiper should be inside of visible area of window
9352      if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {
9353        return undefined;
9354      }
9355      const el = swiper.el;
9356      const swiperWidth = el.clientWidth;
9357      const swiperHeight = el.clientHeight;
9358      const windowWidth = window.innerWidth;
9359      const windowHeight = window.innerHeight;
9360      const swiperOffset = elementOffset(el);
9361      if (rtl) swiperOffset.left -= el.scrollLeft;
9362      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];
9363      for (let i = 0; i < swiperCoord.length; i += 1) {
9364        const point = swiperCoord[i];
9365        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
9366          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
9367          inView = true;
9368        }
9369      }
9370      if (!inView) return undefined;
9371    }
9372    if (swiper.isHorizontal()) {
9373      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
9374        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
9375      }
9376      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
9377      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
9378    } else {
9379      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
9380        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
9381      }
9382      if (isPageDown || isArrowDown) swiper.slideNext();
9383      if (isPageUp || isArrowUp) swiper.slidePrev();
9384    }
9385    emit('keyPress', kc);
9386    return undefined;
9387  }
9388  function enable() {
9389    if (swiper.keyboard.enabled) return;
9390    document.addEventListener('keydown', handle);
9391    swiper.keyboard.enabled = true;
9392  }
9393  function disable() {
9394    if (!swiper.keyboard.enabled) return;
9395    document.removeEventListener('keydown', handle);
9396    swiper.keyboard.enabled = false;
9397  }
9398  on('init', () => {
9399    if (swiper.params.keyboard.enabled) {
9400      enable();
9401    }
9402  });
9403  on('destroy', () => {
9404    if (swiper.keyboard.enabled) {
9405      disable();
9406    }
9407  });
9408  Object.assign(swiper.keyboard, {
9409    enable,
9410    disable
9411  });
9412}
9413
9414
9415
9416;// CONCATENATED MODULE: ./node_modules/swiper/modules/mousewheel.mjs
9417
9418
9419
9420/* eslint-disable consistent-return */
9421function Mousewheel(_ref) {
9422  let {
9423    swiper,
9424    extendParams,
9425    on,
9426    emit
9427  } = _ref;
9428  const window = getWindow();
9429  extendParams({
9430    mousewheel: {
9431      enabled: false,
9432      releaseOnEdges: false,
9433      invert: false,
vendor: 21,587 bytes, lines 9434-10049
9434      forceToAxis: false,
9435      sensitivity: 1,
9436      eventsTarget: 'container',
9437      thresholdDelta: null,
9438      thresholdTime: null,
9439      noMousewheelClass: 'swiper-no-mousewheel'
9440    }
9441  });
9442  swiper.mousewheel = {
9443    enabled: false
9444  };
9445  let timeout;
9446  let lastScrollTime = now();
9447  let lastEventBeforeSnap;
9448  const recentWheelEvents = [];
9449  function normalize(e) {
9450    // Reasonable defaults
9451    const PIXEL_STEP = 10;
9452    const LINE_HEIGHT = 40;
9453    const PAGE_HEIGHT = 800;
9454    let sX = 0;
9455    let sY = 0; // spinX, spinY
9456    let pX = 0;
9457    let pY = 0; // pixelX, pixelY
9458
9459    // Legacy
9460    if ('detail' in e) {
9461      sY = e.detail;
9462    }
9463    if ('wheelDelta' in e) {
9464      sY = -e.wheelDelta / 120;
9465    }
9466    if ('wheelDeltaY' in e) {
9467      sY = -e.wheelDeltaY / 120;
9468    }
9469    if ('wheelDeltaX' in e) {
9470      sX = -e.wheelDeltaX / 120;
9471    }
9472
9473    // side scrolling on FF with DOMMouseScroll
9474    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
9475      sX = sY;
9476      sY = 0;
9477    }
9478    pX = sX * PIXEL_STEP;
9479    pY = sY * PIXEL_STEP;
9480    if ('deltaY' in e) {
9481      pY = e.deltaY;
9482    }
9483    if ('deltaX' in e) {
9484      pX = e.deltaX;
9485    }
9486    if (e.shiftKey && !pX) {
9487      // if user scrolls with shift he wants horizontal scroll
9488      pX = pY;
9489      pY = 0;
9490    }
9491    if ((pX || pY) && e.deltaMode) {
9492      if (e.deltaMode === 1) {
9493        // delta in LINE units
9494        pX *= LINE_HEIGHT;
9495        pY *= LINE_HEIGHT;
9496      } else {
9497        // delta in PAGE units
9498        pX *= PAGE_HEIGHT;
9499        pY *= PAGE_HEIGHT;
9500      }
9501    }
9502
9503    // Fall-back if spin cannot be determined
9504    if (pX && !sX) {
9505      sX = pX < 1 ? -1 : 1;
9506    }
9507    if (pY && !sY) {
9508      sY = pY < 1 ? -1 : 1;
9509    }
9510    return {
9511      spinX: sX,
9512      spinY: sY,
9513      pixelX: pX,
9514      pixelY: pY
9515    };
9516  }
9517  function handleMouseEnter() {
9518    if (!swiper.enabled) return;
9519    swiper.mouseEntered = true;
9520  }
9521  function handleMouseLeave() {
9522    if (!swiper.enabled) return;
9523    swiper.mouseEntered = false;
9524  }
9525  function animateSlider(newEvent) {
9526    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {
9527      // Prevent if delta of wheel scroll delta is below configured threshold
9528      return false;
9529    }
9530    if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {
9531      // Prevent if time between scrolls is below configured threshold
9532      return false;
9533    }
9534
9535    // If the movement is NOT big enough and
9536    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
9537    //   Don't go any further (avoid insignificant scroll movement).
9538    if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {
9539      // Return false as a default
9540      return true;
9541    }
9542    // If user is scrolling towards the end:
9543    //   If the slider hasn't hit the latest slide or
9544    //   if the slider is a loop and
9545    //   if the slider isn't moving right now:
9546    //     Go to next slide and
9547    //     emit a scroll event.
9548    // Else (the user is scrolling towards the beginning) and
9549    // if the slider hasn't hit the first slide or
9550    // if the slider is a loop and
9551    // if the slider isn't moving right now:
9552    //   Go to prev slide and
9553    //   emit a scroll event.
9554    if (newEvent.direction < 0) {
9555      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
9556        swiper.slideNext();
9557        emit('scroll', newEvent.raw);
9558      }
9559    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
9560      swiper.slidePrev();
9561      emit('scroll', newEvent.raw);
9562    }
9563    // If you got here is because an animation has been triggered so store the current time
9564    lastScrollTime = new window.Date().getTime();
9565    // Return false as a default
9566    return false;
9567  }
9568  function releaseScroll(newEvent) {
9569    const params = swiper.params.mousewheel;
9570    if (newEvent.direction < 0) {
9571      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
9572        // Return true to animate scroll on edges
9573        return true;
9574      }
9575    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
9576      // Return true to animate scroll on edges
9577      return true;
9578    }
9579    return false;
9580  }
9581  function handle(event) {
9582    let e = event;
9583    let disableParentSwiper = true;
9584    if (!swiper.enabled) return;
9585
9586    // Ignore event if the target or its parents have the swiper-no-mousewheel class
9587    if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;
9588    const params = swiper.params.mousewheel;
9589    if (swiper.params.cssMode) {
9590      e.preventDefault();
9591    }
9592    let targetEl = swiper.el;
9593    if (swiper.params.mousewheel.eventsTarget !== 'container') {
9594      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);
9595    }
9596    const targetElContainsTarget = targetEl && targetEl.contains(e.target);
9597    if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;
9598    if (e.originalEvent) e = e.originalEvent; // jquery fix
9599    let delta = 0;
9600    const rtlFactor = swiper.rtlTranslate ? -1 : 1;
9601    const data = normalize(e);
9602    if (params.forceToAxis) {
9603      if (swiper.isHorizontal()) {
9604        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
9605      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
9606    } else {
9607      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
9608    }
9609    if (delta === 0) return true;
9610    if (params.invert) delta = -delta;
9611
9612    // Get the scroll positions
9613    let positions = swiper.getTranslate() + delta * params.sensitivity;
9614    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();
9615    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();
9616
9617    // When loop is true:
9618    //     the disableParentSwiper will be true.
9619    // When loop is false:
9620    //     if the scroll positions is not on edge,
9621    //     then the disableParentSwiper will be true.
9622    //     if the scroll on edge positions,
9623    //     then the disableParentSwiper will be false.
9624    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());
9625    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();
9626    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {
9627      // Register the new event in a variable which stores the relevant data
9628      const newEvent = {
9629        time: now(),
9630        delta: Math.abs(delta),
9631        direction: Math.sign(delta),
9632        raw: event
9633      };
9634
9635      // Keep the most recent events
9636      if (recentWheelEvents.length >= 2) {
9637        recentWheelEvents.shift(); // only store the last N events
9638      }
9639
9640      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
9641      recentWheelEvents.push(newEvent);
9642
9643      // If there is at least one previous recorded event:
9644      //   If direction has changed or
9645      //   if the scroll is quicker than the previous one:
9646      //     Animate the slider.
9647      // Else (this is the first time the wheel is moved):
9648      //     Animate the slider.
9649      if (prevEvent) {
9650        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
9651          animateSlider(newEvent);
9652        }
9653      } else {
9654        animateSlider(newEvent);
9655      }
9656
9657      // If it's time to release the scroll:
9658      //   Return now so you don't hit the preventDefault.
9659      if (releaseScroll(newEvent)) {
9660        return true;
9661      }
9662    } else {
9663      // Freemode or scrollContainer:
9664
9665      // If we recently snapped after a momentum scroll, then ignore wheel events
9666      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
9667      // or if it's a new scroll (larger delta or inverse sign as last event before
9668      // an end-of-momentum snap).
9669      const newEvent = {
9670        time: now(),
9671        delta: Math.abs(delta),
9672        direction: Math.sign(delta)
9673      };
9674      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;
9675      if (!ignoreWheelEvents) {
9676        lastEventBeforeSnap = undefined;
9677        let position = swiper.getTranslate() + delta * params.sensitivity;
9678        const wasBeginning = swiper.isBeginning;
9679        const wasEnd = swiper.isEnd;
9680        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
9681        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
9682        swiper.setTransition(0);
9683        swiper.setTranslate(position);
9684        swiper.updateProgress();
9685        swiper.updateActiveIndex();
9686        swiper.updateSlidesClasses();
9687        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
9688          swiper.updateSlidesClasses();
9689        }
9690        if (swiper.params.loop) {
9691          swiper.loopFix({
9692            direction: newEvent.direction < 0 ? 'next' : 'prev',
9693            byMousewheel: true
9694          });
9695        }
9696        if (swiper.params.freeMode.sticky) {
9697          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
9698          // the end of a momentum scroll by storing recent (N=15?) wheel events.
9699          // 1. do all N events have decreasing or same (absolute value) delta?
9700          // 2. did all N events arrive in the last M (M=500?) msecs?
9701          // 3. does the earliest event have an (absolute value) delta that's
9702          //    at least P (P=1?) larger than the most recent event's delta?
9703          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
9704          // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
9705          // Snap immediately and ignore remaining wheel events in this scroll.
9706          // See comment above for "remaining wheel events in this scroll" determination.
9707          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
9708          clearTimeout(timeout);
9709          timeout = undefined;
9710          if (recentWheelEvents.length >= 15) {
9711            recentWheelEvents.shift(); // only store the last N events
9712          }
9713
9714          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
9715          const firstEvent = recentWheelEvents[0];
9716          recentWheelEvents.push(newEvent);
9717          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {
9718            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
9719            recentWheelEvents.splice(0);
9720          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {
9721            // We're at the end of the deceleration of a momentum scroll, so there's no need
9722            // to wait for more events. Snap ASAP on the next tick.
9723            // Also, because there's some remaining momentum we'll bias the snap in the
9724            // direction of the ongoing scroll because it's better UX for the scroll to snap
9725            // in the same direction as the scroll instead of reversing to snap.  Therefore,
9726            // if it's already scrolled more than 20% in the current direction, keep going.
9727            const snapToThreshold = delta > 0 ? 0.8 : 0.2;
9728            lastEventBeforeSnap = newEvent;
9729            recentWheelEvents.splice(0);
9730            timeout = nextTick(() => {
9731              if (swiper.destroyed || !swiper.params) return;
9732              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
9733            }, 0); // no delay; move on next tick
9734          }
9735
9736          if (!timeout) {
9737            // if we get here, then we haven't detected the end of a momentum scroll, so
9738            // we'll consider a scroll "complete" when there haven't been any wheel events
9739            // for 500ms.
9740            timeout = nextTick(() => {
9741              if (swiper.destroyed || !swiper.params) return;
9742              const snapToThreshold = 0.5;
9743              lastEventBeforeSnap = newEvent;
9744              recentWheelEvents.splice(0);
9745              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
9746            }, 500);
9747          }
9748        }
9749
9750        // Emit event
9751        if (!ignoreWheelEvents) emit('scroll', e);
9752
9753        // Stop autoplay
9754        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();
9755        // Return page scroll on edge positions
9756        if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {
9757          return true;
9758        }
9759      }
9760    }
9761    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
9762    return false;
9763  }
9764  function events(method) {
9765    let targetEl = swiper.el;
9766    if (swiper.params.mousewheel.eventsTarget !== 'container') {
9767      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);
9768    }
9769    targetEl[method]('mouseenter', handleMouseEnter);
9770    targetEl[method]('mouseleave', handleMouseLeave);
9771    targetEl[method]('wheel', handle);
9772  }
9773  function enable() {
9774    if (swiper.params.cssMode) {
9775      swiper.wrapperEl.removeEventListener('wheel', handle);
9776      return true;
9777    }
9778    if (swiper.mousewheel.enabled) return false;
9779    events('addEventListener');
9780    swiper.mousewheel.enabled = true;
9781    return true;
9782  }
9783  function disable() {
9784    if (swiper.params.cssMode) {
9785      swiper.wrapperEl.addEventListener(event, handle);
9786      return true;
9787    }
9788    if (!swiper.mousewheel.enabled) return false;
9789    events('removeEventListener');
9790    swiper.mousewheel.enabled = false;
9791    return true;
9792  }
9793  on('init', () => {
9794    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
9795      disable();
9796    }
9797    if (swiper.params.mousewheel.enabled) enable();
9798  });
9799  on('destroy', () => {
9800    if (swiper.params.cssMode) {
9801      enable();
9802    }
9803    if (swiper.mousewheel.enabled) disable();
9804  });
9805  Object.assign(swiper.mousewheel, {
9806    enable,
9807    disable
9808  });
9809}
9810
9811
9812
9813;// CONCATENATED MODULE: ./node_modules/swiper/shared/create-element-if-not-defined.mjs
9814
9815
9816function create_element_if_not_defined_createElementIfNotDefined(swiper, originalParams, params, checkProps) {
9817  if (swiper.params.createElements) {
9818    Object.keys(checkProps).forEach(key => {
9819      if (!params[key] && params.auto === true) {
9820        let element = utils_elementChildren(swiper.el, `.${checkProps[key]}`)[0];
9821        if (!element) {
9822          element = utils_createElement('div', checkProps[key]);
9823          element.className = checkProps[key];
9824          swiper.el.append(element);
9825        }
9826        params[key] = element;
9827        originalParams[key] = element;
9828      }
9829    });
9830  }
9831  return params;
9832}
9833
9834
9835
9836;// CONCATENATED MODULE: ./node_modules/swiper/modules/navigation.mjs
9837
9838
9839
9840function Navigation(_ref) {
9841  let {
9842    swiper,
9843    extendParams,
9844    on,
9845    emit
9846  } = _ref;
9847  extendParams({
9848    navigation: {
9849      nextEl: null,
9850      prevEl: null,
9851      hideOnClick: false,
9852      disabledClass: 'swiper-button-disabled',
9853      hiddenClass: 'swiper-button-hidden',
9854      lockClass: 'swiper-button-lock',
9855      navigationDisabledClass: 'swiper-navigation-disabled'
9856    }
9857  });
9858  swiper.navigation = {
9859    nextEl: null,
9860    prevEl: null
9861  };
9862  function getEl(el) {
9863    let res;
9864    if (el && typeof el === 'string' && swiper.isElement) {
9865      res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);
9866      if (res) return res;
9867    }
9868    if (el) {
9869      if (typeof el === 'string') res = [...document.querySelectorAll(el)];
9870      if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {
9871        res = swiper.el.querySelector(el);
9872      } else if (res && res.length === 1) {
9873        res = res[0];
9874      }
9875    }
9876    if (el && !res) return el;
9877    // if (Array.isArray(res) && res.length === 1) res = res[0];
9878    return res;
9879  }
9880  function toggleEl(el, disabled) {
9881    const params = swiper.params.navigation;
9882    el = utils_makeElementsArray(el);
9883    el.forEach(subEl => {
9884      if (subEl) {
9885        subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));
9886        if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;
9887        if (swiper.params.watchOverflow && swiper.enabled) {
9888          subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);
9889        }
9890      }
9891    });
9892  }
9893  function update() {
9894    // Update Navigation Buttons
9895    const {
9896      nextEl,
9897      prevEl
9898    } = swiper.navigation;
9899    if (swiper.params.loop) {
9900      toggleEl(prevEl, false);
9901      toggleEl(nextEl, false);
9902      return;
9903    }
9904    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);
9905    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);
9906  }
9907  function onPrevClick(e) {
9908    e.preventDefault();
9909    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;
9910    swiper.slidePrev();
9911    emit('navigationPrev');
9912  }
9913  function onNextClick(e) {
9914    e.preventDefault();
9915    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;
9916    swiper.slideNext();
9917    emit('navigationNext');
9918  }
9919  function init() {
9920    const params = swiper.params.navigation;
9921    swiper.params.navigation = create_element_if_not_defined_createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {
9922      nextEl: 'swiper-button-next',
9923      prevEl: 'swiper-button-prev'
9924    });
9925    if (!(params.nextEl || params.prevEl)) return;
9926    let nextEl = getEl(params.nextEl);
9927    let prevEl = getEl(params.prevEl);
9928    Object.assign(swiper.navigation, {
9929      nextEl,
9930      prevEl
9931    });
9932    nextEl = utils_makeElementsArray(nextEl);
9933    prevEl = utils_makeElementsArray(prevEl);
9934    const initButton = (el, dir) => {
9935      if (el) {
9936        el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
9937      }
9938      if (!swiper.enabled && el) {
9939        el.classList.add(...params.lockClass.split(' '));
9940      }
9941    };
9942    nextEl.forEach(el => initButton(el, 'next'));
9943    prevEl.forEach(el => initButton(el, 'prev'));
9944  }
9945  function destroy() {
9946    let {
9947      nextEl,
9948      prevEl
9949    } = swiper.navigation;
9950    nextEl = utils_makeElementsArray(nextEl);
9951    prevEl = utils_makeElementsArray(prevEl);
9952    const destroyButton = (el, dir) => {
9953      el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);
9954      el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));
9955    };
9956    nextEl.forEach(el => destroyButton(el, 'next'));
9957    prevEl.forEach(el => destroyButton(el, 'prev'));
9958  }
9959  on('init', () => {
9960    if (swiper.params.navigation.enabled === false) {
9961      // eslint-disable-next-line
9962      disable();
9963    } else {
9964      init();
9965      update();
9966    }
9967  });
9968  on('toEdge fromEdge lock unlock', () => {
9969    update();
9970  });
9971  on('destroy', () => {
9972    destroy();
9973  });
9974  on('enable disable', () => {
9975    let {
9976      nextEl,
9977      prevEl
9978    } = swiper.navigation;
9979    nextEl = utils_makeElementsArray(nextEl);
9980    prevEl = utils_makeElementsArray(prevEl);
9981    if (swiper.enabled) {
9982      update();
9983      return;
9984    }
9985    [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));
9986  });
9987  on('click', (_s, e) => {
9988    let {
9989      nextEl,
9990      prevEl
9991    } = swiper.navigation;
9992    nextEl = utils_makeElementsArray(nextEl);
9993    prevEl = utils_makeElementsArray(prevEl);
9994    const targetEl = e.target;
9995    let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);
9996    if (swiper.isElement && !targetIsButton) {
9997      const path = e.path || e.composedPath && e.composedPath();
9998      if (path) {
9999        targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));
10000      }
10001    }
10002    if (swiper.params.navigation.hideOnClick && !targetIsButton) {
10003      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;
10004      let isHidden;
10005      if (nextEl.length) {
10006        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);
10007      } else if (prevEl.length) {
10008        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);
10009      }
10010      if (isHidden === true) {
10011        emit('navigationShow');
10012      } else {
10013        emit('navigationHide');
10014      }
10015      [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));
10016    }
10017  });
10018  const enable = () => {
10019    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));
10020    init();
10021    update();
10022  };
10023  const disable = () => {
10024    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));
10025    destroy();
10026  };
10027  Object.assign(swiper.navigation, {
10028    enable,
10029    disable,
10030    update,
10031    init,
10032    destroy
10033  });
10034}
10035
10036
10037
10038;// CONCATENATED MODULE: ./node_modules/swiper/modules/pagination.mjs
10039
10040
10041
10042
10043function Pagination(_ref) {
10044  let {
10045    swiper,
10046    extendParams,
10047    on,
10048    emit
10049  } = _ref;
vendor: 8,796 bytes, lines 10049-10267
10049
10050  const pfx = 'swiper-pagination';
10051  extendParams({
10052    pagination: {
10053      el: null,
10054      bulletElement: 'span',
10055      clickable: false,
10056      hideOnClick: false,
10057      renderBullet: null,
10058      renderProgressbar: null,
10059      renderFraction: null,
10060      renderCustom: null,
10061      progressbarOpposite: false,
10062      type: 'bullets',
10063      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
10064      dynamicBullets: false,
10065      dynamicMainBullets: 1,
10066      formatFractionCurrent: number => number,
10067      formatFractionTotal: number => number,
10068      bulletClass: `${pfx}-bullet`,
10069      bulletActiveClass: `${pfx}-bullet-active`,
10070      modifierClass: `${pfx}-`,
10071      currentClass: `${pfx}-current`,
10072      totalClass: `${pfx}-total`,
10073      hiddenClass: `${pfx}-hidden`,
10074      progressbarFillClass: `${pfx}-progressbar-fill`,
10075      progressbarOppositeClass: `${pfx}-progressbar-opposite`,
10076      clickableClass: `${pfx}-clickable`,
10077      lockClass: `${pfx}-lock`,
10078      horizontalClass: `${pfx}-horizontal`,
10079      verticalClass: `${pfx}-vertical`,
10080      paginationDisabledClass: `${pfx}-disabled`
10081    }
10082  });
10083  swiper.pagination = {
10084    el: null,
10085    bullets: []
10086  };
10087  let bulletSize;
10088  let dynamicBulletIndex = 0;
10089  function isPaginationDisabled() {
10090    return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;
10091  }
10092  function setSideBullets(bulletEl, position) {
10093    const {
10094      bulletActiveClass
10095    } = swiper.params.pagination;
10096    if (!bulletEl) return;
10097    bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];
10098    if (bulletEl) {
10099      bulletEl.classList.add(`${bulletActiveClass}-${position}`);
10100      bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];
10101      if (bulletEl) {
10102        bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);
10103      }
10104    }
10105  }
10106  function getMoveDirection(prevIndex, nextIndex, length) {
10107    prevIndex = prevIndex % length;
10108    nextIndex = nextIndex % length;
10109    if (nextIndex === prevIndex + 1) {
10110      return 'next';
10111    } else if (nextIndex === prevIndex - 1) {
10112      return 'previous';
10113    }
10114    return;
10115  }
10116  function onBulletClick(e) {
10117    const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));
10118    if (!bulletEl) {
10119      return;
10120    }
10121    e.preventDefault();
10122    const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;
10123    if (swiper.params.loop) {
10124      if (swiper.realIndex === index) return;
10125      const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);
10126      if (moveDirection === 'next') {
10127        swiper.slideNext();
10128      } else if (moveDirection === 'previous') {
10129        swiper.slidePrev();
10130      } else {
10131        swiper.slideToLoop(index);
10132      }
10133    } else {
10134      swiper.slideTo(index);
10135    }
10136  }
10137  function update() {
10138    // Render || Update Pagination bullets/items
10139    const rtl = swiper.rtl;
10140    const params = swiper.params.pagination;
10141    if (isPaginationDisabled()) return;
10142    let el = swiper.pagination.el;
10143    el = makeElementsArray(el);
10144    // Current/Total
10145    let current;
10146    let previousIndex;
10147    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
10148    const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
10149    if (swiper.params.loop) {
10150      previousIndex = swiper.previousRealIndex || 0;
10151      current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;
10152    } else if (typeof swiper.snapIndex !== 'undefined') {
10153      current = swiper.snapIndex;
10154      previousIndex = swiper.previousSnapIndex;
10155    } else {
10156      previousIndex = swiper.previousIndex || 0;
10157      current = swiper.activeIndex || 0;
10158    }
10159    // Types
10160    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
10161      const bullets = swiper.pagination.bullets;
10162      let firstIndex;
10163      let lastIndex;
10164      let midIndex;
10165      if (params.dynamicBullets) {
10166        bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);
10167        el.forEach(subEl => {
10168          subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;
10169        });
10170        if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {
10171          dynamicBulletIndex += current - (previousIndex || 0);
10172          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {
10173            dynamicBulletIndex = params.dynamicMainBullets - 1;
10174          } else if (dynamicBulletIndex < 0) {
10175            dynamicBulletIndex = 0;
10176          }
10177        }
10178        firstIndex = Math.max(current - dynamicBulletIndex, 0);
10179        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
10180        midIndex = (lastIndex + firstIndex) / 2;
10181      }
10182      bullets.forEach(bulletEl => {
10183        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();
10184        bulletEl.classList.remove(...classesToRemove);
10185      });
10186      if (el.length > 1) {
10187        bullets.forEach(bullet => {
10188          const bulletIndex = elementIndex(bullet);
10189          if (bulletIndex === current) {
10190            bullet.classList.add(...params.bulletActiveClass.split(' '));
10191          } else if (swiper.isElement) {
10192            bullet.setAttribute('part', 'bullet');
10193          }
10194          if (params.dynamicBullets) {
10195            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
10196              bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));
10197            }
10198            if (bulletIndex === firstIndex) {
10199              setSideBullets(bullet, 'prev');
10200            }
10201            if (bulletIndex === lastIndex) {
10202              setSideBullets(bullet, 'next');
10203            }
10204          }
10205        });
10206      } else {
10207        const bullet = bullets[current];
10208        if (bullet) {
10209          bullet.classList.add(...params.bulletActiveClass.split(' '));
10210        }
10211        if (swiper.isElement) {
10212          bullets.forEach((bulletEl, bulletIndex) => {
10213            bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');
10214          });
10215        }
10216        if (params.dynamicBullets) {
10217          const firstDisplayedBullet = bullets[firstIndex];
10218          const lastDisplayedBullet = bullets[lastIndex];
10219          for (let i = firstIndex; i <= lastIndex; i += 1) {
10220            if (bullets[i]) {
10221              bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));
10222            }
10223          }
10224          setSideBullets(firstDisplayedBullet, 'prev');
10225          setSideBullets(lastDisplayedBullet, 'next');
10226        }
10227      }
10228      if (params.dynamicBullets) {
10229        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
10230        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;
10231        const offsetProp = rtl ? 'right' : 'left';
10232        bullets.forEach(bullet => {
10233          bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;
10234        });
10235      }
10236    }
10237    el.forEach((subEl, subElIndex) => {
10238      if (params.type === 'fraction') {
10239        subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {
10240          fractionEl.textContent = params.formatFractionCurrent(current + 1);
10241        });
10242        subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {
10243          totalEl.textContent = params.formatFractionTotal(total);
10244        });
10245      }
10246      if (params.type === 'progressbar') {
10247        let progressbarDirection;
10248        if (params.progressbarOpposite) {
10249          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
10250        } else {
10251          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
10252        }
10253        const scale = (current + 1) / total;
10254        let scaleX = 1;
10255        let scaleY = 1;
10256        if (progressbarDirection === 'horizontal') {
10257          scaleX = scale;
10258        } else {
10259          scaleY = scale;
10260        }
10261        subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {
10262          progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;
10263          progressEl.style.transitionDuration = `${swiper.params.speed}ms`;
10264        });
10265      }
10266      if (params.type === 'custom' && params.renderCustom) {
10267        s
vendor: 8,468 bytes, lines 10267-10514
10267ubEl.innerHTML = params.renderCustom(swiper, current + 1, total);
10268        if (subElIndex === 0) emit('paginationRender', subEl);
10269      } else {
10270        if (subElIndex === 0) emit('paginationRender', subEl);
10271        emit('paginationUpdate', subEl);
10272      }
10273      if (swiper.params.watchOverflow && swiper.enabled) {
10274        subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);
10275      }
10276    });
10277  }
10278  function render() {
10279    // Render Container
10280    const params = swiper.params.pagination;
10281    if (isPaginationDisabled()) return;
10282    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;
10283    let el = swiper.pagination.el;
10284    el = makeElementsArray(el);
10285    let paginationHTML = '';
10286    if (params.type === 'bullets') {
10287      let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
10288      if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {
10289        numberOfBullets = slidesLength;
10290      }
10291      for (let i = 0; i < numberOfBullets; i += 1) {
10292        if (params.renderBullet) {
10293          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
10294        } else {
10295          // prettier-ignore
10296          paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}"></${params.bulletElement}>`;
10297        }
10298      }
10299    }
10300    if (params.type === 'fraction') {
10301      if (params.renderFraction) {
10302        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
10303      } else {
10304        paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`;
10305      }
10306    }
10307    if (params.type === 'progressbar') {
10308      if (params.renderProgressbar) {
10309        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
10310      } else {
10311        paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
10312      }
10313    }
10314    swiper.pagination.bullets = [];
10315    el.forEach(subEl => {
10316      if (params.type !== 'custom') {
10317        subEl.innerHTML = paginationHTML || '';
10318      }
10319      if (params.type === 'bullets') {
10320        swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));
10321      }
10322    });
10323    if (params.type !== 'custom') {
10324      emit('paginationRender', el[0]);
10325    }
10326  }
10327  function init() {
10328    swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {
10329      el: 'swiper-pagination'
10330    });
10331    const params = swiper.params.pagination;
10332    if (!params.el) return;
10333    let el;
10334    if (typeof params.el === 'string' && swiper.isElement) {
10335      el = swiper.el.querySelector(params.el);
10336    }
10337    if (!el && typeof params.el === 'string') {
10338      el = [...document.querySelectorAll(params.el)];
10339    }
10340    if (!el) {
10341      el = params.el;
10342    }
10343    if (!el || el.length === 0) return;
10344    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {
10345      el = [...swiper.el.querySelectorAll(params.el)];
10346      // check if it belongs to another nested Swiper
10347      if (el.length > 1) {
10348        el = el.filter(subEl => {
10349          if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;
10350          return true;
10351        })[0];
10352      }
10353    }
10354    if (Array.isArray(el) && el.length === 1) el = el[0];
10355    Object.assign(swiper.pagination, {
10356      el
10357    });
10358    el = makeElementsArray(el);
10359    el.forEach(subEl => {
10360      if (params.type === 'bullets' && params.clickable) {
10361        subEl.classList.add(...(params.clickableClass || '').split(' '));
10362      }
10363      subEl.classList.add(params.modifierClass + params.type);
10364      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
10365      if (params.type === 'bullets' && params.dynamicBullets) {
10366        subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);
10367        dynamicBulletIndex = 0;
10368        if (params.dynamicMainBullets < 1) {
10369          params.dynamicMainBullets = 1;
10370        }
10371      }
10372      if (params.type === 'progressbar' && params.progressbarOpposite) {
10373        subEl.classList.add(params.progressbarOppositeClass);
10374      }
10375      if (params.clickable) {
10376        subEl.addEventListener('click', onBulletClick);
10377      }
10378      if (!swiper.enabled) {
10379        subEl.classList.add(params.lockClass);
10380      }
10381    });
10382  }
10383  function destroy() {
10384    const params = swiper.params.pagination;
10385    if (isPaginationDisabled()) return;
10386    let el = swiper.pagination.el;
10387    if (el) {
10388      el = makeElementsArray(el);
10389      el.forEach(subEl => {
10390        subEl.classList.remove(params.hiddenClass);
10391        subEl.classList.remove(params.modifierClass + params.type);
10392        subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
10393        if (params.clickable) {
10394          subEl.classList.remove(...(params.clickableClass || '').split(' '));
10395          subEl.removeEventListener('click', onBulletClick);
10396        }
10397      });
10398    }
10399    if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));
10400  }
10401  on('changeDirection', () => {
10402    if (!swiper.pagination || !swiper.pagination.el) return;
10403    const params = swiper.params.pagination;
10404    let {
10405      el
10406    } = swiper.pagination;
10407    el = makeElementsArray(el);
10408    el.forEach(subEl => {
10409      subEl.classList.remove(params.horizontalClass, params.verticalClass);
10410      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
10411    });
10412  });
10413  on('init', () => {
10414    if (swiper.params.pagination.enabled === false) {
10415      // eslint-disable-next-line
10416      disable();
10417    } else {
10418      init();
10419      render();
10420      update();
10421    }
10422  });
10423  on('activeIndexChange', () => {
10424    if (typeof swiper.snapIndex === 'undefined') {
10425      update();
10426    }
10427  });
10428  on('snapIndexChange', () => {
10429    update();
10430  });
10431  on('snapGridLengthChange', () => {
10432    render();
10433    update();
10434  });
10435  on('destroy', () => {
10436    destroy();
10437  });
10438  on('enable disable', () => {
10439    let {
10440      el
10441    } = swiper.pagination;
10442    if (el) {
10443      el = makeElementsArray(el);
10444      el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));
10445    }
10446  });
10447  on('lock unlock', () => {
10448    update();
10449  });
10450  on('click', (_s, e) => {
10451    const targetEl = e.target;
10452    const el = makeElementsArray(swiper.pagination.el);
10453    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {
10454      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
10455      const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);
10456      if (isHidden === true) {
10457        emit('paginationShow');
10458      } else {
10459        emit('paginationHide');
10460      }
10461      el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));
10462    }
10463  });
10464  const enable = () => {
10465    swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);
10466    let {
10467      el
10468    } = swiper.pagination;
10469    if (el) {
10470      el = makeElementsArray(el);
10471      el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));
10472    }
10473    init();
10474    render();
10475    update();
10476  };
10477  const disable = () => {
10478    swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);
10479    let {
10480      el
10481    } = swiper.pagination;
10482    if (el) {
10483      el = makeElementsArray(el);
10484      el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));
10485    }
10486    destroy();
10487  };
10488  Object.assign(swiper.pagination, {
10489    enable,
10490    disable,
10491    render,
10492    update,
10493    init,
10494    destroy
10495  });
10496}
10497
10498
10499
10500;// CONCATENATED MODULE: ./node_modules/swiper/modules/scrollbar.mjs
10501
10502
10503
10504
10505
10506function Scrollbar(_ref) {
10507  let {
10508    swiper,
10509    extendParams,
10510    on,
10511    emit
10512  } = _ref;
10513  const document = getDocument();
10514  let isTouched = false;
vendor: 4,705 bytes, lines 10515-10667
10515  let timeout = null;
10516  let dragTimeout = null;
10517  let dragStartPos;
10518  let dragSize;
10519  let trackSize;
10520  let divider;
10521  extendParams({
10522    scrollbar: {
10523      el: null,
10524      dragSize: 'auto',
10525      hide: false,
10526      draggable: false,
10527      snapOnRelease: true,
10528      lockClass: 'swiper-scrollbar-lock',
10529      dragClass: 'swiper-scrollbar-drag',
10530      scrollbarDisabledClass: 'swiper-scrollbar-disabled',
10531      horizontalClass: `swiper-scrollbar-horizontal`,
10532      verticalClass: `swiper-scrollbar-vertical`
10533    }
10534  });
10535  swiper.scrollbar = {
10536    el: null,
10537    dragEl: null
10538  };
10539  function setTranslate() {
10540    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
10541    const {
10542      scrollbar,
10543      rtlTranslate: rtl
10544    } = swiper;
10545    const {
10546      dragEl,
10547      el
10548    } = scrollbar;
10549    const params = swiper.params.scrollbar;
10550    const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;
10551    let newSize = dragSize;
10552    let newPos = (trackSize - dragSize) * progress;
10553    if (rtl) {
10554      newPos = -newPos;
10555      if (newPos > 0) {
10556        newSize = dragSize - newPos;
10557        newPos = 0;
10558      } else if (-newPos + dragSize > trackSize) {
10559        newSize = trackSize + newPos;
10560      }
10561    } else if (newPos < 0) {
10562      newSize = dragSize + newPos;
10563      newPos = 0;
10564    } else if (newPos + dragSize > trackSize) {
10565      newSize = trackSize - newPos;
10566    }
10567    if (swiper.isHorizontal()) {
10568      dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;
10569      dragEl.style.width = `${newSize}px`;
10570    } else {
10571      dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;
10572      dragEl.style.height = `${newSize}px`;
10573    }
10574    if (params.hide) {
10575      clearTimeout(timeout);
10576      el.style.opacity = 1;
10577      timeout = setTimeout(() => {
10578        el.style.opacity = 0;
10579        el.style.transitionDuration = '400ms';
10580      }, 1000);
10581    }
10582  }
10583  function setTransition(duration) {
10584    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
10585    swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;
10586  }
10587  function updateSize() {
10588    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
10589    const {
10590      scrollbar
10591    } = swiper;
10592    const {
10593      dragEl,
10594      el
10595    } = scrollbar;
10596    dragEl.style.width = '';
10597    dragEl.style.height = '';
10598    trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;
10599    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));
10600    if (swiper.params.scrollbar.dragSize === 'auto') {
10601      dragSize = trackSize * divider;
10602    } else {
10603      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
10604    }
10605    if (swiper.isHorizontal()) {
10606      dragEl.style.width = `${dragSize}px`;
10607    } else {
10608      dragEl.style.height = `${dragSize}px`;
10609    }
10610    if (divider >= 1) {
10611      el.style.display = 'none';
10612    } else {
10613      el.style.display = '';
10614    }
10615    if (swiper.params.scrollbar.hide) {
10616      el.style.opacity = 0;
10617    }
10618    if (swiper.params.watchOverflow && swiper.enabled) {
10619      scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);
10620    }
10621  }
10622  function getPointerPosition(e) {
10623    return swiper.isHorizontal() ? e.clientX : e.clientY;
10624  }
10625  function setDragPosition(e) {
10626    const {
10627      scrollbar,
10628      rtlTranslate: rtl
10629    } = swiper;
10630    const {
10631      el
10632    } = scrollbar;
10633    let positionRatio;
10634    positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
10635    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
10636    if (rtl) {
10637      positionRatio = 1 - positionRatio;
10638    }
10639    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
10640    swiper.updateProgress(position);
10641    swiper.setTranslate(position);
10642    swiper.updateActiveIndex();
10643    swiper.updateSlidesClasses();
10644  }
10645  function onDragStart(e) {
10646    const params = swiper.params.scrollbar;
10647    const {
10648      scrollbar,
10649      wrapperEl
10650    } = swiper;
10651    const {
10652      el,
10653      dragEl
10654    } = scrollbar;
10655    isTouched = true;
10656    dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
10657    e.preventDefault();
10658    e.stopPropagation();
10659    wrapperEl.style.transitionDuration = '100ms';
10660    dragEl.style.transitionDuration = '100ms';
10661    setDragPosition(e);
10662    clearTimeout(dragTimeout);
10663    el.style.transitionDuration = '0ms';
10664    if (params.hide) {
10665      el.style.opacity = 1;
10666    }
10667    if (swiper.params.cssMode) {
vendor: 60,298 bytes, lines 10668-12491
10668      swiper.wrapperEl.style['scroll-snap-type'] = 'none';
10669    }
10670    emit('scrollbarDragStart', e);
10671  }
10672  function onDragMove(e) {
10673    const {
10674      scrollbar,
10675      wrapperEl
10676    } = swiper;
10677    const {
10678      el,
10679      dragEl
10680    } = scrollbar;
10681    if (!isTouched) return;
10682    if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;
10683    setDragPosition(e);
10684    wrapperEl.style.transitionDuration = '0ms';
10685    el.style.transitionDuration = '0ms';
10686    dragEl.style.transitionDuration = '0ms';
10687    emit('scrollbarDragMove', e);
10688  }
10689  function onDragEnd(e) {
10690    const params = swiper.params.scrollbar;
10691    const {
10692      scrollbar,
10693      wrapperEl
10694    } = swiper;
10695    const {
10696      el
10697    } = scrollbar;
10698    if (!isTouched) return;
10699    isTouched = false;
10700    if (swiper.params.cssMode) {
10701      swiper.wrapperEl.style['scroll-snap-type'] = '';
10702      wrapperEl.style.transitionDuration = '';
10703    }
10704    if (params.hide) {
10705      clearTimeout(dragTimeout);
10706      dragTimeout = nextTick(() => {
10707        el.style.opacity = 0;
10708        el.style.transitionDuration = '400ms';
10709      }, 1000);
10710    }
10711    emit('scrollbarDragEnd', e);
10712    if (params.snapOnRelease) {
10713      swiper.slideToClosest();
10714    }
10715  }
10716  function events(method) {
10717    const {
10718      scrollbar,
10719      params
10720    } = swiper;
10721    const el = scrollbar.el;
10722    if (!el) return;
10723    const target = el;
10724    const activeListener = params.passiveListeners ? {
10725      passive: false,
10726      capture: false
10727    } : false;
10728    const passiveListener = params.passiveListeners ? {
10729      passive: true,
10730      capture: false
10731    } : false;
10732    if (!target) return;
10733    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
10734    target[eventMethod]('pointerdown', onDragStart, activeListener);
10735    document[eventMethod]('pointermove', onDragMove, activeListener);
10736    document[eventMethod]('pointerup', onDragEnd, passiveListener);
10737  }
10738  function enableDraggable() {
10739    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
10740    events('on');
10741  }
10742  function disableDraggable() {
10743    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
10744    events('off');
10745  }
10746  function init() {
10747    const {
10748      scrollbar,
10749      el: swiperEl
10750    } = swiper;
10751    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {
10752      el: 'swiper-scrollbar'
10753    });
10754    const params = swiper.params.scrollbar;
10755    if (!params.el) return;
10756    let el;
10757    if (typeof params.el === 'string' && swiper.isElement) {
10758      el = swiper.el.querySelector(params.el);
10759    }
10760    if (!el && typeof params.el === 'string') {
10761      el = document.querySelectorAll(params.el);
10762      if (!el.length) return;
10763    } else if (!el) {
10764      el = params.el;
10765    }
10766    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {
10767      el = swiperEl.querySelector(params.el);
10768    }
10769    if (el.length > 0) el = el[0];
10770    el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
10771    let dragEl;
10772    if (el) {
10773      dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));
10774      if (!dragEl) {
10775        dragEl = createElement('div', swiper.params.scrollbar.dragClass);
10776        el.append(dragEl);
10777      }
10778    }
10779    Object.assign(scrollbar, {
10780      el,
10781      dragEl
10782    });
10783    if (params.draggable) {
10784      enableDraggable();
10785    }
10786    if (el) {
10787      el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));
10788    }
10789  }
10790  function destroy() {
10791    const params = swiper.params.scrollbar;
10792    const el = swiper.scrollbar.el;
10793    if (el) {
10794      el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));
10795    }
10796    disableDraggable();
10797  }
10798  on('changeDirection', () => {
10799    if (!swiper.scrollbar || !swiper.scrollbar.el) return;
10800    const params = swiper.params.scrollbar;
10801    let {
10802      el
10803    } = swiper.scrollbar;
10804    el = makeElementsArray(el);
10805    el.forEach(subEl => {
10806      subEl.classList.remove(params.horizontalClass, params.verticalClass);
10807      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
10808    });
10809  });
10810  on('init', () => {
10811    if (swiper.params.scrollbar.enabled === false) {
10812      // eslint-disable-next-line
10813      disable();
10814    } else {
10815      init();
10816      updateSize();
10817      setTranslate();
10818    }
10819  });
10820  on('update resize observerUpdate lock unlock changeDirection', () => {
10821    updateSize();
10822  });
10823  on('setTranslate', () => {
10824    setTranslate();
10825  });
10826  on('setTransition', (_s, duration) => {
10827    setTransition(duration);
10828  });
10829  on('enable disable', () => {
10830    const {
10831      el
10832    } = swiper.scrollbar;
10833    if (el) {
10834      el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));
10835    }
10836  });
10837  on('destroy', () => {
10838    destroy();
10839  });
10840  const enable = () => {
10841    swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));
10842    if (swiper.scrollbar.el) {
10843      swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));
10844    }
10845    init();
10846    updateSize();
10847    setTranslate();
10848  };
10849  const disable = () => {
10850    swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));
10851    if (swiper.scrollbar.el) {
10852      swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));
10853    }
10854    destroy();
10855  };
10856  Object.assign(swiper.scrollbar, {
10857    enable,
10858    disable,
10859    updateSize,
10860    setTranslate,
10861    init,
10862    destroy
10863  });
10864}
10865
10866
10867
10868;// CONCATENATED MODULE: ./node_modules/swiper/modules/parallax.mjs
10869
10870
10871function Parallax(_ref) {
10872  let {
10873    swiper,
10874    extendParams,
10875    on
10876  } = _ref;
10877  extendParams({
10878    parallax: {
10879      enabled: false
10880    }
10881  });
10882  const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';
10883  const setTransform = (el, progress) => {
10884    const {
10885      rtl
10886    } = swiper;
10887    const rtlFactor = rtl ? -1 : 1;
10888    const p = el.getAttribute('data-swiper-parallax') || '0';
10889    let x = el.getAttribute('data-swiper-parallax-x');
10890    let y = el.getAttribute('data-swiper-parallax-y');
10891    const scale = el.getAttribute('data-swiper-parallax-scale');
10892    const opacity = el.getAttribute('data-swiper-parallax-opacity');
10893    const rotate = el.getAttribute('data-swiper-parallax-rotate');
10894    if (x || y) {
10895      x = x || '0';
10896      y = y || '0';
10897    } else if (swiper.isHorizontal()) {
10898      x = p;
10899      y = '0';
10900    } else {
10901      y = p;
10902      x = '0';
10903    }
10904    if (x.indexOf('%') >= 0) {
10905      x = `${parseInt(x, 10) * progress * rtlFactor}%`;
10906    } else {
10907      x = `${x * progress * rtlFactor}px`;
10908    }
10909    if (y.indexOf('%') >= 0) {
10910      y = `${parseInt(y, 10) * progress}%`;
10911    } else {
10912      y = `${y * progress}px`;
10913    }
10914    if (typeof opacity !== 'undefined' && opacity !== null) {
10915      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
10916      el.style.opacity = currentOpacity;
10917    }
10918    let transform = `translate3d(${x}, ${y}, 0px)`;
10919    if (typeof scale !== 'undefined' && scale !== null) {
10920      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
10921      transform += ` scale(${currentScale})`;
10922    }
10923    if (rotate && typeof rotate !== 'undefined' && rotate !== null) {
10924      const currentRotate = rotate * progress * -1;
10925      transform += ` rotate(${currentRotate}deg)`;
10926    }
10927    el.style.transform = transform;
10928  };
10929  const setTranslate = () => {
10930    const {
10931      el,
10932      slides,
10933      progress,
10934      snapGrid,
10935      isElement
10936    } = swiper;
10937    const elements = elementChildren(el, elementsSelector);
10938    if (swiper.isElement) {
10939      elements.push(...elementChildren(swiper.hostEl, elementsSelector));
10940    }
10941    elements.forEach(subEl => {
10942      setTransform(subEl, progress);
10943    });
10944    slides.forEach((slideEl, slideIndex) => {
10945      let slideProgress = slideEl.progress;
10946      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
10947        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
10948      }
10949      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
10950      slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {
10951        setTransform(subEl, slideProgress);
10952      });
10953    });
10954  };
10955  const setTransition = function (duration) {
10956    if (duration === void 0) {
10957      duration = swiper.params.speed;
10958    }
10959    const {
10960      el,
10961      hostEl
10962    } = swiper;
10963    const elements = [...el.querySelectorAll(elementsSelector)];
10964    if (swiper.isElement) {
10965      elements.push(...hostEl.querySelectorAll(elementsSelector));
10966    }
10967    elements.forEach(parallaxEl => {
10968      let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;
10969      if (duration === 0) parallaxDuration = 0;
10970      parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;
10971    });
10972  };
10973  on('beforeInit', () => {
10974    if (!swiper.params.parallax.enabled) return;
10975    swiper.params.watchSlidesProgress = true;
10976    swiper.originalParams.watchSlidesProgress = true;
10977  });
10978  on('init', () => {
10979    if (!swiper.params.parallax.enabled) return;
10980    setTranslate();
10981  });
10982  on('setTranslate', () => {
10983    if (!swiper.params.parallax.enabled) return;
10984    setTranslate();
10985  });
10986  on('setTransition', (_swiper, duration) => {
10987    if (!swiper.params.parallax.enabled) return;
10988    setTransition(duration);
10989  });
10990}
10991
10992
10993
10994;// CONCATENATED MODULE: ./node_modules/swiper/modules/zoom.mjs
10995
10996
10997
10998function Zoom(_ref) {
10999  let {
11000    swiper,
11001    extendParams,
11002    on,
11003    emit
11004  } = _ref;
11005  const window = getWindow();
11006  extendParams({
11007    zoom: {
11008      enabled: false,
11009      limitToOriginalSize: false,
11010      maxRatio: 3,
11011      minRatio: 1,
11012      toggle: true,
11013      containerClass: 'swiper-zoom-container',
11014      zoomedSlideClass: 'swiper-slide-zoomed'
11015    }
11016  });
11017  swiper.zoom = {
11018    enabled: false
11019  };
11020  let currentScale = 1;
11021  let isScaling = false;
11022  let fakeGestureTouched;
11023  let fakeGestureMoved;
11024  const evCache = [];
11025  const gesture = {
11026    originX: 0,
11027    originY: 0,
11028    slideEl: undefined,
11029    slideWidth: undefined,
11030    slideHeight: undefined,
11031    imageEl: undefined,
11032    imageWrapEl: undefined,
11033    maxRatio: 3
11034  };
11035  const image = {
11036    isTouched: undefined,
11037    isMoved: undefined,
11038    currentX: undefined,
11039    currentY: undefined,
11040    minX: undefined,
11041    minY: undefined,
11042    maxX: undefined,
11043    maxY: undefined,
11044    width: undefined,
11045    height: undefined,
11046    startX: undefined,
11047    startY: undefined,
11048    touchesStart: {},
11049    touchesCurrent: {}
11050  };
11051  const velocity = {
11052    x: undefined,
11053    y: undefined,
11054    prevPositionX: undefined,
11055    prevPositionY: undefined,
11056    prevTime: undefined
11057  };
11058  let scale = 1;
11059  Object.defineProperty(swiper.zoom, 'scale', {
11060    get() {
11061      return scale;
11062    },
11063    set(value) {
11064      if (scale !== value) {
11065        const imageEl = gesture.imageEl;
11066        const slideEl = gesture.slideEl;
11067        emit('zoomChange', value, imageEl, slideEl);
11068      }
11069      scale = value;
11070    }
11071  });
11072  function getDistanceBetweenTouches() {
11073    if (evCache.length < 2) return 1;
11074    const x1 = evCache[0].pageX;
11075    const y1 = evCache[0].pageY;
11076    const x2 = evCache[1].pageX;
11077    const y2 = evCache[1].pageY;
11078    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
11079    return distance;
11080  }
11081  function getMaxRatio() {
11082    const params = swiper.params.zoom;
11083    const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;
11084    if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {
11085      const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;
11086      return Math.min(imageMaxRatio, maxRatio);
11087    }
11088    return maxRatio;
11089  }
11090  function getScaleOrigin() {
11091    if (evCache.length < 2) return {
11092      x: null,
11093      y: null
11094    };
11095    const box = gesture.imageEl.getBoundingClientRect();
11096    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];
11097  }
11098  function getSlideSelector() {
11099    return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;
11100  }
11101  function eventWithinSlide(e) {
11102    const slideSelector = getSlideSelector();
11103    if (e.target.matches(slideSelector)) return true;
11104    if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;
11105    return false;
11106  }
11107  function eventWithinZoomContainer(e) {
11108    const selector = `.${swiper.params.zoom.containerClass}`;
11109    if (e.target.matches(selector)) return true;
11110    if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;
11111    return false;
11112  }
11113
11114  // Events
11115  function onGestureStart(e) {
11116    if (e.pointerType === 'mouse') {
11117      evCache.splice(0, evCache.length);
11118    }
11119    if (!eventWithinSlide(e)) return;
11120    const params = swiper.params.zoom;
11121    fakeGestureTouched = false;
11122    fakeGestureMoved = false;
11123    evCache.push(e);
11124    if (evCache.length < 2) {
11125      return;
11126    }
11127    fakeGestureTouched = true;
11128    gesture.scaleStart = getDistanceBetweenTouches();
11129    if (!gesture.slideEl) {
11130      gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
11131      if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];
11132      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
11133      if (imageEl) {
11134        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
11135      }
11136      gesture.imageEl = imageEl;
11137      if (imageEl) {
11138        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];
11139      } else {
11140        gesture.imageWrapEl = undefined;
11141      }
11142      if (!gesture.imageWrapEl) {
11143        gesture.imageEl = undefined;
11144        return;
11145      }
11146      gesture.maxRatio = getMaxRatio();
11147    }
11148    if (gesture.imageEl) {
11149      const [originX, originY] = getScaleOrigin();
11150      gesture.originX = originX;
11151      gesture.originY = originY;
11152      gesture.imageEl.style.transitionDuration = '0ms';
11153    }
11154    isScaling = true;
11155  }
11156  function onGestureChange(e) {
11157    if (!eventWithinSlide(e)) return;
11158    const params = swiper.params.zoom;
11159    const zoom = swiper.zoom;
11160    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);
11161    if (pointerIndex >= 0) evCache[pointerIndex] = e;
11162    if (evCache.length < 2) {
11163      return;
11164    }
11165    fakeGestureMoved = true;
11166    gesture.scaleMove = getDistanceBetweenTouches();
11167    if (!gesture.imageEl) {
11168      return;
11169    }
11170    zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;
11171    if (zoom.scale > gesture.maxRatio) {
11172      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;
11173    }
11174    if (zoom.scale < params.minRatio) {
11175      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;
11176    }
11177    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
11178  }
11179  function onGestureEnd(e) {
11180    if (!eventWithinSlide(e)) return;
11181    if (e.pointerType === 'mouse' && e.type === 'pointerout') return;
11182    const params = swiper.params.zoom;
11183    const zoom = swiper.zoom;
11184    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);
11185    if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);
11186    if (!fakeGestureTouched || !fakeGestureMoved) {
11187      return;
11188    }
11189    fakeGestureTouched = false;
11190    fakeGestureMoved = false;
11191    if (!gesture.imageEl) return;
11192    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
11193    gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;
11194    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
11195    currentScale = zoom.scale;
11196    isScaling = false;
11197    if (zoom.scale > 1 && gesture.slideEl) {
11198      gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);
11199    } else if (zoom.scale <= 1 && gesture.slideEl) {
11200      gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);
11201    }
11202    if (zoom.scale === 1) {
11203      gesture.originX = 0;
11204      gesture.originY = 0;
11205      gesture.slideEl = undefined;
11206    }
11207  }
11208  let allowTouchMoveTimeout;
11209  function allowTouchMove() {
11210    swiper.touchEventsData.preventTouchMoveFromPointerMove = false;
11211  }
11212  function preventTouchMove() {
11213    clearTimeout(allowTouchMoveTimeout);
11214    swiper.touchEventsData.preventTouchMoveFromPointerMove = true;
11215    allowTouchMoveTimeout = setTimeout(() => {
11216      if (swiper.destroyed) return;
11217      allowTouchMove();
11218    });
11219  }
11220  function onTouchStart(e) {
11221    const device = swiper.device;
11222    if (!gesture.imageEl) return;
11223    if (image.isTouched) return;
11224    if (device.android && e.cancelable) e.preventDefault();
11225    image.isTouched = true;
11226    const event = evCache.length > 0 ? evCache[0] : e;
11227    image.touchesStart.x = event.pageX;
11228    image.touchesStart.y = event.pageY;
11229  }
11230  function onTouchMove(e) {
11231    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {
11232      return;
11233    }
11234    const zoom = swiper.zoom;
11235    if (!gesture.imageEl) {
11236      return;
11237    }
11238    if (!image.isTouched || !gesture.slideEl) {
11239      return;
11240    }
11241    if (!image.isMoved) {
11242      image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
11243      image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
11244      image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;
11245      image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;
11246      gesture.slideWidth = gesture.slideEl.offsetWidth;
11247      gesture.slideHeight = gesture.slideEl.offsetHeight;
11248      gesture.imageWrapEl.style.transitionDuration = '0ms';
11249    }
11250    // Define if we need image drag
11251    const scaledWidth = image.width * zoom.scale;
11252    const scaledHeight = image.height * zoom.scale;
11253    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
11254    image.maxX = -image.minX;
11255    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
11256    image.maxY = -image.minY;
11257    image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;
11258    image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;
11259    const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));
11260    if (touchesDiff > 5) {
11261      swiper.allowClick = false;
11262    }
11263    if (!image.isMoved && !isScaling) {
11264      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)) {
11265        image.isTouched = false;
11266        allowTouchMove();
11267        return;
11268      }
11269      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)) {
11270        image.isTouched = false;
11271        allowTouchMove();
11272        return;
11273      }
11274    }
11275    if (e.cancelable) {
11276      e.preventDefault();
11277    }
11278    e.stopPropagation();
11279    preventTouchMove();
11280    image.isMoved = true;
11281    const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);
11282    const {
11283      originX,
11284      originY
11285    } = gesture;
11286    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);
11287    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);
11288    if (image.currentX < image.minX) {
11289      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;
11290    }
11291    if (image.currentX > image.maxX) {
11292      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;
11293    }
11294    if (image.currentY < image.minY) {
11295      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;
11296    }
11297    if (image.currentY > image.maxY) {
11298      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;
11299    }
11300
11301    // Velocity
11302    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
11303    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
11304    if (!velocity.prevTime) velocity.prevTime = Date.now();
11305    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
11306    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
11307    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
11308    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
11309    velocity.prevPositionX = image.touchesCurrent.x;
11310    velocity.prevPositionY = image.touchesCurrent.y;
11311    velocity.prevTime = Date.now();
11312    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;
11313  }
11314  function onTouchEnd() {
11315    const zoom = swiper.zoom;
11316    if (!gesture.imageEl) return;
11317    if (!image.isTouched || !image.isMoved) {
11318      image.isTouched = false;
11319      image.isMoved = false;
11320      return;
11321    }
11322    image.isTouched = false;
11323    image.isMoved = false;
11324    let momentumDurationX = 300;
11325    let momentumDurationY = 300;
11326    const momentumDistanceX = velocity.x * momentumDurationX;
11327    const newPositionX = image.currentX + momentumDistanceX;
11328    const momentumDistanceY = velocity.y * momentumDurationY;
11329    const newPositionY = image.currentY + momentumDistanceY;
11330
11331    // Fix duration
11332    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
11333    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
11334    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
11335    image.currentX = newPositionX;
11336    image.currentY = newPositionY;
11337    // Define if we need image drag
11338    const scaledWidth = image.width * zoom.scale;
11339    const scaledHeight = image.height * zoom.scale;
11340    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
11341    image.maxX = -image.minX;
11342    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
11343    image.maxY = -image.minY;
11344    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
11345    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
11346    gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;
11347    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;
11348  }
11349  function onTransitionEnd() {
11350    const zoom = swiper.zoom;
11351    if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {
11352      if (gesture.imageEl) {
11353        gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';
11354      }
11355      if (gesture.imageWrapEl) {
11356        gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';
11357      }
11358      gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);
11359      zoom.scale = 1;
11360      currentScale = 1;
11361      gesture.slideEl = undefined;
11362      gesture.imageEl = undefined;
11363      gesture.imageWrapEl = undefined;
11364      gesture.originX = 0;
11365      gesture.originY = 0;
11366    }
11367  }
11368  function zoomIn(e) {
11369    const zoom = swiper.zoom;
11370    const params = swiper.params.zoom;
11371    if (!gesture.slideEl) {
11372      if (e && e.target) {
11373        gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
11374      }
11375      if (!gesture.slideEl) {
11376        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
11377          gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];
11378        } else {
11379          gesture.slideEl = swiper.slides[swiper.activeIndex];
11380        }
11381      }
11382      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
11383      if (imageEl) {
11384        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
11385      }
11386      gesture.imageEl = imageEl;
11387      if (imageEl) {
11388        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];
11389      } else {
11390        gesture.imageWrapEl = undefined;
11391      }
11392    }
11393    if (!gesture.imageEl || !gesture.imageWrapEl) return;
11394    if (swiper.params.cssMode) {
11395      swiper.wrapperEl.style.overflow = 'hidden';
11396      swiper.wrapperEl.style.touchAction = 'none';
11397    }
11398    gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);
11399    let touchX;
11400    let touchY;
11401    let offsetX;
11402    let offsetY;
11403    let diffX;
11404    let diffY;
11405    let translateX;
11406    let translateY;
11407    let imageWidth;
11408    let imageHeight;
11409    let scaledWidth;
11410    let scaledHeight;
11411    let translateMinX;
11412    let translateMinY;
11413    let translateMaxX;
11414    let translateMaxY;
11415    let slideWidth;
11416    let slideHeight;
11417    if (typeof image.touchesStart.x === 'undefined' && e) {
11418      touchX = e.pageX;
11419      touchY = e.pageY;
11420    } else {
11421      touchX = image.touchesStart.x;
11422      touchY = image.touchesStart.y;
11423    }
11424    const forceZoomRatio = typeof e === 'number' ? e : null;
11425    if (currentScale === 1 && forceZoomRatio) {
11426      touchX = undefined;
11427      touchY = undefined;
11428      image.touchesStart.x = undefined;
11429      image.touchesStart.y = undefined;
11430    }
11431    const maxRatio = getMaxRatio();
11432    zoom.scale = forceZoomRatio || maxRatio;
11433    currentScale = forceZoomRatio || maxRatio;
11434    if (e && !(currentScale === 1 && forceZoomRatio)) {
11435      slideWidth = gesture.slideEl.offsetWidth;
11436      slideHeight = gesture.slideEl.offsetHeight;
11437      offsetX = elementOffset(gesture.slideEl).left + window.scrollX;
11438      offsetY = elementOffset(gesture.slideEl).top + window.scrollY;
11439      diffX = offsetX + slideWidth / 2 - touchX;
11440      diffY = offsetY + slideHeight / 2 - touchY;
11441      imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
11442      imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
11443      scaledWidth = imageWidth * zoom.scale;
11444      scaledHeight = imageHeight * zoom.scale;
11445      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
11446      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
11447      translateMaxX = -translateMinX;
11448      translateMaxY = -translateMinY;
11449      translateX = diffX * zoom.scale;
11450      translateY = diffY * zoom.scale;
11451      if (translateX < translateMinX) {
11452        translateX = translateMinX;
11453      }
11454      if (translateX > translateMaxX) {
11455        translateX = translateMaxX;
11456      }
11457      if (translateY < translateMinY) {
11458        translateY = translateMinY;
11459      }
11460      if (translateY > translateMaxY) {
11461        translateY = translateMaxY;
11462      }
11463    } else {
11464      translateX = 0;
11465      translateY = 0;
11466    }
11467    if (forceZoomRatio && zoom.scale === 1) {
11468      gesture.originX = 0;
11469      gesture.originY = 0;
11470    }
11471    gesture.imageWrapEl.style.transitionDuration = '300ms';
11472    gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;
11473    gesture.imageEl.style.transitionDuration = '300ms';
11474    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
11475  }
11476  function zoomOut() {
11477    const zoom = swiper.zoom;
11478    const params = swiper.params.zoom;
11479    if (!gesture.slideEl) {
11480      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
11481        gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];
11482      } else {
11483        gesture.slideEl = swiper.slides[swiper.activeIndex];
11484      }
11485      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
11486      if (imageEl) {
11487        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];
11488      }
11489      gesture.imageEl = imageEl;
11490      if (imageEl) {
11491        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];
11492      } else {
11493        gesture.imageWrapEl = undefined;
11494      }
11495    }
11496    if (!gesture.imageEl || !gesture.imageWrapEl) return;
11497    if (swiper.params.cssMode) {
11498      swiper.wrapperEl.style.overflow = '';
11499      swiper.wrapperEl.style.touchAction = '';
11500    }
11501    zoom.scale = 1;
11502    currentScale = 1;
11503    image.touchesStart.x = undefined;
11504    image.touchesStart.y = undefined;
11505    gesture.imageWrapEl.style.transitionDuration = '300ms';
11506    gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';
11507    gesture.imageEl.style.transitionDuration = '300ms';
11508    gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';
11509    gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);
11510    gesture.slideEl = undefined;
11511    gesture.originX = 0;
11512    gesture.originY = 0;
11513  }
11514
11515  // Toggle Zoom
11516  function zoomToggle(e) {
11517    const zoom = swiper.zoom;
11518    if (zoom.scale && zoom.scale !== 1) {
11519      // Zoom Out
11520      zoomOut();
11521    } else {
11522      // Zoom In
11523      zoomIn(e);
11524    }
11525  }
11526  function getListeners() {
11527    const passiveListener = swiper.params.passiveListeners ? {
11528      passive: true,
11529      capture: false
11530    } : false;
11531    const activeListenerWithCapture = swiper.params.passiveListeners ? {
11532      passive: false,
11533      capture: true
11534    } : true;
11535    return {
11536      passiveListener,
11537      activeListenerWithCapture
11538    };
11539  }
11540
11541  // Attach/Detach Events
11542  function enable() {
11543    const zoom = swiper.zoom;
11544    if (zoom.enabled) return;
11545    zoom.enabled = true;
11546    const {
11547      passiveListener,
11548      activeListenerWithCapture
11549    } = getListeners();
11550
11551    // Scale image
11552    swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);
11553    swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);
11554    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {
11555      swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);
11556    });
11557
11558    // Move image
11559    swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);
11560  }
11561  function disable() {
11562    const zoom = swiper.zoom;
11563    if (!zoom.enabled) return;
11564    zoom.enabled = false;
11565    const {
11566      passiveListener,
11567      activeListenerWithCapture
11568    } = getListeners();
11569
11570    // Scale image
11571    swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);
11572    swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);
11573    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {
11574      swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);
11575    });
11576
11577    // Move image
11578    swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);
11579  }
11580  on('init', () => {
11581    if (swiper.params.zoom.enabled) {
11582      enable();
11583    }
11584  });
11585  on('destroy', () => {
11586    disable();
11587  });
11588  on('touchStart', (_s, e) => {
11589    if (!swiper.zoom.enabled) return;
11590    onTouchStart(e);
11591  });
11592  on('touchEnd', (_s, e) => {
11593    if (!swiper.zoom.enabled) return;
11594    onTouchEnd();
11595  });
11596  on('doubleTap', (_s, e) => {
11597    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
11598      zoomToggle(e);
11599    }
11600  });
11601  on('transitionEnd', () => {
11602    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
11603      onTransitionEnd();
11604    }
11605  });
11606  on('slideChange', () => {
11607    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
11608      onTransitionEnd();
11609    }
11610  });
11611  Object.assign(swiper.zoom, {
11612    enable,
11613    disable,
11614    in: zoomIn,
11615    out: zoomOut,
11616    toggle: zoomToggle
11617  });
11618}
11619
11620
11621
11622;// CONCATENATED MODULE: ./node_modules/swiper/modules/controller.mjs
11623
11624
11625/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
11626function Controller(_ref) {
11627  let {
11628    swiper,
11629    extendParams,
11630    on
11631  } = _ref;
11632  extendParams({
11633    controller: {
11634      control: undefined,
11635      inverse: false,
11636      by: 'slide' // or 'container'
11637    }
11638  });
11639
11640  swiper.controller = {
11641    control: undefined
11642  };
11643  function LinearSpline(x, y) {
11644    const binarySearch = function search() {
11645      let maxIndex;
11646      let minIndex;
11647      let guess;
11648      return (array, val) => {
11649        minIndex = -1;
11650        maxIndex = array.length;
11651        while (maxIndex - minIndex > 1) {
11652          guess = maxIndex + minIndex >> 1;
11653          if (array[guess] <= val) {
11654            minIndex = guess;
11655          } else {
11656            maxIndex = guess;
11657          }
11658        }
11659        return maxIndex;
11660      };
11661    }();
11662    this.x = x;
11663    this.y = y;
11664    this.lastIndex = x.length - 1;
11665    // Given an x value (x2), return the expected y2 value:
11666    // (x1,y1) is the known point before given value,
11667    // (x3,y3) is the known point after given value.
11668    let i1;
11669    let i3;
11670    this.interpolate = function interpolate(x2) {
11671      if (!x2) return 0;
11672
11673      // Get the indexes of x1 and x3 (the array indexes before and after given x2):
11674      i3 = binarySearch(this.x, x2);
11675      i1 = i3 - 1;
11676
11677      // We have our indexes i1 & i3, so we can calculate already:
11678      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
11679      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
11680    };
11681    return this;
11682  }
11683  function getInterpolateFunction(c) {
11684    swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);
11685  }
11686  function setTranslate(_t, byController) {
11687    const controlled = swiper.controller.control;
11688    let multiplier;
11689    let controlledTranslate;
11690    const Swiper = swiper.constructor;
11691    function setControlledTranslate(c) {
11692      if (c.destroyed) return;
11693
11694      // this will create an Interpolate function based on the snapGrids
11695      // x is the Grid of the scrolled scroller and y will be the controlled scroller
11696      // it makes sense to create this only once and recall it for the interpolation
11697      // the function does a lot of value caching for performance
11698      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
11699      if (swiper.params.controller.by === 'slide') {
11700        getInterpolateFunction(c);
11701        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
11702        // but it did not work out
11703        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
11704      }
11705      if (!controlledTranslate || swiper.params.controller.by === 'container') {
11706        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
11707        if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {
11708          multiplier = 1;
11709        }
11710        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
11711      }
11712      if (swiper.params.controller.inverse) {
11713        controlledTranslate = c.maxTranslate() - controlledTranslate;
11714      }
11715      c.updateProgress(controlledTranslate);
11716      c.setTranslate(controlledTranslate, swiper);
11717      c.updateActiveIndex();
11718      c.updateSlidesClasses();
11719    }
11720    if (Array.isArray(controlled)) {
11721      for (let i = 0; i < controlled.length; i += 1) {
11722        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
11723          setControlledTranslate(controlled[i]);
11724        }
11725      }
11726    } else if (controlled instanceof Swiper && byController !== controlled) {
11727      setControlledTranslate(controlled);
11728    }
11729  }
11730  function setTransition(duration, byController) {
11731    const Swiper = swiper.constructor;
11732    const controlled = swiper.controller.control;
11733    let i;
11734    function setControlledTransition(c) {
11735      if (c.destroyed) return;
11736      c.setTransition(duration, swiper);
11737      if (duration !== 0) {
11738        c.transitionStart();
11739        if (c.params.autoHeight) {
11740          nextTick(() => {
11741            c.updateAutoHeight();
11742          });
11743        }
11744        elementTransitionEnd(c.wrapperEl, () => {
11745          if (!controlled) return;
11746          c.transitionEnd();
11747        });
11748      }
11749    }
11750    if (Array.isArray(controlled)) {
11751      for (i = 0; i < controlled.length; i += 1) {
11752        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
11753          setControlledTransition(controlled[i]);
11754        }
11755      }
11756    } else if (controlled instanceof Swiper && byController !== controlled) {
11757      setControlledTransition(controlled);
11758    }
11759  }
11760  function removeSpline() {
11761    if (!swiper.controller.control) return;
11762    if (swiper.controller.spline) {
11763      swiper.controller.spline = undefined;
11764      delete swiper.controller.spline;
11765    }
11766  }
11767  on('beforeInit', () => {
11768    if (typeof window !== 'undefined' && (
11769    // eslint-disable-line
11770    typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {
11771      const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];
11772      controlElements.forEach(controlElement => {
11773        if (!swiper.controller.control) swiper.controller.control = [];
11774        if (controlElement && controlElement.swiper) {
11775          swiper.controller.control.push(controlElement.swiper);
11776        } else if (controlElement) {
11777          const eventName = `${swiper.params.eventsPrefix}init`;
11778          const onControllerSwiper = e => {
11779            swiper.controller.control.push(e.detail[0]);
11780            swiper.update();
11781            controlElement.removeEventListener(eventName, onControllerSwiper);
11782          };
11783          controlElement.addEventListener(eventName, onControllerSwiper);
11784        }
11785      });
11786      return;
11787    }
11788    swiper.controller.control = swiper.params.controller.control;
11789  });
11790  on('update', () => {
11791    removeSpline();
11792  });
11793  on('resize', () => {
11794    removeSpline();
11795  });
11796  on('observerUpdate', () => {
11797    removeSpline();
11798  });
11799  on('setTranslate', (_s, translate, byController) => {
11800    if (!swiper.controller.control || swiper.controller.control.destroyed) return;
11801    swiper.controller.setTranslate(translate, byController);
11802  });
11803  on('setTransition', (_s, duration, byController) => {
11804    if (!swiper.controller.control || swiper.controller.control.destroyed) return;
11805    swiper.controller.setTransition(duration, byController);
11806  });
11807  Object.assign(swiper.controller, {
11808    setTranslate,
11809    setTransition
11810  });
11811}
11812
11813
11814
11815;// CONCATENATED MODULE: ./node_modules/swiper/modules/a11y.mjs
11816
11817
11818
11819
11820function A11y(_ref) {
11821  let {
11822    swiper,
11823    extendParams,
11824    on
11825  } = _ref;
11826  extendParams({
11827    a11y: {
11828      enabled: true,
11829      notificationClass: 'swiper-notification',
11830      prevSlideMessage: 'Previous slide',
11831      nextSlideMessage: 'Next slide',
11832      firstSlideMessage: 'This is the first slide',
11833      lastSlideMessage: 'This is the last slide',
11834      paginationBulletMessage: 'Go to slide {{index}}',
11835      slideLabelMessage: '{{index}} / {{slidesLength}}',
11836      containerMessage: null,
11837      containerRoleDescriptionMessage: null,
11838      containerRole: null,
11839      itemRoleDescriptionMessage: null,
11840      slideRole: 'group',
11841      id: null,
11842      scrollOnFocus: true
11843    }
11844  });
11845  swiper.a11y = {
11846    clicked: false
11847  };
11848  let liveRegion = null;
11849  let preventFocusHandler;
11850  let focusTargetSlideEl;
11851  let visibilityChangedTimestamp = new Date().getTime();
11852  function notify(message) {
11853    const notification = liveRegion;
11854    if (notification.length === 0) return;
11855    notification.innerHTML = '';
11856    notification.innerHTML = message;
11857  }
11858  function getRandomNumber(size) {
11859    if (size === void 0) {
11860      size = 16;
11861    }
11862    const randomChar = () => Math.round(16 * Math.random()).toString(16);
11863    return 'x'.repeat(size).replace(/x/g, randomChar);
11864  }
11865  function makeElFocusable(el) {
11866    el = makeElementsArray(el);
11867    el.forEach(subEl => {
11868      subEl.setAttribute('tabIndex', '0');
11869    });
11870  }
11871  function makeElNotFocusable(el) {
11872    el = makeElementsArray(el);
11873    el.forEach(subEl => {
11874      subEl.setAttribute('tabIndex', '-1');
11875    });
11876  }
11877  function addElRole(el, role) {
11878    el = makeElementsArray(el);
11879    el.forEach(subEl => {
11880      subEl.setAttribute('role', role);
11881    });
11882  }
11883  function addElRoleDescription(el, description) {
11884    el = makeElementsArray(el);
11885    el.forEach(subEl => {
11886      subEl.setAttribute('aria-roledescription', description);
11887    });
11888  }
11889  function addElControls(el, controls) {
11890    el = makeElementsArray(el);
11891    el.forEach(subEl => {
11892      subEl.setAttribute('aria-controls', controls);
11893    });
11894  }
11895  function addElLabel(el, label) {
11896    el = makeElementsArray(el);
11897    el.forEach(subEl => {
11898      subEl.setAttribute('aria-label', label);
11899    });
11900  }
11901  function addElId(el, id) {
11902    el = makeElementsArray(el);
11903    el.forEach(subEl => {
11904      subEl.setAttribute('id', id);
11905    });
11906  }
11907  function addElLive(el, live) {
11908    el = makeElementsArray(el);
11909    el.forEach(subEl => {
11910      subEl.setAttribute('aria-live', live);
11911    });
11912  }
11913  function disableEl(el) {
11914    el = makeElementsArray(el);
11915    el.forEach(subEl => {
11916      subEl.setAttribute('aria-disabled', true);
11917    });
11918  }
11919  function enableEl(el) {
11920    el = makeElementsArray(el);
11921    el.forEach(subEl => {
11922      subEl.setAttribute('aria-disabled', false);
11923    });
11924  }
11925  function onEnterOrSpaceKey(e) {
11926    if (e.keyCode !== 13 && e.keyCode !== 32) return;
11927    const params = swiper.params.a11y;
11928    const targetEl = e.target;
11929    if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {
11930      if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;
11931    }
11932    if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {
11933      const prevEls = makeElementsArray(swiper.navigation.prevEl);
11934      const nextEls = makeElementsArray(swiper.navigation.nextEl);
11935      if (nextEls.includes(targetEl)) {
11936        if (!(swiper.isEnd && !swiper.params.loop)) {
11937          swiper.slideNext();
11938        }
11939        if (swiper.isEnd) {
11940          notify(params.lastSlideMessage);
11941        } else {
11942          notify(params.nextSlideMessage);
11943        }
11944      }
11945      if (prevEls.includes(targetEl)) {
11946        if (!(swiper.isBeginning && !swiper.params.loop)) {
11947          swiper.slidePrev();
11948        }
11949        if (swiper.isBeginning) {
11950          notify(params.firstSlideMessage);
11951        } else {
11952          notify(params.prevSlideMessage);
11953        }
11954      }
11955    }
11956    if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {
11957      targetEl.click();
11958    }
11959  }
11960  function updateNavigation() {
11961    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;
11962    const {
11963      nextEl,
11964      prevEl
11965    } = swiper.navigation;
11966    if (prevEl) {
11967      if (swiper.isBeginning) {
11968        disableEl(prevEl);
11969        makeElNotFocusable(prevEl);
11970      } else {
11971        enableEl(prevEl);
11972        makeElFocusable(prevEl);
11973      }
11974    }
11975    if (nextEl) {
11976      if (swiper.isEnd) {
11977        disableEl(nextEl);
11978        makeElNotFocusable(nextEl);
11979      } else {
11980        enableEl(nextEl);
11981        makeElFocusable(nextEl);
11982      }
11983    }
11984  }
11985  function hasPagination() {
11986    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;
11987  }
11988  function hasClickablePagination() {
11989    return hasPagination() && swiper.params.pagination.clickable;
11990  }
11991  function updatePagination() {
11992    const params = swiper.params.a11y;
11993    if (!hasPagination()) return;
11994    swiper.pagination.bullets.forEach(bulletEl => {
11995      if (swiper.params.pagination.clickable) {
11996        makeElFocusable(bulletEl);
11997        if (!swiper.params.pagination.renderBullet) {
11998          addElRole(bulletEl, 'button');
11999          addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1));
12000        }
12001      }
12002      if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {
12003        bulletEl.setAttribute('aria-current', 'true');
12004      } else {
12005        bulletEl.removeAttribute('aria-current');
12006      }
12007    });
12008  }
12009  const initNavEl = (el, wrapperId, message) => {
12010    makeElFocusable(el);
12011    if (el.tagName !== 'BUTTON') {
12012      addElRole(el, 'button');
12013      el.addEventListener('keydown', onEnterOrSpaceKey);
12014    }
12015    addElLabel(el, message);
12016    addElControls(el, wrapperId);
12017  };
12018  const handlePointerDown = e => {
12019    if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {
12020      preventFocusHandler = true;
12021    }
12022    swiper.a11y.clicked = true;
12023  };
12024  const handlePointerUp = () => {
12025    preventFocusHandler = false;
12026    requestAnimationFrame(() => {
12027      requestAnimationFrame(() => {
12028        if (!swiper.destroyed) {
12029          swiper.a11y.clicked = false;
12030        }
12031      });
12032    });
12033  };
12034  const onVisibilityChange = e => {
12035    visibilityChangedTimestamp = new Date().getTime();
12036  };
12037  const handleFocus = e => {
12038    if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;
12039    if (new Date().getTime() - visibilityChangedTimestamp < 100) return;
12040    const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
12041    if (!slideEl || !swiper.slides.includes(slideEl)) return;
12042    focusTargetSlideEl = slideEl;
12043    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
12044    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
12045    if (isActive || isVisible) return;
12046    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
12047    if (swiper.isHorizontal()) {
12048      swiper.el.scrollLeft = 0;
12049    } else {
12050      swiper.el.scrollTop = 0;
12051    }
12052    requestAnimationFrame(() => {
12053      if (preventFocusHandler) return;
12054      if (swiper.params.loop) {
12055        swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);
12056      } else {
12057        swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
12058      }
12059      preventFocusHandler = false;
12060    });
12061  };
12062  const initSlides = () => {
12063    const params = swiper.params.a11y;
12064    if (params.itemRoleDescriptionMessage) {
12065      addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);
12066    }
12067    if (params.slideRole) {
12068      addElRole(swiper.slides, params.slideRole);
12069    }
12070    const slidesLength = swiper.slides.length;
12071    if (params.slideLabelMessage) {
12072      swiper.slides.forEach((slideEl, index) => {
12073        const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;
12074        const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength);
12075        addElLabel(slideEl, ariaLabelMessage);
12076      });
12077    }
12078  };
12079  const init = () => {
12080    const params = swiper.params.a11y;
12081    swiper.el.append(liveRegion);
12082
12083    // Container
12084    const containerEl = swiper.el;
12085    if (params.containerRoleDescriptionMessage) {
12086      addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);
12087    }
12088    if (params.containerMessage) {
12089      addElLabel(containerEl, params.containerMessage);
12090    }
12091    if (params.containerRole) {
12092      addElRole(containerEl, params.containerRole);
12093    }
12094
12095    // Wrapper
12096    const wrapperEl = swiper.wrapperEl;
12097    const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;
12098    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
12099    addElId(wrapperEl, wrapperId);
12100    addElLive(wrapperEl, live);
12101
12102    // Slide
12103    initSlides();
12104
12105    // Navigation
12106    let {
12107      nextEl,
12108      prevEl
12109    } = swiper.navigation ? swiper.navigation : {};
12110    nextEl = makeElementsArray(nextEl);
12111    prevEl = makeElementsArray(prevEl);
12112    if (nextEl) {
12113      nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));
12114    }
12115    if (prevEl) {
12116      prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));
12117    }
12118
12119    // Pagination
12120    if (hasClickablePagination()) {
12121      const paginationEl = makeElementsArray(swiper.pagination.el);
12122      paginationEl.forEach(el => {
12123        el.addEventListener('keydown', onEnterOrSpaceKey);
12124      });
12125    }
12126
12127    // Tab focus
12128    const document = getDocument();
12129    document.addEventListener('visibilitychange', onVisibilityChange);
12130    swiper.el.addEventListener('focus', handleFocus, true);
12131    swiper.el.addEventListener('focus', handleFocus, true);
12132    swiper.el.addEventListener('pointerdown', handlePointerDown, true);
12133    swiper.el.addEventListener('pointerup', handlePointerUp, true);
12134  };
12135  function destroy() {
12136    if (liveRegion) liveRegion.remove();
12137    let {
12138      nextEl,
12139      prevEl
12140    } = swiper.navigation ? swiper.navigation : {};
12141    nextEl = makeElementsArray(nextEl);
12142    prevEl = makeElementsArray(prevEl);
12143    if (nextEl) {
12144      nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));
12145    }
12146    if (prevEl) {
12147      prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));
12148    }
12149
12150    // Pagination
12151    if (hasClickablePagination()) {
12152      const paginationEl = makeElementsArray(swiper.pagination.el);
12153      paginationEl.forEach(el => {
12154        el.removeEventListener('keydown', onEnterOrSpaceKey);
12155      });
12156    }
12157    const document = getDocument();
12158    document.removeEventListener('visibilitychange', onVisibilityChange);
12159    // Tab focus
12160    if (swiper.el && typeof swiper.el !== 'string') {
12161      swiper.el.removeEventListener('focus', handleFocus, true);
12162      swiper.el.removeEventListener('pointerdown', handlePointerDown, true);
12163      swiper.el.removeEventListener('pointerup', handlePointerUp, true);
12164    }
12165  }
12166  on('beforeInit', () => {
12167    liveRegion = createElement('span', swiper.params.a11y.notificationClass);
12168    liveRegion.setAttribute('aria-live', 'assertive');
12169    liveRegion.setAttribute('aria-atomic', 'true');
12170  });
12171  on('afterInit', () => {
12172    if (!swiper.params.a11y.enabled) return;
12173    init();
12174  });
12175  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {
12176    if (!swiper.params.a11y.enabled) return;
12177    initSlides();
12178  });
12179  on('fromEdge toEdge afterInit lock unlock', () => {
12180    if (!swiper.params.a11y.enabled) return;
12181    updateNavigation();
12182  });
12183  on('paginationUpdate', () => {
12184    if (!swiper.params.a11y.enabled) return;
12185    updatePagination();
12186  });
12187  on('destroy', () => {
12188    if (!swiper.params.a11y.enabled) return;
12189    destroy();
12190  });
12191}
12192
12193
12194
12195;// CONCATENATED MODULE: ./node_modules/swiper/modules/history.mjs
12196
12197
12198function History(_ref) {
12199  let {
12200    swiper,
12201    extendParams,
12202    on
12203  } = _ref;
12204  extendParams({
12205    history: {
12206      enabled: false,
12207      root: '',
12208      replaceState: false,
12209      key: 'slides',
12210      keepQuery: false
12211    }
12212  });
12213  let initialized = false;
12214  let paths = {};
12215  const slugify = text => {
12216    return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
12217  };
12218  const getPathValues = urlOverride => {
12219    const window = getWindow();
12220    let location;
12221    if (urlOverride) {
12222      location = new URL(urlOverride);
12223    } else {
12224      location = window.location;
12225    }
12226    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');
12227    const total = pathArray.length;
12228    const key = pathArray[total - 2];
12229    const value = pathArray[total - 1];
12230    return {
12231      key,
12232      value
12233    };
12234  };
12235  const setHistory = (key, index) => {
12236    const window = getWindow();
12237    if (!initialized || !swiper.params.history.enabled) return;
12238    let location;
12239    if (swiper.params.url) {
12240      location = new URL(swiper.params.url);
12241    } else {
12242      location = window.location;
12243    }
12244    const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index];
12245    let value = slugify(slide.getAttribute('data-history'));
12246    if (swiper.params.history.root.length > 0) {
12247      let root = swiper.params.history.root;
12248      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);
12249      value = `${root}/${key ? `${key}/` : ''}${value}`;
12250    } else if (!location.pathname.includes(key)) {
12251      value = `${key ? `${key}/` : ''}${value}`;
12252    }
12253    if (swiper.params.history.keepQuery) {
12254      value += location.search;
12255    }
12256    const currentState = window.history.state;
12257    if (currentState && currentState.value === value) {
12258      return;
12259    }
12260    if (swiper.params.history.replaceState) {
12261      window.history.replaceState({
12262        value
12263      }, null, value);
12264    } else {
12265      window.history.pushState({
12266        value
12267      }, null, value);
12268    }
12269  };
12270  const scrollToSlide = (speed, value, runCallbacks) => {
12271    if (value) {
12272      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
12273        const slide = swiper.slides[i];
12274        const slideHistory = slugify(slide.getAttribute('data-history'));
12275        if (slideHistory === value) {
12276          const index = swiper.getSlideIndex(slide);
12277          swiper.slideTo(index, speed, runCallbacks);
12278        }
12279      }
12280    } else {
12281      swiper.slideTo(0, speed, runCallbacks);
12282    }
12283  };
12284  const setHistoryPopState = () => {
12285    paths = getPathValues(swiper.params.url);
12286    scrollToSlide(swiper.params.speed, paths.value, false);
12287  };
12288  const init = () => {
12289    const window = getWindow();
12290    if (!swiper.params.history) return;
12291    if (!window.history || !window.history.pushState) {
12292      swiper.params.history.enabled = false;
12293      swiper.params.hashNavigation.enabled = true;
12294      return;
12295    }
12296    initialized = true;
12297    paths = getPathValues(swiper.params.url);
12298    if (!paths.key && !paths.value) {
12299      if (!swiper.params.history.replaceState) {
12300        window.addEventListener('popstate', setHistoryPopState);
12301      }
12302      return;
12303    }
12304    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);
12305    if (!swiper.params.history.replaceState) {
12306      window.addEventListener('popstate', setHistoryPopState);
12307    }
12308  };
12309  const destroy = () => {
12310    const window = getWindow();
12311    if (!swiper.params.history.replaceState) {
12312      window.removeEventListener('popstate', setHistoryPopState);
12313    }
12314  };
12315  on('init', () => {
12316    if (swiper.params.history.enabled) {
12317      init();
12318    }
12319  });
12320  on('destroy', () => {
12321    if (swiper.params.history.enabled) {
12322      destroy();
12323    }
12324  });
12325  on('transitionEnd _freeModeNoMomentumRelease', () => {
12326    if (initialized) {
12327      setHistory(swiper.params.history.key, swiper.activeIndex);
12328    }
12329  });
12330  on('slideChange', () => {
12331    if (initialized && swiper.params.cssMode) {
12332      setHistory(swiper.params.history.key, swiper.activeIndex);
12333    }
12334  });
12335}
12336
12337
12338
12339;// CONCATENATED MODULE: ./node_modules/swiper/modules/hash-navigation.mjs
12340
12341
12342
12343function HashNavigation(_ref) {
12344  let {
12345    swiper,
12346    extendParams,
12347    emit,
12348    on
12349  } = _ref;
12350  let initialized = false;
12351  const document = getDocument();
12352  const window = getWindow();
12353  extendParams({
12354    hashNavigation: {
12355      enabled: false,
12356      replaceState: false,
12357      watchState: false,
12358      getSlideIndex(_s, hash) {
12359        if (swiper.virtual && swiper.params.virtual.enabled) {
12360          const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];
12361          if (!slideWithHash) return 0;
12362          const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);
12363          return index;
12364        }
12365        return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]);
12366      }
12367    }
12368  });
12369  const onHashChange = () => {
12370    emit('hashChange');
12371    const newHash = document.location.hash.replace('#', '');
12372    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex];
12373    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';
12374    if (newHash !== activeSlideHash) {
12375      const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);
12376      if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;
12377      swiper.slideTo(newIndex);
12378    }
12379  };
12380  const setHash = () => {
12381    if (!initialized || !swiper.params.hashNavigation.enabled) return;
12382    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex];
12383    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';
12384    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
12385      window.history.replaceState(null, null, `#${activeSlideHash}` || '');
12386      emit('hashSet');
12387    } else {
12388      document.location.hash = activeSlideHash || '';
12389      emit('hashSet');
12390    }
12391  };
12392  const init = () => {
12393    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
12394    initialized = true;
12395    const hash = document.location.hash.replace('#', '');
12396    if (hash) {
12397      const speed = 0;
12398      const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);
12399      swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);
12400    }
12401    if (swiper.params.hashNavigation.watchState) {
12402      window.addEventListener('hashchange', onHashChange);
12403    }
12404  };
12405  const destroy = () => {
12406    if (swiper.params.hashNavigation.watchState) {
12407      window.removeEventListener('hashchange', onHashChange);
12408    }
12409  };
12410  on('init', () => {
12411    if (swiper.params.hashNavigation.enabled) {
12412      init();
12413    }
12414  });
12415  on('destroy', () => {
12416    if (swiper.params.hashNavigation.enabled) {
12417      destroy();
12418    }
12419  });
12420  on('transitionEnd _freeModeNoMomentumRelease', () => {
12421    if (initialized) {
12422      setHash();
12423    }
12424  });
12425  on('slideChange', () => {
12426    if (initialized && swiper.params.cssMode) {
12427      setHash();
12428    }
12429  });
12430}
12431
12432
12433
12434;// CONCATENATED MODULE: ./node_modules/swiper/modules/autoplay.mjs
12435
12436
12437/* eslint no-underscore-dangle: "off" */
12438/* eslint no-use-before-define: "off" */
12439function Autoplay(_ref) {
12440  let {
12441    swiper,
12442    extendParams,
12443    on,
12444    emit,
12445    params
12446  } = _ref;
12447  swiper.autoplay = {
12448    running: false,
12449    paused: false,
12450    timeLeft: 0
12451  };
12452  extendParams({
12453    autoplay: {
12454      enabled: false,
12455      delay: 3000,
12456      waitForTransition: true,
12457      disableOnInteraction: false,
12458      stopOnLastSlide: false,
12459      reverseDirection: false,
12460      pauseOnMouseEnter: false
12461    }
12462  });
12463  let timeout;
12464  let raf;
12465  let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;
12466  let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;
12467  let autoplayTimeLeft;
12468  let autoplayStartTime = new Date().getTime();
12469  let wasPaused;
12470  let isTouched;
12471  let pausedByTouch;
12472  let touchStartTimeout;
12473  let slideChanged;
12474  let pausedByInteraction;
12475  let pausedByPointerEnter;
12476  function onTransitionEnd(e) {
12477    if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;
12478    if (e.target !== swiper.wrapperEl) return;
12479    swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);
12480    if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {
12481      return;
12482    }
12483    resume();
12484  }
12485  const calcTimeLeft = () => {
12486    if (swiper.destroyed || !swiper.autoplay.running) return;
12487    if (swiper.autoplay.paused) {
12488      wasPaused = true;
12489    } else if (wasPaused) {
12490      autoplayDelayCurrent = autoplayTimeLeft;
12491      wasPaused = false;
vendor: 4,189 bytes, lines 12492-12611
12492    }
12493    const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();
12494    swiper.autoplay.timeLeft = timeLeft;
12495    emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);
12496    raf = requestAnimationFrame(() => {
12497      calcTimeLeft();
12498    });
12499  };
12500  const getSlideDelay = () => {
12501    let activeSlideEl;
12502    if (swiper.virtual && swiper.params.virtual.enabled) {
12503      activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];
12504    } else {
12505      activeSlideEl = swiper.slides[swiper.activeIndex];
12506    }
12507    if (!activeSlideEl) return undefined;
12508    const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);
12509    return currentSlideDelay;
12510  };
12511  const run = delayForce => {
12512    if (swiper.destroyed || !swiper.autoplay.running) return;
12513    cancelAnimationFrame(raf);
12514    calcTimeLeft();
12515    let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;
12516    autoplayDelayTotal = swiper.params.autoplay.delay;
12517    autoplayDelayCurrent = swiper.params.autoplay.delay;
12518    const currentSlideDelay = getSlideDelay();
12519    if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {
12520      delay = currentSlideDelay;
12521      autoplayDelayTotal = currentSlideDelay;
12522      autoplayDelayCurrent = currentSlideDelay;
12523    }
12524    autoplayTimeLeft = delay;
12525    const speed = swiper.params.speed;
12526    const proceed = () => {
12527      if (!swiper || swiper.destroyed) return;
12528      if (swiper.params.autoplay.reverseDirection) {
12529        if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {
12530          swiper.slidePrev(speed, true, true);
12531          emit('autoplay');
12532        } else if (!swiper.params.autoplay.stopOnLastSlide) {
12533          swiper.slideTo(swiper.slides.length - 1, speed, true, true);
12534          emit('autoplay');
12535        }
12536      } else {
12537        if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {
12538          swiper.slideNext(speed, true, true);
12539          emit('autoplay');
12540        } else if (!swiper.params.autoplay.stopOnLastSlide) {
12541          swiper.slideTo(0, speed, true, true);
12542          emit('autoplay');
12543        }
12544      }
12545      if (swiper.params.cssMode) {
12546        autoplayStartTime = new Date().getTime();
12547        requestAnimationFrame(() => {
12548          run();
12549        });
12550      }
12551    };
12552    if (delay > 0) {
12553      clearTimeout(timeout);
12554      timeout = setTimeout(() => {
12555        proceed();
12556      }, delay);
12557    } else {
12558      requestAnimationFrame(() => {
12559        proceed();
12560      });
12561    }
12562
12563    // eslint-disable-next-line
12564    return delay;
12565  };
12566  const start = () => {
12567    autoplayStartTime = new Date().getTime();
12568    swiper.autoplay.running = true;
12569    run();
12570    emit('autoplayStart');
12571  };
12572  const stop = () => {
12573    swiper.autoplay.running = false;
12574    clearTimeout(timeout);
12575    cancelAnimationFrame(raf);
12576    emit('autoplayStop');
12577  };
12578  const pause = (internal, reset) => {
12579    if (swiper.destroyed || !swiper.autoplay.running) return;
12580    clearTimeout(timeout);
12581    if (!internal) {
12582      pausedByInteraction = true;
12583    }
12584    const proceed = () => {
12585      emit('autoplayPause');
12586      if (swiper.params.autoplay.waitForTransition) {
12587        swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);
12588      } else {
12589        resume();
12590      }
12591    };
12592    swiper.autoplay.paused = true;
12593    if (reset) {
12594      if (slideChanged) {
12595        autoplayTimeLeft = swiper.params.autoplay.delay;
12596      }
12597      slideChanged = false;
12598      proceed();
12599      return;
12600    }
12601    const delay = autoplayTimeLeft || swiper.params.autoplay.delay;
12602    autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);
12603    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;
12604    if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;
12605    proceed();
12606  };
12607  const resume = () => {
12608    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;
12609    autoplayStartTime = new Date().getTime();
12610    if (pausedByInteraction) {
12611      pausedByInteraction = false;
vendor: 45,667 bytes, lines 12612-13963
12612      run(autoplayTimeLeft);
12613    } else {
12614      run();
12615    }
12616    swiper.autoplay.paused = false;
12617    emit('autoplayResume');
12618  };
12619  const onVisibilityChange = () => {
12620    if (swiper.destroyed || !swiper.autoplay.running) return;
12621    const document = getDocument();
12622    if (document.visibilityState === 'hidden') {
12623      pausedByInteraction = true;
12624      pause(true);
12625    }
12626    if (document.visibilityState === 'visible') {
12627      resume();
12628    }
12629  };
12630  const onPointerEnter = e => {
12631    if (e.pointerType !== 'mouse') return;
12632    pausedByInteraction = true;
12633    pausedByPointerEnter = true;
12634    if (swiper.animating || swiper.autoplay.paused) return;
12635    pause(true);
12636  };
12637  const onPointerLeave = e => {
12638    if (e.pointerType !== 'mouse') return;
12639    pausedByPointerEnter = false;
12640    if (swiper.autoplay.paused) {
12641      resume();
12642    }
12643  };
12644  const attachMouseEvents = () => {
12645    if (swiper.params.autoplay.pauseOnMouseEnter) {
12646      swiper.el.addEventListener('pointerenter', onPointerEnter);
12647      swiper.el.addEventListener('pointerleave', onPointerLeave);
12648    }
12649  };
12650  const detachMouseEvents = () => {
12651    if (swiper.el && typeof swiper.el !== 'string') {
12652      swiper.el.removeEventListener('pointerenter', onPointerEnter);
12653      swiper.el.removeEventListener('pointerleave', onPointerLeave);
12654    }
12655  };
12656  const attachDocumentEvents = () => {
12657    const document = getDocument();
12658    document.addEventListener('visibilitychange', onVisibilityChange);
12659  };
12660  const detachDocumentEvents = () => {
12661    const document = getDocument();
12662    document.removeEventListener('visibilitychange', onVisibilityChange);
12663  };
12664  on('init', () => {
12665    if (swiper.params.autoplay.enabled) {
12666      attachMouseEvents();
12667      attachDocumentEvents();
12668      start();
12669    }
12670  });
12671  on('destroy', () => {
12672    detachMouseEvents();
12673    detachDocumentEvents();
12674    if (swiper.autoplay.running) {
12675      stop();
12676    }
12677  });
12678  on('_freeModeStaticRelease', () => {
12679    if (pausedByTouch || pausedByInteraction) {
12680      resume();
12681    }
12682  });
12683  on('_freeModeNoMomentumRelease', () => {
12684    if (!swiper.params.autoplay.disableOnInteraction) {
12685      pause(true, true);
12686    } else {
12687      stop();
12688    }
12689  });
12690  on('beforeTransitionStart', (_s, speed, internal) => {
12691    if (swiper.destroyed || !swiper.autoplay.running) return;
12692    if (internal || !swiper.params.autoplay.disableOnInteraction) {
12693      pause(true, true);
12694    } else {
12695      stop();
12696    }
12697  });
12698  on('sliderFirstMove', () => {
12699    if (swiper.destroyed || !swiper.autoplay.running) return;
12700    if (swiper.params.autoplay.disableOnInteraction) {
12701      stop();
12702      return;
12703    }
12704    isTouched = true;
12705    pausedByTouch = false;
12706    pausedByInteraction = false;
12707    touchStartTimeout = setTimeout(() => {
12708      pausedByInteraction = true;
12709      pausedByTouch = true;
12710      pause(true);
12711    }, 200);
12712  });
12713  on('touchEnd', () => {
12714    if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;
12715    clearTimeout(touchStartTimeout);
12716    clearTimeout(timeout);
12717    if (swiper.params.autoplay.disableOnInteraction) {
12718      pausedByTouch = false;
12719      isTouched = false;
12720      return;
12721    }
12722    if (pausedByTouch && swiper.params.cssMode) resume();
12723    pausedByTouch = false;
12724    isTouched = false;
12725  });
12726  on('slideChange', () => {
12727    if (swiper.destroyed || !swiper.autoplay.running) return;
12728    slideChanged = true;
12729  });
12730  Object.assign(swiper.autoplay, {
12731    start,
12732    stop,
12733    pause,
12734    resume
12735  });
12736}
12737
12738
12739
12740;// CONCATENATED MODULE: ./node_modules/swiper/modules/thumbs.mjs
12741
12742
12743
12744function Thumb(_ref) {
12745  let {
12746    swiper,
12747    extendParams,
12748    on
12749  } = _ref;
12750  extendParams({
12751    thumbs: {
12752      swiper: null,
12753      multipleActiveThumbs: true,
12754      autoScrollOffset: 0,
12755      slideThumbActiveClass: 'swiper-slide-thumb-active',
12756      thumbsContainerClass: 'swiper-thumbs'
12757    }
12758  });
12759  let initialized = false;
12760  let swiperCreated = false;
12761  swiper.thumbs = {
12762    swiper: null
12763  };
12764  function onThumbClick() {
12765    const thumbsSwiper = swiper.thumbs.swiper;
12766    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
12767    const clickedIndex = thumbsSwiper.clickedIndex;
12768    const clickedSlide = thumbsSwiper.clickedSlide;
12769    if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;
12770    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
12771    let slideToIndex;
12772    if (thumbsSwiper.params.loop) {
12773      slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);
12774    } else {
12775      slideToIndex = clickedIndex;
12776    }
12777    if (swiper.params.loop) {
12778      swiper.slideToLoop(slideToIndex);
12779    } else {
12780      swiper.slideTo(slideToIndex);
12781    }
12782  }
12783  function init() {
12784    const {
12785      thumbs: thumbsParams
12786    } = swiper.params;
12787    if (initialized) return false;
12788    initialized = true;
12789    const SwiperClass = swiper.constructor;
12790    if (thumbsParams.swiper instanceof SwiperClass) {
12791      swiper.thumbs.swiper = thumbsParams.swiper;
12792      Object.assign(swiper.thumbs.swiper.originalParams, {
12793        watchSlidesProgress: true,
12794        slideToClickedSlide: false
12795      });
12796      Object.assign(swiper.thumbs.swiper.params, {
12797        watchSlidesProgress: true,
12798        slideToClickedSlide: false
12799      });
12800      swiper.thumbs.swiper.update();
12801    } else if (isObject(thumbsParams.swiper)) {
12802      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);
12803      Object.assign(thumbsSwiperParams, {
12804        watchSlidesProgress: true,
12805        slideToClickedSlide: false
12806      });
12807      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);
12808      swiperCreated = true;
12809    }
12810    swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);
12811    swiper.thumbs.swiper.on('tap', onThumbClick);
12812    return true;
12813  }
12814  function update(initial) {
12815    const thumbsSwiper = swiper.thumbs.swiper;
12816    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
12817    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
12818
12819    // Activate thumbs
12820    let thumbsToActivate = 1;
12821    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
12822    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
12823      thumbsToActivate = swiper.params.slidesPerView;
12824    }
12825    if (!swiper.params.thumbs.multipleActiveThumbs) {
12826      thumbsToActivate = 1;
12827    }
12828    thumbsToActivate = Math.floor(thumbsToActivate);
12829    thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));
12830    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
12831      for (let i = 0; i < thumbsToActivate; i += 1) {
12832        elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => {
12833          slideEl.classList.add(thumbActiveClass);
12834        });
12835      }
12836    } else {
12837      for (let i = 0; i < thumbsToActivate; i += 1) {
12838        if (thumbsSwiper.slides[swiper.realIndex + i]) {
12839          thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);
12840        }
12841      }
12842    }
12843    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
12844    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
12845    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
12846      const currentThumbsIndex = thumbsSwiper.activeIndex;
12847      let newThumbsIndex;
12848      let direction;
12849      if (thumbsSwiper.params.loop) {
12850        const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];
12851        newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);
12852        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
12853      } else {
12854        newThumbsIndex = swiper.realIndex;
12855        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
12856      }
12857      if (useOffset) {
12858        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
12859      }
12860      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
12861        if (thumbsSwiper.params.centeredSlides) {
12862          if (newThumbsIndex > currentThumbsIndex) {
12863            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
12864          } else {
12865            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
12866          }
12867        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;
12868        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
12869      }
12870    }
12871  }
12872  on('beforeInit', () => {
12873    const {
12874      thumbs
12875    } = swiper.params;
12876    if (!thumbs || !thumbs.swiper) return;
12877    if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {
12878      const document = getDocument();
12879      const getThumbsElementAndInit = () => {
12880        const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;
12881        if (thumbsElement && thumbsElement.swiper) {
12882          thumbs.swiper = thumbsElement.swiper;
12883          init();
12884          update(true);
12885        } else if (thumbsElement) {
12886          const eventName = `${swiper.params.eventsPrefix}init`;
12887          const onThumbsSwiper = e => {
12888            thumbs.swiper = e.detail[0];
12889            thumbsElement.removeEventListener(eventName, onThumbsSwiper);
12890            init();
12891            update(true);
12892            thumbs.swiper.update();
12893            swiper.update();
12894          };
12895          thumbsElement.addEventListener(eventName, onThumbsSwiper);
12896        }
12897        return thumbsElement;
12898      };
12899      const watchForThumbsToAppear = () => {
12900        if (swiper.destroyed) return;
12901        const thumbsElement = getThumbsElementAndInit();
12902        if (!thumbsElement) {
12903          requestAnimationFrame(watchForThumbsToAppear);
12904        }
12905      };
12906      requestAnimationFrame(watchForThumbsToAppear);
12907    } else {
12908      init();
12909      update(true);
12910    }
12911  });
12912  on('slideChange update resize observerUpdate', () => {
12913    update();
12914  });
12915  on('setTransition', (_s, duration) => {
12916    const thumbsSwiper = swiper.thumbs.swiper;
12917    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
12918    thumbsSwiper.setTransition(duration);
12919  });
12920  on('beforeDestroy', () => {
12921    const thumbsSwiper = swiper.thumbs.swiper;
12922    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
12923    if (swiperCreated) {
12924      thumbsSwiper.destroy();
12925    }
12926  });
12927  Object.assign(swiper.thumbs, {
12928    init,
12929    update
12930  });
12931}
12932
12933
12934
12935;// CONCATENATED MODULE: ./node_modules/swiper/modules/free-mode.mjs
12936
12937
12938function freeMode(_ref) {
12939  let {
12940    swiper,
12941    extendParams,
12942    emit,
12943    once
12944  } = _ref;
12945  extendParams({
12946    freeMode: {
12947      enabled: false,
12948      momentum: true,
12949      momentumRatio: 1,
12950      momentumBounce: true,
12951      momentumBounceRatio: 1,
12952      momentumVelocityRatio: 1,
12953      sticky: false,
12954      minimumVelocity: 0.02
12955    }
12956  });
12957  function onTouchStart() {
12958    if (swiper.params.cssMode) return;
12959    const translate = swiper.getTranslate();
12960    swiper.setTranslate(translate);
12961    swiper.setTransition(0);
12962    swiper.touchEventsData.velocities.length = 0;
12963    swiper.freeMode.onTouchEnd({
12964      currentPos: swiper.rtl ? swiper.translate : -swiper.translate
12965    });
12966  }
12967  function onTouchMove() {
12968    if (swiper.params.cssMode) return;
12969    const {
12970      touchEventsData: data,
12971      touches
12972    } = swiper;
12973    // Velocity
12974    if (data.velocities.length === 0) {
12975      data.velocities.push({
12976        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
12977        time: data.touchStartTime
12978      });
12979    }
12980    data.velocities.push({
12981      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
12982      time: now()
12983    });
12984  }
12985  function onTouchEnd(_ref2) {
12986    let {
12987      currentPos
12988    } = _ref2;
12989    if (swiper.params.cssMode) return;
12990    const {
12991      params,
12992      wrapperEl,
12993      rtlTranslate: rtl,
12994      snapGrid,
12995      touchEventsData: data
12996    } = swiper;
12997    // Time diff
12998    const touchEndTime = now();
12999    const timeDiff = touchEndTime - data.touchStartTime;
13000    if (currentPos < -swiper.minTranslate()) {
13001      swiper.slideTo(swiper.activeIndex);
13002      return;
13003    }
13004    if (currentPos > -swiper.maxTranslate()) {
13005      if (swiper.slides.length < snapGrid.length) {
13006        swiper.slideTo(snapGrid.length - 1);
13007      } else {
13008        swiper.slideTo(swiper.slides.length - 1);
13009      }
13010      return;
13011    }
13012    if (params.freeMode.momentum) {
13013      if (data.velocities.length > 1) {
13014        const lastMoveEvent = data.velocities.pop();
13015        const velocityEvent = data.velocities.pop();
13016        const distance = lastMoveEvent.position - velocityEvent.position;
13017        const time = lastMoveEvent.time - velocityEvent.time;
13018        swiper.velocity = distance / time;
13019        swiper.velocity /= 2;
13020        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {
13021          swiper.velocity = 0;
13022        }
13023        // this implies that the user stopped moving a finger then released.
13024        // There would be no events with distance zero, so the last event is stale.
13025        if (time > 150 || now() - lastMoveEvent.time > 300) {
13026          swiper.velocity = 0;
13027        }
13028      } else {
13029        swiper.velocity = 0;
13030      }
13031      swiper.velocity *= params.freeMode.momentumVelocityRatio;
13032      data.velocities.length = 0;
13033      let momentumDuration = 1000 * params.freeMode.momentumRatio;
13034      const momentumDistance = swiper.velocity * momentumDuration;
13035      let newPosition = swiper.translate + momentumDistance;
13036      if (rtl) newPosition = -newPosition;
13037      let doBounce = false;
13038      let afterBouncePosition;
13039      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;
13040      let needsLoopFix;
13041      if (newPosition < swiper.maxTranslate()) {
13042        if (params.freeMode.momentumBounce) {
13043          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
13044            newPosition = swiper.maxTranslate() - bounceAmount;
13045          }
13046          afterBouncePosition = swiper.maxTranslate();
13047          doBounce = true;
13048          data.allowMomentumBounce = true;
13049        } else {
13050          newPosition = swiper.maxTranslate();
13051        }
13052        if (params.loop && params.centeredSlides) needsLoopFix = true;
13053      } else if (newPosition > swiper.minTranslate()) {
13054        if (params.freeMode.momentumBounce) {
13055          if (newPosition - swiper.minTranslate() > bounceAmount) {
13056            newPosition = swiper.minTranslate() + bounceAmount;
13057          }
13058          afterBouncePosition = swiper.minTranslate();
13059          doBounce = true;
13060          data.allowMomentumBounce = true;
13061        } else {
13062          newPosition = swiper.minTranslate();
13063        }
13064        if (params.loop && params.centeredSlides) needsLoopFix = true;
13065      } else if (params.freeMode.sticky) {
13066        let nextSlide;
13067        for (let j = 0; j < snapGrid.length; j += 1) {
13068          if (snapGrid[j] > -newPosition) {
13069            nextSlide = j;
13070            break;
13071          }
13072        }
13073        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
13074          newPosition = snapGrid[nextSlide];
13075        } else {
13076          newPosition = snapGrid[nextSlide - 1];
13077        }
13078        newPosition = -newPosition;
13079      }
13080      if (needsLoopFix) {
13081        once('transitionEnd', () => {
13082          swiper.loopFix();
13083        });
13084      }
13085      // Fix duration
13086      if (swiper.velocity !== 0) {
13087        if (rtl) {
13088          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
13089        } else {
13090          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
13091        }
13092        if (params.freeMode.sticky) {
13093          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity
13094          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
13095          // It's easy to see this when simulating touch with mouse events. To fix this,
13096          // limit single-slide swipes to the default slide duration. This also has the
13097          // nice side effect of matching slide speed if the user stopped moving before
13098          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
13099          // For faster swipes, also apply limits (albeit higher ones).
13100          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
13101          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
13102          if (moveDistance < currentSlideSize) {
13103            momentumDuration = params.speed;
13104          } else if (moveDistance < 2 * currentSlideSize) {
13105            momentumDuration = params.speed * 1.5;
13106          } else {
13107            momentumDuration = params.speed * 2.5;
13108          }
13109        }
13110      } else if (params.freeMode.sticky) {
13111        swiper.slideToClosest();
13112        return;
13113      }
13114      if (params.freeMode.momentumBounce && doBounce) {
13115        swiper.updateProgress(afterBouncePosition);
13116        swiper.setTransition(momentumDuration);
13117        swiper.setTranslate(newPosition);
13118        swiper.transitionStart(true, swiper.swipeDirection);
13119        swiper.animating = true;
13120        elementTransitionEnd(wrapperEl, () => {
13121          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
13122          emit('momentumBounce');
13123          swiper.setTransition(params.speed);
13124          setTimeout(() => {
13125            swiper.setTranslate(afterBouncePosition);
13126            elementTransitionEnd(wrapperEl, () => {
13127              if (!swiper || swiper.destroyed) return;
13128              swiper.transitionEnd();
13129            });
13130          }, 0);
13131        });
13132      } else if (swiper.velocity) {
13133        emit('_freeModeNoMomentumRelease');
13134        swiper.updateProgress(newPosition);
13135        swiper.setTransition(momentumDuration);
13136        swiper.setTranslate(newPosition);
13137        swiper.transitionStart(true, swiper.swipeDirection);
13138        if (!swiper.animating) {
13139          swiper.animating = true;
13140          elementTransitionEnd(wrapperEl, () => {
13141            if (!swiper || swiper.destroyed) return;
13142            swiper.transitionEnd();
13143          });
13144        }
13145      } else {
13146        swiper.updateProgress(newPosition);
13147      }
13148      swiper.updateActiveIndex();
13149      swiper.updateSlidesClasses();
13150    } else if (params.freeMode.sticky) {
13151      swiper.slideToClosest();
13152      return;
13153    } else if (params.freeMode) {
13154      emit('_freeModeNoMomentumRelease');
13155    }
13156    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {
13157      emit('_freeModeStaticRelease');
13158      swiper.updateProgress();
13159      swiper.updateActiveIndex();
13160      swiper.updateSlidesClasses();
13161    }
13162  }
13163  Object.assign(swiper, {
13164    freeMode: {
13165      onTouchStart,
13166      onTouchMove,
13167      onTouchEnd
13168    }
13169  });
13170}
13171
13172
13173
13174;// CONCATENATED MODULE: ./node_modules/swiper/shared/effect-target.mjs
13175
13176
13177function effect_target_effectTarget(effectParams, slideEl) {
13178  const transformEl = getSlideTransformEl(slideEl);
13179  if (transformEl !== slideEl) {
13180    transformEl.style.backfaceVisibility = 'hidden';
13181    transformEl.style['-webkit-backface-visibility'] = 'hidden';
13182  }
13183  return transformEl;
13184}
13185
13186
13187
13188;// CONCATENATED MODULE: ./node_modules/swiper/shared/effect-virtual-transition-end.mjs
13189
13190
13191function effect_virtual_transition_end_effectVirtualTransitionEnd(_ref) {
13192  let {
13193    swiper,
13194    duration,
13195    transformElements,
13196    allSlides
13197  } = _ref;
13198  const {
13199    activeIndex
13200  } = swiper;
13201  const getSlide = el => {
13202    if (!el.parentElement) {
13203      // assume shadow root
13204      const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];
13205      return slide;
13206    }
13207    return el.parentElement;
13208  };
13209  if (swiper.params.virtualTranslate && duration !== 0) {
13210    let eventTriggered = false;
13211    let transitionEndTarget;
13212    if (allSlides) {
13213      transitionEndTarget = transformElements;
13214    } else {
13215      transitionEndTarget = transformElements.filter(transformEl => {
13216        const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;
13217        return swiper.getSlideIndex(el) === activeIndex;
13218      });
13219    }
13220    transitionEndTarget.forEach(el => {
13221      elementTransitionEnd(el, () => {
13222        if (eventTriggered) return;
13223        if (!swiper || swiper.destroyed) return;
13224        eventTriggered = true;
13225        swiper.animating = false;
13226        const evt = new window.CustomEvent('transitionend', {
13227          bubbles: true,
13228          cancelable: true
13229        });
13230        swiper.wrapperEl.dispatchEvent(evt);
13231      });
13232    });
13233  }
13234}
13235
13236
13237
13238;// CONCATENATED MODULE: ./node_modules/swiper/modules/effect-fade.mjs
13239
13240
13241
13242
13243
13244function EffectFade(_ref) {
13245  let {
13246    swiper,
13247    extendParams,
13248    on
13249  } = _ref;
13250  extendParams({
13251    fadeEffect: {
13252      crossFade: false
13253    }
13254  });
13255  const setTranslate = () => {
13256    const {
13257      slides
13258    } = swiper;
13259    const params = swiper.params.fadeEffect;
13260    for (let i = 0; i < slides.length; i += 1) {
13261      const slideEl = swiper.slides[i];
13262      const offset = slideEl.swiperSlideOffset;
13263      let tx = -offset;
13264      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
13265      let ty = 0;
13266      if (!swiper.isHorizontal()) {
13267        ty = tx;
13268        tx = 0;
13269      }
13270      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);
13271      const targetEl = effectTarget(params, slideEl);
13272      targetEl.style.opacity = slideOpacity;
13273      targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;
13274    }
13275  };
13276  const setTransition = duration => {
13277    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));
13278    transformElements.forEach(el => {
13279      el.style.transitionDuration = `${duration}ms`;
13280    });
13281    effectVirtualTransitionEnd({
13282      swiper,
13283      duration,
13284      transformElements,
13285      allSlides: true
13286    });
13287  };
13288  effectInit({
13289    effect: 'fade',
13290    swiper,
13291    on,
13292    setTranslate,
13293    setTransition,
13294    overwriteParams: () => ({
13295      slidesPerView: 1,
13296      slidesPerGroup: 1,
13297      watchSlidesProgress: true,
13298      spaceBetween: 0,
13299      virtualTranslate: !swiper.params.cssMode
13300    })
13301  });
13302}
13303
13304
13305
13306;// CONCATENATED MODULE: ./node_modules/swiper/modules/effect-cube.mjs
13307
13308
13309
13310function EffectCube(_ref) {
13311  let {
13312    swiper,
13313    extendParams,
13314    on
13315  } = _ref;
13316  extendParams({
13317    cubeEffect: {
13318      slideShadows: true,
13319      shadow: true,
13320      shadowOffset: 20,
13321      shadowScale: 0.94
13322    }
13323  });
13324  const createSlideShadows = (slideEl, progress, isHorizontal) => {
13325    let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
13326    let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
13327    if (!shadowBefore) {
13328      shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));
13329      slideEl.append(shadowBefore);
13330    }
13331    if (!shadowAfter) {
13332      shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));
13333      slideEl.append(shadowAfter);
13334    }
13335    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);
13336    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);
13337  };
13338  const recreateShadows = () => {
13339    // create new ones
13340    const isHorizontal = swiper.isHorizontal();
13341    swiper.slides.forEach(slideEl => {
13342      const progress = Math.max(Math.min(slideEl.progress, 1), -1);
13343      createSlideShadows(slideEl, progress, isHorizontal);
13344    });
13345  };
13346  const setTranslate = () => {
13347    const {
13348      el,
13349      wrapperEl,
13350      slides,
13351      width: swiperWidth,
13352      height: swiperHeight,
13353      rtlTranslate: rtl,
13354      size: swiperSize,
13355      browser
13356    } = swiper;
13357    const r = getRotateFix(swiper);
13358    const params = swiper.params.cubeEffect;
13359    const isHorizontal = swiper.isHorizontal();
13360    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
13361    let wrapperRotate = 0;
13362    let cubeShadowEl;
13363    if (params.shadow) {
13364      if (isHorizontal) {
13365        cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');
13366        if (!cubeShadowEl) {
13367          cubeShadowEl = createElement('div', 'swiper-cube-shadow');
13368          swiper.wrapperEl.append(cubeShadowEl);
13369        }
13370        cubeShadowEl.style.height = `${swiperWidth}px`;
13371      } else {
13372        cubeShadowEl = el.querySelector('.swiper-cube-shadow');
13373        if (!cubeShadowEl) {
13374          cubeShadowEl = createElement('div', 'swiper-cube-shadow');
13375          el.append(cubeShadowEl);
13376        }
13377      }
13378    }
13379    for (let i = 0; i < slides.length; i += 1) {
13380      const slideEl = slides[i];
13381      let slideIndex = i;
13382      if (isVirtual) {
13383        slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);
13384      }
13385      let slideAngle = slideIndex * 90;
13386      let round = Math.floor(slideAngle / 360);
13387      if (rtl) {
13388        slideAngle = -slideAngle;
13389        round = Math.floor(-slideAngle / 360);
13390      }
13391      const progress = Math.max(Math.min(slideEl.progress, 1), -1);
13392      let tx = 0;
13393      let ty = 0;
13394      let tz = 0;
13395      if (slideIndex % 4 === 0) {
13396        tx = -round * 4 * swiperSize;
13397        tz = 0;
13398      } else if ((slideIndex - 1) % 4 === 0) {
13399        tx = 0;
13400        tz = -round * 4 * swiperSize;
13401      } else if ((slideIndex - 2) % 4 === 0) {
13402        tx = swiperSize + round * 4 * swiperSize;
13403        tz = swiperSize;
13404      } else if ((slideIndex - 3) % 4 === 0) {
13405        tx = -swiperSize;
13406        tz = 3 * swiperSize + swiperSize * 4 * round;
13407      }
13408      if (rtl) {
13409        tx = -tx;
13410      }
13411      if (!isHorizontal) {
13412        ty = tx;
13413        tx = 0;
13414      }
13415      const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
13416      if (progress <= 1 && progress > -1) {
13417        wrapperRotate = slideIndex * 90 + progress * 90;
13418        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
13419      }
13420      slideEl.style.transform = transform;
13421      if (params.slideShadows) {
13422        createSlideShadows(slideEl, progress, isHorizontal);
13423      }
13424    }
13425    wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;
13426    wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;
13427    if (params.shadow) {
13428      if (isHorizontal) {
13429        cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;
13430      } else {
13431        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
13432        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
13433        const scale1 = params.shadowScale;
13434        const scale2 = params.shadowScale / multiplier;
13435        const offset = params.shadowOffset;
13436        cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;
13437      }
13438    }
13439    const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;
13440    wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;
13441    wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);
13442  };
13443  const setTransition = duration => {
13444    const {
13445      el,
13446      slides
13447    } = swiper;
13448    slides.forEach(slideEl => {
13449      slideEl.style.transitionDuration = `${duration}ms`;
13450      slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {
13451        subEl.style.transitionDuration = `${duration}ms`;
13452      });
13453    });
13454    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
13455      const shadowEl = el.querySelector('.swiper-cube-shadow');
13456      if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;
13457    }
13458  };
13459  effectInit({
13460    effect: 'cube',
13461    swiper,
13462    on,
13463    setTranslate,
13464    setTransition,
13465    recreateShadows,
13466    getEffectParams: () => swiper.params.cubeEffect,
13467    perspective: () => true,
13468    overwriteParams: () => ({
13469      slidesPerView: 1,
13470      slidesPerGroup: 1,
13471      watchSlidesProgress: true,
13472      resistanceRatio: 0,
13473      spaceBetween: 0,
13474      centeredSlides: false,
13475      virtualTranslate: true
13476    })
13477  });
13478}
13479
13480
13481
13482;// CONCATENATED MODULE: ./node_modules/swiper/shared/create-shadow.mjs
13483
13484
13485function create_shadow_createShadow(suffix, slideEl, side) {
13486  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;
13487  const shadowContainer = getSlideTransformEl(slideEl);
13488  let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);
13489  if (!shadowEl) {
13490    shadowEl = createElement('div', shadowClass.split(' '));
13491    shadowContainer.append(shadowEl);
13492  }
13493  return shadowEl;
13494}
13495
13496
13497
13498;// CONCATENATED MODULE: ./node_modules/swiper/modules/effect-flip.mjs
13499
13500
13501
13502
13503
13504
13505function EffectFlip(_ref) {
13506  let {
13507    swiper,
13508    extendParams,
13509    on
13510  } = _ref;
13511  extendParams({
13512    flipEffect: {
13513      slideShadows: true,
13514      limitRotation: true
13515    }
13516  });
13517  const createSlideShadows = (slideEl, progress) => {
13518    let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
13519    let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
13520    if (!shadowBefore) {
13521      shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');
13522    }
13523    if (!shadowAfter) {
13524      shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');
13525    }
13526    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);
13527    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);
13528  };
13529  const recreateShadows = () => {
13530    // Set shadows
13531    swiper.params.flipEffect;
13532    swiper.slides.forEach(slideEl => {
13533      let progress = slideEl.progress;
13534      if (swiper.params.flipEffect.limitRotation) {
13535        progress = Math.max(Math.min(slideEl.progress, 1), -1);
13536      }
13537      createSlideShadows(slideEl, progress);
13538    });
13539  };
13540  const setTranslate = () => {
13541    const {
13542      slides,
13543      rtlTranslate: rtl
13544    } = swiper;
13545    const params = swiper.params.flipEffect;
13546    const rotateFix = getRotateFix(swiper);
13547    for (let i = 0; i < slides.length; i += 1) {
13548      const slideEl = slides[i];
13549      let progress = slideEl.progress;
13550      if (swiper.params.flipEffect.limitRotation) {
13551        progress = Math.max(Math.min(slideEl.progress, 1), -1);
13552      }
13553      const offset = slideEl.swiperSlideOffset;
13554      const rotate = -180 * progress;
13555      let rotateY = rotate;
13556      let rotateX = 0;
13557      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;
13558      let ty = 0;
13559      if (!swiper.isHorizontal()) {
13560        ty = tx;
13561        tx = 0;
13562        rotateX = -rotateY;
13563        rotateY = 0;
13564      } else if (rtl) {
13565        rotateY = -rotateY;
13566      }
13567      slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
13568      if (params.slideShadows) {
13569        createSlideShadows(slideEl, progress);
13570      }
13571      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;
13572      const targetEl = effectTarget(params, slideEl);
13573      targetEl.style.transform = transform;
13574    }
13575  };
13576  const setTransition = duration => {
13577    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));
13578    transformElements.forEach(el => {
13579      el.style.transitionDuration = `${duration}ms`;
13580      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {
13581        shadowEl.style.transitionDuration = `${duration}ms`;
13582      });
13583    });
13584    effectVirtualTransitionEnd({
13585      swiper,
13586      duration,
13587      transformElements
13588    });
13589  };
13590  effectInit({
13591    effect: 'flip',
13592    swiper,
13593    on,
13594    setTranslate,
13595    setTransition,
13596    recreateShadows,
13597    getEffectParams: () => swiper.params.flipEffect,
13598    perspective: () => true,
13599    overwriteParams: () => ({
13600      slidesPerView: 1,
13601      slidesPerGroup: 1,
13602      watchSlidesProgress: true,
13603      spaceBetween: 0,
13604      virtualTranslate: !swiper.params.cssMode
13605    })
13606  });
13607}
13608
13609
13610
13611;// CONCATENATED MODULE: ./node_modules/swiper/modules/effect-coverflow.mjs
13612
13613
13614
13615
13616
13617function EffectCoverflow(_ref) {
13618  let {
13619    swiper,
13620    extendParams,
13621    on
13622  } = _ref;
13623  extendParams({
13624    coverflowEffect: {
13625      rotate: 50,
13626      stretch: 0,
13627      depth: 100,
13628      scale: 1,
13629      modifier: 1,
13630      slideShadows: true
13631    }
13632  });
13633  const setTranslate = () => {
13634    const {
13635      width: swiperWidth,
13636      height: swiperHeight,
13637      slides,
13638      slidesSizesGrid
13639    } = swiper;
13640    const params = swiper.params.coverflowEffect;
13641    const isHorizontal = swiper.isHorizontal();
13642    const transform = swiper.translate;
13643    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
13644    const rotate = isHorizontal ? params.rotate : -params.rotate;
13645    const translate = params.depth;
13646    const r = getRotateFix(swiper);
13647    // Each slide offset from center
13648    for (let i = 0, length = slides.length; i < length; i += 1) {
13649      const slideEl = slides[i];
13650      const slideSize = slidesSizesGrid[i];
13651      const slideOffset = slideEl.swiperSlideOffset;
13652      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;
13653      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;
13654      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
13655      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
13656      // var rotateZ = 0
13657      let translateZ = -translate * Math.abs(offsetMultiplier);
13658      let stretch = params.stretch;
13659      // Allow percentage to make a relative stretch for responsive sliders
13660      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
13661        stretch = parseFloat(params.stretch) / 100 * slideSize;
13662      }
13663      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
13664      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;
13665      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);
13666
13667      // Fix for ultra small values
13668      if (Math.abs(translateX) < 0.001) translateX = 0;
13669      if (Math.abs(translateY) < 0.001) translateY = 0;
13670      if (Math.abs(translateZ) < 0.001) translateZ = 0;
13671      if (Math.abs(rotateY) < 0.001) rotateY = 0;
13672      if (Math.abs(rotateX) < 0.001) rotateX = 0;
13673      if (Math.abs(scale) < 0.001) scale = 0;
13674      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;
13675      const targetEl = effectTarget(params, slideEl);
13676      targetEl.style.transform = slideTransform;
13677      slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
13678      if (params.slideShadows) {
13679        // Set shadows
13680        let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');
13681        let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');
13682        if (!shadowBeforeEl) {
13683          shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');
13684        }
13685        if (!shadowAfterEl) {
13686          shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');
13687        }
13688        if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
13689        if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
13690      }
13691    }
13692  };
13693  const setTransition = duration => {
13694    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));
13695    transformElements.forEach(el => {
13696      el.style.transitionDuration = `${duration}ms`;
13697      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {
13698        shadowEl.style.transitionDuration = `${duration}ms`;
13699      });
13700    });
13701  };
13702  effectInit({
13703    effect: 'coverflow',
13704    swiper,
13705    on,
13706    setTranslate,
13707    setTransition,
13708    perspective: () => true,
13709    overwriteParams: () => ({
13710      watchSlidesProgress: true
13711    })
13712  });
13713}
13714
13715
13716
13717;// CONCATENATED MODULE: ./node_modules/swiper/modules/effect-creative.mjs
13718
13719
13720
13721
13722
13723
13724function EffectCreative(_ref) {
13725  let {
13726    swiper,
13727    extendParams,
13728    on
13729  } = _ref;
13730  extendParams({
13731    creativeEffect: {
13732      limitProgress: 1,
13733      shadowPerProgress: false,
13734      progressMultiplier: 1,
13735      perspective: true,
13736      prev: {
13737        translate: [0, 0, 0],
13738        rotate: [0, 0, 0],
13739        opacity: 1,
13740        scale: 1
13741      },
13742      next: {
13743        translate: [0, 0, 0],
13744        rotate: [0, 0, 0],
13745        opacity: 1,
13746        scale: 1
13747      }
13748    }
13749  });
13750  const getTranslateValue = value => {
13751    if (typeof value === 'string') return value;
13752    return `${value}px`;
13753  };
13754  const setTranslate = () => {
13755    const {
13756      slides,
13757      wrapperEl,
13758      slidesSizesGrid
13759    } = swiper;
13760    const params = swiper.params.creativeEffect;
13761    const {
13762      progressMultiplier: multiplier
13763    } = params;
13764    const isCenteredSlides = swiper.params.centeredSlides;
13765    const rotateFix = getRotateFix(swiper);
13766    if (isCenteredSlides) {
13767      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;
13768      wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;
13769    }
13770    for (let i = 0; i < slides.length; i += 1) {
13771      const slideEl = slides[i];
13772      const slideProgress = slideEl.progress;
13773      const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);
13774      let originalProgress = progress;
13775      if (!isCenteredSlides) {
13776        originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);
13777      }
13778      const offset = slideEl.swiperSlideOffset;
13779      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];
13780      const r = [0, 0, 0];
13781      let custom = false;
13782      if (!swiper.isHorizontal()) {
13783        t[1] = t[0];
13784        t[0] = 0;
13785      }
13786      let data = {
13787        translate: [0, 0, 0],
13788        rotate: [0, 0, 0],
13789        scale: 1,
13790        opacity: 1
13791      };
13792      if (progress < 0) {
13793        data = params.next;
13794        custom = true;
13795      } else if (progress > 0) {
13796        data = params.prev;
13797        custom = true;
13798      }
13799      // set translate
13800      t.forEach((value, index) => {
13801        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;
13802      });
13803      // set rotates
13804      r.forEach((value, index) => {
13805        let val = data.rotate[index] * Math.abs(progress * multiplier);
13806        r[index] = val;
13807      });
13808      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
13809      const translateString = t.join(', ');
13810      const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;
13811      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;
13812      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;
13813      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;
13814
13815      // Set shadows
13816      if (custom && data.shadow || !custom) {
13817        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');
13818        if (!shadowEl && data.shadow) {
13819          shadowEl = createShadow('creative', slideEl);
13820        }
13821        if (shadowEl) {
13822          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;
13823          shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);
13824        }
13825      }
13826      const targetEl = effectTarget(params, slideEl);
13827      targetEl.style.transform = transform;
13828      targetEl.style.opacity = opacityString;
13829      if (data.origin) {
13830        targetEl.style.transformOrigin = data.origin;
13831      }
13832    }
13833  };
13834  const setTransition = duration => {
13835    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));
13836    transformElements.forEach(el => {
13837      el.style.transitionDuration = `${duration}ms`;
13838      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {
13839        shadowEl.style.transitionDuration = `${duration}ms`;
13840      });
13841    });
13842    effectVirtualTransitionEnd({
13843      swiper,
13844      duration,
13845      transformElements,
13846      allSlides: true
13847    });
13848  };
13849  effectInit({
13850    effect: 'creative',
13851    swiper,
13852    on,
13853    setTranslate,
13854    setTransition,
13855    perspective: () => swiper.params.creativeEffect.perspective,
13856    overwriteParams: () => ({
13857      watchSlidesProgress: true,
13858      virtualTranslate: !swiper.params.cssMode
13859    })
13860  });
13861}
13862
13863
13864
13865;// CONCATENATED MODULE: ./node_modules/swiper/modules/effect-cards.mjs
13866
13867
13868
13869
13870
13871
13872function EffectCards(_ref) {
13873  let {
13874    swiper,
13875    extendParams,
13876    on
13877  } = _ref;
13878  extendParams({
13879    cardsEffect: {
13880      slideShadows: true,
13881      rotate: true,
13882      perSlideRotate: 2,
13883      perSlideOffset: 8
13884    }
13885  });
13886  const setTranslate = () => {
13887    const {
13888      slides,
13889      activeIndex,
13890      rtlTranslate: rtl
13891    } = swiper;
13892    const params = swiper.params.cardsEffect;
13893    const {
13894      startTranslate,
13895      isTouched
13896    } = swiper.touchEventsData;
13897    const currentTranslate = rtl ? -swiper.translate : swiper.translate;
13898    for (let i = 0; i < slides.length; i += 1) {
13899      const slideEl = slides[i];
13900      const slideProgress = slideEl.progress;
13901      const progress = Math.min(Math.max(slideProgress, -4), 4);
13902      let offset = slideEl.swiperSlideOffset;
13903      if (swiper.params.centeredSlides && !swiper.params.cssMode) {
13904        swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;
13905      }
13906      if (swiper.params.centeredSlides && swiper.params.cssMode) {
13907        offset -= slides[0].swiperSlideOffset;
13908      }
13909      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;
13910      let tY = 0;
13911      const tZ = -100 * Math.abs(progress);
13912      let scale = 1;
13913      let rotate = -params.perSlideRotate * progress;
13914      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;
13915      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;
13916      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;
13917      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;
13918      if (isSwipeToNext || isSwipeToPrev) {
13919        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;
13920        rotate += -28 * progress * subProgress;
13921        scale += -0.5 * subProgress;
13922        tXAdd += 96 * subProgress;
13923        tY = `${-25 * subProgress * Math.abs(progress)}%`;
13924      }
13925      if (progress < 0) {
13926        // next
13927        tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;
13928      } else if (progress > 0) {
13929        // prev
13930        tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;
13931      } else {
13932        tX = `${tX}px`;
13933      }
13934      if (!swiper.isHorizontal()) {
13935        const prevY = tY;
13936        tY = tX;
13937        tX = prevY;
13938      }
13939      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;
13940
13941      /* eslint-disable */
13942      const transform = `
13943        translate3d(${tX}, ${tY}, ${tZ}px)
13944        rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)
13945        scale(${scaleString})
13946      `;
13947      /* eslint-enable */
13948
13949      if (params.slideShadows) {
13950        // Set shadows
13951        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');
13952        if (!shadowEl) {
13953          shadowEl = createShadow('cards', slideEl);
13954        }
13955        if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);
13956      }
13957      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
13958      const targetEl = effectTarget(params, slideEl);
13959      targetEl.style.transform = transform;
13960    }
13961  };
13962  const setTransition = duration => {
13963    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));
13964    transformElements.forEach(el => {
13965      el.style.transitionDuration = `${duration}ms`;
13966      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {
13967        shadowEl.style.transitionDuration = `${duration}ms`;
13968      });
13969    });
13970    effectVirtualTransitionEnd({
13971      swiper,
13972      duration,
13973      transformElements
13974    });
13975  };
13976  effectInit({
13977    effect: 'cards',
13978    swiper,
13979    on,
13980    setTranslate,
13981    setTransition,
13982    perspective: () => true,
13983    overwriteParams: () => ({
13984      watchSlidesProgress: true,
13985      virtualTranslate: !swiper.params.cssMode
13986    })
13987  });
13988}
13989
13990
13991
13992;// CONCATENATED MODULE: ./node_modules/swiper/modules/index.mjs
13993
13994
13995
13996
13997
13998
13999
14000
14001
14002
14003
14004
14005
14006
14007
14008
14009
14010
14011
14012
14013
14014
14015
14016;// CONCATENATED MODULE: ./src/ui/brpModelImage.tsx
14017
14018
14019
14020
14021
14022
14023
14024
14025const BrpModelImage = () => {
14026    const { images: items } = (0,react.useContext)(BrpInventoryContext);
14027    const mainSlideshow = (0,react.useRef)(null);
14028    const thumbnailSlideshow = (0,react.useRef)(null);
14029    const setSlideshowSkeletonLoading = ($slideshow) => {
14030        $(".swiper-slide img", $slideshow).each(function (_, element) {
14031            const $element = $(element);
14032            const removeSkeletonAndAddLoadedClass = ($img) => {
14033                $img.parent().find(".skeleton-container").remove();
14034                $element.removeClass("loading");
14035                $img.addClass("loaded");
14036            };
14037            const isLoaded = element.complete && element.naturalWidth > 0;
14038            if (isLoaded) { // image has loaded
14039                removeSkeletonAndAddLoadedClass($element);
14040            }
14041            else {
14042                $element.on("load", () => {
14043                    removeSkeletonAndAddLoadedClass($element);
14044                });
14045                $element.on("error", () => {
14046                });
14047            }
14048        });
14049    };
14050    const destroyOwnCarousel = (swiper) => {
14051        swiper && swiper.destroy();
14052    };
14053    // When swiper use loop feature, the index will be shifted by virtual slides.
14054    const getAbsoluteIndexSwiperSlide = (swiperEle, clickedIndex) => {
14055        return $(swiperEle).find(`[data-swiper-slide-index='${clickedIndex}'`).index();
14056    };
14057    (0,react.useEffect)(() => {
14058        if (items.length === 0) {
14059            return;
14060        }
14061        const prevBtnMainSlideshow = $(mainSlideshow.current).find('.swiper-button-prev');
14062        const nextBtnMainSlideshow = $(mainSlideshow.current).find('.swiper-button-next');
14063        const mainSlideshowSwiper = new Swiper(mainSlideshow.current, {
14064            loop: true,
14065            modules: [Navigation],
14066            spaceBetween: 5,
14067            navigation: {
14068                prevEl: prevBtnMainSlideshow.get(0),
14069                nextEl: nextBtnMainSlideshow.get(0)
14070            },
14071            on: {
14072                init: (swiper) => {
14073                    setSlideshowSkeletonLoading($(swiper.el));
14074                },
14075                navigationNext: (swiper) => {
14076                    thumbnailSlideshowSwiper.slideTo(swiper.realIndex, 100);
14077                    $(thumbnailSlideshowSwiper.el).find(".swiper-slide").removeClass("synced");
14078                    $(thumbnailSlideshowSwiper.el).find(".swiper-slide").eq(swiper.realIndex).addClass("synced");
14079                },
14080                navigationPrev: (swiper) => {
14081                    thumbnailSlideshowSwiper.slideTo(swiper.realIndex, 100);
14082                    $(thumbnailSlideshowSwiper.el).find(".swiper-slide").removeClass("synced");
14083                    $(thumbnailSlideshowSwiper.el).find(".swiper-slide").eq(swiper.realIndex).addClass("synced");
14084                }
14085            }
14086        });
14087        const prevBtnThumbnailSlideshow = $(thumbnailSlideshow.current).find('.swiper-button-prev');
14088        const nextBtnThumbnailSlideshow = $(thumbnailSlideshow.current).find('.swiper-button-next');
14089        const thumbnailSlideshowSwiper = new Swiper(thumbnailSlideshow.current, {
14090            modules: [Navigation],
14091            spaceBetween: 5,
14092            breakpoints: {
14093                0: {
14094                    slidesPerGroup: 3,
14095                    slidesPerView: 3
14096                },
14097                768: {
14098                    slidesPerGroup: 5,
14099                    slidesPerView: 5
14100                }
14101            },
14102            navigation: {
14103                prevEl: prevBtnThumbnailSlideshow.get(0),
14104                nextEl: nextBtnThumbnailSlideshow.get(0)
14105            },
14106            on: {
14107                init: (swiper) => {
14108                    setSlideshowSkeletonLoading($(swiper.el));
14109                    $(swiper.el).removeClass('#thumbnailCarousel');
14110                    $(swiper.el).find(".swiper-slide").eq(0).addClass("synced");
14111                    prevBtnThumbnailSlideshow.removeClass("hide");
14112                    nextBtnThumbnailSlideshow.removeClass("hide");
14113                },
14114                click: (swiper) => {
14115                    $(swiper.el).find(".swiper-slide").removeClass("synced");
14116                    $(swiper.el).find(".swiper-slide").eq(swiper.clickedIndex).addClass("synced");
14117                    const absoluteIndex = getAbsoluteIndexSwiperSlide(mainSlideshowSwiper.el, swiper.clickedIndex);
14118                    mainSlideshowSwiper.slideTo(absoluteIndex);
14119                }
14120            }
14121        });
14122        return () => {
14123            destroyOwnCarousel(mainSlideshowSwiper);
14124            destroyOwnCarousel(thumbnailSlideshowSwiper);
14125        };
14126    }, [items, mainSlideshow, thumbnailSlideshow]);
14127    return ((0,jsx_runtime.jsx)(jsx_runtime.Fragment, { children: items.length > 0 ?
14128            (0,jsx_runtime.jsx)("div", Object.assign({ className: "model-photos" }, { children: (0,jsx_runtime.jsxs)("div", Object.assign({ id: "slideshow-frame", className: "thumbnail-frame" }, { children: [(0,jsx_runtime.jsxs)("div", Object.assign({ id: "slideshow-main", ref: mainSlideshow, className: "main-frame swiper" }, { children: [(0,jsx_runtime.jsx)("div", Object.assign({ className: "swiper-wrapper" }, { children: items.map((image, i) => (0,jsx_runtime.jsxs)("div", Object.assign({ className: "item swiper-slide" }, { children: [(0,jsx_runtime.jsx)("img", { srcSet: `${image.Url} 480w, ${image.Url}`, sizes: "(max-width: 640px) 480px", className: "img-responsive loading", loading: "lazy" }), (0,jsx_runtime.jsx)(Skeleton, { style: { aspectRatio: "4/3", lineHeight: 2, maxWidth: "100%" }, borderRadius: 0, containerClassName: "skeleton-container" })] }), i)) })), (0,jsx_runtime.jsx)("div", { className: "swiper-button-next hide" }), (0,jsx_runtime.jsx)("div", { className: "swiper-button-prev hide" })] })), (0,jsx_runtime.jsx)("div", Object.assign({ id: "slideshowActions" }, { children: (0,jsx_runtime.jsx)("div", Object.assign({ className: "actions-header" }, { children: (0,jsx_runtime.jsx)("button", Object.assign({ id: "sliderStatus", className: "image-action image-count", type: "button", "data-toggle": "collapse", "data-target": "#slideshowThumbnails", "aria-expanded": "true", "aria-controls": "slideshowThumbnails" }, { children: items.length > 0 && (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { children: [(0,jsx_runtime.jsx)("span", Object.assign({ className: "items" }, { children: (0,jsx_runtime.jsx)("span", Object.assign({ className: "result" }, { children: items.length })) })), (0,jsx_runtime.jsx)("span", { className: "fa fa-camera", "aria-hidden": "true" })] }) })) })) })), (0,jsx_runtime.jsx)("div", Object.assign({ id: "slideshowThumbnails", className: "collapse in", "aria-expanded": "true" }, { children: (0,jsx_runtime.jsxs)("div", Object.assign({ id: "thumbnailCarousel", ref: thumbnailSlideshow, className: "swiper" }, { children: [(0,jsx_runtime.jsx)("div", Object.assign({ className: "swiper-wrapper" }, { children: items.map((image, i) => (0,jsx_runtime.jsxs)("div", Object.assign({ className: "item swiper-slide" }, { children: [(0,jsx_runtime.jsx)("img", { src: image.Url, className: "img-responsive loading", loading: "lazy" }), (0,jsx_runtime.jsx)(Skeleton, { style: { aspectRatio: "4/3", lineHeight: 2, maxWidth: "auto" }, borderRadius: 0, containerClassName: "skeleton-container" })] }), i)) })), (0,jsx_runtime.jsx)("div", { className: "swiper-button-next hide" }), (0,jsx_runtime.jsx)("div", { className: "swiper-button-prev hide" })] })) }))] })) }))
14129            : (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { children: [(0,jsx_runtime.jsx)(Skeleton, { style: { width: "100%", aspectRatio: "4/3", marginTop: "20px" } }), (0,jsx_runtime.jsx)(Skeleton, { style: { width: "100%", height: "100px", margin: "2px 0 15px" } })] }) }));
14130};
14131
14132
14133;// CONCATENATED MODULE: ./src/ui/brpInventory.tsx
14134
14135
14136
14137
14138
14139
14140const BrpInventory = () => {
14141    const { moduleContext, categories, selectedCategory, selectedGroup, onSelectedCategoryChanged, onSelectedGroupChanged } = (0,react.useContext)(BrpInventoryContext);
14142    if (!categories.length) {
14143        return (0,jsx_runtime.jsx)(jsx_runtime.Fragment, {});
14144    }
14145    return ((0,jsx_runtime.jsx)(jsx_runtime.Fragment, { children: selectedGroup && (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { children: [(0,jsx_runtime.jsx)("div", Object.assign({ className: "brpinventory-header" }, { children: (0,jsx_runtime.jsxs)("div", Object.assign({ className: "container brpinventory-wrap category-section" }, { children: [(0,jsx_runtime.jsx)("h2", Object.assign({ className: "line-up eng" }, { children: "The Lineup" })), (0,jsx_runtime.jsx)("h2", Object.assign({ className: "line-up esp" }, { children: "La Gama" })), categories && categories.length > 1 &&
14146                                (0,jsx_runtime.jsx)("nav", Object.assign({ className: "category-nav" }, { children: (0,jsx_runtime.jsx)("ul", { children: categories.map((category, i) => (0,jsx_runtime.jsx)("li", Object.assign({ role: "presentation", className: selectedCategory === category ? "active" : "" }, { children: (0,jsx_runtime.jsx)("a", Object.assign({ onClick: () => onSelectedCategoryChanged(category) }, { children: category.categoryDisplayName })) }), i)) }) }))] })) })), (0,jsx_runtime.jsx)("nav", Object.assign({ className: "family-nav" }, { children: (0,jsx_runtime.jsx)("div", Object.assign({ className: "container brpinventory-wrap" }, { children: (0,jsx_runtime.jsx)("ul", Object.assign({ className: "nav nav-models", "aria-labelledby": "FamilySelect" }, { children: selectedCategory.groups.map((group, i) => (0,jsx_runtime.jsx)("li", Object.assign({ role: "presentation", className: `button ${selectedGroup === group ? "active" : ""}` }, { children: (0,jsx_runtime.jsxs)("a", Object.assign({ className: "btn-family", onClick: () => onSelectedGroupChanged(group, "click") }, { children: [(0,jsx_runtime.jsx)("span", Object.assign({ className: "thumbnail-frame" }, { children: (0,jsx_runtime.jsx)("img", { src: group.groupImageUrl, className: "img-responsive family-featured-image" }) })), (0,jsx_runtime.jsx)("span", Object.assign({ className: "btn-family-name" }, { children: group.groupName }))] })) }), i)) })) })) })), (0,jsx_runtime.jsx)("div", Object.assign({ className: "family-info container" }, { children: (0,jsx_runtime.jsxs)("div", Object.assign({ className: "row brpinventory-wrap" }, { children: [(0,jsx_runtime.jsxs)("div", Object.assign({ className: "col-md-6 family-details" }, { children: [(0,jsx_runtime.jsx)("img", { src: moduleContext.brandLogoUrl, loading: "lazy" }), (0,jsx_runtime.jsx)("h3", Object.assign({ className: "family-name" }, { children: selectedGroup ? selectedGroup.groupName : (0,jsx_runtime.jsx)(Skeleton, { width: "250px" }) })), (0,jsx_runtime.jsx)("div", { children: selectedGroup ? selectedGroup.groupDescription : (0,jsx_runtime.jsx)(Skeleton, { count: 2.5 }) }), (0,jsx_runtime.jsx)(BrpModelImage, {})] })), (0,jsx_runtime.jsx)("div", Object.assign({ className: "col-md-6 family-inventory" }, { children: (0,jsx_runtime.jsx)(BrpItemList, {}) }))] })) }))] }) }));
14147};
14148/* harmony default export */ var brpInventory = (BrpInventory);
14149
14150;// CONCATENATED MODULE: ./node_modules/react-loading-skeleton/dist/skeleton.css
14151// extracted by mini-css-extract-plugin
14152
14153// EXTERNAL MODULE: ./node_modules/react-dom/client.js
14154var client = __webpack_require__(745);
14155;// CONCATENATED MODULE: ./src/ui/index.tsx
14156
14157/*import { DnnUtils } from "./shared/dnnUtils";*/
14158
14159
14160
14161
14162
14163function initModule(moduleContext) {
14164    // IMPORTANT NOTE
14165    // - init service framework
14166    //DnnUtils.intServiceFramework(moduleId);
14167    const root = (0,client/* createRoot */.s)(document.getElementById(`dx1-brpinventory-${moduleContext.moduleId}`));
14168    root.render((0,jsx_runtime.jsx)(BrpInventoryProvider, Object.assign({ moduleContext: moduleContext }, { children: (0,jsx_runtime.jsx)(brpInventory, {}) })));
14169}
14170
14171}();
14172Dx1BrpInventory = __webpack_exports__;
14173/******/ })()
14174;

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.