PageSourceSearch

https://www.ipixtechnologies.com/js/web/products/ipixCart.js?id=3c0e737008356ef6bfeebbabe7dfb40d

js ipixtechnologies.com collected 2026-10-03 22:07:56 UTC 3,129,151 bytes, 84,229 lines download raw bytes

vendor: 78 bytes, lines 1-3
1/******/ (() => { // webpackBootstrap
2/******/ 	var __webpack_modules__ = ({
3
vendor: 9,950 bytes, lines 4-227
4/***/ "./node_modules/@popperjs/core/lib/createPopper.js":
5/*!*********************************************************!*\
6  !*** ./node_modules/@popperjs/core/lib/createPopper.js ***!
7  \*********************************************************/
8/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
10"use strict";
11__webpack_require__.r(__webpack_exports__);
12/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13/* harmony export */   "createPopper": () => (/* binding */ createPopper),
14/* harmony export */   "detectOverflow": () => (/* reexport safe */ _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"]),
15/* harmony export */   "popperGenerator": () => (/* binding */ popperGenerator)
16/* harmony export */ });
17/* harmony import */ var _dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dom-utils/getCompositeRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js");
18/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js");
19/* harmony import */ var _dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom-utils/listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js");
20/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");
21/* harmony import */ var _utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/orderModifiers.js */ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js");
22/* harmony import */ var _utils_debounce_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/debounce.js */ "./node_modules/@popperjs/core/lib/utils/debounce.js");
23/* harmony import */ var _utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/mergeByName.js */ "./node_modules/@popperjs/core/lib/utils/mergeByName.js");
24/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
25/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
26
27
28
29
30
31
32
33
34
35var DEFAULT_OPTIONS = {
36  placement: 'bottom',
37  modifiers: [],
38  strategy: 'absolute'
39};
40
41function areValidElements() {
42  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
43    args[_key] = arguments[_key];
44  }
45
46  return !args.some(function (element) {
47    return !(element && typeof element.getBoundingClientRect === 'function');
48  });
49}
50
51function popperGenerator(generatorOptions) {
52  if (generatorOptions === void 0) {
53    generatorOptions = {};
54  }
55
56  var _generatorOptions = generatorOptions,
57      _generatorOptions$def = _generatorOptions.defaultModifiers,
58      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,
59      _generatorOptions$def2 = _generatorOptions.defaultOptions,
60      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
61  return function createPopper(reference, popper, options) {
62    if (options === void 0) {
63      options = defaultOptions;
64    }
65
66    var state = {
67      placement: 'bottom',
68      orderedModifiers: [],
69      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
70      modifiersData: {},
71      elements: {
72        reference: reference,
73        popper: popper
74      },
75      attributes: {},
76      styles: {}
77    };
78    var effectCleanupFns = [];
79    var isDestroyed = false;
80    var instance = {
81      state: state,
82      setOptions: function setOptions(setOptionsAction) {
83        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;
84        cleanupModifierEffects();
85        state.options = Object.assign({}, defaultOptions, state.options, options);
86        state.scrollParents = {
87          reference: (0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(reference) ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reference) : reference.contextElement ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reference.contextElement) : [],
88          popper: (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(popper)
89        }; // Orders the modifiers based on their dependencies and `phase`
90        // properties
91
92        var orderedModifiers = (0,_utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__["default"])([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers
93
94        state.orderedModifiers = orderedModifiers.filter(function (m) {
95          return m.enabled;
96        });
97        runModifierEffects();
98        return instance.update();
99      },
100      // Sync update – it will always be executed, even if not necessary. This
101      // is useful for low frequency updates where sync behavior simplifies the
102      // logic.
103      // For high frequency updates (e.g. `resize` and `scroll` events), always
104      // prefer the async Popper#update method
105      forceUpdate: function forceUpdate() {
106        if (isDestroyed) {
107          return;
108        }
109
110        var _state$elements = state.elements,
111            reference = _state$elements.reference,
112            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements
113        // anymore
114
115        if (!areValidElements(reference, popper)) {
116          return;
117        } // Store the reference and popper rects to be read by modifiers
118
119
120        state.rects = {
121          reference: (0,_dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_4__["default"])(reference, (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(popper), state.options.strategy === 'fixed'),
122          popper: (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(popper)
123        }; // Modifiers have the ability to reset the current update cycle. The
124        // most common use case for this is the `flip` modifier changing the
125        // placement, which then needs to re-run all the modifiers, because the
126        // logic was previously ran for the previous placement and is therefore
127        // stale/incorrect
128
129        state.reset = false;
130        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier
131        // is filled with the initial data specified by the modifier. This means
132        // it doesn't persist and is fresh on each update.
133        // To ensure persistent data, use `${name}#persistent`
134
135        state.orderedModifiers.forEach(function (modifier) {
136          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
137        });
138
139        for (var index = 0; index < state.orderedModifiers.length; index++) {
140          if (state.reset === true) {
141            state.reset = false;
142            index = -1;
143            continue;
144          }
145
146          var _state$orderedModifie = state.orderedModifiers[index],
147              fn = _state$orderedModifie.fn,
148              _state$orderedModifie2 = _state$orderedModifie.options,
149              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,
150              name = _state$orderedModifie.name;
151
152          if (typeof fn === 'function') {
153            state = fn({
154              state: state,
155              options: _options,
156              name: name,
157              instance: instance
158            }) || state;
159          }
160        }
161      },
162      // Async and optimistically optimized update – it will not be executed if
163      // not necessary (debounced to run at most once-per-tick)
164      update: (0,_utils_debounce_js__WEBPACK_IMPORTED_MODULE_7__["default"])(function () {
165        return new Promise(function (resolve) {
166          instance.forceUpdate();
167          resolve(state);
168        });
169      }),
170      destroy: function destroy() {
171        cleanupModifierEffects();
172        isDestroyed = true;
173      }
174    };
175
176    if (!areValidElements(reference, popper)) {
177      return instance;
178    }
179
180    instance.setOptions(options).then(function (state) {
181      if (!isDestroyed && options.onFirstUpdate) {
182        options.onFirstUpdate(state);
183      }
184    }); // Modifiers have the ability to execute arbitrary code before the first
185    // update cycle runs. They will be executed in the same order as the update
186    // cycle. This is useful when a modifier adds some persistent data that
187    // other modifiers need to use, but the modifier is run after the dependent
188    // one.
189
190    function runModifierEffects() {
191      state.orderedModifiers.forEach(function (_ref) {
192        var name = _ref.name,
193            _ref$options = _ref.options,
194            options = _ref$options === void 0 ? {} : _ref$options,
195            effect = _ref.effect;
196
197        if (typeof effect === 'function') {
198          var cleanupFn = effect({
199            state: state,
200            name: name,
201            instance: instance,
202            options: options
203          });
204
205          var noopFn = function noopFn() {};
206
207          effectCleanupFns.push(cleanupFn || noopFn);
208        }
209      });
210    }
211
212    function cleanupModifierEffects() {
213      effectCleanupFns.forEach(function (fn) {
214        return fn();
215      });
216      effectCleanupFns = [];
217    }
218
219    return instance;
220  };
221}
222var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules
223
224
225
226/***/ }),
227
vendor: 1,418 bytes, lines 228-265
228/***/ "./node_modules/@popperjs/core/lib/dom-utils/contains.js":
229/*!***************************************************************!*\
230  !*** ./node_modules/@popperjs/core/lib/dom-utils/contains.js ***!
231  \***************************************************************/
232/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
233
234"use strict";
235__webpack_require__.r(__webpack_exports__);
236/* harmony export */ __webpack_require__.d(__webpack_exports__, {
237/* harmony export */   "default": () => (/* binding */ contains)
238/* harmony export */ });
239/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
240
241function contains(parent, child) {
242  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method
243
244  if (parent.contains(child)) {
245    return true;
246  } // then fallback to custom implementation with Shadow DOM support
247  else if (rootNode && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(rootNode)) {
248      var next = child;
249
250      do {
251        if (next && parent.isSameNode(next)) {
252          return true;
253        } // $FlowFixMe[prop-missing]: need a better way to handle this...
254
255
256        next = next.parentNode || next.host;
257      } while (next);
258    } // Give up, the result is false
259
260
261  return false;
262}
263
264/***/ }),
265
vendor: 2,806 bytes, lines 266-324
266/***/ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js":
267/*!****************************************************************************!*\
268  !*** ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js ***!
269  \****************************************************************************/
270/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
271
272"use strict";
273__webpack_require__.r(__webpack_exports__);
274/* harmony export */ __webpack_require__.d(__webpack_exports__, {
275/* harmony export */   "default": () => (/* binding */ getBoundingClientRect)
276/* harmony export */ });
277/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
278/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
279/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
280/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isLayoutViewport.js */ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js");
281
282
283
284
285function getBoundingClientRect(element, includeScale, isFixedStrategy) {
286  if (includeScale === void 0) {
287    includeScale = false;
288  }
289
290  if (isFixedStrategy === void 0) {
291    isFixedStrategy = false;
292  }
293
294  var clientRect = element.getBoundingClientRect();
295  var scaleX = 1;
296  var scaleY = 1;
297
298  if (includeScale && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) {
299    scaleX = element.offsetWidth > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.width) / element.offsetWidth || 1 : 1;
300    scaleY = element.offsetHeight > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.height) / element.offsetHeight || 1 : 1;
301  }
302
303  var _ref = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) : window,
304      visualViewport = _ref.visualViewport;
305
306  var addVisualOffsets = !(0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__["default"])() && isFixedStrategy;
307  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
308  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
309  var width = clientRect.width / scaleX;
310  var height = clientRect.height / scaleY;
311  return {
312    width: width,
313    height: height,
314    top: y,
315    right: x + width,
316    bottom: y + height,
317    left: x,
318    x: x,
319    y: y
320  };
321}
322
323/***/ }),
324
vendor: 6,916 bytes, lines 325-422
325/***/ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js":
326/*!**********************************************************************!*\
327  !*** ./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js ***!
328  \**********************************************************************/
329/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
330
331"use strict";
332__webpack_require__.r(__webpack_exports__);
333/* harmony export */ __webpack_require__.d(__webpack_exports__, {
334/* harmony export */   "default": () => (/* binding */ getClippingRect)
335/* harmony export */ });
336/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
337/* harmony import */ var _getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getViewportRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js");
338/* harmony import */ var _getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getDocumentRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js");
339/* harmony import */ var _listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js");
340/* harmony import */ var _getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");
341/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
342/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");
343/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
344/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");
345/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js");
346/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js");
347/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
348/* harmony import */ var _utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js");
349/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365function getInnerBoundingClientRect(element, strategy) {
366  var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element, false, strategy === 'fixed');
367  rect.top = rect.top + element.clientTop;
368  rect.left = rect.left + element.clientLeft;
369  rect.bottom = rect.top + element.clientHeight;
370  rect.right = rect.left + element.clientWidth;
371  rect.width = element.clientWidth;
372  rect.height = element.clientHeight;
373  rect.x = rect.left;
374  rect.y = rect.top;
375  return rect;
376}
377
378function getClientRectFromMixedType(element, clippingParent, strategy) {
379  return clippingParent === _enums_js__WEBPACK_IMPORTED_MODULE_1__.viewport ? (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element, strategy)) : (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(element)));
380} // A "clipping parent" is an overflowable container with the characteristic of
381// clipping (or hiding) overflowing elements with a position different from
382// `initial`
383
384
385function getClippingParents(element) {
386  var clippingParents = (0,_listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__["default"])((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_8__["default"])(element));
387  var canEscapeClipping = ['absolute', 'fixed'].indexOf((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__["default"])(element).position) >= 0;
388  var clipperElement = canEscapeClipping && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isHTMLElement)(element) ? (0,_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__["default"])(element) : element;
389
390  if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clipperElement)) {
391    return [];
392  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414
393
394
395  return clippingParents.filter(function (clippingParent) {
396    return (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) && (0,_contains_js__WEBPACK_IMPORTED_MODULE_11__["default"])(clippingParent, clipperElement) && (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_12__["default"])(clippingParent) !== 'body';
397  });
398} // Gets the maximum area that the element is visible in due to any number of
399// clipping parents
400
401
402function getClippingRect(element, boundary, rootBoundary, strategy) {
403  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
404  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
405  var firstClippingParent = clippingParents[0];
406  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
407    var rect = getClientRectFromMixedType(element, clippingParent, strategy);
408    accRect.top = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.top, accRect.top);
409    accRect.right = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.right, accRect.right);
410    accRect.bottom = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.bottom, accRect.bottom);
411    accRect.left = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.left, accRect.left);
412    return accRect;
413  }, getClientRectFromMixedType(element, firstClippingParent, strategy));
414  clippingRect.width = clippingRect.right - clippingRect.left;
415  clippingRect.height = clippingRect.bottom - clippingRect.top;
416  clippingRect.x = clippingRect.left;
417  clippingRect.y = clippingRect.top;
418  return clippingRect;
419}
420
421/***/ }),
422
vendor: 4,352 bytes, lines 423-502
423/***/ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js":
424/*!***********************************************************************!*\
425  !*** ./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js ***!
426  \***********************************************************************/
427/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
428
429"use strict";
430__webpack_require__.r(__webpack_exports__);
431/* harmony export */ __webpack_require__.d(__webpack_exports__, {
432/* harmony export */   "default": () => (/* binding */ getCompositeRect)
433/* harmony export */ });
434/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");
435/* harmony import */ var _getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getNodeScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js");
436/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
437/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
438/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js");
439/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
440/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js");
441/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
442
443
444
445
446
447
448
449
450
451function isElementScaled(element) {
452  var rect = element.getBoundingClientRect();
453  var scaleX = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.width) / element.offsetWidth || 1;
454  var scaleY = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.height) / element.offsetHeight || 1;
455  return scaleX !== 1 || scaleY !== 1;
456} // Returns the composite rect of an element relative to its offsetParent.
457// Composite means it takes into account transforms as well as layout.
458
459
460function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
461  if (isFixed === void 0) {
462    isFixed = false;
463  }
464
465  var isOffsetParentAnElement = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent);
466  var offsetParentIsScaled = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent) && isElementScaled(offsetParent);
467  var documentElement = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(offsetParent);
468  var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(elementOrVirtualElement, offsetParentIsScaled, isFixed);
469  var scroll = {
470    scrollLeft: 0,
471    scrollTop: 0
472  };
473  var offsets = {
474    x: 0,
475    y: 0
476  };
477
478  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
479    if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
480    (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(documentElement)) {
481      scroll = (0,_getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__["default"])(offsetParent);
482    }
483
484    if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent)) {
485      offsets = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(offsetParent, true);
486      offsets.x += offsetParent.clientLeft;
487      offsets.y += offsetParent.clientTop;
488    } else if (documentElement) {
489      offsets.x = (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__["default"])(documentElement);
490    }
491  }
492
493  return {
494    x: rect.left + scroll.scrollLeft - offsets.x,
495    y: rect.top + scroll.scrollTop - offsets.y,
496    width: rect.width,
497    height: rect.height
498  };
499}
500
501/***/ }),
502
vendor: 934 bytes, lines 503-521
503/***/ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js":
504/*!***********************************************************************!*\
505  !*** ./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js ***!
506  \***********************************************************************/
507/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
508
509"use strict";
510__webpack_require__.r(__webpack_exports__);
511/* harmony export */ __webpack_require__.d(__webpack_exports__, {
512/* harmony export */   "default": () => (/* binding */ getComputedStyle)
513/* harmony export */ });
514/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
515
516function getComputedStyle(element) {
517  return (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element).getComputedStyle(element);
518}
519
520/***/ }),
521
vendor: 1,105 bytes, lines 522-542
522/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js":
523/*!*************************************************************************!*\
524  !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js ***!
525  \*************************************************************************/
526/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
527
528"use strict";
529__webpack_require__.r(__webpack_exports__);
530/* harmony export */ __webpack_require__.d(__webpack_exports__, {
531/* harmony export */   "default": () => (/* binding */ getDocumentElement)
532/* harmony export */ });
533/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
534
535function getDocumentElement(element) {
536  // $FlowFixMe[incompatible-return]: assume body is always available
537  return (((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]
538  element.document) || window.document).documentElement;
539}
540
541/***/ }),
542
vendor: 2,858 bytes, lines 543-590
543/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js":
544/*!**********************************************************************!*\
545  !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js ***!
546  \**********************************************************************/
547/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
548
549"use strict";
550__webpack_require__.r(__webpack_exports__);
551/* harmony export */ __webpack_require__.d(__webpack_exports__, {
552/* harmony export */   "default": () => (/* binding */ getDocumentRect)
553/* harmony export */ });
554/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
555/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");
556/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js");
557/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js");
558/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
559
560
561
562
563 // Gets the entire size of the scrollable document area, even extending outside
564// of the `<html>` and `<body>` rect bounds if horizontally scrollable
565
566function getDocumentRect(element) {
567  var _element$ownerDocumen;
568
569  var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element);
570  var winScroll = (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element);
571  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
572  var width = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
573  var height = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
574  var x = -winScroll.scrollLeft + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element);
575  var y = -winScroll.scrollTop;
576
577  if ((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__["default"])(body || html).direction === 'rtl') {
578    x += (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.clientWidth, body ? body.clientWidth : 0) - width;
579  }
580
581  return {
582    width: width,
583    height: height,
584    x: x,
585    y: y
586  };
587}
588
589/***/ }),
590
vendor: 766 bytes, lines 591-610
591/***/ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js":
592/*!***************************************************************************!*\
593  !*** ./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js ***!
594  \***************************************************************************/
595/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
596
597"use strict";
598__webpack_require__.r(__webpack_exports__);
599/* harmony export */ __webpack_require__.d(__webpack_exports__, {
600/* harmony export */   "default": () => (/* binding */ getHTMLElementScroll)
601/* harmony export */ });
602function getHTMLElementScroll(element) {
603  return {
604    scrollLeft: element.scrollLeft,
605    scrollTop: element.scrollTop
606  };
607}
608
609/***/ }),
610
vendor: 1,550 bytes, lines 611-650
611/***/ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js":
612/*!********************************************************************!*\
613  !*** ./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js ***!
614  \********************************************************************/
615/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
616
617"use strict";
618__webpack_require__.r(__webpack_exports__);
619/* harmony export */ __webpack_require__.d(__webpack_exports__, {
620/* harmony export */   "default": () => (/* binding */ getLayoutRect)
621/* harmony export */ });
622/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");
623 // Returns the layout rect of an element relative to its offsetParent. Layout
624// means it doesn't take into account transforms.
625
626function getLayoutRect(element) {
627  var clientRect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); // Use the clientRect sizes if it's not been transformed.
628  // Fixes https://github.com/popperjs/popper-core/issues/1223
629
630  var width = element.offsetWidth;
631  var height = element.offsetHeight;
632
633  if (Math.abs(clientRect.width - width) <= 1) {
634    width = clientRect.width;
635  }
636
637  if (Math.abs(clientRect.height - height) <= 1) {
638    height = clientRect.height;
639  }
640
641  return {
642    x: element.offsetLeft,
643    y: element.offsetTop,
644    width: width,
645    height: height
646  };
647}
648
649/***/ }),
650
vendor: 693 bytes, lines 651-667
651/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js":
652/*!******************************************************************!*\
653  !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js ***!
654  \******************************************************************/
655/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
656
657"use strict";
658__webpack_require__.r(__webpack_exports__);
659/* harmony export */ __webpack_require__.d(__webpack_exports__, {
660/* harmony export */   "default": () => (/* binding */ getNodeName)
661/* harmony export */ });
662function getNodeName(element) {
663  return element ? (element.nodeName || '').toLowerCase() : null;
664}
665
666/***/ }),
667
vendor: 1,724 bytes, lines 668-696
668/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js":
669/*!********************************************************************!*\
670  !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js ***!
671  \********************************************************************/
672/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
673
674"use strict";
675__webpack_require__.r(__webpack_exports__);
676/* harmony export */ __webpack_require__.d(__webpack_exports__, {
677/* harmony export */   "default": () => (/* binding */ getNodeScroll)
678/* harmony export */ });
679/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js");
680/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
681/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
682/* harmony import */ var _getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getHTMLElementScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js");
683
684
685
686
687function getNodeScroll(node) {
688  if (node === (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node) || !(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node)) {
689    return (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node);
690  } else {
691    return (0,_getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node);
692  }
693}
694
695/***/ }),
696
vendor: 4,972 bytes, lines 697-786
697/***/ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js":
698/*!**********************************************************************!*\
699  !*** ./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js ***!
700  \**********************************************************************/
701/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
702
703"use strict";
704__webpack_require__.r(__webpack_exports__);
705/* harmony export */ __webpack_require__.d(__webpack_exports__, {
706/* harmony export */   "default": () => (/* binding */ getOffsetParent)
707/* harmony export */ });
708/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
709/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
710/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");
711/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
712/* harmony import */ var _isTableElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isTableElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js");
713/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js");
714/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/userAgent.js */ "./node_modules/@popperjs/core/lib/utils/userAgent.js");
715
716
717
718
719
720
721
722
723function getTrueOffsetParent(element) {
724  if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || // https://github.com/popperjs/popper-core/issues/837
725  (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element).position === 'fixed') {
726    return null;
727  }
728
729  return element.offsetParent;
730} // `.offsetParent` reports `null` for fixed elements, while absolute elements
731// return the containing block
732
733
734function getContainingBlock(element) {
735  var isFirefox = /firefox/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__["default"])());
736  var isIE = /Trident/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__["default"])());
737
738  if (isIE && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) {
739    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport
740    var elementCss = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element);
741
742    if (elementCss.position === 'fixed') {
743      return null;
744    }
745  }
746
747  var currentNode = (0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element);
748
749  if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(currentNode)) {
750    currentNode = currentNode.host;
751  }
752
753  while ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(currentNode) && ['html', 'body'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(currentNode)) < 0) {
754    var css = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(currentNode); // This is non-exhaustive but covers the most common CSS properties that
755    // create a containing block.
756    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
757
758    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {
759      return currentNode;
760    } else {
761      currentNode = currentNode.parentNode;
762    }
763  }
764
765  return null;
766} // Gets the closest ancestor positioned element. Handles some edge cases,
767// such as table ancestors and cross browser bugs.
768
769
770function getOffsetParent(element) {
771  var window = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element);
772  var offsetParent = getTrueOffsetParent(element);
773
774  while (offsetParent && (0,_isTableElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(offsetParent) && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static') {
775    offsetParent = getTrueOffsetParent(offsetParent);
776  }
777
778  if (offsetParent && ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) === 'html' || (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) === 'body' && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static')) {
779    return window;
780  }
781
782  return offsetParent || getContainingBlock(element) || window;
783}
784
785/***/ }),
786
vendor: 1,900 bytes, lines 787-822
787/***/ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js":
788/*!********************************************************************!*\
789  !*** ./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js ***!
790  \********************************************************************/
791/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
792
793"use strict";
794__webpack_require__.r(__webpack_exports__);
795/* harmony export */ __webpack_require__.d(__webpack_exports__, {
796/* harmony export */   "default": () => (/* binding */ getParentNode)
797/* harmony export */ });
798/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
799/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
800/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
801
802
803
804function getParentNode(element) {
805  if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element) === 'html') {
806    return element;
807  }
808
809  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle
810    // $FlowFixMe[incompatible-return]
811    // $FlowFixMe[prop-missing]
812    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
813    element.parentNode || ( // DOM Element detected
814    (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isShadowRoot)(element) ? element.host : null) || // ShadowRoot detected
815    // $FlowFixMe[incompatible-call]: HTMLElement is a Node
816    (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) // fallback
817
818  );
819}
820
821/***/ }),
822
vendor: 1,878 bytes, lines 823-856
823/***/ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js":
824/*!**********************************************************************!*\
825  !*** ./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js ***!
826  \**********************************************************************/
827/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
828
829"use strict";
830__webpack_require__.r(__webpack_exports__);
831/* harmony export */ __webpack_require__.d(__webpack_exports__, {
832/* harmony export */   "default": () => (/* binding */ getScrollParent)
833/* harmony export */ });
834/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js");
835/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js");
836/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
837/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
838
839
840
841
842function getScrollParent(node) {
843  if (['html', 'body', '#document'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node)) >= 0) {
844    // $FlowFixMe[incompatible-return]: assume body is always available
845    return node.ownerDocument.body;
846  }
847
848  if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node) && (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node)) {
849    return node;
850  }
851
852  return getScrollParent((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node));
853}
854
855/***/ }),
856
vendor: 2,234 bytes, lines 857-905
857/***/ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js":
858/*!**********************************************************************!*\
859  !*** ./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js ***!
860  \**********************************************************************/
861/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
862
863"use strict";
864__webpack_require__.r(__webpack_exports__);
865/* harmony export */ __webpack_require__.d(__webpack_exports__, {
866/* harmony export */   "default": () => (/* binding */ getViewportRect)
867/* harmony export */ });
868/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
869/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
870/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js");
871/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isLayoutViewport.js */ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js");
872
873
874
875
876function getViewportRect(element, strategy) {
877  var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element);
878  var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element);
879  var visualViewport = win.visualViewport;
880  var width = html.clientWidth;
881  var height = html.clientHeight;
882  var x = 0;
883  var y = 0;
884
885  if (visualViewport) {
886    width = visualViewport.width;
887    height = visualViewport.height;
888    var layoutViewport = (0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__["default"])();
889
890    if (layoutViewport || !layoutViewport && strategy === 'fixed') {
891      x = visualViewport.offsetLeft;
892      y = visualViewport.offsetTop;
893    }
894  }
895
896  return {
897    width: width,
898    height: height,
899    x: x + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element),
900    y: y
901  };
902}
903
904/***/ }),
905
vendor: 842 bytes, lines 906-931
906/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js":
907/*!****************************************************************!*\
908  !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js ***!
909  \****************************************************************/
910/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
911
912"use strict";
913__webpack_require__.r(__webpack_exports__);
914/* harmony export */ __webpack_require__.d(__webpack_exports__, {
915/* harmony export */   "default": () => (/* binding */ getWindow)
916/* harmony export */ });
917function getWindow(node) {
918  if (node == null) {
919    return window;
920  }
921
922  if (node.toString() !== '[object Window]') {
923    var ownerDocument = node.ownerDocument;
924    return ownerDocument ? ownerDocument.defaultView || window : window;
925  }
926
927  return node;
928}
929
930/***/ }),
931
vendor: 1,039 bytes, lines 932-956
932/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js":
933/*!**********************************************************************!*\
934  !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js ***!
935  \**********************************************************************/
936/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
937
938"use strict";
939__webpack_require__.r(__webpack_exports__);
940/* harmony export */ __webpack_require__.d(__webpack_exports__, {
941/* harmony export */   "default": () => (/* binding */ getWindowScroll)
942/* harmony export */ });
943/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
944
945function getWindowScroll(node) {
946  var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node);
947  var scrollLeft = win.pageXOffset;
948  var scrollTop = win.pageYOffset;
949  return {
950    scrollLeft: scrollLeft,
951    scrollTop: scrollTop
952  };
953}
954
955/***/ }),
956
vendor: 1,913 bytes, lines 957-986
957/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js":
958/*!**************************************************************************!*\
959  !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js ***!
960  \**************************************************************************/
961/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
962
963"use strict";
964__webpack_require__.r(__webpack_exports__);
965/* harmony export */ __webpack_require__.d(__webpack_exports__, {
966/* harmony export */   "default": () => (/* binding */ getWindowScrollBarX)
967/* harmony export */ });
968/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");
969/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
970/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js");
971
972
973
974function getWindowScrollBarX(element) {
975  // If <html> has a CSS width greater than the viewport, then this will be
976  // incorrect for RTL.
977  // Popper 1 is broken in this case and never had a bug report so let's assume
978  // it's not an issue. I don't think anyone ever specifies width on <html>
979  // anyway.
980  // Browsers where the left scrollbar doesn't cause an issue report `0` for
981  // this (e.g. Edge 2019, IE11, Safari)
982  return (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)).left + (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element).scrollLeft;
983}
984
985/***/ }),
986
vendor: 1,591 bytes, lines 987-1026
987/***/ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js":
988/*!*****************************************************************!*\
989  !*** ./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js ***!
990  \*****************************************************************/
991/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
992
993"use strict";
994__webpack_require__.r(__webpack_exports__);
995/* harmony export */ __webpack_require__.d(__webpack_exports__, {
996/* harmony export */   "isElement": () => (/* binding */ isElement),
997/* harmony export */   "isHTMLElement": () => (/* binding */ isHTMLElement),
998/* harmony export */   "isShadowRoot": () => (/* binding */ isShadowRoot)
999/* harmony export */ });
1000/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
1001
1002
1003function isElement(node) {
1004  var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).Element;
1005  return node instanceof OwnElement || node instanceof Element;
1006}
1007
1008function isHTMLElement(node) {
1009  var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).HTMLElement;
1010  return node instanceof OwnElement || node instanceof HTMLElement;
1011}
1012
1013function isShadowRoot(node) {
1014  // IE 11 has no ShadowRoot
1015  if (typeof ShadowRoot === 'undefined') {
1016    return false;
1017  }
1018
1019  var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).ShadowRoot;
1020  return node instanceof OwnElement || node instanceof ShadowRoot;
1021}
1022
1023
1024
1025/***/ }),
1026
vendor: 949 bytes, lines 1027-1045
1027/***/ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js":
1028/*!***********************************************************************!*\
1029  !*** ./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js ***!
1030  \***********************************************************************/
1031/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1032
1033"use strict";
1034__webpack_require__.r(__webpack_exports__);
1035/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1036/* harmony export */   "default": () => (/* binding */ isLayoutViewport)
1037/* harmony export */ });
1038/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/userAgent.js */ "./node_modules/@popperjs/core/lib/utils/userAgent.js");
1039
1040function isLayoutViewport() {
1041  return !/^((?!chrome|android).)*safari/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__["default"])());
1042}
1043
1044/***/ }),
1045
vendor: 1,223 bytes, lines 1046-1070
1046/***/ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js":
1047/*!*********************************************************************!*\
1048  !*** ./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js ***!
1049  \*********************************************************************/
1050/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1051
1052"use strict";
1053__webpack_require__.r(__webpack_exports__);
1054/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1055/* harmony export */   "default": () => (/* binding */ isScrollParent)
1056/* harmony export */ });
1057/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");
1058
1059function isScrollParent(element) {
1060  // Firefox wants us to check `-x` and `-y` variations as well
1061  var _getComputedStyle = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element),
1062      overflow = _getComputedStyle.overflow,
1063      overflowX = _getComputedStyle.overflowX,
1064      overflowY = _getComputedStyle.overflowY;
1065
1066  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
1067}
1068
1069/***/ }),
1070
vendor: 940 bytes, lines 1071-1089
1071/***/ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js":
1072/*!*********************************************************************!*\
1073  !*** ./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js ***!
1074  \*********************************************************************/
1075/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1076
1077"use strict";
1078__webpack_require__.r(__webpack_exports__);
1079/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1080/* harmony export */   "default": () => (/* binding */ isTableElement)
1081/* harmony export */ });
1082/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
1083
1084function isTableElement(element) {
1085  return ['table', 'td', 'th'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element)) >= 0;
1086}
1087
1088/***/ }),
1089
vendor: 2,529 bytes, lines 1090-1133
1090/***/ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js":
1091/*!************************************************************************!*\
1092  !*** ./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js ***!
1093  \************************************************************************/
1094/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1095
1096"use strict";
1097__webpack_require__.r(__webpack_exports__);
1098/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1099/* harmony export */   "default": () => (/* binding */ listScrollParents)
1100/* harmony export */ });
1101/* harmony import */ var _getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js");
1102/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js");
1103/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
1104/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js");
1105
1106
1107
1108
1109/*
1110given a DOM element, return the list of all scroll parents, up the list of ancesors
1111until we get to the top window object. This list is what we attach scroll listeners
1112to, because if any of these parent elements scroll, we'll need to re-calculate the
1113reference element's position.
1114*/
1115
1116function listScrollParents(element, list) {
1117  var _element$ownerDocumen;
1118
1119  if (list === void 0) {
1120    list = [];
1121  }
1122
1123  var scrollParent = (0,_getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element);
1124  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
1125  var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scrollParent);
1126  var target = isBody ? [win].concat(win.visualViewport || [], (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(scrollParent) ? scrollParent : []) : scrollParent;
1127  var updatedList = list.concat(target);
1128  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
1129  updatedList.concat(listScrollParents((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(target)));
1130}
1131
1132/***/ }),
1133
vendor: 3,246 bytes, lines 1134-1201
1134/***/ "./node_modules/@popperjs/core/lib/enums.js":
1135/*!**************************************************!*\
1136  !*** ./node_modules/@popperjs/core/lib/enums.js ***!
1137  \**************************************************/
1138/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1139
1140"use strict";
1141__webpack_require__.r(__webpack_exports__);
1142/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1143/* harmony export */   "afterMain": () => (/* binding */ afterMain),
1144/* harmony export */   "afterRead": () => (/* binding */ afterRead),
1145/* harmony export */   "afterWrite": () => (/* binding */ afterWrite),
1146/* harmony export */   "auto": () => (/* binding */ auto),
1147/* harmony export */   "basePlacements": () => (/* binding */ basePlacements),
1148/* harmony export */   "beforeMain": () => (/* binding */ beforeMain),
1149/* harmony export */   "beforeRead": () => (/* binding */ beforeRead),
1150/* harmony export */   "beforeWrite": () => (/* binding */ beforeWrite),
1151/* harmony export */   "bottom": () => (/* binding */ bottom),
1152/* harmony export */   "clippingParents": () => (/* binding */ clippingParents),
1153/* harmony export */   "end": () => (/* binding */ end),
1154/* harmony export */   "left": () => (/* binding */ left),
1155/* harmony export */   "main": () => (/* binding */ main),
1156/* harmony export */   "modifierPhases": () => (/* binding */ modifierPhases),
1157/* harmony export */   "placements": () => (/* binding */ placements),
1158/* harmony export */   "popper": () => (/* binding */ popper),
1159/* harmony export */   "read": () => (/* binding */ read),
1160/* harmony export */   "reference": () => (/* binding */ reference),
1161/* harmony export */   "right": () => (/* binding */ right),
1162/* harmony export */   "start": () => (/* binding */ start),
1163/* harmony export */   "top": () => (/* binding */ top),
1164/* harmony export */   "variationPlacements": () => (/* binding */ variationPlacements),
1165/* harmony export */   "viewport": () => (/* binding */ viewport),
1166/* harmony export */   "write": () => (/* binding */ write)
1167/* harmony export */ });
1168var top = 'top';
1169var bottom = 'bottom';
1170var right = 'right';
1171var left = 'left';
1172var auto = 'auto';
1173var basePlacements = [top, bottom, right, left];
1174var start = 'start';
1175var end = 'end';
1176var clippingParents = 'clippingParents';
1177var viewport = 'viewport';
1178var popper = 'popper';
1179var reference = 'reference';
1180var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {
1181  return acc.concat([placement + "-" + start, placement + "-" + end]);
1182}, []);
1183var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {
1184  return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
1185}, []); // modifiers that need to read the DOM
1186
1187var beforeRead = 'beforeRead';
1188var read = 'read';
1189var afterRead = 'afterRead'; // pure-logic modifiers
1190
1191var beforeMain = 'beforeMain';
1192var main = 'main';
1193var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)
1194
1195var beforeWrite = 'beforeWrite';
1196var write = 'write';
1197var afterWrite = 'afterWrite';
1198var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
1199
1200/***/ }),
1201
vendor: 6,098 bytes, lines 1202-1266
1202/***/ "./node_modules/@popperjs/core/lib/index.js":
1203/*!**************************************************!*\
1204  !*** ./node_modules/@popperjs/core/lib/index.js ***!
1205  \**************************************************/
1206/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1207
1208"use strict";
1209__webpack_require__.r(__webpack_exports__);
1210/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1211/* harmony export */   "afterMain": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterMain),
1212/* harmony export */   "afterRead": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterRead),
1213/* harmony export */   "afterWrite": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterWrite),
1214/* harmony export */   "applyStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.applyStyles),
1215/* harmony export */   "arrow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.arrow),
1216/* harmony export */   "auto": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.auto),
1217/* harmony export */   "basePlacements": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements),
1218/* harmony export */   "beforeMain": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeMain),
1219/* harmony export */   "beforeRead": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeRead),
1220/* harmony export */   "beforeWrite": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeWrite),
1221/* harmony export */   "bottom": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom),
1222/* harmony export */   "clippingParents": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents),
1223/* harmony export */   "computeStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.computeStyles),
1224/* harmony export */   "createPopper": () => (/* reexport safe */ _popper_js__WEBPACK_IMPORTED_MODULE_4__.createPopper),
1225/* harmony export */   "createPopperBase": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.createPopper),
1226/* harmony export */   "createPopperLite": () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__.createPopper),
1227/* harmony export */   "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_3__["default"]),
1228/* harmony export */   "end": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.end),
1229/* harmony export */   "eventListeners": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.eventListeners),
1230/* harmony export */   "flip": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.flip),
1231/* harmony export */   "hide": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.hide),
1232/* harmony export */   "left": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.left),
1233/* harmony export */   "main": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.main),
1234/* harmony export */   "modifierPhases": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases),
1235/* harmony export */   "offset": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.offset),
1236/* harmony export */   "placements": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements),
1237/* harmony export */   "popper": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper),
1238/* harmony export */   "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.popperGenerator),
1239/* harmony export */   "popperOffsets": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.popperOffsets),
1240/* harmony export */   "preventOverflow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.preventOverflow),
1241/* harmony export */   "read": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.read),
1242/* harmony export */   "reference": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference),
1243/* harmony export */   "right": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.right),
1244/* harmony export */   "start": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.start),
1245/* harmony export */   "top": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.top),
1246/* harmony export */   "variationPlacements": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements),
1247/* harmony export */   "viewport": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport),
1248/* harmony export */   "write": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.write)
1249/* harmony export */ });
1250/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
1251/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js");
1252/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js");
1253/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
1254/* harmony import */ var _popper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./popper.js */ "./node_modules/@popperjs/core/lib/popper.js");
1255/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js");
1256
1257 // eslint-disable-next-line import/no-unused-modules
1258
1259 // eslint-disable-next-line import/no-unused-modules
1260
1261 // eslint-disable-next-line import/no-unused-modules
1262
1263
1264
1265/***/ }),
1266
vendor: 3,689 bytes, lines 1267-1366
1267/***/ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js":
1268/*!******************************************************************!*\
1269  !*** ./node_modules/@popperjs/core/lib/modifiers/applyStyles.js ***!
1270  \******************************************************************/
1271/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1272
1273"use strict";
1274__webpack_require__.r(__webpack_exports__);
1275/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1276/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1277/* harmony export */ });
1278/* harmony import */ var _dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
1279/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
1280
1281 // This modifier takes the styles prepared by the `computeStyles` modifier
1282// and applies them to the HTMLElements such as popper and arrow
1283
1284function applyStyles(_ref) {
1285  var state = _ref.state;
1286  Object.keys(state.elements).forEach(function (name) {
1287    var style = state.styles[name] || {};
1288    var attributes = state.attributes[name] || {};
1289    var element = state.elements[name]; // arrow is optional + virtual elements
1290
1291    if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)) {
1292      return;
1293    } // Flow doesn't support to extend this property, but it's the most
1294    // effective way to apply styles to an HTMLElement
1295    // $FlowFixMe[cannot-write]
1296
1297
1298    Object.assign(element.style, style);
1299    Object.keys(attributes).forEach(function (name) {
1300      var value = attributes[name];
1301
1302      if (value === false) {
1303        element.removeAttribute(name);
1304      } else {
1305        element.setAttribute(name, value === true ? '' : value);
1306      }
1307    });
1308  });
1309}
1310
1311function effect(_ref2) {
1312  var state = _ref2.state;
1313  var initialStyles = {
1314    popper: {
1315      position: state.options.strategy,
1316      left: '0',
1317      top: '0',
1318      margin: '0'
1319    },
1320    arrow: {
1321      position: 'absolute'
1322    },
1323    reference: {}
1324  };
1325  Object.assign(state.elements.popper.style, initialStyles.popper);
1326  state.styles = initialStyles;
1327
1328  if (state.elements.arrow) {
1329    Object.assign(state.elements.arrow.style, initialStyles.arrow);
1330  }
1331
1332  return function () {
1333    Object.keys(state.elements).forEach(function (name) {
1334      var element = state.elements[name];
1335      var attributes = state.attributes[name] || {};
1336      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them
1337
1338      var style = styleProperties.reduce(function (style, property) {
1339        style[property] = '';
1340        return style;
1341      }, {}); // arrow is optional + virtual elements
1342
1343      if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)) {
1344        return;
1345      }
1346
1347      Object.assign(element.style, style);
1348      Object.keys(attributes).forEach(function (attribute) {
1349        element.removeAttribute(attribute);
1350      });
1351    });
1352  };
1353} // eslint-disable-next-line import/no-unused-modules
1354
1355
1356/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
1357  name: 'applyStyles',
1358  enabled: true,
1359  phase: 'write',
1360  fn: applyStyles,
1361  effect: effect,
1362  requires: ['computeStyles']
1363});
1364
1365/***/ }),
1366
vendor: 5,990 bytes, lines 1367-1479
1367/***/ "./node_modules/@popperjs/core/lib/modifiers/arrow.js":
1368/*!************************************************************!*\
1369  !*** ./node_modules/@popperjs/core/lib/modifiers/arrow.js ***!
1370  \************************************************************/
1371/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1372
1373"use strict";
1374__webpack_require__.r(__webpack_exports__);
1375/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1376/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1377/* harmony export */ });
1378/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
1379/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js");
1380/* harmony import */ var _dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../dom-utils/contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js");
1381/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");
1382/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js");
1383/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js");
1384/* harmony import */ var _utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js");
1385/* harmony import */ var _utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js");
1386/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
1387
1388
1389
1390
1391
1392
1393
1394
1395 // eslint-disable-next-line import/no-unused-modules
1396
1397var toPaddingObject = function toPaddingObject(padding, state) {
1398  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {
1399    placement: state.placement
1400  })) : padding;
1401  return (0,_utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(typeof padding !== 'number' ? padding : (0,_utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_2__.basePlacements));
1402};
1403
1404function arrow(_ref) {
1405  var _state$modifiersData$;
1406
1407  var state = _ref.state,
1408      name = _ref.name,
1409      options = _ref.options;
1410  var arrowElement = state.elements.arrow;
1411  var popperOffsets = state.modifiersData.popperOffsets;
1412  var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(state.placement);
1413  var axis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(basePlacement);
1414  var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_2__.left, _enums_js__WEBPACK_IMPORTED_MODULE_2__.right].indexOf(basePlacement) >= 0;
1415  var len = isVertical ? 'height' : 'width';
1416
1417  if (!arrowElement || !popperOffsets) {
1418    return;
1419  }
1420
1421  var paddingObject = toPaddingObject(options.padding, state);
1422  var arrowRect = (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])(arrowElement);
1423  var minProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.top : _enums_js__WEBPACK_IMPORTED_MODULE_2__.left;
1424  var maxProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_2__.right;
1425  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
1426  var startDiff = popperOffsets[axis] - state.rects.reference[axis];
1427  var arrowOffsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__["default"])(arrowElement);
1428  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
1429  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is
1430  // outside of the popper bounds
1431
1432  var min = paddingObject[minProp];
1433  var max = clientSize - arrowRect[len] - paddingObject[maxProp];
1434  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
1435  var offset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_7__.within)(min, center, max); // Prevents breaking syntax highlighting...
1436
1437  var axisProp = axis;
1438  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
1439}
1440
1441function effect(_ref2) {
1442  var state = _ref2.state,
1443      options = _ref2.options;
1444  var _options$element = options.element,
1445      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;
1446
1447  if (arrowElement == null) {
1448    return;
1449  } // CSS selector
1450
1451
1452  if (typeof arrowElement === 'string') {
1453    arrowElement = state.elements.popper.querySelector(arrowElement);
1454
1455    if (!arrowElement) {
1456      return;
1457    }
1458  }
1459
1460  if (!(0,_dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_8__["default"])(state.elements.popper, arrowElement)) {
1461    return;
1462  }
1463
1464  state.elements.arrow = arrowElement;
1465} // eslint-disable-next-line import/no-unused-modules
1466
1467
1468/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
1469  name: 'arrow',
1470  enabled: true,
1471  phase: 'main',
1472  fn: arrow,
1473  effect: effect,
1474  requires: ['popperOffsets'],
1475  requiresIfExists: ['preventOverflow']
1476});
1477
1478/***/ }),
1479
vendor: 8,491 bytes, lines 1480-1671
1480/***/ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js":
1481/*!********************************************************************!*\
1482  !*** ./node_modules/@popperjs/core/lib/modifiers/computeStyles.js ***!
1483  \********************************************************************/
1484/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1485
1486"use strict";
1487__webpack_require__.r(__webpack_exports__);
1488/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1489/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__),
1490/* harmony export */   "mapToStyles": () => (/* binding */ mapToStyles)
1491/* harmony export */ });
1492/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
1493/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");
1494/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
1495/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
1496/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");
1497/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
1498/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js");
1499/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
1500
1501
1502
1503
1504
1505
1506
1507 // eslint-disable-next-line import/no-unused-modules
1508
1509var unsetSides = {
1510  top: 'auto',
1511  right: 'auto',
1512  bottom: 'auto',
1513  left: 'auto'
1514}; // Round the offsets to the nearest suitable subpixel based on the DPR.
1515// Zooming can change the DPR, but it seems to report a value that will
1516// cleanly divide the values into the appropriate subpixels.
1517
1518function roundOffsetsByDPR(_ref, win) {
1519  var x = _ref.x,
1520      y = _ref.y;
1521  var dpr = win.devicePixelRatio || 1;
1522  return {
1523    x: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(x * dpr) / dpr || 0,
1524    y: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(y * dpr) / dpr || 0
1525  };
1526}
1527
1528function mapToStyles(_ref2) {
1529  var _Object$assign2;
1530
1531  var popper = _ref2.popper,
1532      popperRect = _ref2.popperRect,
1533      placement = _ref2.placement,
1534      variation = _ref2.variation,
1535      offsets = _ref2.offsets,
1536      position = _ref2.position,
1537      gpuAcceleration = _ref2.gpuAcceleration,
1538      adaptive = _ref2.adaptive,
1539      roundOffsets = _ref2.roundOffsets,
1540      isFixed = _ref2.isFixed;
1541  var _offsets$x = offsets.x,
1542      x = _offsets$x === void 0 ? 0 : _offsets$x,
1543      _offsets$y = offsets.y,
1544      y = _offsets$y === void 0 ? 0 : _offsets$y;
1545
1546  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({
1547    x: x,
1548    y: y
1549  }) : {
1550    x: x,
1551    y: y
1552  };
1553
1554  x = _ref3.x;
1555  y = _ref3.y;
1556  var hasX = offsets.hasOwnProperty('x');
1557  var hasY = offsets.hasOwnProperty('y');
1558  var sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.left;
1559  var sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.top;
1560  var win = window;
1561
1562  if (adaptive) {
1563    var offsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(popper);
1564    var heightProp = 'clientHeight';
1565    var widthProp = 'clientWidth';
1566
1567    if (offsetParent === (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__["default"])(popper)) {
1568      offsetParent = (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(popper);
1569
1570      if ((0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__["default"])(offsetParent).position !== 'static' && position === 'absolute') {
1571        heightProp = 'scrollHeight';
1572        widthProp = 'scrollWidth';
1573      }
1574    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it
1575
1576
1577    offsetParent = offsetParent;
1578
1579    if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.right) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) {
1580      sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom;
1581      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
1582      offsetParent[heightProp];
1583      y -= offsetY - popperRect.height;
1584      y *= gpuAcceleration ? 1 : -1;
1585    }
1586
1587    if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) {
1588      sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.right;
1589      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
1590      offsetParent[widthProp];
1591      x -= offsetX - popperRect.width;
1592      x *= gpuAcceleration ? 1 : -1;
1593    }
1594  }
1595
1596  var commonStyles = Object.assign({
1597    position: position
1598  }, adaptive && unsetSides);
1599
1600  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
1601    x: x,
1602    y: y
1603  }, (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__["default"])(popper)) : {
1604    x: x,
1605    y: y
1606  };
1607
1608  x = _ref4.x;
1609  y = _ref4.y;
1610
1611  if (gpuAcceleration) {
1612    var _Object$assign;
1613
1614    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
1615  }
1616
1617  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
1618}
1619
1620function computeStyles(_ref5) {
1621  var state = _ref5.state,
1622      options = _ref5.options;
1623  var _options$gpuAccelerat = options.gpuAcceleration,
1624      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
1625      _options$adaptive = options.adaptive,
1626      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,
1627      _options$roundOffsets = options.roundOffsets,
1628      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
1629  var commonStyles = {
1630    placement: (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.placement),
1631    variation: (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__["default"])(state.placement),
1632    popper: state.elements.popper,
1633    popperRect: state.rects.popper,
1634    gpuAcceleration: gpuAcceleration,
1635    isFixed: state.options.strategy === 'fixed'
1636  };
1637
1638  if (state.modifiersData.popperOffsets != null) {
1639    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
1640      offsets: state.modifiersData.popperOffsets,
1641      position: state.options.strategy,
1642      adaptive: adaptive,
1643      roundOffsets: roundOffsets
1644    })));
1645  }
1646
1647  if (state.modifiersData.arrow != null) {
1648    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
1649      offsets: state.modifiersData.arrow,
1650      position: 'absolute',
1651      adaptive: false,
1652      roundOffsets: roundOffsets
1653    })));
1654  }
1655
1656  state.attributes.popper = Object.assign({}, state.attributes.popper, {
1657    'data-popper-placement': state.placement
1658  });
1659} // eslint-disable-next-line import/no-unused-modules
1660
1661
1662/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
1663  name: 'computeStyles',
1664  enabled: true,
1665  phase: 'beforeWrite',
1666  fn: computeStyles,
1667  data: {}
1668});
1669
1670/***/ }),
1671
vendor: 2,190 bytes, lines 1672-1735
1672/***/ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js":
1673/*!*********************************************************************!*\
1674  !*** ./node_modules/@popperjs/core/lib/modifiers/eventListeners.js ***!
1675  \*********************************************************************/
1676/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1677
1678"use strict";
1679__webpack_require__.r(__webpack_exports__);
1680/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1681/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1682/* harmony export */ });
1683/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
1684 // eslint-disable-next-line import/no-unused-modules
1685
1686var passive = {
1687  passive: true
1688};
1689
1690function effect(_ref) {
1691  var state = _ref.state,
1692      instance = _ref.instance,
1693      options = _ref.options;
1694  var _options$scroll = options.scroll,
1695      scroll = _options$scroll === void 0 ? true : _options$scroll,
1696      _options$resize = options.resize,
1697      resize = _options$resize === void 0 ? true : _options$resize;
1698  var window = (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state.elements.popper);
1699  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
1700
1701  if (scroll) {
1702    scrollParents.forEach(function (scrollParent) {
1703      scrollParent.addEventListener('scroll', instance.update, passive);
1704    });
1705  }
1706
1707  if (resize) {
1708    window.addEventListener('resize', instance.update, passive);
1709  }
1710
1711  return function () {
1712    if (scroll) {
1713      scrollParents.forEach(function (scrollParent) {
1714        scrollParent.removeEventListener('scroll', instance.update, passive);
1715      });
1716    }
1717
1718    if (resize) {
1719      window.removeEventListener('resize', instance.update, passive);
1720    }
1721  };
1722} // eslint-disable-next-line import/no-unused-modules
1723
1724
1725/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
1726  name: 'eventListeners',
1727  enabled: true,
1728  phase: 'write',
1729  fn: function fn() {},
1730  effect: effect,
1731  data: {}
1732});
1733
1734/***/ }),
1735
vendor: 7,538 bytes, lines 1736-1903
1736/***/ "./node_modules/@popperjs/core/lib/modifiers/flip.js":
1737/*!***********************************************************!*\
1738  !*** ./node_modules/@popperjs/core/lib/modifiers/flip.js ***!
1739  \***********************************************************/
1740/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1741
1742"use strict";
1743__webpack_require__.r(__webpack_exports__);
1744/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1745/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1746/* harmony export */ });
1747/* harmony import */ var _utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getOppositePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js");
1748/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
1749/* harmony import */ var _utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getOppositeVariationPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js");
1750/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
1751/* harmony import */ var _utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/computeAutoPlacement.js */ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js");
1752/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
1753/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js");
1754
1755
1756
1757
1758
1759
1760 // eslint-disable-next-line import/no-unused-modules
1761
1762function getExpandedFallbackPlacements(placement) {
1763  if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto) {
1764    return [];
1765  }
1766
1767  var oppositePlacement = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(placement);
1768  return [(0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement), oppositePlacement, (0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(oppositePlacement)];
1769}
1770
1771function flip(_ref) {
1772  var state = _ref.state,
1773      options = _ref.options,
1774      name = _ref.name;
1775
1776  if (state.modifiersData[name]._skip) {
1777    return;
1778  }
1779
1780  var _options$mainAxis = options.mainAxis,
1781      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
1782      _options$altAxis = options.altAxis,
1783      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
1784      specifiedFallbackPlacements = options.fallbackPlacements,
1785      padding = options.padding,
1786      boundary = options.boundary,
1787      rootBoundary = options.rootBoundary,
1788      altBoundary = options.altBoundary,
1789      _options$flipVariatio = options.flipVariations,
1790      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,
1791      allowedAutoPlacements = options.allowedAutoPlacements;
1792  var preferredPlacement = state.options.placement;
1793  var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(preferredPlacement);
1794  var isBasePlacement = basePlacement === preferredPlacement;
1795  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [(0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
1796  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {
1797    return acc.concat((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto ? (0,_utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(state, {
1798      placement: placement,
1799      boundary: boundary,
1800      rootBoundary: rootBoundary,
1801      padding: padding,
1802      flipVariations: flipVariations,
1803      allowedAutoPlacements: allowedAutoPlacements
1804    }) : placement);
1805  }, []);
1806  var referenceRect = state.rects.reference;
1807  var popperRect = state.rects.popper;
1808  var checksMap = new Map();
1809  var makeFallbackChecks = true;
1810  var firstFittingPlacement = placements[0];
1811
1812  for (var i = 0; i < placements.length; i++) {
1813    var placement = placements[i];
1814
1815    var _basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement);
1816
1817    var isStartVariation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.start;
1818    var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.top, _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom].indexOf(_basePlacement) >= 0;
1819    var len = isVertical ? 'width' : 'height';
1820    var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state, {
1821      placement: placement,
1822      boundary: boundary,
1823      rootBoundary: rootBoundary,
1824      altBoundary: altBoundary,
1825      padding: padding
1826    });
1827    var mainVariationSide = isVertical ? isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.right : _enums_js__WEBPACK_IMPORTED_MODULE_1__.left : isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_1__.top;
1828
1829    if (referenceRect[len] > popperRect[len]) {
1830      mainVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(mainVariationSide);
1831    }
1832
1833    var altVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(mainVariationSide);
1834    var checks = [];
1835
1836    if (checkMainAxis) {
1837      checks.push(overflow[_basePlacement] <= 0);
1838    }
1839
1840    if (checkAltAxis) {
1841      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
1842    }
1843
1844    if (checks.every(function (check) {
1845      return check;
1846    })) {
1847      firstFittingPlacement = placement;
1848      makeFallbackChecks = false;
1849      break;
1850    }
1851
1852    checksMap.set(placement, checks);
1853  }
1854
1855  if (makeFallbackChecks) {
1856    // `2` may be desired in some cases – research later
1857    var numberOfChecks = flipVariations ? 3 : 1;
1858
1859    var _loop = function _loop(_i) {
1860      var fittingPlacement = placements.find(function (placement) {
1861        var checks = checksMap.get(placement);
1862
1863        if (checks) {
1864          return checks.slice(0, _i).every(function (check) {
1865            return check;
1866          });
1867        }
1868      });
1869
1870      if (fittingPlacement) {
1871        firstFittingPlacement = fittingPlacement;
1872        return "break";
1873      }
1874    };
1875
1876    for (var _i = numberOfChecks; _i > 0; _i--) {
1877      var _ret = _loop(_i);
1878
1879      if (_ret === "break") break;
1880    }
1881  }
1882
1883  if (state.placement !== firstFittingPlacement) {
1884    state.modifiersData[name]._skip = true;
1885    state.placement = firstFittingPlacement;
1886    state.reset = true;
1887  }
1888} // eslint-disable-next-line import/no-unused-modules
1889
1890
1891/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
1892  name: 'flip',
1893  enabled: true,
1894  phase: 'main',
1895  fn: flip,
1896  requiresIfExists: ['offset'],
1897  data: {
1898    _skip: false
1899  }
1900});
1901
1902/***/ }),
1903
vendor: 3,074 bytes, lines 1904-1980
1904/***/ "./node_modules/@popperjs/core/lib/modifiers/hide.js":
1905/*!***********************************************************!*\
1906  !*** ./node_modules/@popperjs/core/lib/modifiers/hide.js ***!
1907  \***********************************************************/
1908/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1909
1910"use strict";
1911__webpack_require__.r(__webpack_exports__);
1912/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1913/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1914/* harmony export */ });
1915/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
1916/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
1917
1918
1919
1920function getSideOffsets(overflow, rect, preventedOffsets) {
1921  if (preventedOffsets === void 0) {
1922    preventedOffsets = {
1923      x: 0,
1924      y: 0
1925    };
1926  }
1927
1928  return {
1929    top: overflow.top - rect.height - preventedOffsets.y,
1930    right: overflow.right - rect.width + preventedOffsets.x,
1931    bottom: overflow.bottom - rect.height + preventedOffsets.y,
1932    left: overflow.left - rect.width - preventedOffsets.x
1933  };
1934}
1935
1936function isAnySideFullyClipped(overflow) {
1937  return [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom, _enums_js__WEBPACK_IMPORTED_MODULE_0__.left].some(function (side) {
1938    return overflow[side] >= 0;
1939  });
1940}
1941
1942function hide(_ref) {
1943  var state = _ref.state,
1944      name = _ref.name;
1945  var referenceRect = state.rects.reference;
1946  var popperRect = state.rects.popper;
1947  var preventedOffsets = state.modifiersData.preventOverflow;
1948  var referenceOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, {
1949    elementContext: 'reference'
1950  });
1951  var popperAltOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, {
1952    altBoundary: true
1953  });
1954  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
1955  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
1956  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
1957  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
1958  state.modifiersData[name] = {
1959    referenceClippingOffsets: referenceClippingOffsets,
1960    popperEscapeOffsets: popperEscapeOffsets,
1961    isReferenceHidden: isReferenceHidden,
1962    hasPopperEscaped: hasPopperEscaped
1963  };
1964  state.attributes.popper = Object.assign({}, state.attributes.popper, {
1965    'data-popper-reference-hidden': isReferenceHidden,
1966    'data-popper-escaped': hasPopperEscaped
1967  });
1968} // eslint-disable-next-line import/no-unused-modules
1969
1970
1971/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
1972  name: 'hide',
1973  enabled: true,
1974  phase: 'main',
1975  requiresIfExists: ['preventOverflow'],
1976  fn: hide
1977});
1978
1979/***/ }),
1980
vendor: 3,157 bytes, lines 1981-2020
1981/***/ "./node_modules/@popperjs/core/lib/modifiers/index.js":
1982/*!************************************************************!*\
1983  !*** ./node_modules/@popperjs/core/lib/modifiers/index.js ***!
1984  \************************************************************/
1985/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1986
1987"use strict";
1988__webpack_require__.r(__webpack_exports__);
1989/* harmony export */ __webpack_require__.d(__webpack_exports__, {
1990/* harmony export */   "applyStyles": () => (/* reexport safe */ _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__["default"]),
1991/* harmony export */   "arrow": () => (/* reexport safe */ _arrow_js__WEBPACK_IMPORTED_MODULE_1__["default"]),
1992/* harmony export */   "computeStyles": () => (/* reexport safe */ _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"]),
1993/* harmony export */   "eventListeners": () => (/* reexport safe */ _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__["default"]),
1994/* harmony export */   "flip": () => (/* reexport safe */ _flip_js__WEBPACK_IMPORTED_MODULE_4__["default"]),
1995/* harmony export */   "hide": () => (/* reexport safe */ _hide_js__WEBPACK_IMPORTED_MODULE_5__["default"]),
1996/* harmony export */   "offset": () => (/* reexport safe */ _offset_js__WEBPACK_IMPORTED_MODULE_6__["default"]),
1997/* harmony export */   "popperOffsets": () => (/* reexport safe */ _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"]),
1998/* harmony export */   "preventOverflow": () => (/* reexport safe */ _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"])
1999/* harmony export */ });
2000/* harmony import */ var _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js");
2001/* harmony import */ var _arrow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js");
2002/* harmony import */ var _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js");
2003/* harmony import */ var _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js");
2004/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js");
2005/* harmony import */ var _hide_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js");
2006/* harmony import */ var _offset_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js");
2007/* harmony import */ var _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js");
2008/* harmony import */ var _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js");
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019/***/ }),
2020
vendor: 2,814 bytes, lines 2021-2091
2021/***/ "./node_modules/@popperjs/core/lib/modifiers/offset.js":
2022/*!*************************************************************!*\
2023  !*** ./node_modules/@popperjs/core/lib/modifiers/offset.js ***!
2024  \*************************************************************/
2025/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2026
2027"use strict";
2028__webpack_require__.r(__webpack_exports__);
2029/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2030/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__),
2031/* harmony export */   "distanceAndSkiddingToXY": () => (/* binding */ distanceAndSkiddingToXY)
2032/* harmony export */ });
2033/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
2034/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
2035
2036 // eslint-disable-next-line import/no-unused-modules
2037
2038function distanceAndSkiddingToXY(placement, rects, offset) {
2039  var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement);
2040  var invertDistance = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.top].indexOf(basePlacement) >= 0 ? -1 : 1;
2041
2042  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
2043    placement: placement
2044  })) : offset,
2045      skidding = _ref[0],
2046      distance = _ref[1];
2047
2048  skidding = skidding || 0;
2049  distance = (distance || 0) * invertDistance;
2050  return [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.right].indexOf(basePlacement) >= 0 ? {
2051    x: distance,
2052    y: skidding
2053  } : {
2054    x: skidding,
2055    y: distance
2056  };
2057}
2058
2059function offset(_ref2) {
2060  var state = _ref2.state,
2061      options = _ref2.options,
2062      name = _ref2.name;
2063  var _options$offset = options.offset,
2064      offset = _options$offset === void 0 ? [0, 0] : _options$offset;
2065  var data = _enums_js__WEBPACK_IMPORTED_MODULE_1__.placements.reduce(function (acc, placement) {
2066    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
2067    return acc;
2068  }, {});
2069  var _data$state$placement = data[state.placement],
2070      x = _data$state$placement.x,
2071      y = _data$state$placement.y;
2072
2073  if (state.modifiersData.popperOffsets != null) {
2074    state.modifiersData.popperOffsets.x += x;
2075    state.modifiersData.popperOffsets.y += y;
2076  }
2077
2078  state.modifiersData[name] = data;
2079} // eslint-disable-next-line import/no-unused-modules
2080
2081
2082/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
2083  name: 'offset',
2084  enabled: true,
2085  phase: 'main',
2086  requires: ['popperOffsets'],
2087  fn: offset
2088});
2089
2090/***/ }),
2091
vendor: 1,555 bytes, lines 2092-2131
2092/***/ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js":
2093/*!********************************************************************!*\
2094  !*** ./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js ***!
2095  \********************************************************************/
2096/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2097
2098"use strict";
2099__webpack_require__.r(__webpack_exports__);
2100/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2101/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2102/* harmony export */ });
2103/* harmony import */ var _utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js");
2104
2105
2106function popperOffsets(_ref) {
2107  var state = _ref.state,
2108      name = _ref.name;
2109  // Offsets are the actual position the popper needs to have to be
2110  // properly positioned near its reference element
2111  // This is the most basic placement, and will be adjusted by
2112  // the modifiers in the next step
2113  state.modifiersData[name] = (0,_utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
2114    reference: state.rects.reference,
2115    element: state.rects.popper,
2116    strategy: 'absolute',
2117    placement: state.placement
2118  });
2119} // eslint-disable-next-line import/no-unused-modules
2120
2121
2122/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
2123  name: 'popperOffsets',
2124  enabled: true,
2125  phase: 'read',
2126  fn: popperOffsets,
2127  data: {}
2128});
2129
2130/***/ }),
2131
vendor: 9,904 bytes, lines 2132-2298
2132/***/ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js":
2133/*!**********************************************************************!*\
2134  !*** ./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js ***!
2135  \**********************************************************************/
2136/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2137
2138"use strict";
2139__webpack_require__.r(__webpack_exports__);
2140/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2141/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2142/* harmony export */ });
2143/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
2144/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
2145/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js");
2146/* harmony import */ var _utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getAltAxis.js */ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js");
2147/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js");
2148/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js");
2149/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");
2150/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
2151/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js");
2152/* harmony import */ var _utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js");
2153/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166function preventOverflow(_ref) {
2167  var state = _ref.state,
2168      options = _ref.options,
2169      name = _ref.name;
2170  var _options$mainAxis = options.mainAxis,
2171      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
2172      _options$altAxis = options.altAxis,
2173      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,
2174      boundary = options.boundary,
2175      rootBoundary = options.rootBoundary,
2176      altBoundary = options.altBoundary,
2177      padding = options.padding,
2178      _options$tether = options.tether,
2179      tether = _options$tether === void 0 ? true : _options$tether,
2180      _options$tetherOffset = options.tetherOffset,
2181      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
2182  var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state, {
2183    boundary: boundary,
2184    rootBoundary: rootBoundary,
2185    padding: padding,
2186    altBoundary: altBoundary
2187  });
2188  var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state.placement);
2189  var variation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state.placement);
2190  var isBasePlacement = !variation;
2191  var mainAxis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(basePlacement);
2192  var altAxis = (0,_utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__["default"])(mainAxis);
2193  var popperOffsets = state.modifiersData.popperOffsets;
2194  var referenceRect = state.rects.reference;
2195  var popperRect = state.rects.popper;
2196  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
2197    placement: state.placement
2198  })) : tetherOffset;
2199  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {
2200    mainAxis: tetherOffsetValue,
2201    altAxis: tetherOffsetValue
2202  } : Object.assign({
2203    mainAxis: 0,
2204    altAxis: 0
2205  }, tetherOffsetValue);
2206  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
2207  var data = {
2208    x: 0,
2209    y: 0
2210  };
2211
2212  if (!popperOffsets) {
2213    return;
2214  }
2215
2216  if (checkMainAxis) {
2217    var _offsetModifierState$;
2218
2219    var mainSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left;
2220    var altSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right;
2221    var len = mainAxis === 'y' ? 'height' : 'width';
2222    var offset = popperOffsets[mainAxis];
2223    var min = offset + overflow[mainSide];
2224    var max = offset - overflow[altSide];
2225    var additive = tether ? -popperRect[len] / 2 : 0;
2226    var minLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? referenceRect[len] : popperRect[len];
2227    var maxLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go
2228    // outside the reference bounds
2229
2230    var arrowElement = state.elements.arrow;
2231    var arrowRect = tether && arrowElement ? (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(arrowElement) : {
2232      width: 0,
2233      height: 0
2234    };
2235    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : (0,_utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__["default"])();
2236    var arrowPaddingMin = arrowPaddingObject[mainSide];
2237    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want
2238    // to include its full size in the calculation. If the reference is small
2239    // and near the edge of a boundary, the popper can overflow even if the
2240    // reference is not overflowing as well (e.g. virtual elements with no
2241    // width or height)
2242
2243    var arrowLen = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(0, referenceRect[len], arrowRect[len]);
2244    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
2245    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
2246    var arrowOffsetParent = state.elements.arrow && (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__["default"])(state.elements.arrow);
2247    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
2248    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
2249    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;
2250    var tetherMax = offset + maxOffset - offsetModifierValue;
2251    var preventedOffset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.min)(min, tetherMin) : min, offset, tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.max)(max, tetherMax) : max);
2252    popperOffsets[mainAxis] = preventedOffset;
2253    data[mainAxis] = preventedOffset - offset;
2254  }
2255
2256  if (checkAltAxis) {
2257    var _offsetModifierState$2;
2258
2259    var _mainSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left;
2260
2261    var _altSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right;
2262
2263    var _offset = popperOffsets[altAxis];
2264
2265    var _len = altAxis === 'y' ? 'height' : 'width';
2266
2267    var _min = _offset + overflow[_mainSide];
2268
2269    var _max = _offset - overflow[_altSide];
2270
2271    var isOriginSide = [_enums_js__WEBPACK_IMPORTED_MODULE_5__.top, _enums_js__WEBPACK_IMPORTED_MODULE_5__.left].indexOf(basePlacement) !== -1;
2272
2273    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
2274
2275    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
2276
2277    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
2278
2279    var _preventedOffset = tether && isOriginSide ? (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.withinMaxClamp)(_tetherMin, _offset, _tetherMax) : (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
2280
2281    popperOffsets[altAxis] = _preventedOffset;
2282    data[altAxis] = _preventedOffset - _offset;
2283  }
2284
2285  state.modifiersData[name] = data;
2286} // eslint-disable-next-line import/no-unused-modules
2287
2288
2289/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
2290  name: 'preventOverflow',
2291  enabled: true,
2292  phase: 'main',
2293  fn: preventOverflow,
2294  requiresIfExists: ['offset']
2295});
2296
2297/***/ }),
2298
vendor: 2,572 bytes, lines 2299-2332
2299/***/ "./node_modules/@popperjs/core/lib/popper-lite.js":
2300/*!********************************************************!*\
2301  !*** ./node_modules/@popperjs/core/lib/popper-lite.js ***!
2302  \********************************************************/
2303/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2304
2305"use strict";
2306__webpack_require__.r(__webpack_exports__);
2307/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2308/* harmony export */   "createPopper": () => (/* binding */ createPopper),
2309/* harmony export */   "defaultModifiers": () => (/* binding */ defaultModifiers),
2310/* harmony export */   "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_5__["default"]),
2311/* harmony export */   "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)
2312/* harmony export */ });
2313/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js");
2314/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
2315/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js");
2316/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js");
2317/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js");
2318/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js");
2319
2320
2321
2322
2323
2324var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"]];
2325var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)({
2326  defaultModifiers: defaultModifiers
2327}); // eslint-disable-next-line import/no-unused-modules
2328
2329
2330
2331/***/ }),
2332
vendor: 5,531 bytes, lines 2333-2392
2333/***/ "./node_modules/@popperjs/core/lib/popper.js":
2334/*!***************************************************!*\
2335  !*** ./node_modules/@popperjs/core/lib/popper.js ***!
2336  \***************************************************/
2337/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2338
2339"use strict";
2340__webpack_require__.r(__webpack_exports__);
2341/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2342/* harmony export */   "applyStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.applyStyles),
2343/* harmony export */   "arrow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.arrow),
2344/* harmony export */   "computeStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.computeStyles),
2345/* harmony export */   "createPopper": () => (/* binding */ createPopper),
2346/* harmony export */   "createPopperLite": () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__.createPopper),
2347/* harmony export */   "defaultModifiers": () => (/* binding */ defaultModifiers),
2348/* harmony export */   "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_10__["default"]),
2349/* harmony export */   "eventListeners": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.eventListeners),
2350/* harmony export */   "flip": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.flip),
2351/* harmony export */   "hide": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.hide),
2352/* harmony export */   "offset": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.offset),
2353/* harmony export */   "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator),
2354/* harmony export */   "popperOffsets": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.popperOffsets),
2355/* harmony export */   "preventOverflow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.preventOverflow)
2356/* harmony export */ });
2357/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js");
2358/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
2359/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js");
2360/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js");
2361/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js");
2362/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js");
2363/* harmony import */ var _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifiers/offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js");
2364/* harmony import */ var _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modifiers/flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js");
2365/* harmony import */ var _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modifiers/preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js");
2366/* harmony import */ var _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modifiers/arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js");
2367/* harmony import */ var _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modifiers/hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js");
2368/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js");
2369/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js");
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"], _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__["default"], _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__["default"], _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__["default"], _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__["default"]];
2381var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator)({
2382  defaultModifiers: defaultModifiers
2383}); // eslint-disable-next-line import/no-unused-modules
2384
2385 // eslint-disable-next-line import/no-unused-modules
2386
2387 // eslint-disable-next-line import/no-unused-modules
2388
2389
2390
2391/***/ }),
2392
vendor: 3,096 bytes, lines 2393-2453
2393/***/ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js":
2394/*!***********************************************************************!*\
2395  !*** ./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js ***!
2396  \***********************************************************************/
2397/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2398
2399"use strict";
2400__webpack_require__.r(__webpack_exports__);
2401/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2402/* harmony export */   "default": () => (/* binding */ computeAutoPlacement)
2403/* harmony export */ });
2404/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js");
2405/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
2406/* harmony import */ var _detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
2407/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
2408
2409
2410
2411
2412function computeAutoPlacement(state, options) {
2413  if (options === void 0) {
2414    options = {};
2415  }
2416
2417  var _options = options,
2418      placement = _options.placement,
2419      boundary = _options.boundary,
2420      rootBoundary = _options.rootBoundary,
2421      padding = _options.padding,
2422      flipVariations = _options.flipVariations,
2423      _options$allowedAutoP = _options.allowedAutoPlacements,
2424      allowedAutoPlacements = _options$allowedAutoP === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements : _options$allowedAutoP;
2425  var variation = (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement);
2426  var placements = variation ? flipVariations ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements : _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements.filter(function (placement) {
2427    return (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) === variation;
2428  }) : _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements;
2429  var allowedPlacements = placements.filter(function (placement) {
2430    return allowedAutoPlacements.indexOf(placement) >= 0;
2431  });
2432
2433  if (allowedPlacements.length === 0) {
2434    allowedPlacements = placements;
2435  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...
2436
2437
2438  var overflows = allowedPlacements.reduce(function (acc, placement) {
2439    acc[placement] = (0,_detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state, {
2440      placement: placement,
2441      boundary: boundary,
2442      rootBoundary: rootBoundary,
2443      padding: padding
2444    })[(0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement)];
2445    return acc;
2446  }, {});
2447  return Object.keys(overflows).sort(function (a, b) {
2448    return overflows[a] - overflows[b];
2449  });
2450}
2451
2452/***/ }),
2453
vendor: 3,194 bytes, lines 2454-2541
2454/***/ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js":
2455/*!*****************************************************************!*\
2456  !*** ./node_modules/@popperjs/core/lib/utils/computeOffsets.js ***!
2457  \*****************************************************************/
2458/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2459
2460"use strict";
2461__webpack_require__.r(__webpack_exports__);
2462/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2463/* harmony export */   "default": () => (/* binding */ computeOffsets)
2464/* harmony export */ });
2465/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
2466/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js");
2467/* harmony import */ var _getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js");
2468/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
2469
2470
2471
2472
2473function computeOffsets(_ref) {
2474  var reference = _ref.reference,
2475      element = _ref.element,
2476      placement = _ref.placement;
2477  var basePlacement = placement ? (0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) : null;
2478  var variation = placement ? (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) : null;
2479  var commonX = reference.x + reference.width / 2 - element.width / 2;
2480  var commonY = reference.y + reference.height / 2 - element.height / 2;
2481  var offsets;
2482
2483  switch (basePlacement) {
2484    case _enums_js__WEBPACK_IMPORTED_MODULE_2__.top:
2485      offsets = {
2486        x: commonX,
2487        y: reference.y - element.height
2488      };
2489      break;
2490
2491    case _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom:
2492      offsets = {
2493        x: commonX,
2494        y: reference.y + reference.height
2495      };
2496      break;
2497
2498    case _enums_js__WEBPACK_IMPORTED_MODULE_2__.right:
2499      offsets = {
2500        x: reference.x + reference.width,
2501        y: commonY
2502      };
2503      break;
2504
2505    case _enums_js__WEBPACK_IMPORTED_MODULE_2__.left:
2506      offsets = {
2507        x: reference.x - element.width,
2508        y: commonY
2509      };
2510      break;
2511
2512    default:
2513      offsets = {
2514        x: reference.x,
2515        y: reference.y
2516      };
2517  }
2518
2519  var mainAxis = basePlacement ? (0,_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(basePlacement) : null;
2520
2521  if (mainAxis != null) {
2522    var len = mainAxis === 'y' ? 'height' : 'width';
2523
2524    switch (variation) {
2525      case _enums_js__WEBPACK_IMPORTED_MODULE_2__.start:
2526        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
2527        break;
2528
2529      case _enums_js__WEBPACK_IMPORTED_MODULE_2__.end:
2530        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
2531        break;
2532
2533      default:
2534    }
2535  }
2536
2537  return offsets;
2538}
2539
2540/***/ }),
2541
vendor: 850 bytes, lines 2542-2570
2542/***/ "./node_modules/@popperjs/core/lib/utils/debounce.js":
2543/*!***********************************************************!*\
2544  !*** ./node_modules/@popperjs/core/lib/utils/debounce.js ***!
2545  \***********************************************************/
2546/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2547
2548"use strict";
2549__webpack_require__.r(__webpack_exports__);
2550/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2551/* harmony export */   "default": () => (/* binding */ debounce)
2552/* harmony export */ });
2553function debounce(fn) {
2554  var pending;
2555  return function () {
2556    if (!pending) {
2557      pending = new Promise(function (resolve) {
2558        Promise.resolve().then(function () {
2559          pending = undefined;
2560          resolve(fn());
2561        });
2562      });
2563    }
2564
2565    return pending;
2566  };
2567}
2568
2569/***/ }),
2570
vendor: 6,226 bytes, lines 2571-2658
2571/***/ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js":
2572/*!*****************************************************************!*\
2573  !*** ./node_modules/@popperjs/core/lib/utils/detectOverflow.js ***!
2574  \*****************************************************************/
2575/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2576
2577"use strict";
2578__webpack_require__.r(__webpack_exports__);
2579/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2580/* harmony export */   "default": () => (/* binding */ detectOverflow)
2581/* harmony export */ });
2582/* harmony import */ var _dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getClippingRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js");
2583/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
2584/* harmony import */ var _dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");
2585/* harmony import */ var _computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js");
2586/* harmony import */ var _rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js");
2587/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
2588/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
2589/* harmony import */ var _mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js");
2590/* harmony import */ var _expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js");
2591
2592
2593
2594
2595
2596
2597
2598
2599 // eslint-disable-next-line import/no-unused-modules
2600
2601function detectOverflow(state, options) {
2602  if (options === void 0) {
2603    options = {};
2604  }
2605
2606  var _options = options,
2607      _options$placement = _options.placement,
2608      placement = _options$placement === void 0 ? state.placement : _options$placement,
2609      _options$strategy = _options.strategy,
2610      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,
2611      _options$boundary = _options.boundary,
2612      boundary = _options$boundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents : _options$boundary,
2613      _options$rootBoundary = _options.rootBoundary,
2614      rootBoundary = _options$rootBoundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport : _options$rootBoundary,
2615      _options$elementConte = _options.elementContext,
2616      elementContext = _options$elementConte === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper : _options$elementConte,
2617      _options$altBoundary = _options.altBoundary,
2618      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
2619      _options$padding = _options.padding,
2620      padding = _options$padding === void 0 ? 0 : _options$padding;
2621  var paddingObject = (0,_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__["default"])(typeof padding !== 'number' ? padding : (0,_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements));
2622  var altContext = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference : _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper;
2623  var popperRect = state.rects.popper;
2624  var element = state.elements[altBoundary ? altContext : elementContext];
2625  var clippingClientRect = (0,_dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])((0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(element) ? element : element.contextElement || (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.elements.popper), boundary, rootBoundary, strategy);
2626  var referenceClientRect = (0,_dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.elements.reference);
2627  var popperOffsets = (0,_computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"])({
2628    reference: referenceClientRect,
2629    element: popperRect,
2630    strategy: 'absolute',
2631    placement: placement
2632  });
2633  var popperClientRect = (0,_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__["default"])(Object.assign({}, popperRect, popperOffsets));
2634  var elementClientRect = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
2635  // 0 or negative = within the clipping rect
2636
2637  var overflowOffsets = {
2638    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
2639    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
2640    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
2641    right: elementClientRect.right - clippingClientRect.right + paddingObject.right
2642  };
2643  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
2644
2645  if (elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper && offsetData) {
2646    var offset = offsetData[placement];
2647    Object.keys(overflowOffsets).forEach(function (key) {
2648      var multiply = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 1 : -1;
2649      var axis = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 'y' : 'x';
2650      overflowOffsets[key] += offset[axis] * multiply;
2651    });
2652  }
2653
2654  return overflowOffsets;
2655}
2656
2657/***/ }),
2658
vendor: 742 bytes, lines 2659-2678
2659/***/ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js":
2660/*!******************************************************************!*\
2661  !*** ./node_modules/@popperjs/core/lib/utils/expandToHashMap.js ***!
2662  \******************************************************************/
2663/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2664
2665"use strict";
2666__webpack_require__.r(__webpack_exports__);
2667/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2668/* harmony export */   "default": () => (/* binding */ expandToHashMap)
2669/* harmony export */ });
2670function expandToHashMap(value, keys) {
2671  return keys.reduce(function (hashMap, key) {
2672    hashMap[key] = value;
2673    return hashMap;
2674  }, {});
2675}
2676
2677/***/ }),
2678
vendor: 637 bytes, lines 2679-2695
2679/***/ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js":
2680/*!*************************************************************!*\
2681  !*** ./node_modules/@popperjs/core/lib/utils/getAltAxis.js ***!
2682  \*************************************************************/
2683/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2684
2685"use strict";
2686__webpack_require__.r(__webpack_exports__);
2687/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2688/* harmony export */   "default": () => (/* binding */ getAltAxis)
2689/* harmony export */ });
2690function getAltAxis(axis) {
2691  return axis === 'x' ? 'y' : 'x';
2692}
2693
2694/***/ }),
2695
vendor: 678 bytes, lines 2696-2713
2696/***/ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js":
2697/*!*******************************************************************!*\
2698  !*** ./node_modules/@popperjs/core/lib/utils/getBasePlacement.js ***!
2699  \*******************************************************************/
2700/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2701
2702"use strict";
2703__webpack_require__.r(__webpack_exports__);
2704/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2705/* harmony export */   "default": () => (/* binding */ getBasePlacement)
2706/* harmony export */ });
2707
2708function getBasePlacement(placement) {
2709  return placement.split('-')[0];
2710}
2711
2712/***/ }),
2713
vendor: 715 bytes, lines 2714-2735
2714/***/ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js":
2715/*!*********************************************************************!*\
2716  !*** ./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js ***!
2717  \*********************************************************************/
2718/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2719
2720"use strict";
2721__webpack_require__.r(__webpack_exports__);
2722/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2723/* harmony export */   "default": () => (/* binding */ getFreshSideObject)
2724/* harmony export */ });
2725function getFreshSideObject() {
2726  return {
2727    top: 0,
2728    right: 0,
2729    bottom: 0,
2730    left: 0
2731  };
2732}
2733
2734/***/ }),
2735
vendor: 755 bytes, lines 2736-2752
2736/***/ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js":
2737/*!***************************************************************************!*\
2738  !*** ./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js ***!
2739  \***************************************************************************/
2740/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2741
2742"use strict";
2743__webpack_require__.r(__webpack_exports__);
2744/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2745/* harmony export */   "default": () => (/* binding */ getMainAxisFromPlacement)
2746/* harmony export */ });
2747function getMainAxisFromPlacement(placement) {
2748  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
2749}
2750
2751/***/ }),
2752
vendor: 856 bytes, lines 2753-2777
2753/***/ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js":
2754/*!***********************************************************************!*\
2755  !*** ./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js ***!
2756  \***********************************************************************/
2757/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2758
2759"use strict";
2760__webpack_require__.r(__webpack_exports__);
2761/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2762/* harmony export */   "default": () => (/* binding */ getOppositePlacement)
2763/* harmony export */ });
2764var hash = {
2765  left: 'right',
2766  right: 'left',
2767  bottom: 'top',
2768  top: 'bottom'
2769};
2770function getOppositePlacement(placement) {
2771  return placement.replace(/left|right|bottom|top/g, function (matched) {
2772    return hash[matched];
2773  });
2774}
2775
2776/***/ }),
2777
vendor: 862 bytes, lines 2778-2800
2778/***/ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js":
2779/*!********************************************************************************!*\
2780  !*** ./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js ***!
2781  \********************************************************************************/
2782/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2783
2784"use strict";
2785__webpack_require__.r(__webpack_exports__);
2786/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2787/* harmony export */   "default": () => (/* binding */ getOppositeVariationPlacement)
2788/* harmony export */ });
2789var hash = {
2790  start: 'end',
2791  end: 'start'
2792};
2793function getOppositeVariationPlacement(placement) {
2794  return placement.replace(/start|end/g, function (matched) {
2795    return hash[matched];
2796  });
2797}
2798
2799/***/ }),
2800
vendor: 653 bytes, lines 2801-2817
2801/***/ "./node_modules/@popperjs/core/lib/utils/getVariation.js":
2802/*!***************************************************************!*\
2803  !*** ./node_modules/@popperjs/core/lib/utils/getVariation.js ***!
2804  \***************************************************************/
2805/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2806
2807"use strict";
2808__webpack_require__.r(__webpack_exports__);
2809/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2810/* harmony export */   "default": () => (/* binding */ getVariation)
2811/* harmony export */ });
2812function getVariation(placement) {
2813  return placement.split('-')[1];
2814}
2815
2816/***/ }),
2817
vendor: 719 bytes, lines 2818-2836
2818/***/ "./node_modules/@popperjs/core/lib/utils/math.js":
2819/*!*******************************************************!*\
2820  !*** ./node_modules/@popperjs/core/lib/utils/math.js ***!
2821  \*******************************************************/
2822/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2823
2824"use strict";
2825__webpack_require__.r(__webpack_exports__);
2826/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2827/* harmony export */   "max": () => (/* binding */ max),
2828/* harmony export */   "min": () => (/* binding */ min),
2829/* harmony export */   "round": () => (/* binding */ round)
2830/* harmony export */ });
2831var max = Math.max;
2832var min = Math.min;
2833var round = Math.round;
2834
2835/***/ }),
2836
vendor: 1,087 bytes, lines 2837-2864
2837/***/ "./node_modules/@popperjs/core/lib/utils/mergeByName.js":
2838/*!**************************************************************!*\
2839  !*** ./node_modules/@popperjs/core/lib/utils/mergeByName.js ***!
2840  \**************************************************************/
2841/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2842
2843"use strict";
2844__webpack_require__.r(__webpack_exports__);
2845/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2846/* harmony export */   "default": () => (/* binding */ mergeByName)
2847/* harmony export */ });
2848function mergeByName(modifiers) {
2849  var merged = modifiers.reduce(function (merged, current) {
2850    var existing = merged[current.name];
2851    merged[current.name] = existing ? Object.assign({}, existing, current, {
2852      options: Object.assign({}, existing.options, current.options),
2853      data: Object.assign({}, existing.data, current.data)
2854    }) : current;
2855    return merged;
2856  }, {}); // IE11 does not support Object.values
2857
2858  return Object.keys(merged).map(function (key) {
2859    return merged[key];
2860  });
2861}
2862
2863/***/ }),
2864
vendor: 969 bytes, lines 2865-2883
2865/***/ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js":
2866/*!*********************************************************************!*\
2867  !*** ./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js ***!
2868  \*********************************************************************/
2869/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2870
2871"use strict";
2872__webpack_require__.r(__webpack_exports__);
2873/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2874/* harmony export */   "default": () => (/* binding */ mergePaddingObject)
2875/* harmony export */ });
2876/* harmony import */ var _getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js");
2877
2878function mergePaddingObject(paddingObject) {
2879  return Object.assign({}, (0,_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(), paddingObject);
2880}
2881
2882/***/ }),
2883
vendor: 1,964 bytes, lines 2884-2942
2884/***/ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js":
2885/*!*****************************************************************!*\
2886  !*** ./node_modules/@popperjs/core/lib/utils/orderModifiers.js ***!
2887  \*****************************************************************/
2888/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2889
2890"use strict";
2891__webpack_require__.r(__webpack_exports__);
2892/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2893/* harmony export */   "default": () => (/* binding */ orderModifiers)
2894/* harmony export */ });
2895/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
2896 // source: https://stackoverflow.com/questions/49875255
2897
2898function order(modifiers) {
2899  var map = new Map();
2900  var visited = new Set();
2901  var result = [];
2902  modifiers.forEach(function (modifier) {
2903    map.set(modifier.name, modifier);
2904  }); // On visiting object, check for its dependencies and visit them recursively
2905
2906  function sort(modifier) {
2907    visited.add(modifier.name);
2908    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
2909    requires.forEach(function (dep) {
2910      if (!visited.has(dep)) {
2911        var depModifier = map.get(dep);
2912
2913        if (depModifier) {
2914          sort(depModifier);
2915        }
2916      }
2917    });
2918    result.push(modifier);
2919  }
2920
2921  modifiers.forEach(function (modifier) {
2922    if (!visited.has(modifier.name)) {
2923      // check for visited object
2924      sort(modifier);
2925    }
2926  });
2927  return result;
2928}
2929
2930function orderModifiers(modifiers) {
2931  // order based on dependencies
2932  var orderedModifiers = order(modifiers); // order based on phase
2933
2934  return _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases.reduce(function (acc, phase) {
2935    return acc.concat(orderedModifiers.filter(function (modifier) {
2936      return modifier.phase === phase;
2937    }));
2938  }, []);
2939}
2940
2941/***/ }),
2942
vendor: 779 bytes, lines 2943-2964
2943/***/ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js":
2944/*!*******************************************************************!*\
2945  !*** ./node_modules/@popperjs/core/lib/utils/rectToClientRect.js ***!
2946  \*******************************************************************/
2947/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2948
2949"use strict";
2950__webpack_require__.r(__webpack_exports__);
2951/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2952/* harmony export */   "default": () => (/* binding */ rectToClientRect)
2953/* harmony export */ });
2954function rectToClientRect(rect) {
2955  return Object.assign({}, rect, {
2956    left: rect.x,
2957    top: rect.y,
2958    right: rect.x + rect.width,
2959    bottom: rect.y + rect.height
2960  });
2961}
2962
2963/***/ }),
2964
vendor: 856 bytes, lines 2965-2989
2965/***/ "./node_modules/@popperjs/core/lib/utils/userAgent.js":
2966/*!************************************************************!*\
2967  !*** ./node_modules/@popperjs/core/lib/utils/userAgent.js ***!
2968  \************************************************************/
2969/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2970
2971"use strict";
2972__webpack_require__.r(__webpack_exports__);
2973/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2974/* harmony export */   "default": () => (/* binding */ getUAString)
2975/* harmony export */ });
2976function getUAString() {
2977  var uaData = navigator.userAgentData;
2978
2979  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {
2980    return uaData.brands.map(function (item) {
2981      return item.brand + "/" + item.version;
2982    }).join(' ');
2983  }
2984
2985  return navigator.userAgent;
2986}
2987
2988/***/ }),
2989
vendor: 1,050 bytes, lines 2990-3013
2990/***/ "./node_modules/@popperjs/core/lib/utils/within.js":
2991/*!*********************************************************!*\
2992  !*** ./node_modules/@popperjs/core/lib/utils/within.js ***!
2993  \*********************************************************/
2994/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2995
2996"use strict";
2997__webpack_require__.r(__webpack_exports__);
2998/* harmony export */ __webpack_require__.d(__webpack_exports__, {
2999/* harmony export */   "within": () => (/* binding */ within),
3000/* harmony export */   "withinMaxClamp": () => (/* binding */ withinMaxClamp)
3001/* harmony export */ });
3002/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
3003
3004function within(min, value, max) {
3005  return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.max)(min, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(value, max));
3006}
3007function withinMaxClamp(min, value, max) {
3008  var v = within(min, value, max);
3009  return v > max ? max : v;
3010}
3011
3012/***/ }),
3013
3014/***/ "./resources/js/layouts/components/_init.js":
3015/*!**************************************************!*\
3016  !*** ./resources/js/layouts/components/_init.js ***!
3017  \**************************************************/
3018/***/ ((module) => {
3019
3020//
3021// Global init of core components
3022//
3023
3024// Init components
3025var IpixComponents = function () {
3026  // Public methods
3027  return {
3028    init: function () {
3029      IpixApp.init();
3030      IpixDrawer.init();
3031      IpixMenu.init();
3032      IpixForm.init();
3033      IpixScroll.init();
3034      IpixSticky.init();
3035      IpixSwapper.init();
3036      IpixToggle.init();
3037      IpixScrolltop.init();
3038      IpixDialer.init();
3039      IpixImageInput.init();
3040      IpixPasswordMeter.init();
3041    }
3042  };
3043}();
3044
3045// On document ready
3046if (document.readyState === "loading") {
3047  document.addEventListener("DOMContentLoaded", function () {
3048    IpixComponents.init();
3049  });
3050} else {
3051  IpixComponents.init();
3052}
3053
3054// Init page loader
3055window.addEventListener("load", function () {
3056  IpixApp.hidePageLoading();
3057});
3058
3059// Declare IpixApp for Webpack support
3060if ( true && typeof module.exports !== 'undefined') {
3061  window.IpixComponents = module.exports = IpixComponents;
3062}
3063
3064/***/ }),
3065
3066/***/ "./resources/js/layouts/components/blockui.js":
3067/*!****************************************************!*\
3068  !*** ./resources/js/layouts/components/blockui.js ***!
3069  \****************************************************/
3070/***/ ((module) => {
3071
3072"use strict";
3073
3074
3075// Class definition
3076var IpixBlockUI = function (element, options) {
3077  //////////////////////////////
3078  // ** Private variables  ** //
3079  //////////////////////////////
3080  var the = this;
3081  if (typeof element === "undefined" || element === null) {
3082    return;
3083  }
3084
3085  // Default options
3086  var defaultOptions = {
3087    zIndex: false,
3088    overlayClass: '',
3089    overflow: 'hidden',
3090    message: '<span class="spinner-border text-primary"></span>'
3091  };
3092
3093  ////////////////////////////
3094  // ** Private methods  ** //
3095  ////////////////////////////
3096
3097  var _construct = function () {
3098    if (IpixUtil.data(element).has('blockui')) {
3099      the = IpixUtil.data(element).get('blockui');
3100    } else {
3101      _init();
3102    }
3103  };
3104  var _init = function () {
3105    // Variables
3106    the.options = IpixUtil.deepExtend({}, defaultOptions, options);
3107    the.element = element;
3108    the.overlayElement = null;
3109    the.blocked = false;
3110    the.positionChanged = false;
3111    the.overflowChanged = false;
3112
3113    // Bind Instance
3114    IpixUtil.data(the.element).set('blockui', the);
3115  };
3116  var _block = function () {
3117    if (IpixEventHandler.trigger(the.element, 'kt.blockui.block', the) === false) {
3118      return;
3119    }
3120    var isPage = the.element.tagName === 'BODY';
3121    var position = IpixUtil.css(the.element, 'position');
3122    var overflow = IpixUtil.css(the.element, 'overflow');
3123    var zIndex = isPage ? 10000 : 1;
3124    if (the.options.zIndex > 0) {
3125      zIndex = the.options.zIndex;
3126    } else {
3127      if (IpixUtil.css(the.element, 'z-index') != 'auto') {
3128        zIndex = IpixUtil.css(the.element, 'z-index');
3129      }
3130    }
3131    the.element.classList.add('blockui');
3132    if (position === "absolute" || position === "relative" || position === "fixed") {
3133      IpixUtil.css(the.element, 'position', 'relative');
3134      the.positionChanged = true;
3135    }
3136    if (the.options.overflow === 'hidden' && overflow === 'visible') {
3137      IpixUtil.css(the.element, 'overflow', 'hidden');
3138      the.overflowChanged = true;
3139    }
3140    the.overlayElement = document.createElement('DIV');
3141    the.overlayElement.setAttribute('class', 'blockui-overlay ' + the.options.overlayClass);
3142    the.overlayElement.innerHTML = the.options.message;
3143    IpixUtil.css(the.overlayElement, 'z-index', zIndex);
3144    the.element.append(the.overlayElement);
3145    the.blocked = true;
3146    IpixEventHandler.trigger(the.element, 'kt.blockui.after.blocked', the);
3147  };
3148  var _release = function () {
3149    if (IpixEventHandler.trigger(the.element, 'kt.blockui.release', the) === false) {
3150      return;
3151    }
3152    the.element.classList.add('blockui');
3153    if (the.positionChanged) {
3154      IpixUtil.css(the.element, 'position', '');
3155    }
3156    if (the.overflowChanged) {
3157      IpixUtil.css(the.element, 'overflow', '');
3158    }
3159    if (the.overlayElement) {
3160      IpixUtil.remove(the.overlayElement);
3161    }
3162    the.blocked = false;
3163    IpixEventHandler.trigger(the.element, 'kt.blockui.released', the);
3164  };
3165  var _isBlocked = function () {
3166    return the.blocked;
3167  };
3168  var _destroy = function () {
3169    IpixUtil.data(the.element).remove('blockui');
3170  };
3171
3172  // Construct class
3173  _construct();
3174
3175  ///////////////////////
3176  // ** Public API  ** //
3177  ///////////////////////
3178
3179  // Plugin API
3180  the.block = function () {
3181    _block();
3182  };
3183  the.release = function () {
3184    _release();
3185  };
3186  the.isBlocked = function () {
3187    return _isBlocked();
3188  };
3189  the.destroy = function () {
3190    return _destroy();
3191  };
3192
3193  // Event API
3194  the.on = function (name, handler) {
3195    return IpixEventHandler.on(the.element, name, handler);
3196  };
3197  the.one = function (name, handler) {
3198    return IpixEventHandler.one(the.element, name, handler);
3199  };
3200  the.off = function (name, handlerId) {
3201    return IpixEventHandler.off(the.element, name, handlerId);
3202  };
3203  the.trigger = function (name, event) {
3204    return IpixEventHandler.trigger(the.element, name, event, the, event);
3205  };
3206};
3207
3208// Static methods
3209IpixBlockUI.getInstance = function (element) {
3210  if (element !== null && IpixUtil.data(element).has('blockui')) {
3211    return IpixUtil.data(element).get('blockui');
3212  } else {
3213    return null;
3214  }
3215};
3216
3217// Webpack support
3218if ( true && typeof module.exports !== 'undefined') {
3219  module.exports = IpixBlockUI;
3220}
3221
3222/***/ }),
3223
3224/***/ "./resources/js/layouts/components/cookie.js":
3225/*!***************************************************!*\
3226  !*** ./resources/js/layouts/components/cookie.js ***!
3227  \***************************************************/
3228/***/ ((module) => {
3229
3230"use strict";
3231
3232
3233// DOCS: https://javascript.info/cookie
3234
3235// Class definition
3236var IpixCookie = function () {
3237  return {
3238    // returns the cookie with the given name,
3239    // or undefined if not found
3240    get: function (name) {
3241      var matches = document.cookie.match(new RegExp("(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"));
3242      return matches ? decodeURIComponent(matches[1]) : null;
3243    },
3244    // Please note that a cookie value is encoded,
3245    // so getCookie uses a built-in decodeURIComponent function to decode it.
3246    set: function (name, value, options) {
3247      if (typeof options === "undefined" || options === null) {
3248        options = {};
3249      }
3250      options = Object.assign({}, {
3251        path: '/'
3252      }, options);
3253      if (options.expires instanceof Date) {
3254        options.expires = options.expires.toUTCString();
3255      }
3256      var updatedCookie = encodeURIComponent(name) + "=" + encodeURIComponent(value);
3257      for (var optionKey in options) {
3258        if (options.hasOwnProperty(optionKey) === false) {
3259          continue;
3260        }
3261        updatedCookie += "; " + optionKey;
3262        var optionValue = options[optionKey];
3263        if (optionValue !== true) {
3264          updatedCookie += "=" + optionValue;
3265        }
3266      }
3267      document.cookie = updatedCookie;
3268    },
3269    // To remove a cookie, we can call it with a negative expiration date:
3270    remove: function (name) {
3271      this.set(name, "", {
3272        'max-age': -1
3273      });
3274    }
3275  };
3276}();
3277
3278// Webpack support
3279if ( true && typeof module.exports !== 'undefined') {
3280  module.exports = IpixCookie;
3281}
3282
3283/***/ }),
3284
3285/***/ "./resources/js/layouts/components/dialer.js":
3286/*!***************************************************!*\
3287  !*** ./resources/js/layouts/components/dialer.js ***!
3288  \***************************************************/
3289/***/ ((module) => {
3290
3291"use strict";
3292
3293
3294var IpixDrawerHandlersInitialized = false;
3295
3296// Class definition
3297var IpixDrawer = function (element, options) {
3298  //////////////////////////////
3299  // ** Private variables  ** //
3300  //////////////////////////////
3301  var the = this;
3302  if (typeof element === "undefined" || element === null) {
3303    return;
3304  }
3305
3306  // Default options
3307  var defaultOptions = {
3308    overlay: true,
3309    direction: 'end',
3310    baseClass: 'drawer',
3311    overlayClass: 'drawer-overlay'
3312  };
3313
3314  ////////////////////////////
3315  // ** Private methods  ** //
3316  ////////////////////////////
3317
3318  var _construct = function () {
3319    if (IpixUtil.data(element).has('drawer')) {
3320      the = IpixUtil.data(element).get('drawer');
3321    } else {
3322      _init();
3323    }
3324  };
3325  var _init = function () {
3326    // Variables
3327    the.options = IpixUtil.deepExtend({}, defaultOptions, options);
3328    the.uid = IpixUtil.getUniqueId('drawer');
3329    the.element = element;
3330    the.overlayElement = null;
3331    the.name = the.element.getAttribute('data-kt-drawer-name');
3332    the.shown = false;
3333    the.lastWidth;
3334    the.toggleElement = null;
3335
3336    // Set initialized
3337    the.element.setAttribute('data-kt-drawer', 'true');
3338
3339    // Event Handlers
3340    _handlers();
3341
3342    // Update Instance
3343    _update();
3344
3345    // Bind Instance
3346    IpixUtil.data(the.element).set('drawer', the);
3347  };
3348  var _handlers = function () {
3349    var togglers = _getOption('toggle');
3350    var closers = _getOption('close');
3351    if (togglers !== null && togglers.length > 0) {
3352      IpixUtil.on(document.body, togglers, 'click', function (e) {
3353        e.preventDefault();
3354        the.toggleElement = this;
3355        _toggle();
3356      });
3357    }
3358    if (closers !== null && closers.length > 0) {
3359      IpixUtil.on(document.body, closers, 'click', function (e) {
3360        e.preventDefault();
3361        the.closeElement = this;
3362        _hide();
3363      });
3364    }
3365  };
3366  var _toggle = function () {
3367    if (IpixEventHandler.trigger(the.element, 'kt.drawer.toggle', the) === false) {
3368      return;
3369    }
3370    if (the.shown === true) {
3371      _hide();
3372    } else {
3373      _show();
3374    }
3375    IpixEventHandler.trigger(the.element, 'kt.drawer.toggled', the);
3376  };
3377  var _hide = function () {
3378    if (IpixEventHandler.trigger(the.element, 'kt.drawer.hide', the) === false) {
3379      return;
3380    }
3381    the.shown = false;
3382    _deleteOverlay();
3383    document.body.removeAttribute('data-kt-drawer-' + the.name, 'on');
3384    document.body.removeAttribute('data-kt-drawer');
3385    IpixUtil.removeClass(the.element, the.options.baseClass + '-
3385on');
3386    if (the.toggleElement !== null) {
3387      IpixUtil.removeClass(the.toggleElement, 'active');
3388    }
3389    IpixEventHandler.trigger(the.element, 'kt.drawer.after.hidden', the) === false;
3390  };
3391  var _show = function () {
3392    if (IpixEventHandler.trigger(the.element, 'kt.drawer.show', the) === false) {
3393      return;
3394    }
3395    the.shown = true;
3396    _createOverlay();
3397    document.body.setAttribute('data-kt-drawer-' + the.name, 'on');
3398    document.body.setAttribute('data-kt-drawer', 'on');
3399    IpixUtil.addClass(the.element, the.options.baseClass + '-on');
3400    if (the.toggleElement !== null) {
3401      IpixUtil.addClass(the.toggleElement, 'active');
3402    }
3403    IpixEventHandler.trigger(the.element, 'kt.drawer.shown', the);
3404  };
3405  var _update = function () {
3406    var width = _getWidth();
3407    var direction = _getOption('direction');
3408    var top = _getOption('top');
3409    var bottom = _getOption('bottom');
3410    var start = _getOption('start');
3411    var end = _getOption('end');
3412
3413    // Reset state
3414    if (IpixUtil.hasClass(the.element, the.options.baseClass + '-
3414on') === true && String(document.body.getAttribute('data-kt-drawer-' + the.name + '-')) === 'on') {
3415      the.shown = true;
3416    } else {
3417      the.shown = false;
3418    }
3419
3420    // Activate/deactivate
3421    if (_getOption('activate') === true) {
3422      IpixUtil.addClass(the.element, the.options.baseClass);
3423      IpixUtil.addClass(the.element, the.options.baseClass + '-' + direction);
3424      IpixUtil.css(the.element, 'width', width, true);
3425      the.lastWidth = width;
3426      if (top) {
3427        IpixUtil.css(the.element, 'top', top);
3428      }
3429      if (bottom) {
3430        IpixUtil.css(the.element, 'bottom', bottom);
3431      }
3432      if (start) {
3433        if (IpixUtil.isRTL()) {
3434          IpixUtil.css(the.element, 'right', start);
3435        } else {
3436          IpixUtil.css(the.element, 'left', start);
3437        }
3438      }
3439      if (end) {
3440        if (IpixUtil.isRTL()) {
3441          IpixUtil.css(the.element, 'left', end);
3442        } else {
3443          IpixUtil.css(the.element, 'right', end);
3444        }
3445      }
3446    } else {
3447      IpixUtil.removeClass(the.element, the.options.baseClass);
3448      IpixUtil.removeClass(the.element, the.options.baseClass + '-' + direction);
3449      IpixUtil.css(the.element, 'width', '');
3450      if (top) {
3451        IpixUtil.css(the.element, 'top', '');
3452      }
3453      if (bottom) {
3454        IpixUtil.css(the.element, 'bottom', '');
3455      }
3456      if (start) {
3457        if (IpixUtil.isRTL()) {
3458          IpixUtil.css(the.element, 'right', '');
3459        } else {
3460          IpixUtil.css(the.element, 'left', '');
3461        }
3462      }
3463      if (end) {
3464        if (IpixUtil.isRTL()) {
3465          IpixUtil.css(the.element, 'left', '');
3466        } else {
3467          IpixUtil.css(the.element, 'right', '');
3468        }
3469      }
3470      _hide();
3471    }
3472  };
3473  var _createOverlay = function () {
3474    if (_getOption('overlay') === true) {
3475      the.overlayElement = document.createElement('DIV');
3476      IpixUtil.css(the.overlayElement, 'z-index', IpixUtil.css(the.element, 'z-index') - 1); // update
3477
3478      document.body.append(the.overlayElement);
3479      IpixUtil.addClass(the.overlayElement, _getOption('overlay-class'));
3480      IpixUtil.addEvent(the.overlayElement, 'click', function (e) {
3481        e.preventDefault();
3482        if (_getOption('permanent') !== true) {
3483          _hide();
3484        }
3485      });
3486    }
3487  };
3488  var _deleteOverlay = function () {
3489    if (the.overlayElement !== null) {
3490      IpixUtil.remove(the.overlayElement);
3491    }
3492  };
3493  var _getOption = function (name) {
3494    if (the.element.hasAttribute('data-kt-drawer-' + name) === true) {
3495      var attr = the.element.getAttribute('data-kt-drawer-' + name);
3496      var value = IpixUtil.getResponsiveValue(attr);
3497      if (value !== null && String(value) === 'true') {
3498        value = true;
3499      } else if (value !== null && String(value) === 'false') {
3500        value = false;
3501      }
3502      return value;
3503    } else {
3504      var optionName = IpixUtil.snakeToCamel(name);
3505      if (the.options[optionName]) {
3506        return IpixUtil.getResponsiveValue(the.options[optionName]);
3507      } else {
3508        return null;
3509      }
3510    }
3511  };
3512  var _getWidth = function () {
3513    var width = _getOption('width');
3514    if (width === 'auto') {
3515      width = IpixUtil.css(the.element, 'width');
3516    }
3517    return width;
3518  };
3519  var _destroy = function () {
3520    IpixUtil.data(the.element).remove('drawer');
3521  };
3522
3523  // Construct class
3524  _construct();
3525
3526  ///////////////////////
3527  // ** Public API  ** //
3528  ///////////////////////
3529
3530  // Plugin API
3531  the.toggle = function () {
3532    return _toggle();
3533  };
3534  the.show = function () {
3535    return _show();
3536  };
3537  the.hide = function () {
3538    return _hide();
3539  };
3540  the.isShown = function () {
3541    return the.shown;
3542  };
3543  the.update = function () {
3544    _update();
3545  };
3546  the.goElement = function () {
3547    return the.element;
3548  };
3549  the.destroy = function () {
3550    return _destroy();
3551  };
3552
3553  // Event API
3554  the.on = function (name, handler) {
3555    return IpixEventHandler.on(the.element, name, handler);
3556  };
3557  the.one = function (name, handler) {
3558    return IpixEventHandler.one(the.element, name, handler);
3559  };
3560  the.off = function (name, handlerId) {
3561    return IpixEventHandler.off(the.element, name, handlerId);
3562  };
3563  the.trigger = function (name, event) {
3564    return IpixEventHandler.trigger(the.element, name, event, the, event);
3565  };
3566};
3567
3568// Static methods
3569IpixDrawer.getInstance = function (element) {
3570  if (element !== null && IpixUtil.data(element).has('drawer')) {
3571    return IpixUtil.data(element).get('drawer');
3572  } else {
3573    return null;
3574  }
3575};
3576
3577// Hide all drawers and skip one if provided
3578IpixDrawer.hideAll = function (skip = null, selector = '[data-kt-drawer="true"]') {
3579  var items = document.querySelectorAll(selector);
3580  if (items && items.length > 0) {
3581    for (var i = 0, len = items.length; i < len; i++) {
3582      var item = items[i];
3583      var drawer = IpixDrawer.getInstance(item);
3584      if (!drawer) {
3585        continue;
3586      }
3587      if (skip) {
3588        if (item !== skip) {
3589          drawer.hide();
3590        }
3591      } else {
3592        drawer.hide();
3593      }
3594    }
3595  }
3596};
3597
3598// Update all drawers
3599IpixDrawer.updateAll = function (selector = '[data-kt-drawer="true"]') {
3600  var items = document.querySelectorAll(selector);
3601  if (items && items.length > 0) {
3602    for (var i = 0, len = items.length; i < len; i++) {
3603      var drawer = IpixDrawer.getInstance(items[i]);
3604      if (drawer) {
3605        drawer.update();
3606      }
3607    }
3608  }
3609};
3610
3611// Create instances
3612IpixDrawer.createInstances = function (selector = '[data-kt-drawer="true"]') {
3613  // Initialize Menus
3614  var elements = document.querySelectorAll(selector);
3615  if (elements && elements.length > 0) {
3616    for (var i = 0, len = elements.length; i < len; i++) {
3617      new IpixDrawer(elements[i]);
3618    }
3619  }
3620};
3621
3622// Toggle instances
3623IpixDrawer.handleShow = function () {
3624  // External drawer toggle handler
3625  IpixUtil.on(document.body, '[data-kt-drawer-show="true"][data-kt-drawer-target]', 'click', function (e) {
3626    e.preventDefault();
3627    var element = document.querySelector(this.getAttribute('data-kt-drawer-target'));
3628    if (element) {
3629      IpixDrawer.getInstance(element).show();
3630    }
3631  });
3632};
3633
3634// Dismiss instances
3635IpixDrawer.handleDismiss = function () {
3636  // External drawer toggle handler
3637  IpixUtil.on(document.body, '[data-kt-drawer-dismiss="true"]', 'click', function (e) {
3638    var element = this.closest('[data-kt-drawer="true"]');
3639    if (element) {
3640      var drawer = IpixDrawer.getInstance(element);
3641      if (drawer.isShown()) {
3642        drawer.hide();
3643      }
3644    }
3645  });
3646};
3647
3648// Handle resize
3649IpixDrawer.handleResize = function () {
3650  // Window resize Handling
3651  window.addEventListener('resize', function () {
3652    var timer;
3653    IpixUtil.throttle(timer, function () {
3654      // Locate and update drawer instances on window resize
3655      var elements = document.querySelectorAll('[data-kt-drawer="true"]');
3656      if (elements && elements.length > 0) {
3657        for (var i = 0, len = elements.length; i < len; i++) {
3658          var drawer = IpixDrawer.getInstance(elements[i]);
3659          if (drawer) {
3660            drawer.update();
3661          }
3662        }
3663      }
3664    }, 200);
3665  });
3666};
3667
3668// Global initialization
3669IpixDrawer.init = function () {
3670  IpixDrawer.createInstances();
3671  if (IpixDrawerHandlersInitialized === false) {
3672    IpixDrawer.handleResize();
3673    IpixDrawer.handleShow();
3674    IpixDrawer.handleDismiss();
3675    IpixDrawerHandlersInitialized = true;
3676  }
3677};
3678
3679// Webpack support
3680if ( true && typeof module.exports !== 'undefined') {
3681  module.exports = IpixDrawer;
3682}
3683
3684/***/ }),
3685
3686/***/ "./resources/js/layouts/components/drawer.js":
3687/*!***************************************************!*\
3688  !*** ./resources/js/layouts/components/drawer.js ***!
3689  \***************************************************/
3690/***/ ((module) => {
3691
3692"use strict";
3693
3694
3695var IpixDrawerHandlersInitialized = false;
3696
3697// Class definition
3698var IpixDrawer = function (element, options) {
3699  //////////////////////////////
3700  // ** Private variables  ** //
3701  //////////////////////////////
3702  var the = this;
3703  if (typeof element === "undefined" || element === null) {
3704    return;
3705  }
3706
3707  // Default options
3708  var defaultOptions = {
3709    overlay: true,
3710    direction: 'end',
3711    baseClass: 'drawer',
3712    overlayClass: 'drawer-overlay'
3713  };
3714
3715  ////////////////////////////
3716  // ** Private methods  ** //
3717  ////////////////////////////
3718
3719  var _construct = function () {
3720    if (IpixUtil.data(element).has('drawer')) {
3721      the = IpixUtil.data(element).get('drawer');
3722    } else {
3723      _init();
3724    }
3725  };
3726  var _init = function () {
3727    // Variables
3728    the.options = IpixUtil.deepExtend({}, defaultOptions, options);
3729    the.uid = IpixUtil.getUniqueId('drawer');
3730    the.element = element;
3731    the.overlayElement = null;
3732    the.name = the.element.getAttribute('data-kt-drawer-name');
3733    the.shown = false;
3734    the.lastWidth;
3735    the.toggleElement = null;
3736
3737    // Set initialized
3738    the.element.setAttribute('data-kt-drawer', 'true');
3739
3740    // Event Handlers
3741    _handlers();
3742
3743    // Update Instance
3744    _update();
3745
3746    // Bind Instance
3747    IpixUtil.data(the.element).set('drawer', the);
3748  };
3749  var _handlers = function () {
3750    var togglers = _getOption('toggle');
3751    var closers = _getOption('close');
3752    if (togglers !== null && togglers.length > 0) {
3753      IpixUtil.on(document.body, togglers, 'click', function (e) {
3754        e.preventDefault();
3755        the.toggleElement = this;
3756        _toggle();
3757      });
3758    }
3759    if (closers !== null && closers.length > 0) {
3760      IpixUtil.on(document.body, closers, 'click', function (e) {
3761        e.preventDefault();
3762        the.closeElement = this;
3763        _hide();
3764      });
3765    }
3766  };
3767  var _toggle = function () {
3768    if (IpixEventHandler.trigger(the.element, 'kt.drawer.toggle', the) === false) {
3769      return;
3770    }
3771    if (the.shown === true) {
3772      _hide();
3773    } else {
3774      _show();
3775    }
3776    IpixEventHandler.trigger(the.element, 'kt.drawer.toggled', the);
3777  };
3778  var _hide = function () {
3779    if (IpixEventHandler.trigger(the.element, 'kt.drawer.hide', the) === false) {
3780      return;
3781    }
3782    the.shown = false;
3783    _deleteOverlay();
3784    document.body.removeAttribute('data-kt-drawer-' + the.name, 'on');
3785    document.body.removeAttribute('data-kt-drawer');
3786    IpixUtil.removeClass(the.element, the.options.baseClass + '-
3786on');
3787    if (the.toggleElement !== null) {
3788      IpixUtil.removeClass(the.toggleElement, 'active');
3789    }
3790    IpixEventHandler.trigger(the.element, 'kt.drawer.after.hidden', the) === false;
3791  };
3792  var _show = function () {
3793    if (IpixEventHandler.trigger(the.element, 'kt.drawer.show', the) === false) {
3794      return;
3795    }
3796    the.shown = true;
3797    _createOverlay();
3798    document.body.setAttribute('data-kt-drawer-' + the.name, 'on');
3799    document.body.setAttribute('data-kt-drawer', 'on');
3800    IpixUtil.addClass(the.element, the.options.baseClass + '-on');
3801    if (the.toggleElement !== null) {
3802      IpixUtil.addClass(the.toggleElement, 'active');
3803    }
3804    IpixEventHandler.trigger(the.element, 'kt.drawer.shown', the);
3805  };
3806  var _update = function () {
3807    var width = _getWidth();
3808    var direction = _getOption('direction');
3809    var top = _getOption('top');
3810    var bottom = _getOption('bottom');
3811    var start = _getOption('start');
3812    var end = _getOption('end');
3813
3814    // Reset state
3815    if (IpixUtil.hasClass(the.element, the.options.baseClass + '-
3815on') === true && String(document.body.getAttribute('data-kt-drawer-' + the.name + '-')) === 'on') {
3816      the.shown = true;
3817    } else {
3818      the.shown = false;
3819    }
3820
3821    // Activate/deactivate
3822    if (_getOption('activate') === true) {
3823      IpixUtil.addClass(the.element, the.options.baseClass);
3824      IpixUtil.addClass(the.element, the.options.baseClass + '-' + direction);
3825      IpixUtil.css(the.element, 'width', width, true);
3826      the.lastWidth = width;
3827      if (top) {
3828        IpixUtil.css(the.element, 'top', top);
3829      }
3830      if (bottom) {
3831        IpixUtil.css(the.element, 'bottom', bottom);
3832      }
3833      if (start) {
3834        if (IpixUtil.isRTL()) {
3835          IpixUtil.css(the.element, 'right', start);
3836        } else {
3837          IpixUtil.css(the.element, 'left', start);
3838        }
3839      }
3840      if (end) {
3841        if (IpixUtil.isRTL()) {
3842          IpixUtil.css(the.element, 'left', end);
3843        } else {
3844          IpixUtil.css(the.element, 'right', end);
3845        }
3846      }
3847    } else {
3848      IpixUtil.removeClass(the.element, the.options.baseClass);
3849      IpixUtil.removeClass(the.element, the.options.baseClass + '-' + direction);
3850      IpixUtil.css(the.element, 'width', '');
3851      if (top) {
3852        IpixUtil.css(the.element, 'top', '');
3853      }
3854      if (bottom) {
3855        IpixUtil.css(the.element, 'bottom', '');
3856      }
3857      if (start) {
3858        if (IpixUtil.isRTL()) {
3859          IpixUtil.css(the.element, 'right', '');
3860        } else {
3861          IpixUtil.css(the.element, 'left', '');
3862        }
3863      }
3864      if (end) {
3865        if (IpixUtil.isRTL()) {
3866          IpixUtil.css(the.element, 'left', '');
3867        } else {
3868          IpixUtil.css(the.element, 'right', '');
3869        }
3870      }
3871      _hide();
3872    }
3873  };
3874  var _createOverlay = function () {
3875    if (_getOption('overlay') === true) {
3876      the.overlayElement = document.createElement('DIV');
3877      IpixUtil.css(the.overlayElement, 'z-index', IpixUtil.css(the.element, 'z-index') - 1); // update
3878
3879      document.body.append(the.overlayElement);
3880      IpixUtil.addClass(the.overlayElement, _getOption('overlay-class'));
3881      IpixUtil.addEvent(the.overlayElement, 'click', function (e) {
3882        e.preventDefault();
3883        if (_getOption('permanent') !== true) {
3884          _hide();
3885        }
3886      });
3887    }
3888  };
3889  var _deleteOverlay = function () {
3890    if (the.overlayElement !== null) {
3891      IpixUtil.remove(the.overlayElement);
3892    }
3893  };
3894  var _getOption = function (name) {
3895    if (the.element.hasAttribute('data-kt-drawer-' + name) === true) {
3896      var attr = the.element.getAttribute('data-kt-drawer-' + name);
3897      var value = IpixUtil.getResponsiveValue(attr);
3898      if (value !== null && String(value) === 'true') {
3899        value = true;
3900      } else if (value !== null && String(value) === 'false') {
3901        value = false;
3902      }
3903      return value;
3904    } else {
3905      var optionName = IpixUtil.snakeToCamel(name);
3906      if (the.options[optionName]) {
3907        return IpixUtil.getResponsiveValue(the.options[optionName]);
3908      } else {
3909        return null;
3910      }
3911    }
3912  };
3913  var _getWidth = function () {
3914    var width = _getOption('width');
3915    if (width === 'auto') {
3916      width = IpixUtil.css(the.element, 'width');
3917    }
3918    return width;
3919  };
3920  var _destroy = function () {
3921    IpixUtil.data(the.element).remove('drawer');
3922  };
3923
3924  // Construct class
3925  _construct();
3926
3927  ///////////////////////
3928  // ** Public API  ** //
3929  ///////////////////////
3930
3931  // Plugin API
3932  the.toggle = function () {
3933    return _toggle();
3934  };
3935  the.show = function () {
3936    return _show();
3937  };
3938  the.hide = function () {
3939    return _hide();
3940  };
3941  the.isShown = function () {
3942    return the.shown;
3943  };
3944  the.update = function () {
3945    _update();
3946  };
3947  the.goElement = function () {
3948    return the.element;
3949  };
3950  the.destroy = function () {
3951    return _destroy();
3952  };
3953
3954  // Event API
3955  the.on = function (name, handler) {
3956    return IpixEventHandler.on(the.element, name, handler);
3957  };
3958  the.one = function (name, handler) {
3959    return IpixEventHandler.one(the.element, name, handler);
3960  };
3961  the.off = function (name, handlerId) {
3962    return IpixEventHandler.off(the.element, name, handlerId);
3963  };
3964  the.trigger = function (name, event) {
3965    return IpixEventHandler.trigger(the.element, name, event, the, event);
3966  };
3967};
3968
3969// Static methods
3970IpixDrawer.getInstance = function (element) {
3971  if (element !== null && IpixUtil.data(element).has('drawer')) {
3972    return IpixUtil.data(element).get('drawer');
3973  } else {
3974    return null;
3975  }
3976};
3977
3978// Hide all drawers and skip one if provided
3979IpixDrawer.hideAll = function (skip = null, selector = '[data-kt-drawer="true"]') {
3980  var items = document.querySelectorAll(selector);
3981  if (items && items.length > 0) {
3982    for (var i = 0, len = items.length; i < len; i++) {
3983      var item = items[i];
3984      var drawer = IpixDrawer.getInstance(item);
3985      if (!drawer) {
3986        continue;
3987      }
3988      if (skip) {
3989        if (item !== skip) {
3990          drawer.hide();
3991        }
3992      } else {
3993        drawer.hide();
3994      }
3995    }
3996  }
3997};
3998
3999// Update all drawers
4000IpixDrawer.updateAll = function (selector = '[data-kt-drawer="true"]') {
4001  var items = document.querySelectorAll(selector);
4002  if (items && items.length > 0) {
4003    for (var i = 0, len = items.length; i < len; i++) {
4004      var drawer = IpixDrawer.getInstance(items[i]);
4005      if (drawer) {
4006        drawer.update();
4007      }
4008    }
4009  }
4010};
4011
4012// Create instances
4013IpixDrawer.createInstances = function (selector = '[data-kt-drawer="true"]') {
4014  // Initialize Menus
4015  var elements = document.querySelectorAll(selector);
4016  if (elements && elements.length > 0) {
4017    for (var i = 0, len = elements.length; i < len; i++) {
4018      new IpixDrawer(elements[i]);
4019    }
4020  }
4021};
4022
4023// Toggle instances
4024IpixDrawer.handleShow = function () {
4025  // External drawer toggle handler
4026  IpixUtil.on(document.body, '[data-kt-drawer-show="true"][data-kt-drawer-target]', 'click', function (e) {
4027    e.preventDefault();
4028    var element = document.querySelector(this.getAttribute('data-kt-drawer-target'));
4029    if (element) {
4030      IpixDrawer.getInstance(element).show();
4031    }
4032  });
4033};
4034
4035// Dismiss instances
4036IpixDrawer.handleDismiss = function () {
4037  // External drawer toggle handler
4038  IpixUtil.on(document.body, '[data-kt-drawer-dismiss="true"]', 'click', function (e) {
4039    var element = this.closest('[data-kt-drawer="true"]');
4040    if (element) {
4041      var drawer = IpixDrawer.getInstance(element);
4042      if (drawer.isShown()) {
4043        drawer.hide();
4044      }
4045    }
4046  });
4047};
4048
4049// Handle resize
4050IpixDrawer.handleResize = function () {
4051  // Window resize Handling
4052  window.addEventListener('resize', function () {
4053    var timer;
4054    IpixUtil.throttle(timer, function () {
4055      // Locate and update drawer instances on window resize
4056      var elements = document.querySelectorAll('[data-kt-drawer="true"]');
4057      if (elements && elements.length > 0) {
4058        for (var i = 0, len = elements.length; i < len; i++) {
4059          var drawer = IpixDrawer.getInstance(elements[i]);
4060          if (drawer) {
4061            drawer.update();
4062          }
4063        }
4064      }
4065    }, 200);
4066  });
4067};
4068
4069// Global initialization
4070IpixDrawer.init = function () {
4071  IpixDrawer.createInstances();
4072  if (IpixDrawerHandlersInitialized === false) {
4073    IpixDrawer.handleResize();
4074    IpixDrawer.handleShow();
4075    IpixDrawer.handleDismiss();
4076    IpixDrawerHandlersInitialized = true;
4077  }
4078};
4079
4080// Webpack support
4081if ( true && typeof module.exports !== 'undefined') {
4082  module.exports = IpixDrawer;
4083}
4084
4085/***/ }),
4086
4087/***/ "./resources/js/layouts/components/enquiry.js":
4088/*!****************************************************!*\
4089  !*** ./resources/js/layouts/components/enquiry.js ***!
4090  \****************************************************/
4091/***/ (() => {
4092
4093var IpixEnquiry = function () {
4094  var validateHeaderForm = function (e) {
4095    IpixJson.options.FormValidation.fields = {
4096      'name': {
4097        validators: {
4098          notEmpty: {
4099            message: 'Please enter name'
4100          }
4101        }
4102      },
4103      'email': {
4104        validators: {
4105          emailAddress: {
4106            message: 'Please enter valid email address'
4107          },
4108          notEmpty: {
4109            message: 'Please enter email address'
4110          }
4111        }
4112      },
4113      'mobile': {
4114        validators: {
4115          phone: {
4116            message: 'Please enter valid phone number'
4117          },
4118          numeric: {
4119            message: 'Please enter valid phone number'
4120          },
4121          notEmpty: {
4122            message: 'Please enter phone number'
4123          }
4124        }
4125      }
4126      // 'service_id': {
4127      //     validators: {
4128      //         callback: {
4129      //             message: 'Please select product/service',
4130      //             callback: function (value, validator, $field) {
4131      //                 if ($("#headerForm").find("input[name=product_id]").val() === "" && $("#headerForm").find("input[name=service_id]").val() === "") {
4132      //                     return false;
4133      //                 } else {
4134      //                     return true;
4135      //                 }
4136      //             }
4137      //         }
4138      //     }
4139      // },
4140    };
4141    IpixJson.validators['headerForm'] = FormValidation.formValidation(document.getElementById('headerForm'), IpixJson.options.FormV
4141alidation);
4142  };
4143  var validateForm = function (e) {
4144    IpixJson.options.FormValidation.fields = {
4145      'name': {
4146        validators: {
4147          notEmpty: {
4148            message: 'Please enter name'
4149          }
4150        }
4151      },
4152      'email': {
4153        validators: {
4154          emailAddress: {
4155            message: 'Please enter valid email address'
4156          },
4157          notEmpty: {
4158            message: 'Please enter email address'
4159          }
4160        }
4161      },
4162      'mobile': {
4163        validators: {
4164          phone: {
4165            message: 'Please enter valid phone number'
4166          },
4167          numeric: {
4168            message: 'Please enter valid phone number'
4169          },
4170          notEmpty: {
4171            message: 'Please enter phone number'
4172          }
4173        }
4174      }
4175      // 'service_id': {
4176      //     validators: {
4177      //         callback: {
4178      //             message: 'Please select product/service',
4179      //             callback: function (value, validator, $field) {
4180      //                 if ($(".enquiry-form").find("input[name=product_id]").val() === "" && $(".enquiry-form").find("input[name=service_id]").val() === "") {
4181      //                     return false;
4182      //                 } else {
4183      //                     return true;
4184      //                 }
4185      //             }
4186      //         }
4187      //     }
4188      // },
4189    };
4190    if (document.getElementsByClassName('enquiry-form').length) {
4191      var form = document.getElementsByClassName('enquiry-form')[0];
4192      IpixJson.validators['contactForm'] = FormValidation.formValidation(form, IpixJson.options.FormV
4192alidation);
4193    }
4194  };
4195  var validateEventForm = function (e) {
4196    IpixJson.options.FormValidation.fields = {
4197      'name': {
4198        validators: {
4199          notEmpty: {
4200            message: 'Name is Mandatory'
4201          }
4202        }
4203      },
4204      'email': {
4205        validators: {
4206          emailAddress: {
4207            message: 'The value is not a valid email address'
4208          },
4209          notEmpty: {
4210            message: 'Email address is Mandatory'
4211          }
4212        }
4213      },
4214      'mobile': {
4215        validators: {
4216          phone: {
4217            message: 'The value is not a valid phone number'
4218          },
4219          numeric: {
4220            message: 'The value is not a number'
4221          },
4222          notEmpty: {
4223            message: 'Phone number is required'
4224          }
4225        }
4226      }
4227    };
4228    if (document.getElementsByClassName('enquiry-form').length) {
4229      var form = document.getElementsByClassName('enquiry-form')[0];
4230      IpixJson.validators['eventForm'] = FormValidation.formValidation(form, IpixJson.options.FormV
4230alidation);
4231    }
4232  };
4233
4234  // var initProductSelect = function () {
4235  //     // Get all the product and service buttons
4236  //     const productButtons = document.querySelectorAll('.productSelect');
4237
4238  //     // Add click event listeners to each product button
4239  //     productButtons.forEach((button) => {
4240  //         button.addEventListener('click', () => {
4241  //             productButtons.forEach((btn) => {
4242  //                 btn.classList.remove('active');
4243  //                 btn.classList.remove('select');
4244  //             });
4245  //             button.classList.add('active');
4246  //             var selectedProduct = button.getAttribute('data-product_id');
4247  //             $(button).parents('form').find('input[name="product_id"]').val(selectedProduct);
4248  //             $(button).toggleClass('select');
4249  //         });
4250  //     });
4251  // }
4252
4253  // var initServiceSelect = function () {
4254  //     const serviceButtons = document.querySelectorAll('.serviceSelect');
4255
4256  //     // Add click event listeners to each service button
4257  //     serviceButtons.forEach((button) => {
4258  //         button.addEventListener('click', () => {
4259  //             serviceButtons.forEach((btn) => {
4260  //                 btn.classList.remove('active');
4261  //                 btn.classList.remove('select');
4262  //             });
4263  //             button.classList.add('active');
4264  //             var selectedService = button.getAttribute('data-service_id');
4265  //             console.log($(button), selectedService);
4266  //             $(button).parents('form').find('input[name="service_id"]').val(selectedService);
4267  //             $(button).toggleClass('select');
4268  //         });
4269  //     });
4270  // }
4271
4272  return {
4273    init: function () {
4274      validateHeaderForm();
4275      validateForm();
4276      // validateEventForm();
4277      // initProductSelect();
4278      // initServiceSelect();
4279    }
4280  };
4281}();
4282IpixUtil.onDOMContentLoaded(function () {
4283  IpixEnquiry.init();
4284});
4285
4286/***/ }),
4287
4288/***/ "./resources/js/layouts/components/event-handler.js":
4289/*!**********************************************************!*\
4290  !*** ./resources/js/layouts/components/event-handler.js ***!
4291  \**********************************************************/
4292/***/ ((module) => {
4293
4294"use strict";
4295
4296
4297// Class definition
4298var IpixEventHandler = function () {
4299  ////////////////////////////
4300  // ** Private Variables  ** //
4301  ////////////////////////////
4302  var _handlers = {};
4303
4304  ////////////////////////////
4305  // ** Private Methods  ** //
4306  ////////////////////////////
4307  var _triggerEvent = function (element, name, target) {
4308    var returnValue = true;
4309    var eventValue;
4310    if (IpixUtil.data(element).has(name) === true) {
4311      var handlerIds = IpixUtil.data(element).get(name);
4312      var handlerId;
4313      for (var i = 0; i < handlerIds.length; i++) {
4314        handlerId = handlerIds[i];
4315        if (_handlers[name] && _handlers[name][handlerId]) {
4316          var handler = _handlers[name][handlerId];
4317          var value;
4318          if (handler.name === name) {
4319            if (handler.one == true) {
4320              if (handler.fired == false) {
4321                _handlers[name][handlerId].fired = true;
4322                eventValue = handler.callback.call(this, target);
4323              }
4324            } else {
4325              eventValue = handler.callback.call(this, target);
4326            }
4327            if (eventValue === false) {
4328              returnValue = false;
4329            }
4330          }
4331        }
4332      }
4333    }
4334    return returnValue;
4335  };
4336  var _addEvent = function (element, name, callback, one) {
4337    var handlerId = IpixUtil.getUniqueId('event');
4338    var handlerIds = IpixUtil.data(element).get(name);
4339    if (!handlerIds) {
4340      handlerIds = [];
4341    }
4342    handlerIds.push(handlerId);
4343    IpixUtil.data(element).set(name, handlerIds);
4344    if (!_handlers[name]) {
4345      _handlers[name] = {};
4346    }
4347    _handlers[name][handlerId] = {
4348      name: name,
4349      callback: callback,
4350      one: one,
4351      fired: false
4352    };
4353    return handlerId;
4354  };
4355  var _removeEvent = function (element, name, handlerId) {
4356    var handlerIds = IpixUtil.data(element).get(name);
4357    var index = handlerIds && handlerIds.indexOf(handlerId);
4358    if (index !== -1) {
4359      handlerIds.splice(index, 1);
4360      IpixUtil.data(element).set(name, handlerIds);
4361    }
4362    if (_handlers[name] && _handlers[name][handlerId]) {
4363      delete _handlers[name][handlerId];
4364    }
4365  };
4366
4367  ////////////////////////////
4368  // ** Public Methods  ** //
4369  ////////////////////////////
4370  return {
4371    trigger: function (element, name, target) {
4372      return _triggerEvent(element, name, target);
4373    },
4374    on: function (element, name, handler) {
4375      return _addEvent(element, name, handler);
4376    },
4377    one: function (element, name, handler) {
4378      return _addEvent(element, name, handler, true);
4379    },
4380    off: function (element, name, handlerId) {
4381      return _removeEvent(element, name, handlerId);
4382    },
4383    debug: function () {
4384      for (var b in _handlers) {
4385        if (_handlers.hasOwnProperty(b)) console.log(b);
4386      }
4387    }
4388  };
4389}();
4390
4391// Webpack support
4392if ( true && typeof module.exports !== 'undefined') {
4393  module.exports = IpixEventHandler;
4394}
4395
4396/***/ }),
4397
4398/***/ "./resources/js/layouts/components/flatPicker.js":
4399/*!*******************************************************!*\
4400  !*** ./resources/js/layouts/components/flatPicker.js ***!
4401  \*******************************************************/
4402/***/ ((module) => {
4403
4404"use strict";
4405
4406
4407var IpixFlatPicker = function () {};
4408IpixFlatPicker.initFlatPicker = function () {
4409  // Check if jQuery included
4410  if (typeof jQuery == 'undefined') {
4411    return;
4412  }
4413
4414  // Check if flatpickr included
4415  if (typeof $.fn.flatpickr === 'undefined') {
4416    return;
4417  }
4418  var dateElements = [].slice.call(document.querySelectorAll('[data-kt-date-input="true"][data-kt-initialized="false"]'));
4419  dateElements.map(function (element) {
4420    IpixJson.options.flatpicker.minDate = null;
4421    IpixJson.options.flatpicker.maxDate = null;
4422    IpixJson.options.flatpicker.enableTime = false;
4423    IpixJson.options.flatpicker.dateFormat = $(element).data("format");
4424    if ($(element).data("kt-time-enabled") == true) {
4425      IpixJson.options.flatpicker.enableTime = true;
4426    }
4427    if ($(element).data("mindate")) {
4428      IpixJson.options.flatpicker.minDate = $(element).data("mindate");
4429    }
4430    if ($(element).data("maxdate")) {
4431      IpixJson.options.flatpicker.maxDate = $(element).data("maxdate");
4432    }
4433    element.flatpickr(IpixJson.options.flatpicker);
4434    element.setAttribute("data-kt-initialized", "true");
4435  });
4436};
4437IpixUtil.onDOMContentLoaded(function () {
4438  IpixFlatPicker.initFlatPicker();
4439});
4440
4441// Webpack support
4442if ( true && typeof module.exports !== 'undefined') {
4443  module.exports = IpixFlatPicker;
4444}
4445
4446/***/ }),
4447
4448/***/ "./resources/js/layouts/components/form.js":
4449/*!*************************************************!*\
4450  !*** ./resources/js/layouts/components/form.js ***!
4451  \*************************************************/
4452/***/ ((module) => {
4453
4454"use strict";
4455
4456
4457var IpixFormHandlersInitialized = false;
4458
4459// Class definition
4460var IpixForm = function (element, options) {};
4461IpixForm.autoCompleteDisable = function (selector = 'input') {
4462  var elements = $(selector);
4463  if (elements && elements.length > 0) {
4464    elements.attr('autocomplete', 'off');
4465  }
4466};
4467IpixForm.init = function () {
4468  IpixForm.autoCompleteDisable();
4469};
4470if ( true && typeof module.exports !== 'undefined') {
4471  module.exports = IpixForm;
4472}
4473
4474/***/ }),
4475
4476/***/ "./resources/js/layouts/components/formValidation.js":
4477/*!***********************************************************!*\
4478  !*** ./resources/js/layouts/components/formValidation.js ***!
4479  \***********************************************************/
4480/***/ ((module) => {
4481
4482"use strict";
4483
4484
4485// Class definition
4486var IpixFormValidation = function () {};
4487IpixFormValidation.handleFormSubmit = function () {
4488  var submitButtons = [].slice.call(document.querySelectorAll('.fv-button-submit'));
4489  submitButtons.map(function (submitButton) {
4490    if (submitButton && $(submitButton).length) {
4491      submitButton.addEventListener('click', function (e) {
4492        e.preventDefault();
4493        IpixJson.validators[$(submitButton).parents("form").attr("id")].validate().then(function (status) {
4494          $("a.nav-link").removeClass("tab-pane-error");
4495          if (status == 'Valid') {
4496            // $(submitButton).parents("form").dirty("setAsClean");
4497            submitButton.disabled = true;
4498            submitButton.setAttribute('data-kt-indicator', 'on');
4499            if (submitButton.getAttribute('data-submit') === "captcha") {
4500              const recaptchaSiteKey = submitButton.getAttribute('data-sitekey');
4501              grecaptcha.ready(function () {
4502                grecaptcha.execute(recaptchaSiteKey, {
4503                  action: 'submit'
4504                }).then(function (token) {
4505                  document.getElementById('g-recaptcha-response').value = token;
4506                  $(submitButton).parents("form").submit();
4507                });
4508              });
4509            } else {
4510              $(submitButton).parents("form").submit();
4511            }
4512          } else {
4513            if ($(".nav").length) {
4514              $("a.nav-link[href='#" + $(".fv-plugins-bootstrap5-row-invalid:first").parents(".tab-pane").attr("id") + "']").addClass('tab-pane-error');
4515            }
4516            if ($(".accordion").length) {
4517              $(".fv-plugins-bootstrap5-row-invalid").parents(".accordion-item").find(".accordion-header h3").addClass('tab-pane-error');
4518            }
4519          }
4520        });
4521      });
4522    }
4523  });
4524};
4525IpixFormValidation.init = function () {
4526  IpixFormValidation.handleFormSubmit();
4527};
4528IpixUtil.onDOMContentLoaded(function () {
4529  IpixFormValidation.init();
4530});
4531
4532// Webpack support
4533if ( true && typeof module.exports !== 'undefined') {
4534  module.exports = IpixFormValidation;
4535}
4536
4537/***/ }),
4538
4539/***/ "./resources/js/layouts/components/image-input.js":
4540/*!********************************************************!*\
4541  !*** ./resources/js/layouts/components/image-input.js ***!
4542  \********************************************************/
4543/***/ ((module) => {
4544
4545"use strict";
4546
4547
4548// Class definition
4549var IpixImageInput = function (element, options) {
4550  ////////////////////////////
4551  // ** Private Variables  ** //
4552  ////////////////////////////
4553  var the = this;
4554  if (typeof element === "undefined" || element === null) {
4555    return;
4556  }
4557
4558  // Default Options
4559  var defaultOptions = {};
4560
4561  ////////////////////////////
4562  // ** Private Methods  ** //
4563  ////////////////////////////
4564
4565  var _construct = function () {
4566    if (IpixUtil.data(element).has('image-input') === true) {
4567      the = IpixUtil.data(element).get('image-input');
4568    } else {
4569      _init();
4570    }
4571  };
4572  var _init = function () {
4573    // Variables
4574    the.options = IpixUtil.deepExtend({}, defaultOptions, options);
4575    the.uid = IpixUtil.getUniqueId('image-input');
4576
4577    // Elements
4578    the.element = element;
4579    the.formElement = element.closest(".form");
4580    the.inputElement = IpixUtil.find(element, 'input[type="file"]');
4581    the.wrapperElement = IpixUtil.find(element, '.image-input-wrapper');
4582    the.cancelElement = IpixUtil.find(element, '[data-kt-image-input-action="cancel"]');
4583    the.removeElement = IpixUtil.find(element, '[data-kt-image-input-action="remove"]');
4584    the.resetElement = IpixUtil.find(the.formElement, '[type="reset"]');
4585    the.hiddenElement = IpixUtil.find(element, 'input[type="hidden"]');
4586    the.src = IpixUtil.css(the.wrapperElement, 'backgroundImage');
4587
4588    // Set initialized
4589    the.element.setAttribute('data-kt-image-input', 'true');
4590
4591    // Event Handlers
4592    _handlers();
4593
4594    // Bind Instance
4595    IpixUtil.data(the.element).set('image-input', the);
4596  };
4597
4598  // Init Event Handlers
4599  var _handlers = function () {
4600    IpixUtil.addEvent(the.inputElement, 'change', _change);
4601    IpixUtil.addEvent(the.cancelElement, 'click', _cancel);
4602    IpixUtil.addEvent(the.removeElement, 'click', _remove);
4603    IpixUtil.addEvent(the.resetElement, 'click', _reset);
4604  };
4605
4606  // Event Handlers
4607  var _change = function (e) {
4608    e.preventDefault();
4609    if (the.inputElement !== null && the.inputElement.files && the.inputElement.files[0]) {
4610      // Fire change event
4611      if (IpixEventHandler.trigger(the.element, 'kt.imageinput.change', the) === false) {
4612        return;
4613      }
4614      var reader = new FileReader();
4615      reader.onload = function (e) {
4616        IpixUtil.css(the.wrapperElement, 'background-image', 'url(' + e.target.result + ')');
4617      };
4618      reader.readAsDataURL(the.inputElement.files[0]);
4619      the.element.classList.add('image-input-changed');
4620      the.element.classList.remove('image-input-empty');
4621
4622      // Fire removed event
4623      IpixEventHandler.trigger(the.element, 'kt.imageinput.changed', the);
4624    }
4625  };
4626  var _cancel = function (e) {
4627    e.preventDefault();
4628
4629    // Fire cancel event
4630    if (IpixEventHandler.trigger(the.element, 'kt.imageinput.cancel', the) === false) {
4631      return;
4632    }
4633    the.element.classList.remove('image-input-changed');
4634    the.element.classList.remove('image-input-empty');
4635    if (the.src === 'none') {
4636      IpixUtil.css(the.wrapperElement, 'background-image', '');
4637      the.element.classList.add('image-input-empty');
4638    } else {
4639      IpixUtil.css(the.wrapperElement, 'background-image', the.src);
4640    }
4641    the.inputElement.value = "";
4642    if (the.hiddenElement !== null) {
4643      the.hiddenElement.value = "0";
4644    }
4645
4646    // Fire canceled event
4647    IpixEventHandler.trigger(the.element, 'kt.imageinput.canceled', the);
4648  };
4649  var _remove = function (e) {
4650    e.preventDefault();
4651
4652    // Fire remove event
4653    if (IpixEventHandler.trigger(the.element, 'kt.imageinput.remove', the) === false) {
4654      return;
4655    }
4656    the.element.classList.remove('image-input-changed');
4657    the.element.classList.add('image-input-empty');
4658    IpixUtil.css(the.wrapperElement, 'background-image', "none");
4659    the.inputElement.value = "";
4660    if (the.hiddenElement !== null) {
4661      the.hiddenElement.value = "1";
4662    }
4663
4664    // Fire removed event
4665    IpixEventHandler.trigger(the.element, 'kt.imageinput.removed', the);
4666  };
4667  var _reset = function (e) {
4668    if (the.element.classList.contains('image-input-changed')) {
4669      // Fire remove event
4670      if (IpixEventHandler.trigger(the.element, 'kt.imageinput.reset', the) === false) {
4671        return;
4672      }
4673      var oldImage = the.wrapperElement.getAttribute('data-image');
4674      if (oldImage) {
4675        IpixUtil.css(the.wrapperElement, 'background-image', 'url(' + oldImage + ')');
4676      } else {
4677        the.element.classList.add('image-input-empty');
4678        the.element.classList.remove('image-input-changed');
4679        IpixUtil.css(the.wrapperElement, 'background-image', "none");
4680        if (the.hiddenElement !== null) {
4681          the.hiddenElement.value = "1";
4682        }
4683      }
4684      the.inputElement.value = "";
4685
4686      // Fire removed event
4687      IpixEventHandler.trigger(the.element, 'kt.imageinput.reseted', the);
4688    }
4689  };
4690  var _destroy = function () {
4691    IpixUtil.data(the.element).remove('image-input');
4692  };
4693
4694  // Construct Class
4695  _construct();
4696
4697  ///////////////////////
4698  // ** Public API  ** //
4699  ///////////////////////
4700
4701  // Plugin API
4702  the.getInputElement = function () {
4703    return the.inputElement;
4704  };
4705  the.getElement = function () {
4706    return the.element;
4707  };
4708  the.destroy = function () {
4709    return _destroy();
4710  };
4711
4712  // Event API
4713  the.on = function (name, handler) {
4714    return IpixEventHandler.on(the.element, name, handler);
4715  };
4716  the.one = function (name, handler) {
4717    return IpixEventHandler.one(the.element, name, handler);
4718  };
4719  the.off = function (name, handlerId) {
4720    return IpixEventHandler.off(the.element, name, handlerId);
4721  };
4722  the.trigger = function (name, event) {
4723    return IpixEventHandler.trigger(the.element, name, event, the, event);
4724  };
4725};
4726
4727// Static methods
4728IpixImageInput.getInstance = function (element) {
4729  if (element !== null && IpixUtil.data(element).has('image-input')) {
4730    return IpixUtil.data(element).get('image-input');
4731  } else {
4732    return null;
4733  }
4734};
4735
4736// Create instances
4737IpixImageInput.createInstances = function (selector = '[data-kt-image-input]') {
4738  // Initialize Menus
4739  var elements = document.querySelectorAll(selector);
4740  if (elements && elements.length > 0) {
4741    for (var i = 0, len = elements.length; i < len; i++) {
4742      new IpixImageInput(elements[i]);
4743    }
4744  }
4745};
4746
4747// Global initialization
4748IpixImageInput.init = function () {
4749  IpixImageInput.createInstances();
4750};
4751
4752// Webpack Support
4753if ( true && typeof module.exports !== 'undefined') {
4754  module.exports = IpixImageInput;
4755}
4756
4757/***/ }),
4758
4759/***/ "./resources/js/layouts/components/menu.js":
4760/*!*************************************************!*\
4761  !*** ./resources/js/layouts/components/menu.js ***!
4762  \*************************************************/
4763/***/ ((module) => {
4764
4765"use strict";
4766
4767
4768var IpixMenuHandlersInitialized = false;
4769
4770// Class definition
4771var IpixMenu = function (element, options) {
4772  ////////////////////////////
4773  // ** Private Variables  ** //
4774  ////////////////////////////
4775  var the = this;
4776  if (typeof element === "undefined" || element === null) {
4777    return;
4778  }
4779
4780  // Default Options
4781  var defaultOptions = {
4782    dropdown: {
4783      hoverTimeout: 200,
4784      zindex: 107
4785    },
4786    accordion: {
4787      slideSpeed: 250,
4788      expand: false
4789    }
4790  };
4791
4792  ////////////////////////////
4793  // ** Private Methods  ** //
4794  ////////////////////////////
4795
4796  var _construct = function () {
4797    if (IpixUtil.data(element).has('menu') === true) {
4798      the = IpixUtil.data(element).get('menu');
4799    } else {
4800      _init();
4801    }
4802  };
4803  var _init = function () {
4804    the.options = IpixUtil.deepExtend({}, defaultOptions, options);
4805    the.uid = IpixUtil.getUniqueId('menu');
4806    the.element = element;
4807    the.triggerElement;
4808    the.disabled = false;
4809
4810    // Set initialized
4811    the.element.setAttribute('data-kt-menu', 'true');
4812    _setTriggerElement();
4813    _update();
4814    IpixUtil.data(the.element).set('menu', the);
4815  };
4816  var _destroy = function () {// todo
4817  };
4818
4819  // Event Handlers
4820  // Toggle handler
4821  var _click = function (element, e) {
4822    e.preventDefault();
4823    if (the.disabled === true) {
4824      return;
4825    }
4826    var item = _getItemElement(element);
4827    if (_getOptionFromElementAttribute(item, 'trigger') !== 'click') {
4828      return;
4829    }
4830    if (_getOptionFromElementAttribute(item, 'toggle') === false) {
4831      _show(item);
4832    } else {
4833      _toggle(item);
4834    }
4835  };
4836
4837  // Link handler
4838  var _link = function (element, e) {
4839    if (the.disabled === true) {
4840      return;
4841    }
4842    if (IpixEventHandler.trigger(the.element, 'kt.menu.link.click', element) === false) {
4843      return;
4844    }
4845
4846    // Dismiss all shown dropdowns
4847    IpixMenu.hideDropdowns();
4848    IpixEventHandler.trigger(the.element, 'kt.menu.link.clicked', element);
4849  };
4850
4851  // Dismiss handler
4852  var _dismiss = function (element, e) {
4853    var item = _getItemElement(element);
4854    var items = _getItemChildElements(item);
4855    if (item !== null && _getItemSubType(item) === 'dropdown') {
4856      _hide(item); // hide items dropdown
4857      // Hide all child elements as well
4858
4859      if (items.length > 0) {
4860        for (var i = 0, len = items.length; i < len; i++) {
4861          if (items[i] !== null && _getItemSubType(items[i]) === 'dropdown') {
4862            _hide(tems[i]);
4863          }
4864        }
4865      }
4866    }
4867  };
4868
4869  // Mouseover handle
4870  var _mouseover = function (element, e) {
4871    var item = _getItemElement(element);
4872    if (the.disabled === true) {
4873      return;
4874    }
4875    if (item === null) {
4876      return;
4877    }
4878    if (_getOptionFromElementAttribute(item, 'trigger') !== 'hover') {
4879      return;
4880    }
4881    if (IpixUtil.data(item).get('hover') === '1') {
4882      clearTimeout(IpixUtil.data(item).get('timeout'));
4883      IpixUtil.data(item).remove('hover');
4884      IpixUtil.data(item).remove('timeout');
4885    }
4886    _show(item);
4887  };
4888
4889  // Mouseout handle
4890  var _mouseout = function (element, e) {
4891    var item = _getItemElement(element);
4892    if (the.disabled === true) {
4893      return;
4894    }
4895    if (item === null) {
4896      return;
4897    }
4898    if (_getOptionFromElementAttribute(item, 'trigger') !== 'hover') {
4899      return;
4900    }
4901    var timeout = setTimeout(function () {
4902      if (IpixUtil.data(item).get('hover') === '1') {
4903        _hide(item);
4904      }
4905    }, the.options.dropdown.hoverTimeout);
4906    IpixUtil.data(item).set('hover', '1');
4907    IpixUtil.data(item).set('timeout', timeout);
4908  };
4909
4910  // Toggle item sub
4911  var _toggle = function (item) {
4912    if (!item) {
4913      item = the.triggerElement;
4914    }
4915    if (_isItemSubShown(item) === true) {
4916      _hide(item);
4917    } else {
4918      _show(item);
4919    }
4920  };
4921
4922  // Show item sub
4923  var _show = function (item) {
4924    if (!item) {
4925      item = the.triggerElement;
4926    }
4927    if (_isItemSubShown(item) === true) {
4928      return;
4929    }
4930    if (_getItemSubType(item) === 'dropdown') {
4931      _showDropdown(item); // // show current dropdown
4932    } else if (_getItemSubType(item) === 'accordion') {
4933      _showAccordion(item);
4934    }
4935
4936    // Remember last submenu type
4937    IpixUtil.data(item).set('type', _getItemSubType(item)); // updated
4938  };
4939
4940  // Hide item sub
4941  var _hide = function (item) {
4942    if (!item) {
4943      item = the.triggerElement;
4944    }
4945    if (_isItemSubShown(item) === false) {
4946      return;
4947    }
4948    if (_getItemSubType(item) === 'dropdown') {
4949      _hideDropdown(item);
4950    } else if (_getItemSubType(item) === 'accordion') {
4951      _hideAccordion(item);
4952    }
4953  };
4954
4955  // Reset item state classes if item sub type changed
4956  var _reset = function (item) {
4957    if (_hasItemSub(item) === false) {
4958      return;
4959    }
4960    var sub = _getItemSubElement(item);
4961
4962    // Reset sub state if sub type is changed during the window resize
4963    if (IpixUtil.data(item).has('type') && IpixUtil.data(item).get('type') !== _getItemSubType(item)) {
4964      // updated
4965      IpixUtil.removeClass(item, 'hover');
4966      IpixUtil.removeClass(item, 'show');
4967      IpixUtil.removeClass(sub, 'show');
4968    } // updated
4969  };
4970
4971  // Update all item state classes if item sub type changed
4972  var _update = function () {
4973    var items = the.element.querySelectorAll('.menu-item[data-kt-menu-trigger]');
4974    if (items && items.length > 0) {
4975      for (var i = 0, len = items.length; i < len; i++) {
4976        _reset(items[i]);
4977      }
4978    }
4979  };
4980
4981  // Set external trigger element
4982  var _setTriggerElement = function () {
4983    var target = document.querySelector('[data-kt-menu-target="# ' + the.element.getAttribute('id') + '"]');
4984    if (target !== null) {
4985      the.triggerElement = target;
4986    } else if (the.element.closest('[data-kt-menu-trigger]')) {
4987      the.triggerElement = the.element.closest('[data-kt-menu-trigger]');
4988    } else if (the.element.parentNode && IpixUtil.child(the.element.parentNode, '[data-kt-menu-trigger]')) {
4989      the.triggerElement = IpixUtil.child(the.element.parentNode, '[data-kt-menu-trigger]');
4990    }
4991    if (the.triggerElement) {
4992      IpixUtil.data(the.triggerElement).set('menu', the);
4993    }
4994  };
4995
4996  // Test if menu has external trigger element
4997  var _isTriggerElement = function (item) {
4998    return the.triggerElement === item ? true : false;
4999  };
5000
5001  // Test if item's sub is shown
5002  var _isItemSubShown = function (item) {
5003    var sub = _getItemSubElement(item);
5004    if (sub !== null) {
5005      if (_getItemSubType(item) === 'dropdown') {
5006        if (IpixUtil.hasClass(sub, 'show') === true && sub.hasAttribute('data-popper-placement') === true) {
5007          return true;
5008        } else {
5009          return false;
5010        }
5011      } else {
5012        return IpixUtil.hasClass(item, 'show');
5013      }
5014    } else {
5015      return false;
5016    }
5017  };
5018
5019  // Test if item dropdown is permanent
5020  var _isItemDropdownPermanent = function (item) {
5021    return _getOptionFromElementAttribute(item, 'permanent') === true ? true : false;
5022  };
5023
5024  // Test if item's parent is shown
5025  var _isItemParentShown = function (item) {
5026    return IpixUtil.parents(item, '.menu-item.show').length > 0;
5027  };
5028
5029  // Test of it is item sub element
5030  var _isItemSubElement = function (item) {
5031    return IpixUtil.hasClass(item, 'menu-sub');
5032  };
5033
5034  // Test if item has sub
5035  var _hasItemSub = function (item) {
5036    return IpixUtil.hasClass(item, 'menu-item') && item.hasAttribute('data-kt-menu-trigger');
5037  };
5038
5039  // Get link element
5040  var _getItemLinkElement = function (item) {
5041    return IpixUtil.child(item, '.menu-link');
5042  };
5043
5044  // Get toggle element
5045  var _getItemToggleElement = function (item) {
5046    if (the.triggerElement) {
5047      return the.triggerElement;
5048    } else {
5049      return _getItemLinkElement(item);
5050    }
5051  };
5052
5053  // Get item sub element
5054  var _getItemSubElement = function (item) {
5055    if (_isTriggerElement(item) === true) {
5056      return the.element;
5057    }
5058    if (item.classList.contains('menu-sub') === true) {
5059      return item;
5060    } else if (IpixUtil.data(item).has('sub')) {
5061      return IpixUtil.data(item).get('sub');
5062    } else {
5063      return IpixUtil.child(item, '.menu-sub');
5064    }
5065  };
5066
5067  // Get item sub type
5068  var _getItemSubType = function (element) {
5069    var sub = _getItemSubElement(element);
5070    if (sub && parseInt(IpixUtil.css(sub, 'z-index')) > 0) {
5071      return "dropdown";
5072    } else {
5073      return "accordion";
5074    }
5075  };
5076
5077  // Get item element
5078  var _getItemElement = function (element) {
5079    var item, sub;
5080
5081    // Element is the external trigger element
5082    if (_isTriggerElement(element)) {
5083      return element;
5084    }
5085
5086    // Element has item toggler attribute
5087    if (element.hasAttribute('data-kt-menu-trigger')) {
5088      return element;
5089    }
5090
5091    // Element has item DOM reference in it's data storage
5092    if (IpixUtil.data(element).has('item')) {
5093      return IpixUtil.data(element).get('item');
5094    }
5095
5096    // Item is parent of element
5097    if (item = element.closest('.menu-item[data-kt-menu-trigger]')) {
5098      return item;
5099    }
5100
5101    // Element's parent has item DOM reference in it's data storage
5102    if (sub = element.closest('.menu-sub')) {
5103      if (IpixUtil.data(sub).has('item') === true) {
5104        return IpixUtil.data(sub).get('item');
5105      }
5106    }
5107  };
5108
5109  // Get item parent element
5110  var _getItemParentElement = function (item) {
5111    var sub = item.closest('.menu-sub');
5112    var parentItem;
5113    if (IpixUtil.data(sub).has('item')) {
5114      return IpixUtil.data(sub).get('item');
5115    }
5116    if (sub && (parentItem = sub.closest('.menu-item[data-kt-menu-trigger]'))) {
5117      return parentItem;
5118    }
5119    return null;
5120  };
5121
5122  // Get item parent elements
5123  var _getItemParentElements = function (item) {
5124    var parents = [];
5125    var parent;
5126    var i = 0;
5127    do {
5128      parent = _getItemParentElement(item);
5129      if (parent) {
5130        parents.push(parent);
5131        item = parent;
5132      }
5133      i++;
5134    } while (parent !== null && i < 20);
5135    if (the.triggerElement) {
5136      parents.unshift(the.triggerElement);
5137    }
5138    return parents;
5139  };
5140
5141  // Get item child element
5142  var _getItemChildElement = function (item) {
5143    var selector = item;
5144    var element;
5145    if (IpixUtil.data(item).get('sub')) {
5146      selector = IpixUtil.data(item).get('sub');
5147    }
5148    if (selector !== null) {
5149      //element = selector.querySelector('.show.menu-item[data-kt-menu-trigger]');
5150      element = selector.querySelector('.menu-item[data-kt-menu-trigger]');
5151      if (element) {
5152        return element;
5153      } else {
5154        return null;
5155      }
5156    } else {
5157      return null;
5158    }
5159  };
5160
5161  // Get item child elements
5162  var _getItemChildElements = function (item) {
5163    var children = [];
5164    var child;
5165    var i = 0;
5166    do {
5167      child = _getItemChildElement(item);
5168      if (child) {
5169        children.push(child);
5170        item = child;
5171      }
5172      i++;
5173    } while (child !== null && i < 20);
5174    return children;
5175  };
5176
5177  // Show item dropdown
5178  var _showDropdown = function (item) {
5179    // Handle dropdown show event
5180    if (IpixEventHandler.trigger(the.element, 'kt.menu.dropdown.show', item) === false) {
5181      return;
5182    }
5183
5184    // Hide all currently shown dropdowns except current one
5185    IpixMenu.hideDropdowns(item);
5186    var toggle = _isTriggerElement(item) ? item : _getItemLinkElement(item);
5187    var sub = _getItemSubElement(item);
5188    var width = _getOptionFromElementAttribute(item, 'width');
5189    var height = _getOptionFromElementAttribute(item, 'height');
5190    var zindex = the.options.dropdown.zindex; // update
5191    var parentZindex = IpixUtil.getHighestZindex(item); // update
5192
5193    // Apply a new z-index if dropdown's toggle element or it's parent has greater z-index // update
5194    if (parentZindex !== null && parentZindex >= zindex) {
5195      zindex = parentZindex + 1;
5196    }
5197    if (zindex > 0) {
5198      IpixUtil.css(sub, 'z-index', zindex);
5199    }
5200    if (width !== null) {
5201      IpixUtil.css(sub, 'width', width);
5202    }
5203    if (height !== null) {
5204      IpixUtil.css(sub, 'height', height);
5205    }
5206    IpixUtil.css(sub, 'display', '');
5207    IpixUtil.css(sub, 'overflow', '');
5208
5209    // Init popper(new)
5210    _initDropdownPopper(item, sub);
5211    IpixUtil.addClass(item, 'show');
5212    IpixUtil.addClass(item, 'menu-dropdown');
5213    IpixUtil.addClass(sub, 'show');
5214
5215    // Append the sub the the root of the menu
5216    if (_getOptionFromElementAttribute(item, 'overflow') === true) {
5217      document.body.appendChild(sub);
5218      IpixUtil.data(item).set('sub', sub);
5219      IpixUtil.data(sub).set('item', item);
5220      IpixUtil.data(sub).set('menu', the);
5221    } else {
5222      IpixUtil.data(sub).set('item', item);
5223    }
5224
5225    // Handle dropdown shown event
5226    IpixEventHandler.trigger(the.element, 'kt.menu.dropdown.shown', item);
5227  };
5228
5229  // Hide item dropdown
5230  var _hideDropdown = function (item) {
5231    // Handle dropdown hide event
5232    if (IpixEventHandler.trigger(the.element, 'kt.menu.dropdown.hide', item) === false) {
5233      return;
5234    }
5235    var sub = _getItemSubElement(item);
5236    IpixUtil.css(sub, 'z-index', '');
5237    IpixUtil.css(sub, 'width', '');
5238    IpixUtil.css(sub, 'height', '');
5239    IpixUtil.removeClass(item, 'show');
5240    IpixUtil.removeClass(item, 'menu-dropdown');
5241    IpixUtil.removeClass(sub, 'show');
5242
5243    // Append the sub back to it's parent
5244    if (_getOptionFromElementAttribute(item, 'overflow') === true) {
5245      if (item.classList.contains('menu-item')) {
5246        item.appendChild(sub);
5247      } else {
5248        IpixUtil.insertAfter(the.element, item);
5249      }
5250      IpixUtil.data(item).remove('sub');
5251      IpixUtil.data(sub).remove('item');
5252      IpixUtil.data(sub).remove('menu');
5253    }
5254
5255    // Destroy popper(new)
5256    _destroyDropdownPopper(item);
5257
5258    // Handle dropdown hidden event
5259    IpixEventHandler.trigger(the.element, 'kt.menu.dropdown.hidden', item);
5260  };
5261
5262  // Init dropdown popper(new)
5263  var _initDropdownPopper = function (item, sub) {
5264    // Setup popper instance
5265    var reference;
5266    var attach = _getOptionFromElementAttribute(item, 'attach');
5267    if (attach) {
5268      if (attach === 'parent') {
5269        reference = item.parentNode;
5270      } else {
5271        reference = document.querySelector(attach);
5272      }
5273    } else {
5274      reference = item;
5275    }
5276    var popper = Popper.createPopper(reference, sub, _getDropdownPopperConfig(item));
5277    IpixUtil.data(item).set('popper', popper);
5278  };
5279
5280  // Destroy dropdown popper(new)
5281  var _destroyDropdownPopper = function (item) {
5282    if (IpixUtil.data(item).has('popper') === true) {
5283      IpixUtil.data(item).get('popper').destroy();
5284      IpixUtil.data(item).remove('popper');
5285    }
5286  };
5287
5288  // Prepare popper config for dropdown(see: https://popper.js.org/docs/v2/)
5289  var _getDropdownPopperConfig = function (item) {
5290    // Placement
5291    var placement = _getOptionFromElementAttribute(item, 'placement');
5292    if (!placement) {
5293      placement = 'right';
5294    }
5295
5296    // Offset
5297    var offsetValue = _getOptionFromElementAttribute(item, 'offset');
5298    var offset = offsetValue ? offsetValue.split(",") : [];
5299    if (offset.length === 2) {
5300      offset[0] = parseInt(offset[0]);
5301      offset[1] = parseInt(offset[1]);
5302    }
5303
5304    // Strategy
5305    var strategy = _getOptionFromElementAttribute(item, 'overflow') === true ? 'absolute' : 'fixed';
5306    var altAxis = _getOptionFromElementAttribute(item, 'flip') !== false ? true : false;
5307    var popperConfig = {
5308      placement: placement,
5309      strategy: strategy,
5310      modifiers: [{
5311        name: 'offset',
5312        options: {
5313          offset: offset
5314        }
5315      }, {
5316        name: 'preventOverflow',
5317        options: {
5318          altAxis: altAxis
5319        }
5320      }, {
5321        name: 'flip',
5322        options: {
5323          flipVariations: false
5324        }
5325      }]
5326    };
5327    return popperConfig;
5328  };
5329
5330  // Show item accordion
5331  var _showAccordion = function (item) {
5332    if (IpixEventHandler.trigger(the.element, 'kt.menu.accordion.show', item) === false) {
5333      return;
5334    }
5335    var sub = _getItemSubElement(item);
5336    var expand = the.options.accordion.expand;
5337    if (_getOptionFromElementAttribute(item, 'expand') === true) {
5338      expand = true;
5339    } else if (_getOptionFromElementAttribute(item, 'expand') === false) {
5340      expand = false;
5341    } else if (_getOptionFromElementAttribute(the.element, 'expand') === true) {
5342      expand = true;
5343    }
5344    if (expand === false) {
5345      _hideAccordions(item);
5346    }
5347    if (IpixUtil.data(item).has('popper') === true) {
5348      _hideDropdown(item);
5349    }
5350    IpixUtil.addClass(item, 'hover');
5351    IpixUtil.addClass(item, 'showing');
5352    IpixUtil.slideDown(sub, the.options.accordion.slideSpeed, function () {
5353      IpixUtil.removeClass(item, 'showing');
5354      IpixUtil.addClass(item, 'show');
5355      IpixUtil.addClass(sub, 'show');
5356      IpixEventHandler.trigger(the.element, 'kt.menu.accordion.shown', item);
5357    });
5358  };
5359
5360  // Hide item accordion
5361  var _hideAccordion = function (item) {
5362    if (IpixEventHandler.trigger(the.element, 'kt.menu.accordion.hide', item) === false) {
5363      return;
5364    }
5365    var sub = _getItemSubElement(item);
5366    IpixUtil.addClass(item, 'hiding');
5367    IpixUtil.slideUp(sub, the.options.accordion.slideSpeed, function () {
5368      IpixUtil.removeClass(item, 'hiding');
5369      IpixUtil.removeClass(item, 'show');
5370      IpixUtil.removeClass(sub, 'show');
5371      IpixUtil.removeClass(item, 'hover'); // update
5372
5373      IpixEventHandler.trigger(the.element, 'kt.menu.accordion.hidden', item);
5374    });
5375  };
5376  var _setActiveLink = function (link) {
5377    var item = _getItemElement(link);
5378    var parentItems = _getItemParentElements(item);
5379    var parentTabPane = link.closest('.tab-pane');
5380    var activeLinks = [].slice.call(the.element.querySelectorAll('.menu-link.active'));
5381    var activeParentItems = [].slice.call(the.element.querySelectorAll('.menu-item.here, .menu-item.show'));
5382    if (_getItemSubType(item) === "accordion") {
5383      _showAccordion(item);
5384    } else {
5385      item.classList.add("here");
5386    }
5387    if (parentItems && parentItems.length > 0) {
5388      for (var i = 0, len = parentItems.length; i < len; i++) {
5389        var parentItem = parentItems[i];
5390        if (_getItemSubType(parentItem) === "accordion") {
5391          _showAccordion(parentItem);
5392        } else {
5393          parentItem.classList.add("here");
5394        }
5395      }
5396    }
5397    activeLinks.map(function (activeLink) {
5398      activeLink.classList.remove("active");
5399    });
5400    activeParentItems.map(function (activeParentItem) {
5401      if (activeParentItem.contains(item) === false) {
5402        activeParentItem.classList.remove("here");
5403        activeParentItem.classList.remove("show");
5404      }
5405    });
5406
5407    // Handle tab
5408    if (parentTabPane && bootstrap.Tab) {
5409      var tabEl = the.element.querySelector('[data-bs-target="#' + parentTabPane.getAttribute("id") + '"]');
5410      var tab = new bootstrap.Tab(tabEl);
5411      if (tab) {
5412        tab.show();
5413      }
5414    }
5415    link.classList.add("active");
5416  };
5417  var _getLinkByAttribute = function (value, name = "href") {
5418    var link = the.element.querySelector('a[' + name + '="' + value + '"]');
5419    if (link) {
5420      return link;
5421    } else {
5422      null;
5423    }
5424  };
5425
5426  // Hide all shown accordions of item
5427  var _hideAccordions = function (item) {
5428    var itemsToHide = IpixUtil.findAll(the.element, '.show[data-kt-menu-trigger]');
5429    var itemToHide;
5430    if (itemsToHide && itemsToHide.length > 0) {
5431      for (var i = 0, len = itemsToHide.length; i < len; i++) {
5432        itemToHide = itemsToHide[i];
5433        if (_getItemSubType(itemToHide) === 'accordion' && itemToHide !== item && item.contains(itemToHide) === false && itemToHide.contains(item) === false) {
5434          _hideAccordion(itemToHide);
5435        }
5436      }
5437    }
5438  };
5439
5440  // Get item option(through html attributes)
5441  var _getOptionFromElementAttribute = function (item, name) {
5442    var attr;
5443    var value = null;
5444    if (item && item.hasAttribute('data-kt-menu-' + name)) {
5445      attr = item.getAttribute('data-kt-menu-' + name);
5446      value = IpixUtil.getResponsiveValue(attr);
5447      if (value !== null && String(value) === 'true') {
5448        value = true;
5449      } else if (value !== null && String(value) === 'false') {
5450        value = false;
5451      }
5452    }
5453    return value;
5454  };
5455  var _destroy = function () {
5456    IpixUtil.data(the.element).remove('menu');
5457  };
5458
5459  // Construct Class
5460  _construct();
5461
5462  ///////////////////////
5463  // ** Public API  ** //
5464  ///////////////////////
5465
5466  // Event Handlers
5467  the.click = function (element, e) {
5468    return _click(element, e);
5469  };
5470  the.link = function (element, e) {
5471    return _link(element, e);
5472  };
5473  the.dismiss = function (element, e) {
5474    return _dismiss(element, e);
5475  };
5476  the.mouseover = function (element, e) {
5477    return _mouseover(element, e);
5478  };
5479  the.mouseout = function (element, e) {
5480    return _mouseout(element, e);
5481  };
5482
5483  // General Methods
5484  the.getItemTriggerType = function (item) {
5485    return _getOptionFromElementAttribute(item, 'trigger');
5486  };
5487  the.getItemSubType = function (element) {
5488    return _getItemSubType(element);
5489  };
5490  the.show = function (item) {
5491    return _show(item);
5492  };
5493  the.hide = function (item) {
5494    return _hide(item);
5495  };
5496  the.toggle = function (item) {
5497    return _toggle(item);
5498  };
5499  the.reset = function (item) {
5500    return _reset(item);
5501  };
5502  the.update = function () {
5503    return _update();
5504  };
5505  the.getElement = function () {
5506    return the.element;
5507  };
5508  the.setActiveLink = function (link) {
5509    return _setActiveLink(link);
5510  };
5511  the.getLinkByAttribute = function (value, name = "href") {
5512    return _getLinkByAttribute(value, name);
5513  };
5514  the.getItemLinkElement = function (item) {
5515    return _getItemLinkElement(item);
5516  };
5517  the.getItemToggleElement = function (item) {
5518    return _getItemToggleElement(item);
5519  };
5520  the.getItemSubElement = function (item) {
5521    return _getItemSubElement(item);
5522  };
5523  the.getItemParentElements = function (item) {
5524    return _getItemParentElements(item);
5525  };
5526  the.isItemSubShown = function (item) {
5527    return _isItemSubShown(item);
5528  };
5529  the.isItemParentShown = function (item) {
5530    return _isItemParentShown(item);
5531  };
5532  the.getTriggerElement = function () {
5533    return the.triggerElement;
5534  };
5535  the.isItemDropdownPermanent = function (item) {
5536    return _isItemDropdownPermanent(item);
5537  };
5538  the.destroy = function () {
5539    return _destroy();
5540  };
5541  the.disable = function () {
5542    the.disabled = true;
5543  };
5544  the.enable = function () {
5545    the.disabled = false;
5546  };
5547
5548  // Accordion Mode Methods
5549  the.hideAccordions = function (item) {
5550    return _hideAccordions(item);
5551  };
5552
5553  // Event API
5554  the.on = function (name, handler) {
5555    return IpixEventHandler.on(the.element, name, handler);
5556  };
5557  the.one = function (name, handler) {
5558    return IpixEventHandler.one(the.element, name, handler);
5559  };
5560  the.off = function (name, handlerId) {
5561    return IpixEventHandler.off(the.element, name, handlerId);
5562  };
5563};
5564
5565// Get IpixMenu instance by element
5566IpixMenu.getInstance = function (element) {
5567  var menu;
5568  var item;
5569  if (!element) {
5570    return null;
5571  }
5572
5573  // Element has menu DOM reference in it's DATA storage
5574  if (IpixUtil.data(element).has('menu')) {
5575    return IpixUtil.data(element).get('menu');
5576  }
5577
5578  // Element has .menu parent
5579  if (menu = element.closest('.menu')) {
5580    if (IpixUtil.data(menu).has('menu')) {
5581      return IpixUtil.data(menu).get('menu');
5582    }
5583  }
5584
5585  // Element has a parent with DOM reference to .menu in it's DATA storage
5586  if (IpixUtil.hasClass(element, 'menu-link')) {
5587    var sub = element.closest('.menu-sub');
5588    if (IpixUtil.data(sub).has('menu')) {
5589      return IpixUtil.data(sub).get('menu');
5590    }
5591  }
5592  return null;
5593};
5594
5595// Hide all dropdowns and skip one if provided
5596IpixMenu.hideDropdowns = function (skip) {
5597  var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]');
5598  if (items && items.length > 0) {
5599    for (var i = 0, len = items.length; i < len; i++) {
5600      var item = items[i];
5601      var menu = IpixMenu.getInstance(item);
5602      if (menu && menu.getItemSubType(item) === 'dropdown') {
5603        if (skip) {
5604          if (menu.getItemSubElement(item).contains(skip) === false && item.contains(skip) === false && item !== skip) {
5605            menu.hide(item);
5606          }
5607        } else {
5608          menu.hide(item);
5609        }
5610      }
5611    }
5612  }
5613};
5614
5615// Update all dropdowns popover instances
5616IpixMenu.updateDropdowns = function () {
5617  var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]');
5618  if (items && items.length > 0) {
5619    for (var i = 0, len = items.length; i < len; i++) {
5620      var item = items[i];
5621      if (IpixUtil.data(item).has('popper')) {
5622        IpixUtil.data(item).get('popper').forceUpdate();
5623      }
5624    }
5625  }
5626};
5627
5628// Global handlers
5629IpixMenu.initHandlers = function () {
5630  // Dropdown handler
5631  document.addEventListener("click", function (e) {
5632    var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]:not([data-kt-menu-static="true"])');
5633    var menu;
5634    var item;
5635    var sub;
5636    var menuObj;
5637    if (items && items.length > 0) {
5638      for (var i = 0, len = items.length; i < len; i++) {
5639        item = items[i];
5640        menuObj = IpixMenu.getInstance(item);
5641        if (menuObj && menuObj.getItemSubType(item) === 'dropdown') {
5642          menu = menuObj.getElement();
5643          sub = menuObj.getItemSubElement(item);
5644          if (item === e.target || item.contains(e.target)) {
5645            continue;
5646          }
5647          if (sub === e.target || sub.contains(e.target)) {
5648            continue;
5649          }
5650          menuObj.hide(item);
5651        }
5652      }
5653    }
5654  });
5655
5656  // Sub toggle handler(updated)
5657  IpixUtil.on(document.body, '.menu-item[data-kt-menu-trigger] > .menu-link, [data-kt-menu-trigger]:not(.menu-item):not([data-kt-menu-trigger="auto"])', 'click', function (e) {
5658    var menu = IpixMenu.getInstance(this);
5659    if (menu !== null) {
5660      return menu.click(this, e);
5661    }
5662  });
5663
5664  // Link handler
5665  IpixUtil.on(document.body, '.menu-item:not([data-kt-menu-trigger]) > .menu-link', 'click', function (e) {
5666    var menu = IpixMenu.getInstance(this);
5667    if (menu !== null) {
5668      return menu.link(this, e);
5669    }
5670  });
5671
5672  // Dismiss handler
5673  IpixUtil.on(document.body, '[data-kt-menu-dismiss="true"]', 'click', function (e) {
5674    var menu = IpixMenu.getInstance(this);
5675    if (menu !== null) {
5676      return menu.dismiss(this, e);
5677    }
5678  });
5679
5680  // Mouseover handler
5681  IpixUtil.on(document.body, '[data-kt-menu-trigger], .menu-sub', 'mouseover', function (e) {
5682    var menu = IpixMenu.getInstance(this);
5683    if (menu !== null && menu.getItemSubType(this) === 'dropdown') {
5684      return menu.mouseover(this, e);
5685    }
5686  });
5687
5688  // Mouseout handler
5689  IpixUtil.on(document.body, '[data-kt-menu-trigger], .menu-sub', 'mouseout', function (e) {
5690    var menu = IpixMenu.getInstance(this);
5691    if (menu !== null && menu.getItemSubType(this) === 'dropdown') {
5692      return menu.mouseout(this, e);
5693    }
5694  });
5695
5696  // Resize handler
5697  window.addEventListener('resize', function () {
5698    var menu;
5699    var timer;
5700    IpixUtil.throttle(timer, function () {
5701      // Locate and update Offcanvas instances on window resize
5702      var elements = document.querySelectorAll('[data-kt-menu="true"]');
5703      if (elements && elements.length > 0) {
5704        for (var i = 0, len = elements.length; i < len; i++) {
5705          menu = IpixMenu.getInstance(elements[i]);
5706          if (menu) {
5707            menu.update();
5708          }
5709        }
5710      }
5711    }, 200);
5712  });
5713};
5714
5715// Render menus by url
5716IpixMenu.updateByLinkAttribute = function (value, name = "href") {
5717  // Locate and update Offcanvas instances on window resize
5718  var elements = document.querySelectorAll('[data-kt-menu="true"]');
5719  if (elements && elements.length > 0) {
5720    for (var i = 0, len = elements.length; i < len; i++) {
5721      var menu = IpixMenu.getInstance(elements[i]);
5722      if (menu) {
5723        var link = menu.getLinkByAttribute(value, name);
5724        if (link) {
5725          menu.setActiveLink(link);
5726        }
5727      }
5728    }
5729  }
5730};
5731
5732// Global instances
5733IpixMenu.createInstances = function (selector = '[data-kt-menu="true"]') {
5734  // Initialize menus
5735  var elements = document.querySelectorAll(selector);
5736  if (elements && elements.length > 0) {
5737    for (var i = 0, len = elements.length; i < len; i++) {
5738      new IpixMenu(elements[i]);
5739    }
5740  }
5741};
5742
5743// Global initialization
5744IpixMenu.init = function () {
5745  IpixMenu.createInstances();
5746  if (IpixMenuHandlersInitialized === false) {
5747    IpixMenu.initHandlers();
5748    IpixMenuHandlersInitialized = true;
5749  }
5750};
5751
5752// Webpack support
5753if ( true && typeof module.exports !== 'undefined') {
5754  module.exports = IpixMenu;
5755}
5756
5757/***/ }),
5758
5759/***/ "./resources/js/layouts/components/modal.js":
5760/*!**************************************************!*\
5761  !*** ./resources/js/layouts/components/modal.js ***!
5762  \**************************************************/
5763/***/ ((module) => {
5764
5765"use strict";
5766
5767
5768var IpixModal = function () {};
5769IpixModal.initModal = () => {
5770  const closeButton = document.querySelector('[data-kt-modal-action="close"]');
5771  if (closeButton) {
5772    closeButton.addEventListener('click', e => {
5773      e.preventDefault();
5774      $(closeButton).parents(".modal").modal("hide");
5775    });
5776  }
5777  const cancelButton = document.querySelector('[data-kt-modal-action="cancel"]');
5778  if (cancelButton) {
5779    cancelButton.addEventListener('click', e => {
5780      e.preventDefault();
5781      $(closeButton).parents(".modal").modal("hide");
5782    });
5783  }
5784};
5785IpixModal.handleLoadRemoteHtml = function () {
5786  const loadButtons = document.querySelectorAll('[kt-load-remote-html="true"][kt-load-remote-init="false"]');
5787  if (loadButtons && $(loadButtons).length) {
5788    loadButtons.forEach(function (el) {
5789      el.setAttribute('kt-load-remote-init', 'true');
5790      el.addEventListener('click', function () {
5791        $.ajax({
5792          method: "GET",
5793          url: $(el).data('url'),
5794          success: function (data) {
5795            $("#model-area").html(data.html);
5796            $.each(data.scripts, function (key, script) {
5797              $.getScript(script);
5798            });
5799            IpixApp.createSelect2();
5800            IpixForm.autoCompleteDisable();
5801            IpixModal.initModal();
5802            IpixMenu.createInstances();
5803          }
5804        });
5805      });
5806    });
5807  }
5808};
5809IpixModal.init = function () {
5810  IpixModal.handleLoadRemoteHtml();
5811};
5812IpixUtil.onDOMContentLoaded(function () {
5813  IpixModal.init();
5814});
5815
5816// Webpack support
5817if ( true && typeof module.exports !== 'undefined') {
5818  module.exports = IpixModal;
5819}
5820
5821/***/ }),
5822
5823/***/ "./resources/js/layouts/components/password-meter.js":
5824/*!***********************************************************!*\
5825  !*** ./resources/js/layouts/components/password-meter.js ***!
5826  \***********************************************************/
5827/***/ ((module) => {
5828
5829"use strict";
5830
5831
5832// Class definition
5833var IpixPasswordMeter = function (element, options) {
5834  ////////////////////////////
5835  // ** Private variables  ** //
5836  ////////////////////////////
5837  var the = this;
5838  if (!element) {
5839    return;
5840  }
5841
5842  // Default Options
5843  var defaultOptions = {
5844    minLength: 8,
5845    checkUppercase: true,
5846    checkLowercase: true,
5847    checkDigit: true,
5848    checkChar: true,
5849    scoreHighlightClass: 'active'
5850  };
5851
5852  ////////////////////////////
5853  // ** Private methods  ** //
5854  ////////////////////////////
5855
5856  // Constructor
5857  var _construct = function () {
5858    if (IpixUtil.data(element).has('password-meter') === true) {
5859      the = IpixUtil.data(element).get('password-meter');
5860    } else {
5861      _init();
5862    }
5863  };
5864
5865  // Initialize
5866  var _init = function () {
5867    // Variables
5868    the.options = IpixUtil.deepExtend({}, defaultOptions, options);
5869    the.score = 0;
5870    the.checkSteps = 5;
5871
5872    // Elements
5873    the.element = element;
5874    the.inputElement = the.element.querySelector('input[type]');
5875    the.visibilityElement = the.element.querySelector('[data-kt-password-meter-control="visibility"]');
5876    the.highlightElement = the.element.querySelector('[data-kt-password-meter-control="highlight"]');
5877
5878    // Set initialized
5879    the.element.setAttribute('data-kt-password-meter', 'true');
5880
5881    // Event Handlers
5882    _handlers();
5883
5884    // Bind Instance
5885    IpixUtil.data(the.element).set('password-meter', the);
5886  };
5887
5888  // Handlers
5889  var _handlers = function () {
5890    if (the.highlightElement) {
5891      the.inputElement.addEventListener('input', function () {
5892        _check();
5893      });
5894    }
5895    if (the.visibilityElement) {
5896      the.visibilityElement.addEventListener('click', function () {
5897        _visibility();
5898      });
5899    }
5900  };
5901
5902  // Event handlers
5903  var _check = function () {
5904    var score = 0;
5905    var checkScore = _getCheckScore();
5906    if (_checkLength() === true) {
5907      score = score + checkScore;
5908    }
5909    if (the.options.checkUppercase === true && _checkLowercase() === true) {
5910      score = score + checkScore;
5911    }
5912    if (the.options.checkLowercase === true && _checkUppercase() === true) {
5913      score = score + checkScore;
5914    }
5915    if (the.options.checkDigit === true && _checkDigit() === true) {
5916      score = score + checkScore;
5917    }
5918    if (the.options.checkChar === true && _checkChar() === true) {
5919      score = score + checkScore;
5920    }
5921    the.score = score;
5922    _highlight();
5923  };
5924  var _checkLength = function () {
5925    return the.inputElement.value.length >= the.options.minLength; // 20 score
5926  };
5927  var _checkLowercase = function () {
5928    return /[a-z]/.test(the.inputElement.value); // 20 score
5929  };
5930  var _checkUppercase = function () {
5931    return /[A-Z]/.test(the.inputElement.value); // 20 score
5932  };
5933  var _checkDigit = function () {
5934    return /[0-9]/.test(the.inputElement.value); // 20 score
5935  };
5936  var _checkChar = function () {
5937    return /[~`!#@$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g.test(the.inputElement.value); // 20 score
5938  };
5939  var _getCheckScore = function () {
5940    var count = 1;
5941    if (the.options.checkUppercase === true) {
5942      count++;
5943    }
5944    if (the.options.checkLowercase === true) {
5945      count++;
5946    }
5947    if (the.options.checkDigit === true) {
5948      count++;
5949    }
5950    if (the.options.checkChar === true) {
5951      count++;
5952    }
5953    the.checkSteps = count;
5954    return 100 / the.checkSteps;
5955  };
5956  var _highlight = function () {
5957    var items = [].slice.call(the.highlightElement.querySelectorAll('div'));
5958    var total = items.length;
5959    var index = 0;
5960    var checkScore = _getCheckScore();
5961    var score = _getScore();
5962    items.map(function (item) {
5963      index++;
5964      if (checkScore * index * (the.checkSteps / total) <= score) {
5965        item.classList.add('active');
5966      } else {
5967        item.classList.remove('active');
5968      }
5969    });
5970  };
5971  var _visibility = function () {
5972    var visibleIcon = the.visibilityElement.querySelector('i:not(.d-none), .svg-icon:not(.d-none)');
5973    var hiddenIcon = the.visibilityElement.querySelector('i.d-none, .svg-icon.d-none');
5974    if (the.inputElement.getAttribute('type').toLowerCase() === 'password') {
5975      the.inputElement.setAttribute('type', 'text');
5976    } else {
5977      the.inputElement.setAttribute('type', 'password');
5978    }
5979    visibleIcon.classList.add('d-none');
5980    hiddenIcon.classList.remove('d-none');
5981    the.inputElement.focus();
5982  };
5983  var _reset = function () {
5984    the.score = 0;
5985    _highlight();
5986  };
5987
5988  // Gets current password score
5989  var _getScore = function () {
5990    return the.score;
5991  };
5992  var _destroy = function () {
5993    IpixUtil.data(the.element).remove('password-meter');
5994  };
5995
5996  // Construct class
5997  _construct();
5998
5999  ///////////////////////
6000  // ** Public API  ** //
6001  ///////////////////////
6002
6003  // Plugin API
6004  the.check = function () {
6005    return _check();
6006  };
6007  the.getScore = function () {
6008    return _getScore();
6009  };
6010  the.reset = function () {
6011    return _reset();
6012  };
6013  the.destroy = function () {
6014    return _destroy();
6015  };
6016};
6017
6018// Static methods
6019IpixPasswordMeter.getInstance = function (element) {
6020  if (element !== null && IpixUtil.data(element).has('password-meter')) {
6021    return IpixUtil.data(element).get('password-meter');
6022  } else {
6023    return null;
6024  }
6025};
6026
6027// Create instances
6028IpixPasswordMeter.createInstances = function (selector = '[data-kt-password-meter]') {
6029  // Get instances
6030  var elements = document.body.querySelectorAll(selector);
6031  if (elements && elements.length > 0) {
6032    for (var i = 0, len = elements.length; i < len; i++) {
6033      // Initialize instances
6034      new IpixPasswordMeter(elements[i]);
6035    }
6036  }
6037};
6038
6039// Global initialization
6040IpixPasswordMeter.init = function () {
6041  IpixPasswordMeter.createInstances();
6042};
6043
6044// Webpack support
6045if ( true && typeof module.exports !== 'undefined') {
6046  module.exports = IpixPasswordMeter;
6047}
6048
6049/***/ }),
6050
6051/***/ "./resources/js/layouts/components/scroll.js":
6052/*!***************************************************!*\
6053  !*** ./resources/js/layouts/components/scroll.js ***!
6054  \***************************************************/
6055/***/ ((module) => {
6056
6057"use strict";
6058
6059
6060var IpixScrollHandlersInitialized = false;
6061
6062// Class definition
6063var IpixScroll = function (element, options) {
6064  ////////////////////////////
6065  // ** Private Variables  ** //
6066  ////////////////////////////
6067  var the = this;
6068  if (!element) {
6069    return;
6070  }
6071
6072  // Default options
6073  var defaultOptions = {
6074    saveState: true
6075  };
6076
6077  ////////////////////////////
6078  // ** Private Methods  ** //
6079  ////////////////////////////
6080
6081  var _construct = function () {
6082    if (IpixUtil.data(element).has('scroll')) {
6083      the = IpixUtil.data(element).get('scroll');
6084    } else {
6085      _init();
6086    }
6087  };
6088  var _init = function () {
6089    // Variables
6090    the.options = IpixUtil.deepExtend({}, defaultOptions, options);
6091
6092    // Elements
6093    the.element = element;
6094    the.id = the.element.getAttribute('id');
6095
6096    // Set initialized
6097    the.element.setAttribute('data-kt-scroll', 'true');
6098
6099    // Update
6100    _update();
6101
6102    // Bind Instance
6103    IpixUtil.data(the.element).set('scroll', the);
6104  };
6105  var _setupHeight = function () {
6106    var heightType = _getHeightType();
6107    var height = _getHeight();
6108
6109    // Set height
6110    if (height !== null && height.length > 0) {
6111      IpixUtil.css(the.element, heightType, height);
6112    } else {
6113      IpixUtil.css(the.element, heightType, '');
6114    }
6115  };
6116  var _setupState = function () {
6117    var namespace = _getStorageNamespace();
6118    if (_getOption('save-state') === true && the.id) {
6119      if (localStorage.getItem(namespace + the.id + 'st')) {
6120        var pos = parseInt(localStorage.getItem(namespace + the.id + 'st'));
6121        if (pos > 0) {
6122          the.element.scroll({
6123            top: pos,
6124            behavior: 'instant'
6125          });
6126        }
6127      }
6128    }
6129  };
6130  var _getStorageNamespace = function (postfix) {
6131    return document.body.hasAttribute("data-kt-name") ? document.body.getAttribute("data-kt-name") + "_" : "";
6132  };
6133  var _setupScrollHandler = function () {
6134    if (_getOption('save-state') === true && the.id) {
6135      the.element.addEventListener('scroll', _scrollHandler);
6136    } else {
6137      the.element.removeEventListener('scroll', _scrollHandler);
6138    }
6139  };
6140  var _destroyScrollHandler = function () {
6141    the.element.removeEventListener('scroll', _scrollHandler);
6142  };
6143  var _resetHeight = function () {
6144    IpixUtil.css(the.element, _getHeightType(), '');
6145  };
6146  var _scrollHandler = function () {
6147    var namespace = _getStorageNamespace();
6148    localStorage.setItem(namespace + the.id + 'st', the.element.scrollTop);
6149  };
6150  var _update = function () {
6151    // Activate/deactivate
6152    if (_getOption('activate') === true || the.element.hasAttribute('data-kt-scroll-activate') === false) {
6153      _setupHeight();
6154      _setupStretchHeight();
6155      _setupScrollHandler();
6156      _setupState();
6157    } else {
6158      _resetHeight();
6159      _destroyScrollHandler();
6160    }
6161  };
6162  var _setupStretchHeight = function () {
6163    var stretch = _getOption('stretch');
6164
6165    // Stretch
6166    if (stretch !== null) {
6167      var elements = document.querySelectorAll(stretch);
6168      if (elements && elements.length == 2) {
6169        var element1 = elements[0];
6170        var element2 = elements[1];
6171        var diff = _getElementHeight(element2) - _getElementHeight(element1);
6172        if (diff > 0) {
6173          var height = parseInt(IpixUtil.css(the.element, _getHeightType())) + diff;
6174          IpixUtil.css(the.element, _getHeightType(), String(height) + 'px');
6175        }
6176      }
6177    }
6178  };
6179  var _getHeight = function () {
6180    var height = _getOption(_getHeightType());
6181    if (height instanceof Function) {
6182      return height.call();
6183    } else if (height !== null && typeof height === 'string' && height.toLowerCase() === 'auto') {
6184      return _getAutoHeight();
6185    } else {
6186      return height;
6187    }
6188  };
6189  var _getAutoHeight = function () {
6190    var height = IpixUtil.getViewPort().height;
6191    var dependencies = _getOption('dependencies');
6192    var wrappers = _getOption('wrappers');
6193    var offset = _getOption('offset');
6194
6195    // Spacings
6196    height = height - _getElementSpacing(the.element);
6197    if (dependencies !== null) {
6198      var elements = document.querySelectorAll(dependencies);
6199      if (elements && elements.length > 0) {
6200        for (var i = 0, len = elements.length; i < len; i++) {
6201          if (IpixUtil.visible(elements[i]) === false) {
6202            continue;
6203          }
6204          height = height - _getElementHeight(elements[i]);
6205        }
6206      }
6207    }
6208
6209    // Wrappers
6210    if (wrappers !== null) {
6211      var elements = document.querySelectorAll(wrappers);
6212      if (elements && elements.length > 0) {
6213        for (var i = 0, len = elements.length; i < len; i++) {
6214          if (IpixUtil.visible(elements[i]) === false) {
6215            continue;
6216          }
6217          height = height - _getElementSpacing(elements[i]);
6218        }
6219      }
6220    }
6221
6222    // Custom offset
6223    if (offset !== null && typeof offset !== 'object') {
6224      height = height - parseInt(offset);
6225    }
6226    return String(height) + 'px';
6227  };
6228  var _getElementHeight = function (element) {
6229    var height = 0;
6230    if (element !== null) {
6231      height = height + parseInt(IpixUtil.css(element, 'height'));
6232      height = height + parseInt(IpixUtil.css(element, 'margin-top'));
6233      height = height + parseInt(IpixUtil.css(element, 'margin-bottom'));
6234      if (IpixUtil.css(element, 'border-top')) {
6235        height = height + parseInt(IpixUtil.css(element, 'border-top'));
6236      }
6237      if (IpixUtil.css(element, 'border-bottom')) {
6238        height = height + parseInt(IpixUtil.css(element, 'border-bottom'));
6239      }
6240    }
6241    return height;
6242  };
6243  var _getElementSpacing = function (element) {
6244    var spacing = 0;
6245    if (element !== null) {
6246      spacing = spacing + parseInt(IpixUtil.css(element, 'margin-top'));
6247      spacing = spacing + parseInt(IpixUtil.css(element, 'margin-bottom'));
6248      spacing = spacing + parseInt(IpixUtil.css(element, 'padding-top'));
6249      spacing = spacing + parseInt(IpixUtil.css(element, 'padding-bottom'));
6250      if (IpixUtil.css(element, 'border-top')) {
6251        spacing = spacing + parseInt(IpixUtil.css(element, 'border-top'));
6252      }
6253      if (IpixUtil.css(element, 'border-bottom')) {
6254        spacing = spacing + parseInt(IpixUtil.css(element, 'border-bottom'));
6255      }
6256    }
6257    return spacing;
6258  };
6259  var _getOption = function (name) {
6260    if (the.element.hasAttribute('data-kt-scroll-' + name) === true) {
6261      var attr = the.element.getAttribute('data-kt-scroll-' + name);
6262      var value = IpixUtil.getResponsiveValue(attr);
6263      if (value !== null && String(value) === 'true') {
6264        value = true;
6265      } else if (value !== null && String(value) === 'false') {
6266        value = false;
6267      }
6268      return value;
6269    } else {
6270      var optionName = IpixUtil.snakeToCamel(name);
6271      if (the.options[optionName]) {
6272        return IpixUtil.getResponsiveValue(the.options[optionName]);
6273      } else {
6274        return null;
6275      }
6276    }
6277  };
6278  var _getHeightType = function () {
6279    if (_getOption('height')) {
6280      return 'height';
6281    }
6282    if (_getOption('min-height')) {
6283      return 'min-height';
6284    }
6285    if (_getOption('max-height')) {
6286      return 'max-height';
6287    }
6288  };
6289  var _destroy = function () {
6290    IpixUtil.data(the.element).remove('scroll');
6291  };
6292
6293  // Construct Class
6294  _construct();
6295
6296  ///////////////////////
6297  // ** Public API  ** //
6298  ///////////////////////
6299
6300  the.update = function () {
6301    return _update();
6302  };
6303  the.getHeight = function () {
6304    return _getHeight();
6305  };
6306  the.getElement = function () {
6307    return the.element;
6308  };
6309  the.destroy = function () {
6310    return _destroy();
6311  };
6312};
6313
6314// Static methods
6315IpixScroll.getInstance = function (element) {
6316  if (element !== null && IpixUtil.data(element).has('scroll')) {
6317    return IpixUtil.data(element).get('scroll');
6318  } else {
6319    return null;
6320  }
6321};
6322
6323// Create instances
6324IpixScroll.createInstances = function (selector = '[data-kt-scroll="true"]') {
6325  // Initialize Menus
6326  var elements = document.body.querySelectorAll(selector);
6327  if (elements && elements.length > 0) {
6328    for (var i = 0, len = elements.length; i < len; i++) {
6329      new IpixScroll(elements[i]);
6330    }
6331  }
6332};
6333
6334// Window resize handling
6335IpixScroll.handleResize = function () {
6336  window.addEventListener('resize', function () {
6337    var timer;
6338    IpixUtil.throttle(timer, function () {
6339      // Locate and update Offcanvas instances on window resize
6340      var elements = document.body.querySelectorAll('[data-kt-scroll="true"]');
6341      if (elements && elements.length > 0) {
6342        for (var i = 0, len = elements.length; i < len; i++) {
6343          var scroll = IpixScroll.getInstance(elements[i]);
6344          if (scroll) {
6345            scroll.update();
6346          }
6347        }
6348      }
6349    }, 200);
6350  });
6351};
6352
6353// Global initialization
6354IpixScroll.init = function () {
6355  IpixScroll.createInstances();
6356  if (IpixScrollHandlersInitialized === false) {
6357    IpixScroll.handleResize();
6358    IpixScrollHandlersInitialized = true;
6359  }
6360};
6361
6362// Webpack Support
6363if ( true && typeof module.exports !== 'undefined') {
6364  module.exports = IpixScroll;
6365}
6366
6367/***/ }),
6368
6369/***/ "./resources/js/layouts/components/scrolltop.js":
6370/*!******************************************************!*\
6371  !*** ./resources/js/layouts/components/scrolltop.js ***!
6372  \******************************************************/
6373/***/ ((module) => {
6374
6375"use strict";
6376
6377
6378// Class definition
6379var IpixScrolltop = function (element, options) {
6380  ////////////////////////////
6381  // ** Private variables  ** //
6382  ////////////////////////////
6383  var the = this;
6384  if (typeof element === "undefined" || element === null) {
6385    return;
6386  }
6387
6388  // Default options
6389  var defaultOptions = {
6390    offset: 300,
6391    speed: 600
6392  };
6393
6394  ////////////////////////////
6395  // ** Private methods  ** //
6396  ////////////////////////////
6397
6398  var _construct = function () {
6399    if (IpixUtil.data(element).has('scrolltop')) {
6400      the = IpixUtil.data(element).get('scrolltop');
6401    } else {
6402      _init();
6403    }
6404  };
6405  var _init = function () {
6406    // Variables
6407    the.options = IpixUtil.deepExtend({}, defaultOptions, options);
6408    the.uid = IpixUtil.getUniqueId('scrolltop');
6409    the.element = element;
6410
6411    // Set initialized
6412    the.element.setAttribute('data-kt-scrolltop', 'true');
6413
6414    // Event Handlers
6415    _handlers();
6416
6417    // Bind Instance
6418    IpixUtil.data(the.element).set('scrolltop', the);
6419  };
6420  var _handlers = function () {
6421    var timer;
6422    window.addEventListener('scroll', function () {
6423      IpixUtil.throttle(timer, function () {
6424        _scroll();
6425      }, 200);
6426    });
6427    IpixUtil.addEvent(the.element, 'click', function (e) {
6428      e.preventDefault();
6429      _go();
6430    });
6431  };
6432  var _scroll = function () {
6433    var offset = parseInt(_getOption('offset'));
6434    var pos = IpixUtil.getScrollTop(); // current vertical position
6435
6436    if (pos > offset) {
6437      if (document.body.hasAttribute('data-kt-scrolltop') === false) {
6438        document.body.setAttribute('data-kt-scrolltop', 'on');
6439      }
6440    } else {
6441      if (document.body.hasAttribute('data-kt-scrolltop') === true) {
6442        document.body.removeAttribute('data-kt-scrolltop');
6443      }
6444    }
6445  };
6446  var _go = function () {
6447    var speed = parseInt(_getOption('speed'));
6448    window.scrollTo({
6449      top: 0,
6450      behavior: 'smooth'
6451    });
6452    //IpixUtil.scrollTop(0, speed);
6453  };
6454  var _getOption = function (name) {
6455    if (the.element.hasAttribute('data-kt-scrolltop-' + name) === true) {
6456      var attr = the.element.getAttribute('data-kt-scrolltop-' + name);
6457      var value = IpixUtil.getResponsiveValue(attr);
6458      if (value !== null && String(value) === 'true') {
6459        value = true;
6460      } else if (value !== null && String(value) === 'false') {
6461        value = false;
6462      }
6463      return value;
6464    } else {
6465      var optionName = IpixUtil.snakeToCamel(name);
6466      if (the.options[optionName]) {
6467        return IpixUtil.getResponsiveValue(the.options[optionName]);
6468      } else {
6469        return null;
6470      }
6471    }
6472  };
6473  var _destroy = function () {
6474    IpixUtil.data(the.element).remove('scrolltop');
6475  };
6476
6477  // Construct class
6478  _construct();
6479
6480  ///////////////////////
6481  // ** Public API  ** //
6482  ///////////////////////
6483
6484  // Plugin API
6485  the.go = function () {
6486    return _go();
6487  };
6488  the.getElement = function () {
6489    return the.element;
6490  };
6491  the.destroy = function () {
6492    return _destroy();
6493  };
6494};
6495
6496// Static methods
6497IpixScrolltop.getInstance = function (element) {
6498  if (element && IpixUtil.data(element).has('scrolltop')) {
6499    return IpixUtil.data(element).get('scrolltop');
6500  } else {
6501    return null;
6502  }
6503};
6504
6505// Create instances
6506IpixScrolltop.createInstances = function (selector = '[data-kt-scrolltop="true"]') {
6507  // Initialize Menus
6508  var elements = document.body.querySelectorAll(selector);
6509  if (elements && elements.length > 0) {
6510    for (var i = 0, len = elements.length; i < len; i++) {
6511      new IpixScrolltop(elements[i]);
6512    }
6513  }
6514};
6515
6516// Global initialization
6517IpixScrolltop.init = function () {
6518  IpixScrolltop.createInstances();
6519};
6520
6521// Webpack support
6522if ( true && typeof module.exports !== 'undefined') {
6523  module.exports = IpixScrolltop;
6524}
6525
6526/***/ }),
6527
6528/***/ "./resources/js/layouts/components/sticky.js":
6529/*!***************************************************!*\
6530  !*** ./resources/js/layouts/components/sticky.js ***!
6531  \***************************************************/
6532/***/ ((module) => {
6533
6534"use strict";
6535
6536
6537var IpixStickyHandlersInitialized = false;
6538
6539// Class definition
6540var IpixSticky = function (element, options) {
6541  ////////////////////////////
6542  // ** Private Variables  ** //
6543  ////////////////////////////
6544  var the = this;
6545  if (typeof element === "undefined" || element === null) {
6546    return;
6547  }
6548
6549  // Default Options
6550  var defaultOptions = {
6551    offset: 200,
6552    reverse: false,
6553    release: null,
6554    animation: true,
6555    animationSpeed: '0.3s',
6556    animationClass: 'animation-slide-in-down'
6557  };
6558  ////////////////////////////
6559  // ** Private Methods  ** //
6560  ////////////////////////////
6561
6562  var _construct = function () {
6563    if (IpixUtil.data(element).has('sticky') === true) {
6564      the = IpixUtil.data(element).get('sticky');
6565    } else {
6566      _init();
6567    }
6568  };
6569  var _init = function () {
6570    the.element = element;
6571    the.options = IpixUtil.deepExtend({}, defaultOptions, options);
6572    the.uid = IpixUtil.getUniqueId('sticky');
6573    the.name = the.element.getAttribute('data-kt-sticky-name');
6574    the.attributeName = 'data-kt-sticky-' + the.name;
6575    the.attributeName2 = 'data-kt-' + the.name;
6576    the.eventTriggerState = true;
6577    the.lastScrollTop = 0;
6578    the.scrollHandler;
6579
6580    // Set initialized
6581    the.element.setAttribute('data-kt-sticky', 'true');
6582
6583    // Event Handlers
6584    window.addEventListener('scroll', _scroll);
6585
6586    // Initial Launch
6587    _scroll();
6588
6589    // Bind Instance
6590    IpixUtil.data(the.element).set('sticky', the);
6591  };
6592  var _scroll = function (e) {
6593    var offset = _getOption('offset');
6594    var release = _getOption('release');
6595    var reverse = _getOption('reverse');
6596    var st;
6597    var attrName;
6598    var diff;
6599
6600    // Exit if false
6601    if (offset === false) {
6602      return;
6603    }
6604    offset = parseInt(offset);
6605    release = release ? document.querySelector(release) : null;
6606    st = IpixUtil.getScrollTop();
6607    diff = document.documentElement.scrollHeight - window.innerHeight - IpixUtil.getScrollTop();
6608    var proceed = !release || release.offsetTop - release.clientHeight > st;
6609    if (reverse === true) {
6610      // Release on reverse scroll mode
6611      if (st > offset && proceed) {
6612        if (document.body.hasAttribute(the.attributeName) === false) {
6613          if (_enable() === false) {
6614            return;
6615          }
6616          document.body.setAttribute(the.attributeName, 'on');
6617          document.body.setAttribute(the.attributeName2, 'on');
6618          the.element.setAttribute("data-kt-sticky-enabled", "true");
6619        }
6620        if (the.eventTriggerState === true) {
6621          IpixEventHandler.trigger(the.element, 'kt.sticky.on', the);
6622          IpixEventHandler.trigger(the.element, 'kt.sticky.change', the);
6623          the.eventTriggerState = false;
6624        }
6625      } else {
6626        // Back scroll mode
6627        if (document.body.hasAttribute(the.attributeName) === true) {
6628          _disable();
6629          document.body.removeAttribute(the.attributeName);
6630          document.body.removeAttribute(the.attributeName2);
6631          the.element.removeAttribute("data-kt-sticky-enabled");
6632        }
6633        if (the.eventTriggerState === false) {
6634          IpixEventHandler.trigger(the.element, 'kt.sticky.off', the);
6635          IpixEventHandler.trigger(the.element, 'kt.sticky.change', the);
6636          the.eventTriggerState = true;
6637        }
6638      }
6639      the.lastScrollTop = st;
6640    } else {
6641      // Classic scroll mode
6642      if (st > offset && proceed) {
6643        if (document.body.hasAttribute(the.attributeName) === false) {
6644          if (_enable() === false) {
6645            return;
6646          }
6647          document.body.setAttribute(the.attributeName, 'on');
6648          document.body.setAttribute(the.attributeName2, 'on');
6649          the.element.setAttribute("data-kt-sticky-enabled", "true");
6650        }
6651        if (the.eventTriggerState === true) {
6652          IpixEventHandler.trigger(the.element, 'kt.sticky.on', the);
6653          IpixEventHandler.trigger(the.element, 'kt.sticky.change', the);
6654          the.eventTriggerState = false;
6655        }
6656      } else {
6657        // back scroll mode
6658        if (document.body.hasAttribute(the.attributeName) === true) {
6659          _disable();
6660          document.body.removeAttribute(the.attributeName);
6661          document.body.removeAttribute(the.attributeName2);
6662          the.element.removeAttribute("data-kt-sticky-enabled");
6663        }
6664        if (the.eventTriggerState === false) {
6665          IpixEventHandler.trigger(the.element, 'kt.sticky.off', the);
6666          IpixEventHandler.trigger(the.element, 'kt.sticky.change', the);
6667          the.eventTriggerState = true;
6668        }
6669      }
6670    }
6671    if (release) {
6672      if (release.offsetTop - release.clientHeight > st) {
6673        the.element.setAttribute('data-kt-sticky-released', 'true');
6674      } else {
6675        the.element.removeAttribute('data-kt-sticky-released');
6676      }
6677    }
6678  };
6679  var _enable = function (update) {
6680    var top = _getOption('top');
6681    top = top ? parseInt(top) : 0;
6682    var left = _getOption('left');
6683    var right = _getOption('right');
6684    var width = _getOption('width');
6685    var zindex = _getOption('zindex');
6686    var dependencies = _getOption('dependencies');
6687    var classes = _getOption('class');
6688    var height = _calculateHeight();
6689    var heightOffset = _getOption('height-offset');
6690    heightOffset = heightOffset ? parseInt(heightOffset) : 0;
6691    if (height + heightOffset + top > IpixUtil.getViewPort().height) {
6692      return false;
6693    }
6694    if (update !== true && _getOption('animation') === true) {
6695      IpixUtil.css(the.element, 'animationDuration', _getOption('animationSpeed'));
6696      IpixUtil.animateClass(the.element, 'animation ' + _getOption('animationClass'));
6697    }
6698    if (classes !== null) {
6699      IpixUtil.addClass(the.element, classes);
6700    }
6701    if (zindex !== null) {
6702      IpixUtil.css(the.element, 'z-index', zindex);
6703      IpixUtil.css(the.element, 'position', 'fixed');
6704    }
6705    if (top >= 0) {
6706      IpixUtil.css(the.element, 'top', String(top) + 'px');
6707    }
6708    if (width !== null) {
6709      if (width['target']) {
6710        var targetElement = document.querySelector(width['target']);
6711        if (targetElement) {
6712          width = IpixUtil.css(targetElement, 'width');
6713        }
6714      }
6715      IpixUtil.css(the.element, 'width', width);
6716    }
6717    if (left !== null) {
6718      if (String(left).toLowerCase() === 'auto') {
6719        var offsetLeft = IpixUtil.offset(the.element).left;
6720        if (offsetLeft >= 0) {
6721          IpixUtil.css(the.element, 'left', String(offsetLeft) + 'px');
6722        }
6723      } else {
6724        IpixUtil.css(the.element, 'left', left);
6725      }
6726    }
6727    if (right !== null) {
6728      IpixUtil.css(the.element, 'right', right);
6729    }
6730
6731    // Height dependencies
6732    if (dependencies !== null) {
6733      var dependencyElements = document.querySelectorAll(dependencies);
6734      if (dependencyElements && dependencyElements.length > 0) {
6735        for (var i = 0, len = dependencyElements.length; i < len; i++) {
6736          IpixUtil.css(dependencyElements[i], 'padding-top', String(height) + 'px');
6737        }
6738      }
6739    }
6740  };
6741  var _disable = function () {
6742    IpixUtil.css(the.element, 'top', '');
6743    IpixUtil.css(the.element, 'width', '');
6744    IpixUtil.css(the.element, 'left', '');
6745    IpixUtil.css(the.element, 'right', '');
6746    IpixUtil.css(the.element, 'z-index', '');
6747    IpixUtil.css(the.element, 'position', '');
6748    var dependencies = _getOption('dependencies');
6749    var classes = _getOption('class');
6750    if (classes !== null) {
6751      IpixUtil.removeClass(the.element, classes);
6752    }
6753
6754    // Height dependencies
6755    if (dependencies !== null) {
6756      var dependencyElements = document.querySelectorAll(dependencies);
6757      if (dependencyElements && dependencyElements.length > 0) {
6758        for (var i = 0, len = dependencyElements.length; i < len; i++) {
6759          IpixUtil.css(dependencyElements[i], 'padding-top', '');
6760        }
6761      }
6762    }
6763  };
6764  var _check = function () {};
6765  var _calculateHeight = function () {
6766    var height = parseFloat(IpixUtil.css(the.element, 'height'));
6767    height = height + parseFloat(IpixUtil.css(the.element, 'margin-top'));
6768    height = height + parseFloat(IpixUtil.css(the.element, 'margin-bottom'));
6769    if (IpixUtil.css(element, 'border-top')) {
6770      height = height + parseFloat(IpixUtil.css(the.element, 'border-top'));
6771    }
6772    if (IpixUtil.css(element, 'border-bottom')) {
6773      height = height + parseFloat(IpixUtil.css(the.element, 'border-bottom'));
6774    }
6775    return height;
6776  };
6777  var _getOption = function (name) {
6778    if (the.element.hasAttribute('data-kt-sticky-' + name) === true) {
6779      var attr = the.element.getAttribute('data-kt-sticky-' + name);
6780      var value = IpixUtil.getResponsiveValue(attr);
6781      if (value !== null && String(value) === 'true') {
6782        value = true;
6783      } else if (value !== null && String(value) === 'false') {
6784        value = false;
6785      }
6786      return value;
6787    } else {
6788      var optionName = IpixUtil.snakeToCamel(name);
6789      if (the.options[optionName]) {
6790        return IpixUtil.getResponsiveValue(the.options[optionName]);
6791      } else {
6792        return null;
6793      }
6794    }
6795  };
6796  var _destroy = function () {
6797    window.removeEventListener('scroll', _scroll);
6798    IpixUtil.data(the.element).remove('sticky');
6799  };
6800
6801  // Construct Class
6802  _construct();
6803
6804  ///////////////////////
6805  // ** Public API  ** //
6806  ///////////////////////
6807
6808  // Methods
6809  the.update = function () {
6810    if (document.body.hasAttribute(the.attributeName) === true) {
6811      _disable();
6812      document.body.removeAttribute(the.attributeName);
6813      document.body.removeAttribute(the.attributeName2);
6814      _enable(true);
6815      document.body.setAttribute(the.attributeName, 'on');
6816      document.body.setAttribute(the.attributeName2, 'on');
6817    }
6818  };
6819  the.destroy = function () {
6820    return _destroy();
6821  };
6822
6823  // Event API
6824  the.on = function (name, handler) {
6825    return IpixEventHandler.on(the.element, name, handler);
6826  };
6827  the.one = function (name, handler) {
6828    return IpixEventHandler.one(the.element, name, handler);
6829  };
6830  the.off = function (name, handlerId) {
6831    return IpixEventHandler.off(the.element, name, handlerId);
6832  };
6833  the.trigger = function (name, event) {
6834    return IpixEventHandler.trigger(the.element, name, event, the, event);
6835  };
6836};
6837
6838// Static methods
6839IpixSticky.getInstance = function (element) {
6840  if (element !== null && IpixUtil.data(element).has('sticky')) {
6841    return IpixUtil.data(element).get('sticky');
6842  } else {
6843    return null;
6844  }
6845};
6846
6847// Create instances
6848IpixSticky.createInstances = function (selector = '[data-kt-sticky="true"]') {
6849  // Initialize Menus
6850  var elements = document.body.querySelectorAll(selector);
6851  var sticky;
6852  if (elements && elements.length > 0) {
6853    for (var i = 0, len = elements.length; i < len; i++) {
6854      sticky = new IpixSticky(elements[i]);
6855    }
6856  }
6857};
6858
6859// Window resize handler
6860IpixSticky.handleResize = function () {
6861  window.addEventListener('resize', function () {
6862    var timer;
6863    IpixUtil.throttle(timer, function () {
6864      // Locate and update Offcanvas instances on window resize
6865      var elements = document.body.querySelectorAll('[data-kt-sticky="true"]');
6866      if (elements && elements.length > 0) {
6867        for (var i = 0, len = elements.length; i < len; i++) {
6868          var sticky = IpixSticky.getInstance(elements[i]);
6869          if (sticky) {
6870            sticky.update();
6871          }
6872        }
6873      }
6874    }, 200);
6875  });
6876};
6877
6878// Global initialization
6879IpixSticky.init = function () {
6880  IpixSticky.createInstances();
6881  if (IpixStickyHandlersInitialized === false) {
6882    IpixSticky.handleResize();
6883    IpixStickyHandlersInitialized = true;
6884  }
6885};
6886
6887// Webpack support
6888if ( true && typeof module.exports !== 'undefined') {
6889  module.exports = IpixSticky;
6890}
6891
6892/***/ }),
6893
6894/***/ "./resources/js/layouts/components/swapper.js":
6895/*!****************************************************!*\
6896  !*** ./resources/js/layouts/components/swapper.js ***!
6897  \****************************************************/
6898/***/ ((module) => {
6899
6900"use strict";
6901
6902
6903var IpixSwapperHandlersInitialized = false;
6904
6905// Class definition
6906var IpixSwapper = function (element, options) {
6907  ////////////////////////////
6908  // ** Private Variables  ** //
6909  ////////////////////////////
6910  var the = this;
6911  if (typeof element === "undefined" || element === null) {
6912    return;
6913  }
6914
6915  // Default Options
6916  var defaultOptions = {
6917    mode: 'append'
6918  };
6919
6920  ////////////////////////////
6921  // ** Private Methods  ** //
6922  ////////////////////////////
6923
6924  var _construct = function () {
6925    if (IpixUtil.data(element).has('swapper') === true) {
6926      the = IpixUtil.data(element).get('swapper');
6927    } else {
6928      _init();
6929    }
6930  };
6931  var _init = function () {
6932    the.element = element;
6933    the.options = IpixUtil.deepExtend({}, defaultOptions, options);
6934
6935    // Set initialized
6936    the.element.setAttribute('data-kt-swapper', 'true');
6937
6938    // Initial update
6939    _update();
6940
6941    // Bind Instance
6942    IpixUtil.data(the.element).set('swapper', the);
6943  };
6944  var _update = function (e) {
6945    var parentSelector = _getOption('parent');
6946    var mode = _getOption('mode');
6947    var parentElement = parentSelector ? document.querySelector(parentSelector) : null;
6948    if (parentElement && element.parentNode !== parentElement) {
6949      if (mode === 'prepend') {
6950        parentElement.prepend(element);
6951      } else if (mode === 'append') {
6952        parentElement.append(element);
6953      }
6954    }
6955  };
6956  var _getOption = function (name) {
6957    if (the.element.hasAttribute('data-kt-swapper-' + name) === true) {
6958      var attr = the.element.getAttribute('data-kt-swapper-' + name);
6959      var value = IpixUtil.getResponsiveValue(attr);
6960      if (value !== null && String(value) === 'true') {
6961        value = true;
6962      } else if (value !== null && String(value) === 'false') {
6963        value = false;
6964      }
6965      return value;
6966    } else {
6967      var optionName = IpixUtil.snakeToCamel(name);
6968      if (the.options[optionName]) {
6969        return IpixUtil.getResponsiveValue(the.options[optionName]);
6970      } else {
6971        return null;
6972      }
6973    }
6974  };
6975  var _destroy = function () {
6976    IpixUtil.data(the.element).remove('swapper');
6977  };
6978
6979  // Construct Class
6980  _construct();
6981
6982  ///////////////////////
6983  // ** Public API  ** //
6984  ///////////////////////
6985
6986  // Methods
6987  the.update = function () {
6988    _update();
6989  };
6990  the.destroy = function () {
6991    return _destroy();
6992  };
6993
6994  // Event API
6995  the.on = function (name, handler) {
6996    return IpixEventHandler.on(the.element, name, handler);
6997  };
6998  the.one = function (name, handler) {
6999    return IpixEventHandler.one(the.element, name, handler);
7000  };
7001  the.off = function (name, handlerId) {
7002    return IpixEventHandler.off(the.element, name, handlerId);
7003  };
7004  the.trigger = function (name, event) {
7005    return IpixEventHandler.trigger(the.element, name, event, the, event);
7006  };
7007};
7008
7009// Static methods
7010IpixSwapper.getInstance = function (element) {
7011  if (element !== null && IpixUtil.data(element).has('swapper')) {
7012    return IpixUtil.data(element).get('swapper');
7013  } else {
7014    return null;
7015  }
7016};
7017
7018// Create instances
7019IpixSwapper.createInstances = function (selector = '[data-kt-swapper="true"]') {
7020  // Initialize Menus
7021  var elements = document.querySelectorAll(selector);
7022  var swapper;
7023  if (elements && elements.length > 0) {
7024    for (var i = 0, len = elements.length; i < len; i++) {
7025      swapper = new IpixSwapper(elements[i]);
7026    }
7027  }
7028};
7029
7030// Window resize handler
7031IpixSwapper.handleResize = function () {
7032  window.addEventListener('resize', function () {
7033    var timer;
7034    IpixUtil.throttle(timer, function () {
7035      // Locate and update Offcanvas instances on window resize
7036      var elements = document.querySelectorAll('[data-kt-swapper="true"]');
7037      if (elements && elements.length > 0) {
7038        for (var i = 0, len = elements.length; i < len; i++) {
7039          var swapper = IpixSwapper.getInstance(elements[i]);
7040          if (swapper) {
7041            swapper.update();
7042          }
7043        }
7044      }
7045    }, 200);
7046  });
7047};
7048
7049// Global initialization
7050IpixSwapper.init = function () {
7051  IpixSwapper.createInstances();
7052  if (IpixSwapperHandlersInitialized === false) {
7053    IpixSwapper.handleResize();
7054    IpixSwapperHandlersInitialized = true;
7055  }
7056};
7057
7058// Webpack support
7059if ( true && typeof module.exports !== 'undefined') {
7060  module.exports = IpixSwapper;
7061}
7062
7063/***/ }),
7064
7065/***/ "./resources/js/layouts/components/toggle.js":
7066/*!***************************************************!*\
7067  !*** ./resources/js/layouts/components/toggle.js ***!
7068  \***************************************************/
7069/***/ ((module) => {
7070
7071"use strict";
7072
7073
7074// Class definition
7075var IpixToggle = function (element, options) {
7076  ////////////////////////////
7077  // ** Private variables  ** //
7078  ////////////////////////////
7079  var the = this;
7080  if (!element) {
7081    return;
7082  }
7083
7084  // Default Options
7085  var defaultOptions = {
7086    saveState: true
7087  };
7088
7089  ////////////////////////////
7090  // ** Private methods  ** //
7091  ////////////////////////////
7092
7093  var _construct = function () {
7094    if (IpixUtil.data(element).has('toggle') === true) {
7095      the = IpixUtil.data(element).get('toggle');
7096    } else {
7097      _init();
7098    }
7099  };
7100  var _init = function () {
7101    // Variables
7102    the.options = IpixUtil.deepExtend({}, defaultOptions, options);
7103    the.uid = IpixUtil.getUniqueId('toggle');
7104
7105    // Elements
7106    the.element = element;
7107    the.target = document.querySelector(the.element.getAttribute('data-kt-toggle-target')) ? document.querySelector(the.element.getAttribute('data-kt-toggle-target')) : the.element;
7108    the.state = the.element.hasAttribute('data-kt-toggle-state') ? the.element.getAttribute('data-kt-toggle-state') : '';
7109    the.mode = the.element.hasAttribute('data-kt-toggle-mode') ? the.element.getAttribute('data-kt-toggle-mode') : '';
7110    the.attribute = 'data-kt-' + the.element.getAttribute('data-kt-toggle-name');
7111
7112    // Event Handlers
7113    _handlers();
7114
7115    // Bind Instance
7116    IpixUtil.data(the.element).set('toggle', the);
7117  };
7118  var _handlers = function () {
7119    IpixUtil.addEvent(the.element, 'click', function (e) {
7120      e.preventDefault();
7121      if (the.mode !== '') {
7122        if (the.mode === 'off' && _isEnabled() === false) {
7123          _toggle();
7124        } else if (the.mode === 'on' && _isEnabled() === true) {
7125          _toggle();
7126        }
7127      } else {
7128        _toggle();
7129      }
7130    });
7131  };
7132
7133  // Event handlers
7134  var _toggle = function () {
7135    // Trigger "after.toggle" event
7136    IpixEventHandler.trigger(the.element, 'kt.toggle.change', the);
7137    if (_isEnabled()) {
7138      _disable();
7139    } else {
7140      _enable();
7141    }
7142
7143    // Trigger "before.toggle" event
7144    IpixEventHandler.trigger(the.element, 'kt.toggle.changed', the);
7145    return the;
7146  };
7147  var _enable = function () {
7148    if (_isEnabled() === true) {
7149      return;
7150    }
7151    IpixEventHandler.trigger(the.element, 'kt.toggle.enable', the);
7152    the.target.setAttribute(the.attribute, 'on');
7153    if (the.state.length > 0) {
7154      the.element.classList.add(the.state);
7155    }
7156    if (typeof IpixCookie !== 'undefined' && the.options.saveState === true) {
7157      IpixCookie.set(the.attribute, 'on');
7158    }
7159    IpixEventHandler.trigger(the.element, 'kt.toggle.enabled', the);
7160    return the;
7161  };
7162  var _disable = function () {
7163    if (_isEnabled() === false) {
7164      return;
7165    }
7166    IpixEventHandler.trigger(the.element, 'kt.toggle.disable', the);
7167    the.target.removeAttribute(the.attribute);
7168    if (the.state.length > 0) {
7169      the.element.classList.remove(the.state);
7170    }
7171    if (typeof IpixCookie !== 'undefined' && the.options.saveState === true) {
7172      IpixCookie.remove(the.attribute);
7173    }
7174    IpixEventHandler.trigger(the.element, 'kt.toggle.disabled', the);
7175    return the;
7176  };
7177  var _isEnabled = function () {
7178    return String(the.target.getAttribute(the.attribute)).toLowerCase() === 'on';
7179  };
7180  var _destroy = function () {
7181    IpixUtil.data(the.element).remove('toggle');
7182  };
7183
7184  // Construct class
7185  _construct();
7186
7187  ///////////////////////
7188  // ** Public API  ** //
7189  ///////////////////////
7190
7191  // Plugin API
7192  the.toggle = function () {
7193    return _toggle();
7194  };
7195  the.enable = function () {
7196    return _enable();
7197  };
7198  the.disable = function () {
7199    return _disable();
7200  };
7201  the.isEnabled = function () {
7202    return _isEnabled();
7203  };
7204  the.goElement = function () {
7205    return the.element;
7206  };
7207  the.destroy = function () {
7208    return _destroy();
7209  };
7210
7211  // Event API
7212  the.on = function (name, handler) {
7213    return IpixEventHandler.on(the.element, name, handler);
7214  };
7215  the.one = function (name, handler) {
7216    return IpixEventHandler.one(the.element, name, handler);
7217  };
7218  the.off = function (name, handlerId) {
7219    return IpixEventHandler.off(the.element, name, handlerId);
7220  };
7221  the.trigger = function (name, event) {
7222    return IpixEventHandler.trigger(the.element, name, event, the, event);
7223  };
7224};
7225
7226// Static methods
7227IpixToggle.getInstance = function (element) {
7228  if (element !== null && IpixUtil.data(element).has('toggle')) {
7229    return IpixUtil.data(element).get('toggle');
7230  } else {
7231    return null;
7232  }
7233};
7234
7235// Create instances
7236IpixToggle.createInstances = function (selector = '[data-kt-toggle]') {
7237  // Get instances
7238  var elements = document.body.querySelectorAll(selector);
7239  if (elements && elements.length > 0) {
7240    for (var i = 0, len = elements.length; i < len; i++) {
7241      // Initialize instances
7242      new IpixToggle(elements[i]);
7243    }
7244  }
7245};
7246
7247// Global initialization
7248IpixToggle.init = function () {
7249  IpixToggle.createInstances();
7250};
7251
7252// Webpack support
7253if ( true && typeof module.exports !== 'undefined') {
7254  module.exports = IpixToggle;
7255}
7256
7257/***/ }),
7258
7259/***/ "./resources/js/layouts/components/util.js":
7260/*!*************************************************!*\
7261  !*** ./resources/js/layouts/components/util.js ***!
7262  \*************************************************/
7263/***/ ((module) => {
7264
7265"use strict";
7266
7267
7268/**
7269 * @class IpixUtil  base utilize class that privides helper functions
7270 */
7271
7272// Polyfills
7273
7274// Element.matches() polyfill
7275if (!Element.prototype.matches) {
7276  Element.prototype.matches = function (s) {
7277    var matches = (this.document || this.ownerDocument).querySelectorAll(s),
7278      i = matches.length;
7279    while (--i >= 0 && matches.item(i) !== this) {}
7280    return i > -1;
7281  };
7282}
7283
7284/**
7285 * Element.closest() polyfill
7286 * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill
7287 */
7288if (!Element.prototype.closest) {
7289  Element.prototype.closest = function (s) {
7290    var el = this;
7291    var ancestor = this;
7292    if (!document.documentElement.contains(el)) return null;
7293    do {
7294      if (ancestor.matches(s)) return ancestor;
7295      ancestor = ancestor.parentElement;
7296    } while (ancestor !== null);
7297    return null;
7298  };
7299}
7300
7301/**
7302 * ChildNode.remove() polyfill
7303 * https://gomakethings.com/removing-an-element-from-the-dom-the-es6-way/
7304 * @author Chris Ferdinandi
7305 * @license MIT
7306 */
7307(function (elem) {
7308  for (var i = 0; i < elem.length; i++) {
7309    if (!window[elem[i]] || 'remove' in window[elem[i]].prototype) continue;
7310    window[elem[i]].prototype.remove = function () {
7311      this.parentNode.removeChild(this);
7312    };
7313  }
7314})(['Element', 'CharacterData', 'DocumentType']);
7315
7316//
7317// requestAnimationFrame polyfill by Erik Möller.
7318//  With fixes from Paul Irish and Tino Zijdel
7319//
7320//  http://paulirish.com/2011/requestanimationframe-for-smart-animating/
7321//  http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
7322//
7323//  MIT license
7324//
7325(function () {
7326  var lastTime = 0;
7327  var vendors = ['webkit', 'moz'];
7328  for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
7329    window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
7330    window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
7331  }
7332  if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {
7333    var currTime = new Date().getTime();
7334    var timeToCall = Math.max(0, 16 - (currTime - lastTime));
7335    var id = window.setTimeout(function () {
7336      callback(currTime + timeToCall);
7337    }, timeToCall);
7338    lastTime = currTime + timeToCall;
7339    return id;
7340  };
7341  if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {
7342    clearTimeout(id);
7343  };
7344})();
7345
7346// Source: https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/prepend()/prepend().md
7347(function (arr) {
7348  arr.forEach(function (item) {
7349    if (item.hasOwnProperty('prepend')) {
7350      return;
7351    }
7352    Object.defineProperty(item, 'prepend', {
7353      configurable: true,
7354      enumerable: true,
7355      writable: true,
7356      value: function prepend() {
7357        var argArr = Array.prototype.slice.call(arguments),
7358          docFrag = document.createDocumentFragment();
7359        argArr.forEach(function (argItem) {
7360          var isNode = argItem instanceof Node;
7361          docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));
7362        });
7363        this.insertBefore(docFrag, this.firstChild);
7364      }
7365    });
7366  });
7367})([Element.prototype, Document.prototype, DocumentFragment.prototype]);
7368
7369// getAttributeNames
7370if (Element.prototype.getAttributeNames == undefined) {
7371  Element.prototype.getAttributeNames = function () {
7372    var attributes = this.attributes;
7373    var length = attributes.length;
7374    var result = new Array(length);
7375    for (var i = 0; i < length; i++) {
7376      result[i] = attributes[i].name;
7377    }
7378    return result;
7379  };
7380}
7381
7382// Global variables
7383window.IpixUtilElementDataStore = {};
7384window.IpixUtilElementDataStoreID = 0;
7385window.IpixUtilDelegatedEventHandlers = {};
7386var IpixUtil = function () {
7387  var resizeHandlers = [];
7388
7389  /**
7390   * Handle window resize event with some
7391   * delay to attach event handlers upon resize complete
7392   */
7393  var _windowResizeHandler = function () {
7394    var _runResizeHandlers = function () {
7395      // reinitialize other subscribed elements
7396      for (var i = 0; i < resizeHandlers.length; i++) {
7397        var each = resizeHandlers[i];
7398        each.call();
7399      }
7400    };
7401    var timer;
7402    window.addEventListener('resize', function () {
7403      IpixUtil.throttle(timer, function () {
7404        _runResizeHandlers();
7405      }, 200);
7406    });
7407  };
7408  return {
7409    /**
7410     * Class main initializer.
7411     * @param {object} settings.
7412     * @returns null
7413     */
7414    //main function to initiate the theme
7415    init: function (settings) {
7416      _windowResizeHandler();
7417    },
7418    /**
7419     * Adds window resize event handler.
7420     * @param {function} callback function.
7421     */
7422    addResizeHandler: function (callback) {
7423      resizeHandlers.push(callback);
7424    },
7425    /**
7426     * Removes window resize event handler.
7427     * @param {function} callback function.
7428     */
7429    removeResizeHandler: function (callback) {
7430      for (var i = 0; i < resizeHandlers.length; i++) {
7431        if (callback === resizeHandlers[i]) {
7432          delete resizeHandlers[i];
7433        }
7434      }
7435    },
7436    /**
7437     * Trigger window resize handlers.
7438     */
7439    runResizeHandlers: function () {
7440      _runResizeHandlers();
7441    },
7442    resize: function () {
7443      if (typeof Event === 'function') {
7444        // modern browsers
7445        window.dispatchEvent(new Event('resize'));
7446      } else {
7447        // for IE and other old browsers
7448        // causes deprecation warning on modern browsers
7449        var evt = window.document.createEvent('UIEvents');
7450        evt.initUIEvent('resize', true, false, window, 0);
7451        window.dispatchEvent(evt);
7452      }
7453    },
7454    /**
7455     * Get GET parameter value from URL.
7456     * @param {string} paramName Parameter name.
7457     * @returns {string}
7458     */
7459    getURLParam: function (paramName) {
7460      var searchString = window.location.search.substring(1),
7461        i,
7462        val,
7463        params = searchString.split("&");
7464      for (i = 0; i < params.length; i++) {
7465        val = params[i].split("=");
7466        if (val[0] == paramName) {
7467          return unescape(val[1]);
7468        }
7469      }
7470      return null;
7471    },
7472    /**
7473     * Checks whether current device is mobile touch.
7474     * @returns {boolean}
7475     */
7476    isMobileDevice: function () {
7477      var test = this.getViewPort().width < this.getBreakpoint('lg') ? true : false;
7478      if (test === false) {
7479        // For use within normal web clients
7480        test = navigator.userAgent.match(/iPad/i) != null;
7481      }
7482      return test;
7483    },
7484    /**
7485     * Checks whether current device is desktop.
7486     * @returns {boolean}
7487     */
7488    isDesktopDevice: function () {
7489      return IpixUtil.isMobileDevice() ? false : true;
7490    },
7491    /**
7492     * Gets browser window viewport size. Ref:
7493     * http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/
7494     * @returns {object}
7495     */
7496    getViewPort: function () {
7497      var e = window,
7498        a = 'inner';
7499      if (!('innerWidth' in window)) {
7500        a = 'client';
7501        e = document.documentElement || document.body;
7502      }
7503      return {
7504        width: e[a + 'Width'],
7505        height: e[a + 'Height']
7506      };
7507    },
7508    /**
7509     * Checks whether given device mode is currently activated.
7510     * @param {string} mode Responsive mode name(e.g: desktop,
7511     *     desktop-and-tablet, tablet, tablet-and-mobile, mobile)
7512     * @returns {boolean}
7513     */
7514    isBreakpointUp: function (mode) {
7515      var width = this.getViewPort().width;
7516      var breakpoint = this.getBreakpoint(mode);
7517      return width >= breakpoint;
7518    },
7519    isBreakpointDown: function (mode) {
7520      var width = this.getViewPort().width;
7521      var breakpoint = this.getBreakpoint(mode);
7522      return width < breakpoint;
7523    },
7524    getViewportWidth: function () {
7525      return this.getViewPort().width;
7526    },
7527    /**
7528     * Generates unique ID for give prefix.
7529     * @param {string} prefix Prefix for generated ID
7530     * @returns {boolean}
7531     */
7532    getUniqueId: function (prefix) {
7533      return prefix + Math.floor(Math.random() * new Date().getTime());
7534    },
7535    /**
7536     * Gets window width for give breakpoint mode.
7537     * @param {string} mode Responsive mode name(e.g: xl, lg, md, sm)
7538     * @returns {number}
7539     */
7540    getBreakpoint: function (breakpoint) {
7541      var value = this.getCssVariableValue('--bs-' + breakpoint);
7542      if (value) {
7543        value = parseInt(value.trim());
7544      }
7545      return value;
7546    },
7547    /**
7548     * Checks whether object has property matchs given key path.
7549     * @param {object} obj Object contains values paired with given key path
7550     * @param {string} keys Keys path seperated with dots
7551     * @returns {object}
7552     */
7553    isset: function (obj, keys) {
7554      var stone;
7555      keys = keys || '';
7556      if (keys.indexOf('[') !== -1) {
7557        throw new Error('Unsupported object path notation.');
7558      }
7559      keys = keys.split('.');
7560      do {
7561        if (obj === undefined) {
7562          return false;
7563        }
7564        stone = keys.shift();
7565        if (!obj.hasOwnProperty(stone)) {
7566          return false;
7567        }
7568        obj = obj[stone];
7569      } while (keys.length);
7570      return true;
7571    },
7572    /**
7573     * Gets highest z-index of the given element parents
7574     * @param {object} el jQuery element object
7575     * @returns {number}
7576     */
7577    getHighestZindex: function (el) {
7578      var position, value;
7579      while (el && el !== document) {
7580        // Ignore z-index if position is set to a value where z-index is ignored by the browser
7581        // This makes behavior of this function consistent across browsers
7582        // WebKit always returns auto if the element is positioned
7583        position = IpixUtil.css(el, 'position');
7584        if (position === "absolute" || position === "relative" || position === "fixed") {
7585          // IE returns 0 when zIndex is not specified
7586          // other browsers return a string
7587          // we ignore the case of nested elements with an explicit value of 0
7588          // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
7589          value = parseInt(IpixUtil.css(el, 'z-index'));
7590          if (!isNaN(value) && value !== 0) {
7591            return value;
7592          }
7593        }
7594        el = el.parentNode;
7595      }
7596      return 1;
7597    },
7598    /**
7599     * Checks whether the element has any parent with fixed positionfreg
7600     * @param {object} el jQuery element object
7601     * @returns {boolean}
7602     */
7603    hasFixedPositionedParent: function (el) {
7604      var position;
7605      while (el && el !== document) {
7606        position = IpixUtil.css(el, 'position');
7607        if (position === "fixed") {
7608          return true;
7609        }
7610        el = el.parentNode;
7611      }
7612      return false;
7613    },
7614    /**
7615     * Simulates delay
7616     */
7617    sleep: function (milliseconds) {
7618      var start = new Date().getTime();
7619      for (var i = 0; i < 1e7; i++) {
7620        if (new Date().getTime() - start > milliseconds) {
7621          break;
7622        }
7623      }
7624    },
7625    /**
7626     * Gets randomly generated integer value within given min and max range
7627     * @param {number} min Range start value
7628     * @param {number} max Range end value
7629     * @returns {number}
7630     */
7631    getRandomInt: function (min, max) {
7632      return Math.floor(Math.random() * (max - min + 1)) + min;
7633    },
7634    /**
7635     * Checks whether Angular library is included
7636     * @returns {boolean}
7637     */
7638    isAngularVersion: function () {
7639      return window.Zone !== undefined ? true : false;
7640    },
7641    // Deep extend:  $.extend(true, {}, objA, objB);
7642    deepExtend: function (out) {
7643      out = out || {};
7644      for (var i = 1; i < arguments.length; i++) {
7645        var obj = arguments[i];
7646        if (!obj) continue;
7647        for (var key in obj) {
7648          if (!obj.hasOwnProperty(key)) {
7649            continue;
7650          }
7651
7652          // based on https://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/
7653          if (Object.prototype.toString.call(obj[key]) === '[object Object]') {
7654            out[key] = IpixUtil.deepExtend(out[key], obj[key]);
7655            continue;
7656          }
7657          out[key] = obj[key];
7658        }
7659      }
7660      return out;
7661    },
7662    // extend:  $.extend({}, objA, objB);
7663    extend: function (out) {
7664      out = out || {};
7665      for (var i = 1; i < arguments.length; i++) {
7666        if (!arguments[i]) continue;
7667        for (var key in arguments[i]) {
7668          if (arguments[i].hasOwnProperty(key)) out[key] = arguments[i][key];
7669        }
7670      }
7671      return out;
7672    },
7673    getBody: function () {
7674      return document.getElementsByTagName('body')[0];
7675    },
7676    /**
7677     * Checks whether the element has given classes
7678     * @param {object} el jQuery element object
7679     * @param {string} Classes string
7680     * @returns {boolean}
7681     */
7682    hasClasses: function (el, classes) {
7683      if (!el) {
7684        return;
7685      }
7686      var classesArr = classes.split(" ");
7687      for (var i = 0; i < classesArr.length; i++) {
7688        if (IpixUtil.hasClass(el, IpixUtil.trim(classesArr[i])) == false) {
7689          return false;
7690        }
7691      }
7692      return true;
7693    },
7694    hasClass: function (el, className) {
7695      if (!el) {
7696        return;
7697      }
7698      return el.classList ? el.classList.contains(className) : new RegExp('\\b' + className + '\\b').test(el.className);
7699    },
7700    addClass: function (el, className) {
7701      if (!el || typeof className === 'undefined') {
7702        return;
7703      }
7704      var classNames = className.split(' ');
7705      if (el.classList) {
7706        for (var i = 0; i < classNames.length; i++) {
7707          if (classNames[i] && classNames[i].length > 0) {
7708            el.classList.add(IpixUtil.trim(classNames[i]));
7709          }
7710        }
7711      } else if (!IpixUtil.hasClass(el, className)) {
7712        for (var x = 0; x < classNames.length; x++) {
7713          el.className += ' ' + IpixUtil.trim(classNames[x]);
7714        }
7715      }
7716    },
7717    removeClass: function (el, className) {
7718      if (!el || typeof className === 'undefined') {
7719        return;
7720      }
7721      var classNames = className.split(' ');
7722      if (el.classList) {
7723        for (var i = 0; i < classNames.length; i++) {
7724          el.classList.remove(IpixUtil.trim(classNames[i]));
7725        }
7726      } else if (IpixUtil.hasClass(el, className)) {
7727        for (var x = 0; x < classNames.length; x++) {
7728          el.className = el.className.replace(new RegExp('\\b' + IpixUtil.trim(classNames[x]) + '\\b', 'g'), '');
7729        }
7730      }
7731    },
7732    triggerCustomEvent: function (el, eventName, data) {
7733      var event;
7734      if (window.CustomEvent) {
7735        event = new CustomEvent(eventName, {
7736          detail: data
7737        });
7738      } else {
7739        event = document.createEvent('CustomEvent');
7740        event.initCustomEvent(eventName, true, true, data);
7741      }
7742      el.dispatchEvent(event);
7743    },
7744    triggerEvent: function (node, eventName) {
7745      // Make sure we use the ownerDocument from the provided node to avoid cross-window problems
7746      var doc;
7747      if (node.ownerDocument) {
7748        doc = node.ownerDocument;
7749      } else if (node.nodeType == 9) {
7750        // the node may be the document itself, nodeType 9 = DOCUMENT_NODE
7751        doc = node;
7752      } else {
7753        throw new Error("Invalid node passed to fireEvent: " + node.id);
7754      }
7755      if (node.dispatchEvent) {
7756        // Gecko-style approach (now the standard) takes more work
7757        var eventClass = "";
7758
7759        // Different events have different event classes.
7760        // If this switch statement can't map an eventName to an eventClass,
7761        // the event firing is going to fail.
7762        switch (eventName) {
7763          case "click": // Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead.
7764          case "mouseenter":
7765          case "mouseleave":
7766          case "mousedown":
7767          case "mouseup":
7768            eventClass = "MouseEvents";
7769            break;
7770          case "focus":
7771          case "change":
7772          case "blur":
7773          case "select":
7774            eventClass = "HTMLEvents";
7775            break;
7776          default:
7777            throw "fireEvent: Couldn't find an event class for event '" + eventName + "'.";
7778            break;
7779        }
7780        var event = doc.createEvent(eventClass);
7781        var bubbles = eventName == "change" ? false : true;
7782        event.initEvent(eventName, bubbles, true); // All events created as bubbling and cancelable.
7783
7784        event.synthetic = true; // allow detection of synthetic events
7785        // The second parameter says go ahead with the default action
7786        node.dispatchEvent(event, true);
7787      } else if (node.fireEvent) {
7788        // IE-old school style
7789        var event = doc.createEventObject();
7790        event.synthetic = true; // allow detection of synthetic events
7791        node.fireEvent("on" + eventName, event);
7792      }
7793    },
7794    index: function (el) {
7795      var c = el.parentNode.children,
7796        i = 0;
7797      for (; i < c.length; i++) if (c[i] == el) return i;
7798    },
7799    trim: function (string) {
7800      return string.trim();
7801    },
7802    eventTriggered: function (e) {
7803      if (e.currentTarget.dataset.triggered) {
7804        return true;
7805      } else {
7806        e.currentTarget.dataset.triggered = true;
7807        return false;
7808      }
7809    },
7810    remove: function (el) {
7811      if (el && el.parentNode) {
7812        el.parentNode.removeChild(el);
7813      }
7814    },
7815    find: function (parent, query) {
7816      if (parent !== null) {
7817        return parent.querySelector(query);
7818      } else {
7819        return null;
7820      }
7821    },
7822    findAll: function (parent, query) {
7823      if (parent !== null) {
7824        return parent.querySelectorAll(query);
7825      } else {
7826        return null;
7827      }
7828    },
7829    insertAfter: function (el, referenceNode) {
7830      return referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);
7831    },
7832    parents: function (elem, selector) {
7833      // Set up a parent array
7834      var parents = [];
7835
7836      // Push each parent element to the array
7837      for (; elem && elem !== document; elem = elem.parentNode) {
7838        if (selector) {
7839          if (elem.matches(selector)) {
7840            parents.push(elem);
7841          }
7842          continue;
7843        }
7844        parents.push(elem);
7845      }
7846
7847      // Return our parent array
7848      return parents;
7849    },
7850    children: function (el, selector, log) {
7851      if (!el || !el.childNodes) {
7852        return null;
7853      }
7854      var result = [],
7855        i = 0,
7856        l = el.childNodes.length;
7857      for (var i; i < l; ++i) {
7858        if (el.childNodes[i].nodeType == 1 && IpixUtil.matches(el.childNodes[i], selector, log)) {
7859          result.push(el.childNodes[i]);
7860        }
7861      }
7862      return result;
7863    },
7864    child: function (el, selector, log) {
7865      var children = IpixUtil.children(el, selector, log);
7866      return children ? children[0] : null;
7867    },
7868    matches: function (el, selector, log) {
7869      var p = Element.prototype;
7870      var f = p.matches || p.webkitMatchesSelector || p.mozMatchesSelector || p.msMatchesSelector || function (s) {
7871        return [].indexOf.call(document.querySelectorAll(s), this) !== -1;
7872      };
7873      if (el && el.tagName) {
7874        return f.call(el, selector);
7875      } else {
7876        return false;
7877      }
7878    },
7879    data: function (el) {
7880      return {
7881        set: function (name, data) {
7882          if (!el) {
7883            return;
7884          }
7885          if (el.customDataTag === undefined) {
7886            window.IpixUtilElementDataStoreID++;
7887            el.customDataTag = window.IpixUtilElementDataStoreID;
7888          }
7889          if (window.IpixUtilElementDataStore[el.customDataTag] === undefined) {
7890            window.IpixUtilElementDataStore[el.customDataTag] = {};
7891          }
7892          window.IpixUtilElementDataStore[el.customDataTag][name] = data;
7893        },
7894        get: function (name) {
7895          if (!el) {
7896            return;
7897          }
7898          if (el.customDataTag === undefined) {
7899            return null;
7900          }
7901          return this.has(name) ? window.IpixUtilElementDataStore[el.customDataTag][name] : null;
7902        },
7903        has: function (name) {
7904          if (!el) {
7905            return false;
7906          }
7907          if (el.customDataTag === undefined) {
7908            return false;
7909          }
7910          return window.IpixUtilElementDataStore[el.customDataTag] && window.IpixUtilElementDataStore[el.customDataTag][name] ? true : false;
7911        },
7912        remove: function (name) {
7913          if (el && this.has(name)) {
7914            delete window.IpixUtilElementDataStore[el.customDataTag][name];
7915          }
7916        }
7917      };
7918    },
7919    outerWidth: function (el, margin) {
7920      var width;
7921      if (margin === true) {
7922        width = parseFloat(el.offsetWidth);
7923        width += parseFloat(IpixUtil.css(el, 'margin-left')) + parseFloat(IpixUtil.css(el, 'margin-right'));
7924        return parseFloat(width);
7925      } else {
7926        width = parseFloat(el.offsetWidth);
7927        return width;
7928      }
7929    },
7930    offset: function (el) {
7931      var rect, win;
7932      if (!el) {
7933        return;
7934      }
7935
7936      // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
7937      // Support: IE <=11 only
7938      // Running getBoundingClientRect on a
7939      // disconnected node in IE throws an error
7940
7941      if (!el.getClientRects().length) {
7942        return {
7943          top: 0,
7944          left: 0
7945        };
7946      }
7947
7948      // Get document-relative position by adding viewport scroll to viewport-relative gBCR
7949      rect = el.getBoundingClientRect();
7950      win = el.ownerDocument.defaultView;
7951      return {
7952        top: rect.top + win.pageYOffset,
7953        left: rect.left + win.pageXOffset,
7954        right: window.innerWidth - (el.offsetLeft + el.offsetWidth)
7955      };
7956    },
7957    height: function (el) {
7958      return IpixUtil.css(el, 'height');
7959    },
7960    outerHeight: function (el, withMargin) {
7961      var height = el.offsetHeight;
7962      var style;
7963      if (typeof withMargin !== 'undefined' && withMargin === true) {
7964        style = getComputedStyle(el);
7965        height += parseInt(style.marginTop) + parseInt(style.marginBottom);
7966        return height;
7967      } else {
7968        return height;
7969      }
7970    },
7971    visible: function (el) {
7972      return !(el.offsetWidth === 0 && el.offsetHeight === 0);
7973    },
7974    isVisibleInContainer: function (el, container, offset = 0) {
7975      const eleTop = el.offsetTop;
7976      const eleBottom = eleTop + el.clientHeight + offset;
7977      const containerTop = container.scrollTop;
7978      const containerBottom = containerTop + container.clientHeight;
7979
7980      // The element is fully visible in the container
7981      return eleTop >= containerTop && eleBottom <= containerBottom;
7982    },
7983    getRelativeTopPosition: function (el, container) {
7984      return el.offsetTop - container.offsetTop;
7985    },
7986    attr: function (el, name, value) {
7987      if (el == undefined) {
7988        return;
7989      }
7990      if (value !== undefined) {
7991        el.setAttribute(name, value);
7992      } else {
7993        return el.getAttribute(name);
7994      }
7995    },
7996    hasAttr: function (el, name) {
7997      if (el == undefined) {
7998        return;
7999      }
8000      return el.getAttribute(name) ? true : false;
8001    },
8002    removeAttr: function (el, name) {
8003      if (el == undefined) {
8004        return;
8005      }
8006      el.removeAttribute(name);
8007    },
8008    animate: function (from, to, duration, update, easing, done) {
8009      /**
8010       * TinyAnimate.easings
8011       *  Adapted from jQuery Easing
8012       */
8013      var easings = {};
8014      var easing;
8015      easings.linear = function (t, b, c, d) {
8016        return c * t / d + b;
8017      };
8018      easing = easings.linear;
8019
8020      // Early bail out if called incorrectly
8021      if (typeof from !== 'number' || typeof to !== 'number' || typeof duration !== 'number' || typeof update !== 'function') {
8022        return;
8023      }
8024
8025      // Create mock done() function if necessary
8026      if (typeof done !== 'function') {
8027        done = function () {};
8028      }
8029
8030      // Pick implementation (requestAnimationFrame | setTimeout)
8031      var rAF = window.requestAnimationFrame || function (callback) {
8032        window.setTimeout(callback, 1000 / 50);
8033      };
8034
8035      // Animation loop
8036      var canceled = false;
8037      var change = to - from;
8038      function loop(timestamp) {
8039        var time = (timestamp || +new Date()) - start;
8040        if (time >= 0) {
8041          update(easing(time, from, change, duration));
8042        }
8043        if (time >= 0 && time >= duration) {
8044          update(to);
8045          done();
8046        } else {
8047          rAF(loop);
8048        }
8049      }
8050      update(from);
8051
8052      // Start animation loop
8053      var start = window.performance && window.performance.now ? window.performance.now() : +new Date();
8054      rAF(loop);
8055    },
8056    actualCss: function (el, prop, cache) {
8057      var css = '';
8058      if (el instanceof HTMLElement === false) {
8059        return;
8060      }
8061      if (!el.getAttribute('kt-hidden-' + prop) || cache === false) {
8062        var value;
8063
8064        // the element is hidden so:
8065        // making the el block so we can meassure its height but still be hidden
8066        css = el.style.cssText;
8067        el.style.cssText = 'position: absolute; visibility: hidden; display: block;';
8068        if (prop == 'width') {
8069          value = el.offsetWidth;
8070        } else if (prop == 'height') {
8071          value = el.offsetHeight;
8072        }
8073        el.style.cssText = css;
8074
8075        // store it in cache
8076        el.setAttribute('kt-hidden-' + prop, value);
8077        return parseFloat(value);
8078      } else {
8079        // store it in cache
8080        return parseFloat(el.getAttribute('kt-hidden-' + prop));
8081      }
8082    },
8083    actualHeight: function (el, cache) {
8084      return IpixUtil.actualCss(el, 'height', cache);
8085    },
8086    actualWidth: function (el, cache) {
8087      return IpixUtil.actualCss(el, 'width', cache);
8088    },
8089    getScroll: function (element, method) {
8090      // The passed in `method` value should be 'Top' or 'Left'
8091      method = 'scroll' + method;
8092      return element == window || element == document ? self[method == 'scrollTop' ? 'pageYOffset' : 'pageXOffset'] || browserSupportsBoxModel && document.documentElement[method] || document.body[method] : element[method];
8093    },
8094    css: function (el, styleProp, value, important) {
8095      if (!el) {
8096        return;
8097      }
8098      if (value !== undefined) {
8099        if (important === true) {
8100          el.style.setProperty(styleProp, value, 'important');
8101        } else {
8102          el.style[styleProp] = value;
8103        }
8104      } else {
8105        var defaultView = (el.ownerDocument || document).defaultView;
8106
8107        // W3C standard way:
8108        if (defaultView && defaultView.getComputedStyle) {
8109          // sanitize property name to css notation
8110          // (hyphen separated words eg. font-Size)
8111          styleProp = styleProp.replace(/([A-Z])/g, "-$1").toLowerCase();
8112          return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);
8113        } else if (el.currentStyle) {
8114          // IE
8115          // sanitize property name to camelCase
8116          styleProp = styleProp.replace(/\-(\w)/g, function (str, letter) {
8117            return letter.toUpperCase();
8118          });
8119          value = el.currentStyle[styleProp];
8120
8121          // convert other units to pixels on IE
8122          if (/^\d+(em|pt|%|ex)?$/i.test(value)) {
8123            return function (value) {
8124              var oldLeft = el.style.left,
8125                oldRsLeft = el.runtimeStyle.left;
8126              el.runtimeStyle.left = el.currentStyle.left;
8127              el.style.left = value || 0;
8128              value = el.style.pixelLeft + "px";
8129              el.style.left = oldLeft;
8130              el.runtimeStyle.left = oldRsLeft;
8131              return value;
8132            }(value);
8133          }
8134          return value;
8135        }
8136      }
8137    },
8138    slide: function (el, dir, speed, callback, recalcMaxHeight) {
8139      if (!el || dir == 'up' && IpixUtil.visible(el) === false || dir == 'down' && IpixUtil.visible(el) === true) {
8140        return;
8141      }
8142      speed = speed ? speed : 600;
8143      var calcHeight = IpixUtil.actualHeight(el);
8144      var calcPaddingTop = false;
8145      var calcPaddingBottom = false;
8146      if (IpixUtil.css(el, 'padding-top') && IpixUtil.data(el).has('slide-padding-top') !== true) {
8147        IpixUtil.data(el).set('slide-padding-top', IpixUtil.css(el, 'padding-top'));
8148      }
8149      if (IpixUtil.css(el, 'padding-bottom') && IpixUtil.data(el).has('slide-padding-bottom') !== true) {
8150        IpixUtil.data(el).set('slide-padding-bottom', IpixUtil.css(el, 'padding-bottom'));
8151      }
8152      if (IpixUtil.data(el).has('slide-padding-top')) {
8153        calcPaddingTop = parseInt(IpixUtil.data(el).get('slide-padding-top'));
8154      }
8155      if (IpixUtil.data(el).has('slide-padding-bottom')) {
8156        calcPaddingBottom = parseInt(IpixUtil.data(el).get('slide-padding-bottom'));
8157      }
8158      if (dir == 'up') {
8159        // up
8160        el.style.cssText = 'display: block; overflow: hidden;';
8161        if (calcPaddingTop) {
8162          IpixUtil.animate(0, calcPaddingTop, speed, function (value) {
8163            el.style.paddingTop = calcPaddingTop - value + 'px';
8164          }, 'linear');
8165        }
8166        if (calcPaddingBottom) {
8167          IpixUtil.animate(0, calcPaddingBottom, speed, function (value) {
8168            el.style.paddingBottom = calcPaddingBottom - value + 'px';
8169          }, 'linear');
8170        }
8171        IpixUtil.animate(0, calcHeight, speed, function (value) {
8172          el.style.height = calcHeight - value + 'px';
8173        }, 'linear', function () {
8174          el.style.height = '';
8175          el.style.display = 'none';
8176          if (typeof callback === 'function') {
8177            callback();
8178          }
8179        });
8180      } else if (dir == 'down') {
8181        // down
8182        el.style.cssText = 'display: block; overflow: hidden;';
8183        if (calcPaddingTop) {
8184          IpixUtil.animate(0, calcPaddingTop, speed, function (value) {
8185            //
8186            el.style.paddingTop = value + 'px';
8187          }, 'linear', function () {
8188            el.style.paddingTop = '';
8189          });
8190        }
8191        if (calcPaddingBottom) {
8192          IpixUtil.animate(0, calcPaddingBottom, speed, function (value) {
8193            el.style.paddingBottom = value + 'px';
8194          }, 'linear', function () {
8195            el.style.paddingBottom = '';
8196          });
8197        }
8198        IpixUtil.animate(0, calcHeight, speed, function (value) {
8199          el.style.height = value + 'px';
8200        }, 'linear', function () {
8201          el.style.height = '';
8202          el.style.display = '';
8203          el.style.overflow = '';
8204          if (typeof callback === 'function') {
8205            callback();
8206          }
8207        });
8208      }
8209    },
8210    slideUp: function (el, speed, callback) {
8211      IpixUtil.slide(el, 'up', speed, callback);
8212    },
8213    slideDown: function (el, speed, callback) {
8214      IpixUtil.slide(el, 'down', speed, callback);
8215    },
8216    show: function (el, display) {
8217      if (typeof el !== 'undefined') {
8218        el.style.display = display ? display : 'block';
8219      }
8220    },
8221    hide: function (el) {
8222      if (typeof el !== 'undefined') {
8223        el.style.display = 'none';
8224      }
8225    },
8226    addEvent: function (el, type, handler, one) {
8227      if (typeof el !== 'undefined' && el !== null) {
8228        el.addEventListener(type, handler);
8229      }
8230    },
8231    removeEvent: function (el, type, handler) {
8232      if (el !== null) {
8233        el.removeEventListener(type, handler);
8234      }
8235    },
8236    on: function (element, selector, event, handler) {
8237      if (element === null) {
8238        return;
8239      }
8240      var eventId = IpixUtil.getUniqueId('event');
8241      window.IpixUtilDelegatedEventHandlers[eventId] = function (e) {
8242        var targets = element.querySelectorAll(selector);
8243        var target = e.target;
8244        while (target && target !== element) {
8245          for (var i = 0, j = targets.length; i < j; i++) {
8246            if (target === targets[i]) {
8247              handler.call(target, e);
8248            }
8249          }
8250          target = target.parentNode;
8251        }
8252      };
8253      IpixUtil.addEvent(element, event, window.IpixUtilDelegatedEventHandlers[eventId]);
8254      return eventId;
8255    },
8256    off: function (element, event, eventId) {
8257      if (!element || !window.IpixUtilDelegatedEventHandlers[eventId]) {
8258        return;
8259      }
8260      IpixUtil.removeEvent(element, event, window.IpixUtilDelegatedEventHandlers[eventId]);
8261      delete window.IpixUtilDelegatedEventHandlers[eventId];
8262    },
8263    one: function onetime(el, type, callback) {
8264      el.addEventListener(type, function callee(e) {
8265        // remove event
8266        if (e.target && e.target.removeEventListener) {
8267          e.target.removeEventListener(e.type, callee);
8268        }
8269
8270        // need to verify from https://themeforest.net/author_dashboard#comment_23615588
8271        if (el && el.removeEventListener) {
8272          e.currentTarget.removeEventListener(e.type, callee);
8273        }
8274
8275        // call handler
8276        return callback(e);
8277      });
8278    },
8279    hash: function (str) {
8280      var hash = 0,
8281        i,
8282        chr;
8283      if (str.length === 0) return hash;
8284      for (i = 0; i < str.length; i++) {
8285        chr = str.charCodeAt(i);
8286        hash = (hash << 5) - hash + chr;
8287        hash |= 0; // Convert to 32bit integer
8288      }
8289      return hash;
8290    },
8291    animateClass: function (el, animationName, callback) {
8292      var animation;
8293      var animations = {
8294        animation: 'animationend',
8295        OAnimation: 'oAnimationEnd',
8296        MozAnimation: 'mozAnimationEnd',
8297        WebkitAnimation: 'webkitAnimationEnd',
8298        msAnimation: 'msAnimationEnd'
8299      };
8300      for (var t in animations) {
8301        if (el.style[t] !== undefined) {
8302          animation = animations[t];
8303        }
8304      }
8305      IpixUtil.addClass(el, animationName);
8306      IpixUtil.one(el, animation, function () {
8307        IpixUtil.removeClass(el, animationName);
8308      });
8309      if (callback) {
8310        IpixUtil.one(el, animation, callback);
8311      }
8312    },
8313    transitionEnd: function (el, callback) {
8314      var transition;
8315      var transitions = {
8316        transition: 'transitionend',
8317        OTransition: 'oTransitionEnd',
8318        MozTransition: 'mozTransitionEnd',
8319        WebkitTransition: 'webkitTransitionEnd',
8320        msTransition: 'msTransitionEnd'
8321      };
8322      for (var t in transitions) {
8323        if (el.style[t] !== undefined) {
8324          transition = transitions[t];
8325        }
8326      }
8327      IpixUtil.one(el, transition, callback);
8328    },
8329    animationEnd: function (el, callback) {
8330      var animation;
8331      var animations = {
8332        animation: 'animationend',
8333        OAnimation: 'oAnimationEnd',
8334        MozAnimation: 'mozAnimationEnd',
8335        WebkitAnimation: 'webkitAnimationEnd',
8336        msAnimation: 'msAnimationEnd'
8337      };
8338      for (var t in animations) {
8339        if (el.style[t] !== undefined) {
8340          animation = animations[t];
8341        }
8342      }
8343      IpixUtil.one(el, animation, callback);
8344    },
8345    animateDelay: function (el, value) {
8346      var vendors = ['webkit-', 'moz-', 'ms-', 'o-', ''];
8347      for (var i = 0; i < vendors.length; i++) {
8348        IpixUtil.css(el, vendors[i] + 'animation-delay', value);
8349      }
8350    },
8351    animateDuration: function (el, value) {
8352      var vendors = ['webkit-', 'moz-', 'ms-', 'o-', ''];
8353      for (var i = 0; i < vendors.length; i++) {
8354        IpixUtil.css(el, vendors[i] + 'animation-duration', value);
8355      }
8356    },
8357    scrollTo: function (target, offset, duration) {
8358      var duration = duration ? duration : 500;
8359      var targetPos = target ? IpixUtil.offset(target).top : 0;
8360      var scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
8361      var from, to;
8362      if (offset) {
8363        targetPos = targetPos - offset;
8364      }
8365      from = scrollPos;
8366      to = targetPos;
8367      IpixUtil.animate(from, to, duration, function (value) {
8368        document.documentElement.scrollTop = value;
8369        document.body.parentNode.scrollTop = value;
8370        document.body.scrollTop = value;
8371      }); //, easing, done
8372    },
8373    scrollTop: function (offset, duration) {
8374      IpixUtil.scrollTo(null, offset, duration);
8375    },
8376    isArray: function (obj) {
8377      return obj && Array.isArray(obj);
8378    },
8379    isEmpty: function (obj) {
8380      for (var prop in obj) {
8381        if (obj.hasOwnProperty(prop)) {
8382          return false;
8383        }
8384      }
8385      return true;
8386    },
8387    numberString: function (nStr) {
8388      nStr += '';
8389      var x = nStr.split('.');
8390      var x1 = x[0];
8391      var x2 = x.length > 1 ? '.' + x[1] : '';
8392      var rgx = /(\d+)(\d{3})/;
8393      while (rgx.test(x1)) {
8394        x1 = x1.replace(rgx, '$1' + ',' + '$2');
8395      }
8396      return x1 + x2;
8397    },
8398    isRTL: function () {
8399      return document.querySelector('html').getAttribute("direction") === 'rtl';
8400    },
8401    snakeToCamel: function (s) {
8402      return s.replace(/(\-\w)/g, function (m) {
8403        return m[1].toUpperCase();
8404      });
8405    },
8406    filterBoolean: function (val) {
8407      // Convert string boolean
8408      if (val === true || val === 'true') {
8409        return true;
8410      }
8411      if (val === false || val === 'false') {
8412        return false;
8413      }
8414      return val;
8415    },
8416    setHTML: function (el, html) {
8417      el.innerHTML = html;
8418    },
8419    getHTML: function (el) {
8420      if (el) {
8421        return el.innerHTML;
8422      }
8423    },
8424    getDocumentHeight: function () {
8425      var body = document.body;
8426      var html = document.documentElement;
8427      return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);
8428    },
8429    getScrollTop: function () {
8430      return (document.scrollingElement || document.documentElement).scrollTop;
8431    },
8432    colorLighten: function (color, amount) {
8433      const addLight = function (color, amount) {
8434        let cc = parseInt(color, 16) + amount;
8435        let c = cc > 255 ? 255 : cc;
8436        c = c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}`;
8437        return c;
8438      };
8439      color = color.indexOf("#") >= 0 ? color.substring(1, color.length) : color;
8440      amount = parseInt(255 * amount / 100);
8441      return color = `#${addLight(color.substring(0, 2), amount)}${addLight(color.substring(2, 4), amount)}${addLight(color.substring(4, 6), amount)}`;
8442    },
8443    colorDarken: function (color, amount) {
8444      const subtractLight = function (color, amount) {
8445        let cc = parseInt(color, 16) - amount;
8446        let c = cc < 0 ? 0 : cc;
8447        c = c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}`;
8448        return c;
8449      };
8450      color = color.indexOf("#") >= 0 ? color.substring(1, color.length) : color;
8451      amount = parseInt(255 * amount / 100);
8452      return color = `#${subtractLight(color.substring(0, 2), amount)}${subtractLight(color.substring(2, 4), amount)}${subtractLight(color.substring(4, 6), amount)}`;
8453    },
8454    // Throttle function: Input as function which needs to be throttled and delay is the time interval in milliseconds
8455    throttle: function (timer, func, delay) {
8456      // If setTimeout is already scheduled, no need to do anything
8457      if (timer) {
8458        return;
8459      }
8460
8461      // Schedule a setTimeout after delay seconds
8462      timer = setTimeout(function () {
8463        func();
8464
8465        // Once setTimeout function execution is finished, timerId = undefined so that in <br>
8466        // the next scroll event function execution can be scheduled by the setTimeout
8467        timer = undefined;
8468      }, delay);
8469    },
8470    // Debounce function: Input as function which needs to be debounced and delay is the debounced time in milliseconds
8471    debounce: function (timer, func, delay) {
8472      // Cancels the setTimeout method execution
8473      clearTimeout(timer);
8474
8475      // Executes the func after delay time.
8476      timer = setTimeout(func, delay);
8477    },
8478    parseJson: function (value) {
8479      if (typeof value === 'string') {
8480        value = value.replace(/'/g, "\"");
8481        var jsonStr = value.replace(/(\w+:)|(\w+ :)/g, function (matched) {
8482          return '"' + matched.substring(0, matched.length - 1) + '":';
8483        });
8484        try {
8485          value = JSON.parse(jsonStr);
8486        } catch (e) {}
8487      }
8488      return value;
8489    },
8490    getResponsiveValue: function (value, defaultValue) {
8491      var width = this.getViewPort().width;
8492      var result = null;
8493      value = IpixUtil.parseJson(value);
8494      if (typeof value === 'object') {
8495        var resultKey;
8496        var resultBreakpoint = -1;
8497        var breakpoint;
8498        for (var key in value) {
8499          if (key === 'default') {
8500            breakpoint = 0;
8501          } else {
8502            breakpoint = this.getBreakpoint(key) ? this.getBreakpoint(key) : parseInt(key);
8503          }
8504          if (breakpoint <= width && breakpoint > resultBreakpoint) {
8505            resultKey = key;
8506            resultBreakpoint = breakpoint;
8507          }
8508        }
8509        if (resultKey) {
8510          result = value[resultKey];
8511        } else {
8512          result = value;
8513        }
8514      } else {
8515        result = value;
8516      }
8517      return result;
8518    },
8519    each: function (array, callback) {
8520      return [].slice.call(array).map(callback);
8521    },
8522    getSelectorMatchValue: function (value) {
8523      var result = null;
8524      value = IpixUtil.parseJson(value);
8525      if (typeof value === 'object') {
8526        // Match condition
8527        if (value['match'] !== undefined) {
8528          var selector = Object.keys(value['match'])[0];
8529          value = Object.values(value['match'])[0];
8530          if (document.querySelector(selector) !== null) {
8531            result = value;
8532          }
8533        }
8534      } else {
8535        result = value;
8536      }
8537      return result;
8538    },
8539    getConditionalValue: function (value) {
8540      var value = IpixUtil.parseJson(value);
8541      var result = IpixUtil.getResponsiveValue(value);
8542      if (result !== null && result['match'] !== undefined) {
8543        result = IpixUtil.getSelectorMatchValue(result);
8544      }
8545      if (result === null && value !== null && value['default'] !== undefined) {
8546        result = value['default'];
8547      }
8548      return result;
8549    },
8550    getCssVariableValue: function (variableName) {
8551      var hex = getComputedStyle(document.documentElement).getPropertyValue(variableName);
8552      if (hex && hex.length > 0) {
8553        hex = hex.trim();
8554      }
8555      return hex;
8556    },
8557    isInViewport: function (element) {
8558      var rect = element.getBoundingClientRect();
8559      return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
8560    },
8561    isPartiallyInViewport: function (element) {
8562      let x = element.getBoundingClientRect().left;
8563      let y = element.getBoundingClientRect().top;
8564      let ww = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
8565      let hw = Math.max(document.documentElement.clientHeight, window.innerHeight || 0
8565);
8566      let w = element.clientWidth;
8567      let h = element.clientHeight;
8568      return y < hw && y + h > 0 && x < ww && x + w > 0;
8569    },
8570    onDOMContentLoaded: function (callback) {
8571      if (document.readyState === 'loading') {
8572        document.addEventListener('DOMContentLoaded', callback);
8573      } else {
8574        callback();
8575      }
8576    },
8577    inIframe: function () {
8578      try {
8579        return window.self !== window.top;
8580      } catch (e) {
8581        return true;
8582      }
8583    },
8584    isHexColor(code) {
8585      return /^#[0-9A-F]{6}$/i.test(code);
8586    }
8587  };
8588}();
8589
8590// Webpack support
8591if ( true && typeof module.exports !== 'undefined') {
8592  module.exports = IpixUtil;
8593}
8594
8595/***/ }),
8596
8597/***/ "./resources/js/layouts/components/web.js":
8598/*!************************************************!*\
8599  !*** ./resources/js/layouts/components/web.js ***!
8600  \************************************************/
8601/***/ ((module) => {
8602
8603"use strict";
8604
8605
8606// Class definition
8607var IpixApp = function () {
8608  var initialized = false;
8609  var select2FocusFixInitialized = false;
8610  var countUpInitialized = false;
8611  var toggleSection = function () {
8612    var section = document.getElementById('lets_talk_drop_down');
8613    document.addEventListener('click', function (event) {
8614      if (event.target !== button && event.target !== section) {
8615        section.style.display = 'none';
8616      }
8617    });
8618    section.addEventListener('click', function (event) {
8619      event.stopPropagation();
8620    });
8621    var button = document.getElementById('navbar_lets_talk');
8622    button.addEventListener('click', function (event) {
8623      section.style.display = section.style.display === 'none' || section.style.display === '' ? 'block' : 'none';
8624      event.stopPropagation();
8625    });
8626  };
8627  var createBootstrapTooltip = function (el, options) {
8628    if (el.getAttribute("data-kt-initialized") === "1") {
8629      return;
8630    }
8631    var delay = {};
8632
8633    // Handle delay options
8634    if (el.hasAttribute('data-bs-delay-hide')) {
8635      delay['hide'] = el.getAttribute('data-bs-delay-hide');
8636    }
8637    if (el.hasAttribute('data-bs-delay-show')) {
8638      delay['show'] = el.getAttribute('data-bs-delay-show');
8639    }
8640    if (delay) {
8641      options['delay'] = delay;
8642    }
8643
8644    // Check dismiss options
8645    if (el.hasAttribute('data-bs-dismiss') && el.getAttribute('data-bs-dismiss') == 'click') {
8646      options['dismiss'] = 'click';
8647    }
8648
8649    // Initialize popover
8650    var tp = new bootstrap.Tooltip(el, options);
8651
8652    // Handle dismiss
8653    if (options['dismiss'] && options['dismiss'] === 'click') {
8654      // Hide popover on element click
8655      el.addEventListener("click", function (e) {
8656        tp.hide();
8657      });
8658    }
8659    el.setAttribute("data-kt-initialized", "1");
8660    return tp;
8661  };
8662  var createBootstrapTooltips = function () {
8663    var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
8664    var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
8665      createBootstrapTooltip(tooltipTriggerEl, {});
8666    });
8667  };
8668  var createBootstrapPopover = function (el, options) {
8669    if (el.getAttribute("data-kt-initialized") === "1") {
8670      return;
8671    }
8672    var delay = {};
8673
8674    // Handle delay options
8675    if (el.hasAttribute('data-bs-delay-hide')) {
8676      delay['hide'] = el.getAttribute('data-bs-delay-hide');
8677    }
8678    if (el.hasAttribute('data-bs-delay-show')) {
8679      delay['show'] = el.getAttribute('data-bs-delay-show');
8680    }
8681    if (delay) {
8682      options['delay'] = delay;
8683    }
8684
8685    // Handle dismiss option
8686    if (el.getAttribute('data-bs-dismiss') == 'true') {
8687      options['dismiss'] = true;
8688    }
8689    if (options['dismiss'] === true) {
8690      options['template'] = '<div class="popover" role="tooltip"><div class="popover-arrow"></div><span class="popover-dismiss btn btn-icon"></span><h3 class="popover-header"></h3><div class="popover-body"></div></div>';
8691    }
8692
8693    // Initialize popover
8694    var popover = new bootstrap.Popover(el, options);
8695
8696    // Handle dismiss click
8697    if (options['dismiss'] === true) {
8698      var dismissHandler = function (e) {
8699        popover.hide();
8700      };
8701      el.addEventListener('shown.bs.popover', function () {
8702        var dismissEl = document.getElementById(el.getAttribute('aria-describedby'));
8703        dismissEl.addEventListener('click', dismissHandler);
8704      });
8705      el.addEventListener('hide.bs.popover', function () {
8706        var dismissEl = document.getElementById(el.getAttribute('aria-describedby'));
8707        dismissEl.removeEventListener('click', dismissHandler);
8708      });
8709    }
8710    el.setAttribute("data-kt-initialized", "1");
8711    return popover;
8712  };
8713  var createBootstrapPopovers = function () {
8714    var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'));
8715    var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
8716      createBootstrapPopover(popoverTriggerEl, {});
8717    });
8718  };
8719  var createBootstrapToasts = function () {
8720    var toastElList = [].slice.call(document.querySelectorAll('.toast'));
8721    var toastList = toastElList.map(function (toastEl) {
8722      if (toastEl.getAttribute("data-kt-initialized") === "1") {
8723        return;
8724      }
8725      toastEl.setAttribute("data-kt-initialized", "1");
8726      return new bootstrap.Toast(toastEl, {});
8727    });
8728  };
8729  var createButtons = function () {
8730    var buttonsGroup = [].slice.call(document.querySelectorAll('[data-kt-buttons="true"]'));
8731    buttonsGroup.map(function (group) {
8732      if (group.getAttribute("data-kt-initialized") === "1") {
8733        return;
8734      }
8735      var selector = group.hasAttribute('data-kt-buttons-target') ? group.getAttribute('data-kt-buttons-target') : '.btn';
8736      var activeButtons = [].slice.call(group.querySelectorAll(selector));
8737
8738      // Toggle Handler
8739      IpixUtil.on(group, selector, 'click', function (e) {
8740        activeButtons.map(function (button) {
8741          button.classList.remove('active');
8742        });
8743        this.classList.add('active');
8744      });
8745      group.setAttribute("data-kt-initialized", "1");
8746    });
8747  };
8748  var createDateRangePickers = function () {
8749    // Check if jQuery included
8750    if (typeof jQuery == 'undefined') {
8751      return;
8752    }
8753
8754    // Check if daterangepicker included
8755    if (typeof $.fn.daterangepicker === 'undefined') {
8756      return;
8757    }
8758    var elements = [].slice.call(document.querySelectorAll('[data-kt-daterangepicker="true"]'));
8759    var start = moment().subtract(29, 'days');
8760    var end = moment();
8761    elements.map(function (element) {
8762      if (element.getAttribute("data-kt-initialized") === "1") {
8763        return;
8764      }
8765      var display = element.querySelector('div');
8766      var attrOpens = element.hasAttribute('data-kt-daterangepicker-opens') ? element.getAttribute('data-kt-daterangepicker-opens') : 'left';
8767      var range = element.getAttribute('data-kt-daterangepicker-range');
8768      var cb = function (start, end) {
8769        var current = moment();
8770        if (display) {
8771          if (current.isSame(start, "day") && current.isSame(end, "day")) {
8772            display.innerHTML = start.format('D MMM YYYY');
8773          } else {
8774            display.innerHTML = start.format('D MMM YYYY') + ' - ' + end.format('D MMM YYYY');
8775          }
8776        }
8777      };
8778      if (range === "today") {
8779        start = moment();
8780        end = moment();
8781      }
8782      $(element).daterangepicker({
8783        startDate: start,
8784        endDate: end,
8785        opens: attrOpens
8786      }, cb);
8787      cb(start, end);
8788      element.setAttribute("data-kt-initialized", "1");
8789    });
8790  };
8791
8792  // Init tagify
8793  const createTagify = () => {
8794    const tagify = document.querySelector('[data-kt-tagify-input="true"]');
8795
8796    // Break if element not found
8797    if (!tagify) {
8798      return;
8799    }
8800
8801    // Init tagify --- more info: https://yaireo.github.io/tagify/
8802    new Tagify(tagify, IpixJson.options.tagify);
8803  };
8804  var createJstree = function () {
8805    // Check if jQuery included
8806    if (typeof jQuery == 'undefined') {
8807      return;
8808    }
8809
8810    // Check if jstree included
8811    if (typeof $.fn.jstree === 'undefined') {
8812      return;
8813    }
8814    var jsTreeElements = [].slice.call(document.querySelectorAll('[kt-jstree-container="true"]'));
8815    jsTreeElements.map(function (element) {
8816      $(element).bind("changed.jstree", function (e, data) {
8817        if (data.node) {
8818          if (data.node && data.node.state.selected) {
8819            $("input.tree-checkbox." + data.node.id).prop('checked', true);
8820          } else {
8821            $("input.tree-checkbox." + data.node.id).prop('checked', false);
8822          }
8823        }
8824      }).bind('loaded.jstree', function () {
8825        var selectedCategories = $("#categoryTree").data("selected");
8826        for (var k in selectedCategories) {
8827          $('#categoryTree').jstree("select_node", '#category_' + selectedCategories[k], true);
8828        }
8829      }).jstree(IpixJson.options.jsTree);
8830    });
8831    $('.searchCategory').keyup(function () {
8832      $('#categoryTree').jstree(true).search($('.searchCategory').val());
8833    });
8834  };
8835  var createAutosize = function () {
8836    var inputs = [].slice.call(document.querySelectorAll('[data-kt-autosize="true"]'));
8837    inputs.map(function (input) {
8838      if (input.getAttribute("data-kt-initialized") === "1") {
8839        return;
8840      }
8841      autosize(input);
8842      input.setAttribute("data-kt-initialized", "1");
8843    });
8844  };
8845  var createCountUp = function () {
8846    var elements = [].slice.call(document.querySelectorAll('[data-kt-countup="true"]:not(.counted)'));
8847    elements.map(function (element) {
8848      if (IpixUtil.isInViewport(element) && IpixUtil.visible(element)) {
8849        if (element.getAttribute("data-kt-initialized") === "1") {
8850          return;
8851        }
8852        var options = {};
8853        var value = element.getAttribute('data-kt-countup-value');
8854        value = parseFloat(value.replace(/,/g, ""));
8855        if (element.hasAttribute('data-kt-countup-start-val')) {
8856          options.startVal = parseFloat(element.getAttribute('data-kt-countup-start-val'));
8857        }
8858        if (element.hasAttribute('data-kt-countup-duration')) {
8859          options.duration = parseInt(element.getAttribute('data-kt-countup-duration'));
8860        }
8861        if (element.hasAttribute('data-kt-countup-decimal-places')) {
8862          options.decimalPlaces = parseInt(element.getAttribute('data-kt-countup-decimal-places'));
8863        }
8864        if (element.hasAttribute('data-kt-countup-prefix')) {
8865          options.prefix = element.getAttribute('data-kt-countup-prefix');
8866        }
8867        if (element.hasAttribute('data-kt-countup-separator')) {
8868          options.separator = element.getAttribute('data-kt-countup-separator');
8869        }
8870        if (element.hasAttribute('data-kt-countup-suffix')) {
8871          options.suffix = element.getAttribute('data-kt-countup-suffix');
8872        }
8873        var count = new countUp.CountUp(element, value, options);
8874        count.start();
8875        element.classList.add('counted');
8876        element.setAttribute("data-kt-initialized", "1");
8877      }
8878    });
8879  };
8880  var createCountUpTabs = function () {
8881    if (countUpInitialized === false) {
8882      // Initial call
8883      createCountUp();
8884
8885      // Window scroll event handler
8886      window.addEventListener('scroll', createCountUp);
8887    }
8888
8889    // Tabs shown event handler
8890    var tabs = [].slice.call(document.querySelectorAll('[data-kt-countup-tabs="true"][data-bs-toggle="tab"]'));
8891    tabs.map(function (tab) {
8892      if (tab.getAttribute("data-kt-initialized") === "1") {
8893        return;
8894      }
8895      tab.addEventListener('shown.bs.tab', createCountUp);
8896      tab.setAttribute("data-kt-initialized", "1");
8897    });
8898    countUpInitialized = true;
8899  };
8900  var createTinySliders = function () {
8901    // Init Slider
8902    var initSlider = function (el) {
8903      if (!el) {
8904        return;
8905      }
8906      const tnsOptions = {};
8907
8908      // Convert string boolean
8909      const checkBool = function (val) {
8910        if (val === 'true') {
8911          return true;
8912        }
8913        if (val === 'false') {
8914          return false;
8915        }
8916        return val;
8917      };
8918
8919      // get extra options via data attributes
8920      el.getAttributeNames().forEach(function (attrName) {
8921        // more options; https://github.com/ganlanyuan/tiny-slider#options
8922        if (/^data-tns-.*/g.test(attrName)) {
8923          let optionName = attrName.replace('data-tns-', '').toLowerCase().replace(/(?:[\s-])\w/g, function (match) {
8924            return match.replace('-', '').toUpperCase();
8925          });
8926          if (attrName === 'data-tns-responsive') {
8927            // fix string with a valid json
8928            const jsonStr = el.getAttribute(attrName).replace(/(\w+:)|(\w+ :)/g, function (matched) {
8929              return '"' + matched.substring(0, matched.length - 1) + '":';
8930            });
8931            try {
8932              // convert json string to object
8933              tnsOptions[optionName] = JSON.parse(jsonStr);
8934            } catch (e) {}
8935          } else {
8936            tnsOptions[optionName] = checkBool(el.getAttribute(attrName));
8937          }
8938        }
8939      });
8940      const opt = Object.assign({}, {
8941        container: el,
8942        slideBy: 'page',
8943        autoplay: true,
8944        autoplayButtonOutput: false
8945      }, tnsOptions);
8946      if (el.closest('.tns')) {
8947        IpixUtil.addClass(el.closest('.tns'), 'tns-initiazlied');
8948      }
8949      return tns(opt);
8950    };
8951
8952    // Sliders
8953    const elements = Array.prototype.slice.call(document.querySelectorAll('[data-tns="true"]'), 0);
8954    if (!elements && elements.length === 0) {
8955      return;
8956    }
8957    elements.forEach(function (el) {
8958      if (el.getAttribute("data-kt-initialized") === "1") {
8959        return;
8960      }
8961      initSlider(el);
8962      el.setAttribute("data-kt-initialized", "1");
8963    });
8964  };
8965  var initSmoothScroll = function () {
8966    if (initialized === true) {
8967      return;
8968    }
8969    if (SmoothScroll) {
8970      new SmoothScroll('a[data-kt-scroll-toggle][href*="#"]', {
8971        speed: 1000,
8972        speedAsDuration: true,
8973        offset: function (anchor, toggle) {
8974          // Integer or Function returning an integer. How far to offset the scrolling anchor location in pixels
8975          // This example is a function, but you could do something as simple as `offset: 25`
8976
8977          // An example returning different values based on whether the clicked link was in the header nav or not
8978          if (anchor.hasAttribute('data-kt-scroll-offset')) {
8979            var val = IpixUtil.getResponsiveValue(anchor.getAttribute('data-kt-scroll-offset'));
8980            return val;
8981          } else {
8982            return 0;
8983          }
8984        }
8985      });
8986    }
8987  };
8988  var initCheck = function () {
8989    if (initialized === true) {
8990      return;
8991    }
8992
8993    // Toggle Handler
8994    IpixUtil.on(document.body, '[data-kt-check="true"]', 'change', function (e) {
8995      var check = this;
8996      var targets = document.querySelectorAll(check.getAttribute('data-kt-check-target'));
8997      IpixUtil.each(targets, function (target) {
8998        if (target.type == 'checkbox') {
8999          target.checked = check.checked;
9000        } else {
9001          target.classList.toggle('active');
9002        }
9003      });
9004    });
9005  };
9006  var initBootstrapCollapse = function () {
9007    if (initialized === true) {
9008      return;
9009    }
9010    IpixUtil.on(document.body, '.collapsible[data-bs-toggle="collapse"]', 'click', function (e) {
9011      if (this.classList.contains('collapsed')) {
9012        this.classList.remove('active');
9013        this.blur();
9014      } else {
9015        this.classList.add('active');
9016      }
9017      if (this.hasAttribute('data-kt-toggle-text')) {
9018        var text = this.getAttribute('data-kt-toggle-text');
9019        var target = this.querySelector('[data-kt-toggle-text-target="true"]');
9020        var target = target ? target : this;
9021        this.setAttribute('data-kt-toggle-text', target.innerText);
9022        target.innerText = text;
9023      }
9024    });
9025  };
9026  var initBootstrapRotate = function () {
9027    if (initialized === true) {
9028      return;
9029    }
9030    IpixUtil.on(document.body, '[data-kt-rotate="true"]', 'click', function (e) {
9031      if (this.classList.contains('active')) {
9032        this.classList.remove('active');
9033        this.blur();
9034      } else {
9035        this.classList.add('active');
9036      }
9037    });
9038  };
9039  var initPageLoader = function () {
9040    // CSS3 Transitions only after page load(.page-loading or .app-page-loading class added to body tag and remove with JS on page load
9040)
9041    document.body.classList.remove('page-loading');
9042    document.body.removeAttribute('data-kt-app-page-loading');
9043  };
9044
9045  // Init noUIslider
9046  const initNoUIslider = () => {
9047    const sliderElements = [].slice.call(document.querySelectorAll('[data-kt-noUiSlider="true"]'));
9048    if (sliderElements && $(sliderElements).length) {
9049      sliderElements.map(function (element) {
9050        var elementParent = $(element).parents(".noUi-container");
9051        noUiSlider.create(element, {
9052          start: [$(elementParent).find('[data-kt-noUiSlider-value="true"]').val()],
9053          connect: true,
9054          step: 1,
9055          range: {
9056            "min": 0,
9057            "max": 100
9058          }
9059        });
9060        element.noUiSlider.on("update", function (values, handle) {
9061          $(elementParent).find('[data-kt-noUiSlider-span="true"]').html(Math.round(values[handle]));
9062          $(elementParent).find('[data-kt-noUiSlider-value="true"]').val(Math.round(values[handle]));
9063        });
9064      });
9065    }
9066  };
9067  var initAjaxLoader = () => {
9068    /** Loader starts */
9069    // $(document).ajaxStart(function() {
9070    //     IpixApp.showPageLoading();
9071    // });
9072
9073    // $(document).ajaxStop(function() {
9074    //     IpixApp.hidePageLoading();
9075    // });
9076    /** loader End */
9077  };
9078  var initHeaderScroll = function () {
9079    $(window).scroll(function () {
9080      var scroll = $(window).scrollTop();
9081      //>=, not <=
9082      if (scroll >= 0) {
9083        //clearHeader, not clearheader - caps H
9084        $(".ipix_app_header").removeClass("fixed-header");
9085      }
9086      if (scroll >= 100) {
9087        //clearHeader, not clearheader - caps H
9088        $(".ipix_app_header").addClass("fixed-header");
9089      }
9090    });
9091  };
9092  return {
9093    init: function () {
9094      toggleSection();
9095      initSmoothScroll();
9096      initCheck();
9097      initBootstrapCollapse();
9098      initBootstrapRotate();
9099      createBootstrapTooltips();
9100      createBootstrapPopovers();
9101      createBootstrapToasts();
9102      createDateRangePickers();
9103      createButtons();
9104      createTagify();
9105      createJstree();
9106      createCountUp();
9107      createCountUpTabs();
9108      createAutosize();
9109      createTinySliders();
9110      IpixApp.createSelect2();
9111      initNoUIslider();
9112      initAjaxLoader();
9113      IpixApp.initClickCopying();
9114      IpixApp.createShare();
9115      IpixApp.handleFileRemove();
9116      initialized = true;
9117      initHeaderScroll();
9118      IpixApp.updateLocomotiveScroll();
9119      IpixApp.scrollLocomotiveScroll();
9120    },
9121    initPageLoader: function () {
9122      initPageLoader();
9123    },
9124    createBootstrapPopover: function (el, options) {
9125      return createBootstrapPopover(el, options);
9126    },
9127    createBootstrapTooltip: function (el, options) {
9128      return createBootstrapTooltip(el, options);
9129    }
9130  };
9131}();
9132IpixApp.showPageLoading = function () {
9133  document.body.classList.add('page-loading');
9134  document.body.setAttribute('data-kt-app-page-loading', "on");
9135};
9136IpixApp.hidePageLoading = function () {
9137  // CSS3 Transitions only after page load(.page-loading or .app-page-loading class added to body tag and remove with JS on page load)
9138  document.body.classList.remove('page-loading');
9139  document.body.removeAttribute('data-kt-app-page-loading');
9140};
9141IpixApp.initClickCopying = function () {
9142  var buttons = [].slice.call(document.querySelectorAll('[data-share-link-button]'));
9143  buttons.map(function (button) {
9144    if (button.getAttribute("data-kt-initialized") === "1") {
9145      return;
9146    }
9147    var parentElement = button.parentElement;
9148    var input = parentElement.querySelector('[data-share-link-input]');
9149    var clipboard = new ClipboardJS(button);
9150    if (!clipboard) {
9151      return;
9152    }
9153
9154    //  Copy text to clipboard. For more info check the plugin's documentation: https://clipboardjs.com/
9155    clipboard.on('success', function (e) {
9156      var buttonCaption = button.innerHTML;
9157      //Add bgcolor
9158      input.classList.add('bg-success');
9159      input.classList.add('text-inverse-success');
9160      button.innerHTML = 'Copied!';
9161      setTimeout(function () {
9162        button.innerHTML = buttonCaption;
9163
9164        // Remove bgcolor
9165        input.classList.remove('bg-success');
9166        input.classList.remove('text-inverse-success');
9167      }, 3000); // 3seconds
9168
9169      e.clearSelection();
9170    });
9171    button.setAttribute("data-kt-initialized", "1");
9172  });
9173};
9174
9175// Init page loader
9176window.addEventListener("load", function () {
9177  IpixApp.hidePageLoading();
9178});
9179document.addEventListener('lazyloaded', function () {
9180  IpixApp.updateLocomotiveScroll();
9181});
9182IpixApp.updateLocomotiveScroll = function () {
9183  setInterval(function () {
9184    // console.log('here');
9185    locoScroll.update();
9186  }, 500);
9187};
9188IpixApp.scrollLocomotiveScroll = function () {
9189  locoScroll.on('scroll', obj => {
9190    // console.log(obj);
9191  });
9192};
9193IpixApp.createSelect2 = function () {
9194  // Check if jQuery included
9195  if (typeof jQuery == 'undefined') {
9196    return;
9197  }
9198
9199  // Check if select2 included
9200  if (typeof $.fn.select2 === 'undefined') {
9201    return;
9202  }
9203  var elements = [].slice.call(document.querySelectorAll('[data-control="select2"], [data-kt-select2="true"]'));
9204  elements.map(function (element) {
9205    if (element.getAttribute("data-kt-initialized") === "1") {
9206      return;
9207    }
9208    var options = IpixJson.options.select2.normal;
9209    options.dropdownParent = $(element).parent();
9210    if ($(element).data("dropdown-parent")) {
9211      options.dropdownParent = $($(element).data("dropdown-parent"));
9212    }
9213    if ($(element).data("placeholder")) {
9214      options.placeholder = $(element).data("placeholder");
9215    }
9216    if ($(element).data("multiple") == 'true') {
9217      $(element).attr("multiple", "multiple");
9218    }
9219    // if (element.getAttribute('data-image-select') == 'true') {
9220    //     options.templateResult = function(option) {
9221    //         if (!option.id) { return option.text; }
9222    //         return '<span ><img sytle="display: inline-block;" src="' + option.image + '" />' + option.text + '</span>'
9223    //     };
9224    //     options.templateSelection = function(option) {
9225    //         if (option.id.length > 0) {
9226    //             return '<span ><img sytle="display: inline-block;" src="' + option.image + '" />' + option.text + '</span>'
9227    //         } else {
9228    //             return option.text;
9229    //         }
9230    //     };
9231    // }
9232
9233    if (element.getAttribute('data-server') == 'true') {
9234      options = IpixJson.options.select2.server;
9235      options.ajax.url = $(element).data("option-url");
9236      options.ajax.data = function (params) {
9237        var query = {
9238          search: params.term,
9239          page: params.page || 1
9240        };
9241        if (element.hasAttribute('data-select2-filter')) {
9242          var filters = element.getAttribute('data-select2-filter');
9243          if (filters !== "") {
9244            filters = JSON.parse(filters);
9245            $.each(filters, function (i, filter) {
9246              if (filter.hasOwnProperty('selector')) {
9247                if ($(filter.selector).length > 1) {
9248                  var values = [];
9249                  if ($(filter.selector).attr('type') == "checkbox") {
9250                    $(filter.selector + ':checked').each(function () {
9251                      values.push($(this).val());
9252                    });
9253                  } else {
9254                    $(filter.selector).each(function () {
9255                      values.push($(this).val());
9256                    });
9257                  }
9258                  query[i] = values;
9259                } else {
9260                  query[i] = $(filter.selector).val();
9261                }
9262              } else if (filter.hasOwnProperty('value')) {
9263                query[i] = filter.value;
9264              }
9265            });
9266          }
9267        }
9268        return query;
9269      };
9270      options.ajax.processResults = function (data, params) {
9271        params.page = params.page || 1;
9272        return {
9273          results: data,
9274          pagination: {
9275            more: data.length ? true : false
9276          }
9277        };
9278      };
9279    }
9280    if (element.getAttribute('data-hide-search') == 'true') {
9281      options.minimumResultsForSearch = Infinity;
9282    }
9283    $(element).select2(options);
9284    element.setAttribute("data-kt-initialized", "1");
9285  });
9286
9287  /*
9288   * Hacky fix for a bug in select2 with jQuery 3.6.0's new nested-focus "protection"
9289   * see: https://github.com/select2/select2/issues/5993
9290   * see: https://github.com/jquery/jquery/issues/4382
9291   *
9292   * TODO: Recheck with the select2 GH issue and remove once this is fixed on their side
9293   */
9294
9295  if (IpixApp.select2FocusFixInitialized === false) {
9296    IpixApp.select2FocusFixInitialized = true;
9297    $(document).on('select2:open', function (e) {
9298      var elements = document.querySelectorAll('.select2-container--open .select2-search__field');
9299      if (elements.length > 0) {
9300        elements[elements.length - 1].focus();
9301      }
9302    });
9303  }
9304};
9305IpixApp.createShare = function () {
9306  // Check if jQuery included
9307  if (typeof jQuery == 'undefined') {
9308    return;
9309  }
9310  var elements = [].slice.call(document.querySelectorAll('[data-control
9310="jssocials"]'));
9311  elements.map(function (element) {
9312    if (element.getAttribute("data-kt-initialized") === "1") {
9313      return;
9314    }
9315    window.IpixJson.jssocials[element.getAttribute('id')] = $(element).jsSocials(IpixJson.options.jssocials);
9316    element.setAttribute("data-kt-initialized", "1");
9317  });
9318};
9319IpixApp.handleFileRemove = function (e) {
9320  const removeButton = [].slice.call(document.querySelectorAll('[data-kt-file-input-action="remove"]'));
9321  if (removeButton && $(removeButton).length) {
9322    removeButton.map(function (element) {
9323      element.addEventListener('click', function () {
9324        var fileInputParent = $(element).parents(".file-input");
9325        $(element).parents(".file-container").remove();
9326        $(fileInputParent).find('[type="file"]').show();
9327        $(fileInputParent).find('[name="' + $(fileInputParent).find('[type="file"]').attr("name") + '_remove"]').val(1);
9328      });
9329    });
9330  }
9331};
9332
9333// Declare IpixApp for Webpack support
9334if ( true && typeof module.exports !== 'undefined') {
9335  module.exports = IpixApp;
9336}
9337document.addEventListener('click', function (event) {
9338  var isClickInside = document.querySelector('.navbar').contains(event.target);
9339  var navbarToggler = document.querySelector('.navbar-toggler');
9340  var navbarCollapse = document.querySelector('.navbar-collapse');
9341  if (!isClickInside && !navbarToggler.contains(event.target) && !navbarCollapse.contains(event.target)) {
9342    // Clicked outside the navbar, collapse it if it's expanded
9343    if (navbarCollapse.classList.contains('show')) {
9344      navbarToggler.click();
9345    }
9346  }
9347});
9348
9349// main.js
9350
9351document.addEventListener("DOMContentLoaded", function () {
9352  // Function to move selected country code to the top
9353  function moveSelectedCountryCodeToTop(select) {
9354    const selectedOption = select.querySelector('option[selected]');
9355    if (selectedOption) {
9356      select.insertBefore(selectedOption, select.firstElementChild.nextSibling);
9357    }
9358  }
9359
9360  // Attach the moveSelectedCountryCodeToTop function to the country code dropdowns
9361  const countryCodeDropdowns = document.querySelectorAll('.country-code select');
9362  countryCodeDropdowns.forEach(function (dropdown) {
9363    moveSelectedCountryCodeToTop(dropdown);
9364    dropdown.addEventListener('change', function () {
9365      moveSelectedCountryCodeToTop(dropdown);
9366    });
9367  });
9368});
9369
9370/***/ }),
9371
9372/***/ "./resources/js/layouts/plugins/FormValidation.init.js":
9373/*!*************************************************************!*\
9374  !*** ./resources/js/layouts/plugins/FormValidation.init.js ***!
9375  \*************************************************************/
9376/***/ (() => {
9377
9378IpixJson.validators = [];
9379IpixJson.options.FormValidation = {
9380  plugins: {
9381    trigger: new FormValidation.plugins.Trigger(),
9382    // tachyons: new FormValidation.plugins.Tachyons({
9383    //     rowSelector: '.fv-row',
9384    // }),
9385    declarative: new FormValidation.plugins.Declarative({}),
9386    bootstrap: new FormValidation.plugins.Bootstrap5({
9387      rowSelector: '.fv-row',
9388      eleInvalidClass: '',
9389      eleValidClass: ''
9390    })
9391  }
9392};
9393
9394/***/ }),
9395
9396/***/ "./resources/js/layouts/plugins/flatpickr.init.js":
9397/*!********************************************************!*\
9398  !*** ./resources/js/layouts/plugins/flatpickr.init.js ***!
9399  \********************************************************/
9400/***/ (() => {
9401
9402IpixJson.options.flatpicker = {
9403  enableTime: false
9404};
9405
9406/***/ }),
9407
9408/***/ "./resources/js/layouts/plugins/ms-dropdown.init.js":
9409/*!**********************************************************!*\
9410  !*** ./resources/js/layouts/plugins/ms-dropdown.init.js ***!
9411  \**********************************************************/
9412/***/ (() => {
9413
9414"use strict";
9415
9416
9417IpixJson.options.msDropdown = {};
9418
9419/***/ }),
9420
9421/***/ "./resources/js/layouts/plugins/owl.carousel2.init.js":
9422/*!************************************************************!*\
9423  !*** ./resources/js/layouts/plugins/owl.carousel2.init.js ***!
9424  \************************************************************/
9425/***/ (() => {
9426
9427IpixJson.options.owlcarousel = {
9428  loop: true,
9429  margin: 20,
9430  items: 1,
9431  dots: false,
9432  autoplay: true,
9433  nav: true,
9434  navText: ["<i class='fa-solid fa-arrow-left'></i>", "<i class='fa-solid fa-arrow-right'></i>"],
9435  responsiveClass: true,
9436  responsive: {
9437    0: {
9438      items: 1
9439    },
9440    800: {
9441      items: 2
9442    },
9443    1000: {
9444      items: 3
9445    }
9446  }
9447};
9448
9449/***/ }),
9450
9451/***/ "./resources/js/layouts/plugins/select2.init.js":
9452/*!******************************************************!*\
9453  !*** ./resources/js/layouts/plugins/select2.init.js ***!
9454  \******************************************************/
9455/***/ (() => {
9456
9457"use strict";
9458
9459
9460//
9461// Select2 Initialization
9462//
9463$.fn.select2.defaults.set("theme", "bootstrap5");
9464$.fn.select2.defaults.set("width", "100%");
9465$.fn.select2.defaults.set("selectionCssClass", ":all:");
9466IpixJson.lang.select2 = {
9467  placeholder: "Please select"
9468};
9469IpixJson.options.select2 = {
9470  normal: {
9471    dropdownAutoWidth: true,
9472    placeholder: IpixJson.lang.select2.placeholder,
9473    dir: document.body.getAttribute('direction'),
9474    width: "100%"
9475  },
9476  server: {
9477    dropdownAutoWidth: true,
9478    dir: document.body.getAttribute('direction'),
9479    width: "100%",
9480    ajax: {
9481      dataType: "json",
9482      delay: 250,
9483      type: "GET",
9484      quietMillis: 50,
9485      processResults: function (data) {
9486        return {
9487          results: data
9488        };
9489      },
9490      cache: true
9491    },
9492    placeholder: IpixJson.lang.select2.placeholder
9493    // minimumInputLength: 1,
9494  }
9495};
9496
9497/***/ }),
9498
9499/***/ "./resources/js/layouts/plugins/sweetalert2.init.js":
9500/*!**********************************************************!*\
9501  !*** ./resources/js/layouts/plugins/sweetalert2.init.js ***!
9502  \**********************************************************/
9503/***/ (() => {
9504
9505"use strict";
9506
9507
9508//
9509// SweetAlert2 Initialization
9510//
9511
9512// Set Defaults
9513swal.mixin({
9514  width: 400,
9515  heightAuto: false,
9516  padding: '2.5rem',
9517  buttonsStyling: false,
9518  confirmButtonClass: 'btn btn-success',
9519  confirmButtonColor: null,
9520  cancelButtonClass: 'btn btn-secondary',
9521  cancelButtonColor: null
9522});
9523
9524/***/ }),
9525
9526/***/ "./resources/js/layouts/plugins/toastr.init.js":
9527/*!*****************************************************!*\
9528  !*** ./resources/js/layouts/plugins/toastr.init.js ***!
9529  \*****************************************************/
9530/***/ (() => {
9531
9532toastr.options = {
9533  "closeButton": false,
9534  "debug": false,
9535  "newestOnTop": false,
9536  "progressBar": false,
9537  "positionClass": "toastr-top-right",
9538  "preventDuplicates": false,
9539  "onclick": null,
9540  "showDuration": "300",
9541  "hideDuration": "1000",
9542  "timeOut": "5000",
9543  "extendedTimeOut": "1000",
9544  "showEasing": "swing",
9545  "hideEasing": "linear",
9546  "showMethod": "fadeIn",
9547  "hideMethod": "fadeOut"
9548};
9549if ($("#sessionSuccess").length) {
9550  toastr.success($("#sessionSuccess").text());
9551}
9552if (localStorage.getItem("success")) {
9553  toastr.success(localStorage.getItem("success"));
9554  localStorage.clear('success');
9555}
9556if ($("#sessionError").length) {
9557  toastr.error($("#sessionError").text());
9558}
9559if (localStorage.getItem("error")) {
9560  toastr.error(localStorage.getItem("error"));
9561  localStorage.clear('error');
9562}
9563
9564/***/ }),
9565
9566/***/ "./resources/js/layouts/web.js":
9567/*!*************************************!*\
9568  !*** ./resources/js/layouts/web.js ***!
9569  \*************************************/
9570/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
9571
9572//
9573// 3rd-Party Plugins JavaScript Includes
9574//
9575
9576//////////////////////////////////////////////////////////////////////
9577//////////////////////////////////////////////////////////////////////
9578////  Mandatory Plugins Includes(do not remove or change order!)  ////
9579//////////////////////////////////////////////////////////////////////
9580//////////////////////////////////////////////////////////////////////
9581
9582// Jquery - jQuery is a popular and feature-rich JavaScript library. Learn more: https://jquery.com/
9583window.jQuery = window.$ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
9584
9585// Bootstrap - The most popular framework uses as the foundation. Learn more: http://getbootstrap.com
9586window.bootstrap = __webpack_require__(/*! bootstrap */ "./node_modules/bootstrap/dist/js/bootstrap.esm.js");
9587
9588// Popper.js - Tooltip & Popover Positioning Engine used by Bootstrap. Learn more: https://popper.js.org
9589window.Popper = __webpack_require__(/*! @popperjs/core */ "./node_modules/@popperjs/core/lib/index.js");
9590
9591// Wnumb - Number & Money formatting. Learn more: https://refreshless.com/wnumb/
9592window.wNumb = __webpack_require__(/*! wnumb */ "./node_modules/wnumb/wNumb.js");
9593
9594// Moment - Parse, validate, manipulate, and display dates and times in JavaScript. Learn more: https://momentjs.com/
9595window.moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js");
9596
9597// ES6-Shim - ECMAScript 6 compatibility shims for legacy JS engines.  Learn more: https://github.com/paulmillr/es6-shim
9598__webpack_require__(/*! es6-shim/es6-shim.min.js */ "./node_modules/es6-shim/es6-shim.min.js");
9599let token = document.head.querySelector('meta[name="csrf-token"]');
9600if (token) {
9601  window._token = token.content;
9602} else {
9603  console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
9604}
9605window.IpixJson = {};
9606window.IpixJson.lang = {};
9607window.IpixJson.options = {};
9608
9609//////////////////////////////////////////////////////////////////////
9610//////////////////////////////////////////////////////////////////////
9611///  Optional Plugins Includes(you can remove or add)  ///////////////
9612//////////////////////////////////////////////////////////////////////
9613//////////////////////////////////////////////////////////////////////
9614
9615// FormValidation - Best premium validation library for JavaScript. Zero dependencies. Learn more: https://formvalidation.io/
9616window.FormValidation = __webpack_require__(/*! ../../plugins/formvalidation/dist/js/FormValidation.full.min.js */ "./resources/plugins/formvalidation/dist/js/FormValidation.full.min.js");
9617window.FormValidation.plugins.Bootstrap5 = (__webpack_require__(/*! ../../plugins/formvalidation/dist/amd/plugins/Bootstrap5.js */ "./resources/plugins/formvalidation/dist/amd/plugins/Bootstrap5.js")["default"]);
9618// window.FormValidation.plugins.Declarative = require('../../plugins/formvalidation/dist/amd/plugins/Declarative.js').default;
9619__webpack_require__(/*! ./plugins/FormValidation.init.js */ "./resources/js/layouts/plugins/FormValidation.init.js");
9620
9621// Date Range Picker - A JavaScript component for choosing date ranges, dates and times: https://www.daterangepicker.com/
9622__webpack_require__(/*! bootstrap-daterangepicker/daterangepicker.js */ "./node_modules/bootstrap-daterangepicker/daterangepicker.js");
9623
9624// Bootstrap Maxlength - This plugin integrates by default with Twitter bootstrap using badges to display the maximum length of the field where the user is inserting text: https://github.com/mimo84/bootstrap-maxlength
9625__webpack_require__(/*! bootstrap-maxlength/src/bootstrap-maxlength.js */ "./node_modules/bootstrap-maxlength/src/bootstrap-maxlength.js");
9626
9627// Bootstrap Mmultiselectsplitter - Transforms a <select> containing one or more <optgroup> in two chained <select>: https://github.com/poolerMF/bootstrap-multiselectsplitter/
9628__webpack_require__(/*! bootstrap-multiselectsplitter/bootstrap-multiselectsplitter.min.js */ "./node_modules/bootstrap-multiselectsplitter/bootstrap-multiselectsplitter.min.js");
9629
9630// Select2 - Select2 is a jQuery based replacement for select boxes: https://select2.org/
9631__webpack_require__(/*! select2/dist/js/select2.full.min.js */ "./node_modules/select2/dist/js/select2.full.min.js");
9632__webpack_require__(/*! ./plugins/select2.init.js */ "./resources/js/layouts/plugins/select2.init.js");
9633
9634// msDropdown
9635__webpack_require__(/*! ../../plugins/msDropdown/js/index.js */ "./resources/plugins/msDropdown/js/index.js");
9636__webpack_require__(/*! ./plugins/ms-dropdown.init.js */ "./resources/js/layouts/plugins/ms-dropdown.init.js");
9637
9638// Flatpickr - is a lightweight and powerful datetime picker.
9639__webpack_require__(/*! flatpickr/dist/flatpickr.min.js */ "./node_modules/flatpickr/dist/flatpickr.min.js");
9640__webpack_require__(/*! ./plugins/flatpickr.init.js */ "./resources/js/layouts/plugins/flatpickr.init.js");
9641
9642// Inputmask - is a javascript library which creates an input mask: https://github.com/RobinHerbots/Inputmask
9643__webpack_require__(/*! inputmask/dist/inputmask.js */ "./node_modules/inputmask/dist/inputmask.js");
9644__webpack_require__(/*! inputmask/dist/bindings/inputmask.binding.js */ "./node_modules/inputmask/dist/bindings/inputmask.binding.js");
9645
9646// Toastr - is a Javascript library for non-blocking notifications. jQuery is required. The goal is to create a simple c
9646ore library that can be customized and extended: https://github.com/CodeSeven/toastr
9647window.toastr = __webpack_require__(/*! ../../plugins/toastr/build/toastr.min.js */ "./resources/plugins/toastr/build/toastr.min.js");
9648__webpack_require__(/*! ./plugins/toastr.init.js */ "./resources/js/layouts/plugins/toastr.init.js");
9649
9650// ES6 Promise Polyfill - This is a polyfill of the ES6 Promise: https://github.com/lahmatiy/es6-promise-polyfill
9651__webpack_require__(/*! es6-promise-polyfill/promise.min.js */ "./node_modules/es6-promise-polyfill/promise.min.js");
9652__webpack_require__(/*! owl.carousel2 */ "./node_modules/owl.carousel2/dist/owl.carousel.js");
9653__webpack_require__(/*! ./plugins/owl.carousel2.init.js */ "./resources/js/layouts/plugins/owl.carousel2.init.js");
9654
9655// Sweetalert2 - a beautiful, responsive, customizable and accessible (WAI-ARIA) replacement for JavaScript's popup boxes: https://sweetalert2.github.io/
9656window.Swal = window.swal = __webpack_require__(/*! sweetalert2/dist/sweetalert2.min.js */ "./node_modules/sweetalert2/dist/sweetalert2.min.js");
9657__webpack_require__(/*! ./plugins/sweetalert2.init.js */ "./resources/js/layouts/plugins/sweetalert2.init.js");
9658__webpack_require__(/*! ../../plugins/locomotive/locomotive-scroll.js */ "./resources/plugins/locomotive/locomotive-scroll.js");
9659
9660// A lightweight script to animate scrolling to anchor links
9661window.SmoothScroll = __webpack_require__(/*! smooth-scroll/dist/smooth-scroll.js */ "./node_modules/smooth-scroll/dist/smooth-scroll.js");
9662
9663// Clipboard - Copy text to the clipboard shouldn't be hard. It shouldn't require dozens of steps to configure or hundreds of KBs to load: https://clipboardjs.com/
9664window.ClipboardJS = __webpack_require__(/*! clipboard/dist/clipboard.min.js */ "./node_modules/clipboard/dist/clipboard.min.js");
9665__webpack_require__(/*! ../../plugins/gsap/gsap.js */ "./resources/plugins/gsap/gsap.js");
9666
9667// require('../../plugins/cursor/cursor.js');
9668
9669// Ipixthemes' plugins
9670window.IpixComponents = __webpack_require__(/*! ./components/_init.js */ "./resources/js/layouts/components/_init.js");
9671window.IpixUtil = __webpack_require__(/*! ./components/util.js */ "./resources/js/layouts/components/util.js");
9672window.IpixApp = __webpack_require__(/*! ./components/web.js */ "./resources/js/layouts/components/web.js");
9673window.IpixFormValidation = __webpack_require__(/*! ./components/formValidation.js */ "./resources/js/layouts/components/formValidation.js");
9674window.IpixEnquiry = __webpack_require__(/*! ./components/enquiry.js */ "./resources/js/layouts/components/enquiry.js");
9675window.IpixEventHandler = __webpack_require__(/*! ./components/event-handler.js */ "./resources/js/layouts/components/event-handler.js");
9676window.IpixBlockUI = __webpack_require__(/*! ./components/blockui.js */ "./resources/js/layouts/components/blockui.js");
9677window.IpixFlatPicker = __webpack_require__(/*! ./components/flatPicker.js */ "./resources/js/layouts/components/flatPicker.js");
9678window.IpixCookie = __webpack_require__(/*! ./components/cookie.js */ "./resources/js/layouts/components/cookie.js");
9679window.IpixDialer = __webpack_require__(/*! ./components/dialer.js */ "./resources/js/layouts/components/dialer.js");
9680window.IpixDrawer = __webpack_require__(/*! ./components/drawer.js */ "./resources/js/layouts/components/drawer.js");
9681window.IpixImageInput = __webpack_require__(/*! ./components/image-input.js */ "./resources/js/layouts/components/image-input.js");
9682window.IpixMenu = __webpack_require__(/*! ./components/menu.js */ "./resources/js/layouts/components/menu.js");
9683window.IpixForm = __webpack_require__(/*! ./components/form.js */ "./resources/js/layouts/components/form.js");
9684window.IpixModal = __webpack_require__(/*! ./components/modal.js */ "./resources/js/layouts/components/modal.js");
9685window.IpixPasswordMeter = __webpack_require__(/*! ./components/password-meter.js */ "./resources/js/layouts/components/password-meter.js");
9686window.IpixScroll = __webpack_require__(/*! ./components/scroll.js */ "./resources/js/layouts/components/scroll.js");
9687window.IpixScrolltop = __webpack_require__(/*! ./components/scrolltop.js */ "./resources/js/layouts/components/scrolltop.js");
9688window.IpixSticky = __webpack_require__(/*! ./components/sticky.js */ "./resources/js/layouts/components/sticky.js");
9689window.IpixSwapper = __webpack_require__(/*! ./components/swapper.js */ "./resources/js/layouts/components/swapper.js");
9690window.IpixToggle = __webpack_require__(/*! ./components/toggle.js */ "./resources/js/layouts/components/toggle.js");
9691
9692/***/ }),
9693
9694/***/ "./resources/plugins/formvalidation/dist/amd/core/Plugin.js":
9695/*!******************************************************************!*\
9696  !*** ./resources/plugins/formvalidation/dist/amd/core/Plugin.js ***!
9697  \******************************************************************/
9698/***/ ((module, exports, __webpack_require__) => {
9699
9700var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports) {
9701  "use strict";
9702
9703  Object.defineProperty(exports, "__esModule", ({
9704    value: true
9705  }));
9706  var Plugin = function () {
9707    function Plugin(opts) {
9708      this.opts = opts;
9709    }
9710    Plugin.prototype.setCore = function (core) {
9711      this.core = core;
9712      return this;
9713    };
9714    Plugin.prototype.install = function () {};
9715    Plugin.prototype.uninstall = function () {};
9716    return Plugin;
9717  }();
9718  exports["default"] = Plugin;
9719}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
9720		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
9721
9722/***/ }),
9723
9724/***/ "./resources/plugins/formvalidation/dist/amd/plugins/Bootstrap5.js":
9725/*!*************************************************************************!*\
9726  !*** ./resources/plugins/formvalidation/dist/amd/plugins/Bootstrap5.js ***!
9727  \*************************************************************************/
9728/***/ (function(module, exports, __webpack_require__) {
9729
9730var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var __extends = this && this.__extends || function () {
9731  var extendStatics = function (d, b) {
9732    extendStatics = Object.setPrototypeOf || {
9733      __proto__: []
9734    } instanceof Array && function (d, b) {
9735      d.__proto__ = b;
9736    } || function (d, b) {
9737      for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
9738    };
9739    return extendStatics(d, b);
9740  };
9741  return function (d, b) {
9742    if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
9743    extendStatics(d, b);
9744    function __() {
9745      this.constructor = d;
9746    }
9747    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
9748  };
9749}();
9750!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports, __webpack_require__(/*! ../utils/classSet */ "./resources/plugins/formvalidation/dist/amd/utils/classSet.js"), __webpack_require__(/*! ../utils/hasClass */ "./resources/plugins/formvalidation/dist/amd/utils/hasClass.js"), __webpack_require__(/*! ./Framework */ "./resources/plugins/formvalidation/dist/amd/plugins/Framework.js")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, classSet_1, hasClass_1, Framework_1) {
9751  "use strict";
9752
9753  Object.defineProperty(exports, "__esModule", ({
9754    value: true
9755  }));
9756  var Bootstrap5 = function (_super) {
9757    __extends(Bootstrap5, _super);
9758    function Bootstrap5(opts) {
9759      var _this = _super.call(this, Object.assign({}, {
9760        eleInvalidClass: 'is-invalid',
9761        eleValidClass: 'is-valid',
9762        formClass: 'fv-plugins-bootstrap5',
9763        rowInvalidClass: 'fv-plugins-bootstrap5-row-invalid',
9764        rowPattern: /^(.*)(col|offset)(-(sm|md|lg|xl))*-[0-9]+(.*)$/,
9765        rowSelector: '.row',
9766        rowValidClass: 'fv-plugins-bootstrap5-row-valid'
9767      }, opts)) || this;
9768      _this.eleValidatedHandler = _this.handleElementValidated.bind(_this);
9769      return _this;
9770    }
9771    Bootstrap5.prototype.install = function () {
9772      _super.prototype.install.call(this);
9773      this.core.on('core.element.validated', this.eleValidatedHandler);
9774    };
9775    Bootstrap5.prototype.uninstall = function () {
9776      _super.prototype.install.call(this);
9777      this.core.off('core.element.validated', this.eleValidatedHandler);
9778    };
9779    Bootstrap5.prototype.handleElementValidated = function (e) {
9780      var type = e.element.getAttribute('type');
9781      if (('checkbox' === type || 'radio' === type) && e.elements.length > 1 && (0, hasClass_1.default)(e.element, 'form-check-input')) {
9782        var inputParent = e.element.parentElement;
9783        if ((0, hasClass_1.default)(inputParent, 'form-check') && (0, hasClass_1.default)(inputParent, 'form-check-inline')) {
9784          (0, classSet_1.default)(inputParent, {
9785            'is-invalid': !e.valid,
9786            'is-valid': e.valid
9787          });
9788        }
9789      }
9790    };
9791    Bootstrap5.prototype.onIconPlaced = function (e) {
9792      (0, classSet_1.default)(e.element, {
9793        'fv-plugins-icon-input': true
9794      });
9795      var parent = e.element.parentElement;
9796      if ((0, hasClass_1.default)(parent, 'input-group')) {
9797        parent.parentElement.insertBefore(e.iconElement, parent.nextSibling);
9798        if (e.element.nextElementSibling && (0, hasClass_1.default)(e.element.nextElementSibling, 'input-group-text')) {
9799          (0, classSet_1.default)(e.iconElement, {
9800            'fv-plugins-icon-input-group': true
9801          });
9802        }
9803      }
9804      var type = e.element.getAttribute('type');
9805      if ('checkbox' === type || 'radio' === type) {
9806        var grandParent = parent.parentElement;
9807        if ((0, hasClass_1.default)(parent, 'form-check')) {
9808          (0, classSet_1.default)(e.iconElement, {
9809            'fv-plugins-icon-check': true
9810          });
9811          parent.parentElement.insertBefore(e.iconElement, parent.nextSibling);
9812        } else if ((0, hasClass_1.default)(parent.parentElement, 'form-check')) {
9813          (0, classSet_1.default)(e.iconElement, {
9814            'fv-plugins-icon-check': true
9815          });
9816          grandParent.parentElement.insertBefore(e.iconElement, grandParent.nextSibling);
9817        }
9818      }
9819    };
9820    Bootstrap5.prototype.onMessagePlaced = function (e) {
9821      e.messageElement.classList.add('invalid-feedback');
9822      var inputParent = e.element.parentElement;
9823      if ((0, hasClass_1.default)(inputParent, 'input-group')) {
9824        inputParent.appendChild(e.messageElement);
9825        (0, classSet_1.default)(inputParent, {
9826          'has-validation': true
9827        });
9828        return;
9829      }
9830      var type = e.element.getAttribute('type');
9831      if (('checkbox' === type || 'radio' === type) && (0, hasClass_1.default)(e.element, 'form-check-input') && (0, hasClass_1.default)(inputParent, 'form-check') && !(0, hasClass_1.default)(inputParent, 'form-check-inline')) {
9832        e.elements[e.elements.length - 1].parentElement.appendChild(e.messageElement);
9833      }
9834    };
9835    return Bootstrap5;
9836  }(Framework_1.default);
9837  exports["default"] = Bootstrap5;
9838}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
9839		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
9840
9841/***/ }),
9842
9843/***/ "./resources/plugins/formvalidation/dist/amd/plugins/Framework.js":
9844/*!************************************************************************!*\
9845  !*** ./resources/plugins/formvalidation/dist/amd/plugins/Framework.js ***!
9846  \************************************************************************/
9847/***/ (function(module, exports, __webpack_require__) {
9848
9849var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var __extends = this && this.__extends || function () {
9850  var extendStatics = function (d, b) {
9851    extendStatics = Object.setPrototypeOf || {
9852      __proto__: []
9853    } instanceof Array && function (d, b) {
9854      d.__proto__ = b;
9855    } || function (d, b) {
9856      for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
9857    };
9858    return extendStatics(d, b);
9859  };
9860  return function (d, b) {
9861    if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
9862    extendStatics(d, b);
9863    function __() {
9864      this.constructor = d;
9865    }
9866    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
9867  };
9868}();
9869!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports, __webpack_require__(/*! ../core/Plugin */ "./resources/plugins/formvalidation/dist/amd/core/Plugin.js"), __webpack_require__(/*! ../utils/classSet */ "./resources/plugins/formvalidation/dist/amd/utils/classSet.js"), __webpack_require__(/*! ../utils/closest */ "./resources/plugins/formvalidation/dist/amd/utils/closest.js"), __webpack_require__(/*! ./Message */ "./resources/plugins/formvalidation/dist/amd/plugins/Message.js")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, Plugin_1, classSet_1, closest_1, Message_1) {
9870  "use strict";
9871
9872  Object.defineProperty(exports, "__esModule", ({
9873    value: true
9874  }));
9875  var Framework = function (_super) {
9876    __extends(Framework, _super);
9877    function Framework(opts) {
9878      var _this = _super.call(this, opts) || this;
9879      _this.results = new Map();
9880      _this.containers = new Map();
9881      _this.MESSAGE_PLUGIN = '___frameworkMessage';
9882      _this.opts = Object.assign({}, {
9883        defaultMessageContainer: true,
9884        eleInvalidClass: '',
9885        eleValidClass: '',
9886        rowClasses: '',
9887        rowValidatingClass: ''
9888      }, opts);
9889      _this.elementIgnoredHandler = _this.onElementIgnored.bind(_this);
9890      _this.elementValidatingHandler = _this.onElementValidating.bind(_this);
9891      _this.elementValidatedHandler = _this.onElementValidated.bind(_this);
9892      _this.elementNotValidatedHandler = _this.onElementNotValidated.bind(_this);
9893      _this.iconPlacedHandler = _this.onIconPlaced.bind(_this);
9894      _this.fieldAddedHandler = _this.onFieldAdded.bind(_this);
9895      _this.fieldRemovedHandler = _this.onFieldRemoved.bind(_this);
9896      _this.messagePlacedHandler = _this.onMessagePlaced.bind(_this);
9897      return _this;
9898    }
9899    Framework.prototype.install = function () {
9900      var _a;
9901      var _this = this;
9902      (0, classSet_1.default)(this.core.getFormElement(), (_a = {}, _a[this.opts.formClass] = true, _a['fv-plugins-framework'] = true, _a));
9903      this.core.on('core.element.ignored', this.elementIgnoredHandler).on('core.element.validating', this.elementValidatingHandler).on('core.element.validated', this.elementValidatedHandler).on('core.element.notvalidated', this.elementNotValidatedHandler).on('plugins.icon.placed', this.iconPlacedHandler).on('core.field.added', this.fieldAddedHandler).on('core.field.removed', this.fieldRemovedHandler);
9904      if (this.opts.defaultMessageContainer) {
9905        this.core.registerPlugin(this.MESSAGE_PLUGIN, new Message_1.default({
9906          clazz: this.opts.messageClass,
9907          container: function (field, element) {
9908            var selector = 'string' === typeof _this.opts.rowSelector ? _this.opts.rowSelector : _this.opts.rowSelector(field, element);
9909            var groupEle = (0, closest_1.default)(element, selector);
9910            return Message_1.default.getClosestContainer(element, groupEle, _this.opts.rowPattern);
9911          }
9912        }));
9913        this.core.on('plugins.message.placed', this.messagePlacedHandler);
9914      }
9915    };
9916    Framework.prototype.uninstall = function () {
9917      var _a;
9918      this.results.clear();
9919      this.containers.clear();
9920      (0, classSet_1.default)(this.core.getFormElement(), (_a = {}, _a[this.opts.formClass] = false, _a['fv-plugins-framework'] = false, _a));
9921      this.core.off('core.element.ignored', this.elementIgnoredH
9921andler).off('core.element.validating', this.elementValidatingHandler).off('core.element.validated', this.elementValidatedHandler).off('core.element.notvalidated', this.elementNotValidatedHandler).off('plugins.icon.placed', this.iconPlacedHandler).off('core.field.added', this.fieldAddedHandler).off('core.field.removed', this.fieldRemovedHandler);
9922      if (this.opts.defaultMessageContainer) {
9923        this.core.deregisterPlugin(this.MESSAGE_PLUGIN);
9924        this.core.off('plugins.message.placed', this.messagePlacedHandler);
9925      }
9926    };
9927    Framework.prototype.onIconPlaced = function (_e) {};
9928    Framework.prototype.onMessagePlaced = function (_e) {};
9929    Framework.prototype.onFieldAdded = function (e) {
9930      var _this = this;
9931      var elements = e.elements;
9932      if (elements) {
9933        elements.forEach(function (ele) {
9934          var _a;
9935          var groupEle = _this.containers.get(ele);
9936          if (groupEle) {
9937            (0, classSet_1.default)(groupEle, (_a = {}, _a[_this.opts.rowInvalidClass] = false, _a[_this.opts.rowValidatingClass] = false, _a[_this.opts.rowValidClass] = false, _a['fv-plugins-icon-container'] = false, _a));
9938            _this.containers.delete(ele);
9939          }
9940        });
9941        this.prepareFieldContainer(e.field, elements);
9942      }
9943    };
9944    Framework.prototype.onFieldRemoved = function (e) {
9945      var _this = this;
9946      e.elements.forEach(function (ele) {
9947        var _a;
9948        var groupEle = _this.containers.get(ele);
9949        if (groupEle) {
9950          (0, classSet_1.default)(groupEle, (_a = {}, _a[_this.opts.rowInvalidClass] = false, _a[_this.opts.rowValidatingClass] = false, _a[_this.opts.rowValidClass] = false, _a));
9951        }
9952      });
9953    };
9954    Framework.prototype.prepareFieldContainer = function (field, elements) {
9955      var _this = this;
9956      if (elements.length) {
9957        var type = elements[0].getAttribute('type');
9958        if ('radio' === type || 'checkbox' === type) {
9959          this.prepareElementContainer(field, elements[0]);
9960        } else {
9961          elements.forEach(function (ele) {
9962            return _this.prepareElementContainer(field, ele);
9963          });
9964        }
9965      }
9966    };
9967    Framework.prototype.prepareElementContainer = function (field, element) {
9968      var _a;
9969      var selector = 'string' === typeof this.opts.rowSelector ? this.opts.rowSelector : this.opts.rowSelector(field, element);
9970      var groupEle = (0, closest_1.default)(element, selector);
9971      if (groupEle !== element) {
9972        (0, classSet_1.default)(groupEle, (_a = {}, _a[this.opts.rowClasses] = true, _a['fv-plugins-icon-container'] = true, _a));
9973        this.containers.set(element, groupEle);
9974      }
9975    };
9976    Framework.prototype.onElementValidating = function (e) {
9977      var _a;
9978      var elements = e.elements;
9979      var type = e.element.getAttribute('type');
9980      var element = 'radio' === type || 'checkbox' === type ? elements[0] : e.element;
9981      var groupEle = this.containers.get(element);
9982      if (groupEle) {
9983        (0, classSet_1.default)(groupEle, (_a = {}, _a[this.opts.rowInvalidClass] = false, _a[this.opts.rowValidatingClass] = true, _a[this.opts.rowValidClass] = false, _a));
9984      }
9985    };
9986    Framework.prototype.onElementNotValidated = function (e) {
9987      this.removeClasses(e.element, e.elements);
9988    };
9989    Framework.prototype.onElementIgnored = function (e) {
9990      this.removeClasses(e.element, e.elements);
9991    };
9992    Framework.prototype.removeClasses = function (element, elements) {
9993      var _a;
9994      var _this = this;
9995      var type = element.getAttribute('type');
9996      var ele = 'radio' === type || 'checkbox' === type ? elements[0] : element;
9997      elements.forEach(function (ele) {
9998        var _a;
9999        (0, classSet_1.default)(ele, (_a = {}, _a[_this.opts.eleValidClass] = false, _a[_this.opts.eleInvalidClass] = false, _a));
10000      });
10001      var groupEle = this.containers.get(ele);
10002      if (groupEle) {
10003        (0, classSet_1.default)(groupEle, (_a = {}, _a[this.opts.rowInvalidClass] = false, _a[this.opts.rowValidatingClass] = false, _a[this.opts.rowValidClass] = false, _a));
10004      }
10005    };
10006    Framework.prototype.onElementValidated = function (e) {
10007      var _a, _b;
10008      var _this = this;
10009      var elements = e.elements;
10010      var type = e.element.getAttribute('type');
10011      var element = 'radio' === type || 'checkbox' === type ? elements[0] : e.element;
10012      elements.forEach(function (ele) {
10013        var _a;
10014        (0, classSet_1.default)(ele, (_a = {}, _a[_this.opts.eleValidClass] = e.valid, _a[_this.opts.eleInvalidClass] = !e.valid, _a));
10015      });
10016      var groupEle = this.containers.get(element);
10017      if (groupEle) {
10018        if (!e.valid) {
10019          this.results.set(element, false);
10020          (0, classSet_1.default)(groupEle, (_a = {}, _a[this.opts.rowInvalidClass] = true, _a[this.opts.rowValidatingClass] = false, _a[this.opts.rowValidClass] = false, _a));
10021        } else {
10022          this.results.delete(element);
10023          var isValid_1 = true;
10024          this.containers.forEach(function (value, key) {
10025            if (value === groupEle && _this.results.get(key) === false) {
10026              isValid_1 = false;
10027            }
10028          });
10029          if (isValid_1) {
10030            (0, classSet_1.default)(groupEle, (_b = {}, _b[this.opts.rowInvalidClass] = false, _b[this.opts.rowValidatingClass] = false, _b[this.opts.rowValidClass] = true, _b));
10031          }
10032        }
10033      }
10034    };
10035    return Framework;
10036  }(Plugin_1.default);
10037  exports["default"] = Framework;
10038}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
10039		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
10040
10041/***/ }),
10042
10043/***/ "./resources/plugins/formvalidation/dist/amd/plugins/Message.js":
10044/*!**********************************************************************!*\
10045  !*** ./resources/plugins/formvalidation/dist/amd/plugins/Message.js ***!
10046  \**********************************************************************/
10047/***/ (function(module, exports, __webpack_require__) {
10048
10049var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var __extends = this && this.__extends || function () {
10050  var extendStatics = function (d, b) {
10051    extendStatics = Object.setPrototypeOf || {
10052      __proto__: []
10053    } instanceof Array && function (d, b) {
10054      d.__proto__ = b;
10055    } || function (d, b) {
10056      for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
10057    };
10058    return extendStatics(d, b);
10059  };
10060  return function (d, b) {
10061    if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
10062    extendStatics(d, b);
10063    function __() {
10064      this.constructor = d;
10065    }
10066    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
10067  };
10068}();
10069!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports, __webpack_require__(/*! ../core/Plugin */ "./resources/plugins/formvalidation/dist/amd/core/Plugin.js"), __webpack_require__(/*! ../utils/classSet */ "./resources/plugins/formvalidation/dist/amd/utils/classSet.js")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, Plugin_1, classSet_1) {
10070  "use strict";
10071
10072  Object.defineProperty(exports, "__esModule", ({
10073    value: true
10074  }));
10075  var Message = function (_super) {
10076    __extends(Message, _super);
10077    function Message(opts) {
10078      var _this = _super.call(this, opts) || this;
10079      _this.useDefaultContainer = false;
10080      _this.messages = new Map();
10081      _this.defaultContainer = document.createElement('div');
10082      _this.useDefaultContainer = !opts || !opts.container;
10083      _this.opts = Object.assign({}, {
10084        container: function (_field, _element) {
10085          return _this.defaultContainer;
10086        }
10087      }, opts);
10088      _this.elementIgnoredHandler = _this.onElementIgnored.bind(_this);
10089      _this.fieldAddedHandler = _this.onFieldAdded.bind(_this);
10090      _this.fieldRemovedHandler = _this.onFieldRemoved.bind(_this);
10091      _this.validatorValidatedHandler = _this.onValidatorValidated.bind(_this);
10092      _this.validatorNotValidatedHandler = _this.onValidatorNotValidated.bind(_this);
10093      return _this;
10094    }
10095    Message.getClosestContainer = function (element, upper, pattern) {
10096      var ele = element;
10097      while (ele) {
10098        if (ele === upper) {
10099          break;
10100        }
10101        ele = ele.parentElement;
10102        if (pattern.test(ele.className)) {
10103          break;
10104        }
10105      }
10106      return ele;
10107    };
10108    Message.prototype.install = function () {
10109      if (this.useDefaultContainer) {
10110        this.core.getFormElement().appendChild(this.defaultContainer);
10111      }
10112      this.core.on('core.element.ignored', this.elementIgnoredHandler).on('core.field.added', this.fieldAddedHandler).on('core.field.removed', this.fieldRemovedHandler).on('core.validator.validated', this.validatorValidatedHandler).on('core.validator.notvalidated', this.validatorNotValidatedHandler);
10113    };
10114    Message.prototype.uninstall = function () {
10115      if (this.useDefaultContainer) {
10116        this.core.getFormElement().removeChild(this.defaultContainer);
10117      }
10118      this.messages.forEach(function (message) {
10119        return message.parentNode.removeChild(message);
10120      });
10121      this.messages.clear();
10122      this.core.off('core.element.ignored', this.elementIgnoredHandler).off('core.field.added', this.fieldAddedHandler).off('core.field.removed', this.fieldRemovedHandler).off('core.validator.validated', this.validatorValidatedHandler).off('core.validator.notvalidated', this.validatorNotValidatedHandler);
10123    };
10124    Message.prototype.onFieldAdded = function (e) {
10125      var _this = this;
10126      var elements = e.elements;
10127      if (elements) {
10128        elements.forEach(function (ele) {
10129          var msg = _this.messages.get(ele);
10130          if (msg) {
10131            msg.parentNode.removeChild(msg);
10132            _this.messages.delete(ele);
10133          }
10134        });
10135        this.prepareFieldContainer(e.field, elements);
10136      }
10137    };
10138    Message.prototype.onFieldRemoved = function (e) {
10139      var _this = this;
10140      if (!e.elements.length || !e.field) {
10141        return;
10142      }
10143      var type = e.elements[0].getAttribute('type');
10144      var elements = 'radio' === type || 'checkbox' === type ? [e.elements[0]] : e.elements;
10145      elements.forEach(function (ele) {
10146        if (_this.messages.has(ele)) {
10147          var container = _this.messages.get(ele);
10148          container.parentNode.removeChild(container);
10149          _this.messages.delete(ele);
10150        }
10151      });
10152    };
10153    Message.prototype.prepareFieldContainer = function (field, elements) {
10154      var _this = this;
10155      if (elements.length) {
10156        var type = elements[0].getAttribute('type');
10157        if ('radio' === type || 'checkbox' === type) {
10158          this.prepareElementContainer(field, elements[0], elements);
10159        } else {
10160          elements.forEach(function (ele) {
10161            return _this.prepareElementContainer(field, ele, elements);
10162          });
10163        }
10164      }
10165    };
10166    Message.prototype.prepareElementContainer = function (field, element, elements) {
10167      var container;
10168      if ('string' === typeof this.opts.container) {
10169        var selector = '#' === this.opts.container.charAt(0) ? "[id=\"".concat(this.opts.container.substring(1), "\"]") : this.opts.container;
10170        container = this.core.getFormElement().querySelector(selector);
10171      } else {
10172        container = this.opts.container(field, element);
10173      }
10174      var message = document.createElement('div');
10175      container.appendChild(message);
10176      (0, classSet_1.default)(message, {
10177        'fv-plugins-message-container': true
10178      });
10179      this.core.emit('plugins.message.placed', {
10180        element: element,
10181        elements: elements,
10182        field: field,
10183        messageElement: message
10184      });
10185      this.messages.set(element, message);
10186    };
10187    Message.prototype.getMessage = function (result) {
10188      return typeof result.message === 'string' ? result.message : result.message[this.core.getLocale()];
10189    };
10190    Message.prototype.onValidatorValidated = function (e) {
10191      var _a;
10192      var elements = e.elements;
10193      var type = e.element.getAttribute('type');
10194      var element = ('radio' === type || 'checkbox' === type) && elements.length > 0 ? elements[0] : e.element;
10195      if (this.messages.has(element)) {
10196        var container = this.messages.get(element);
10197        var messageEle = container.querySelector("[data-field=\"".concat(e.field, "\"][data-validator=\"").concat(e.validator, "\"]"));
10198        if (!messageEle && !e.result.valid) {
10199          var ele = document.createElement('div');
10200          ele.innerHTML = this.getMessage(e.result);
10201          ele.setAttribute('data-field', e.field);
10202          ele.setAttribute('data-validator', e.validator);
10203          if (this.opts.clazz) {
10204            (0, classSet_1.default)(ele, (_a = {}, _a[this.opts.clazz] = true, _a));
10205          }
10206          container.appendChild(ele);
10207          this.core.emit('plugins.message.displayed', {
10208            element: e.element,
10209            field: e.field,
10210            message: e.result.message,
10211            messageElement: ele,
10212            meta: e.result.meta,
10213            validator: e.validator
10214          });
10215        } else if (messageEle && !e.result.valid) {
10216          messageEle.innerHTML = this.getMessage(e.result);
10217          this.core.emit('plugins.message.displayed', {
10218            element: e.element,
10219            field: e.field,
10220            message: e.result.message,
10221            messageElement: messageEle,
10222            meta: e.result.meta,
10223            validator: e.validator
10224          });
10225        } else if (messageEle && e.result.valid) {
10226          container.removeChild(messageEle);
10227        }
10228      }
10229    };
10230    Message.prototype.onValidatorNotValidated = function (e) {
10231      var elements = e.elements;
10232      var type = e.element.getAttribute('type');
10233      var element = 'radio' === type || 'checkbox' === type ? elements[0] : e.element;
10234      if (this.messages.has(element)) {
10235        var container = this.messages.get(element);
10236        var messageEle = container.querySelector("[data-field=\"".concat(e.field, "\"][data-validator=\"").concat(e.validator, "\"]"));
10237        if (messageEle) {
10238          container.removeChild(messageEle);
10239        }
10240      }
10241    };
10242    Message.prototype.onElementIgnored = function (e) {
10243      var elements = e.elements;
10244      var type = e.element.getAttribute('type');
10245      var element = 'radio' === type || 'checkbox' === type ? elements[0] : e.element;
10246      if (this.messages.has(element)) {
10247        var container_1 = this.messages.get(element);
10248        var messageElements = [].slice.call(container_1.querySelectorAll("[data-field=\"".concat(e.field, "\"]")));
10249        messageElements.forEach(function (messageEle) {
10250          container_1.removeChild(messageEle);
10251        });
10252      }
10253    };
10254    return Message;
10255  }(Plugin_1.default);
10256  exports["default"] = Message;
10257}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
10258		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
10259
10260/***/ }),
10261
10262/***/ "./resources/plugins/formvalidation/dist/amd/utils/classSet.js":
10263/*!*********************************************************************!*\
10264  !*** ./resources/plugins/formvalidation/dist/amd/utils/classSet.js ***!
10265  \*********************************************************************/
10266/***/ ((module, exports, __webpack_require__) => {
10267
10268var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports) {
10269  "use strict";
10270
10271  Object.defineProperty(exports, "__esModule", ({
10272    value: true
10273  }));
10274  function addClass(element, classes) {
10275    classes.split(' ').forEach(function (clazz) {
10276      if (element.classList) {
10277        element.classList.add(clazz);
10278      } else if (" ".concat(element.className, " ").indexOf(" ".concat(clazz, " "))) {
10279        element.className += " ".concat(clazz);
10280      }
10281    });
10282  }
10283  function removeClass(element, classes) {
10284    classes.split(' ').forEach(function (clazz) {
10285      element.classList ? element.classList.remove(clazz) : element.className = element.className.replace(clazz, '');
10286    });
10287  }
10288  function classSet(element, classes) {
10289    var adding = [];
10290    var removing = [];
10291    Object.keys(classes).forEach(function (clazz) {
10292      if (clazz) {
10293        classes[clazz] ? adding.push(clazz) : removing.push(clazz);
10294      }
10295    });
10296    removing.forEach(function (clazz) {
10297      return removeClass(element, clazz);
10298    });
10299    adding.forEach(function (clazz) {
10300      return addClass(element, clazz);
10301    });
10302  }
10303  exports["default"] = classSet;
10304}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
10305		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
10306
10307/***/ }),
10308
10309/***/ "./resources/plugins/formvalidation/dist/amd/utils/closest.js":
10310/*!********************************************************************!*\
10311  !*** ./resources/plugins/formvalidation/dist/amd/utils/closest.js ***!
10312  \********************************************************************/
10313/***/ ((module, exports, __webpack_require__) => {
10314
10315var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports) {
10316  "use strict";
10317
10318  Object.defineProperty(exports, "__esModule", ({
10319    value: true
10320  }));
10321  function matches(element, selector) {
10322    var nativeMatches = element.matches || element.webkitMatchesSelector || element['mozMatchesSelector'] || element['msMatchesSelector'];
10323    if (nativeMatches) {
10324      return nativeMatches.call(element, selector);
10325    }
10326    var nodes = [].slice.call(element.parentElement.querySelectorAll(selector));
10327    return nodes.indexOf(element) >= 0;
10328  }
10329  function closest(element, selector) {
10330    var ele = element;
10331    while (ele) {
10332      if (matches(ele, selector)) {
10333        break;
10334      }
10335      ele = ele.parentElement;
10336    }
10337    return ele;
10338  }
10339  exports["default"] = closest;
10340}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
10341		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
10342
10343/***/ }),
10344
10345/***/ "./resources/plugins/formvalidation/dist/amd/utils/hasClass.js":
10346/*!*********************************************************************!*\
10347  !*** ./resources/plugins/formvalidation/dist/amd/utils/hasClass.js ***!
10348  \*********************************************************************/
10349/***/ ((module, exports, __webpack_require__) => {
10350
10351var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports) {
10352  "use strict";
10353
10354  Object.defineProperty(exports, "__esModule", ({
10355    value: true
10356  }));
10357  function hasClass(element, clazz) {
10358    return element.classList ? element.classList.contains(clazz) : new RegExp("(^| )".concat(clazz, "( |$)"), 'gi').test(element.className);
10359  }
10360  exports["default"] = hasClass;
10361}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
10362		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
10363
10364/***/ }),
10365
10366/***/ "./resources/plugins/formvalidation/dist/js/FormValidation.full.min.js":
10367/*!*****************************************************************************!*\
10368  !*** ./resources/plugins/formvalidation/dist/js/FormValidation.full.min.js ***!
10369  \*****************************************************************************/
10370/***/ (function(__unused_webpack_module, exports) {
10371
10372(function (global, factory) {
10373   true ? factory(exports) : 0;
10374})(this, function (exports) {
10375  "use strict";
10376
10377  function t$15(t) {
10378    var e = t.length;
10379    var l = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]];
10380    var n = 0;
10381    var r = 0;
10382    while (e--) {
10383      r += l[n][parseInt(t.charAt(e), 10)];
10384      n = 1 - n;
10385    }
10386    return r % 10 === 0 && r > 0;
10387  }
10388  function t$14(t) {
10389    var e = t.length;
10390    var n = 5;
10391    for (var r = 0; r < e; r++) {
10392      n = ((n || 10) * 2 % 11 + parseInt(t.charAt(r), 10)) % 10;
10393    }
10394    return n === 1;
10395  }
10396  function t$13(t) {
10397    var e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
10398    var n = t.length;
10399    var o = e.length;
10400    var l = Math.floor(o / 2);
10401    for (var r = 0; r < n; r++) {
10402      l = ((l || o) * 2 % (o + 1) + e.indexOf(t.charAt(r))) % o;
10403    }
10404    return l === 1;
10405  }
10406  function t$12(t) {
10407    var e = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
10408    var n = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]];
10409    var o = t.reverse();
10410    var r = 0;
10411    for (var _t = 0; _t < o.length; _t++) {
10412      r = e[r][n[_t % 8][o[_t]]];
10413    }
10414    return r === 0;
10415  }
10416  var index$3 = {
10417    luhn: t$15,
10418    mod11And10: t$14,
10419    mod37And36: t$13,
10420    verhoeff: t$12
10421  };
10422  function _classCallCheck(instance, Constructor) {
10423    if (!(instance instanceof Constructor)) {
10424      throw new TypeError("Cannot call a class as a function");
10425    }
10426  }
10427  function _defineProperties(target, props) {
10428    for (var i = 0; i < props.length; i++) {
10429      var descriptor = props[i];
10430      descriptor.enumerable = descriptor.enumerable || false;
10431      descriptor.configurable = true;
10432      if ("value" in descriptor) descriptor.writable = true;
10433      Object.defineProperty(target, descriptor.key, descriptor);
10434    }
10435  }
10436  function _createClass(Constructor, protoProps, staticProps) {
10437    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
10438    if (staticProps) _defineProperties(Constructor, staticProps);
10439    Object.defineProperty(Constructor, "prototype", {
10440      writable: false
10441    });
10442    return Constructor;
10443  }
10444  function _defineProperty(obj, key, value) {
10445    if (key in obj) {
10446      Object.defineProperty(obj, key, {
10447        value: value,
10448        enumerable: true,
10449        configurable: true,
10450        writable: true
10451      });
10452    } else {
10453      obj[key] = value;
10454    }
10455    return obj;
10456  }
10457  function _inherits(subClass, superClass) {
10458    if (typeof superClass !== "function" && superClass !== null) {
10459      throw new TypeError("Super expression must either be null or a function");
10460    }
10461    subClass.prototype = Object.create(superClass && superClass.prototype, {
10462      constructor: {
10463        value: subClass,
10464        writable: true,
10465        configurable: true
10466      }
10467    });
10468    Object.defineProperty(subClass, "prototype", {
10469      writable: false
10470    });
10471    if (superClass) _setPrototypeOf(subClass, superClass);
10472  }
10473  function _getPrototypeOf(o) {
10474    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {
10475      return o.__proto__ || Object.getPrototypeOf(o);
10476    };
10477    return _getPrototypeOf(o);
10478  }
10479  function _setPrototypeOf(o, p) {
10480    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
10481      o.__proto__ = p;
10482      return o;
10483    };
10484    return _setPrototypeOf(o, p);
10485  }
10486  function _isNativeReflectConstruct() {
10487    if (typeof Reflect === "undefined" || !Reflect.construct) return false;
10488    if (Reflect.construct.sham) return false;
10489    if (typeof Proxy === "function") return true;
10490    try {
10491      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
10492      return true;
10493    } catch (e) {
10494      return false;
10495    }
10496  }
10497  function _assertThisInitialized(self) {
10498    if (self === void 0) {
10499      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
10500    }
10501    return self;
10502  }
10503  function _possibleConstructorReturn(self, call) {
10504    if (call && (typeof call === "object" || typeof call === "function")) {
10505      return call;
10506    } else if (call !== void 0) {
10507      throw new TypeError("Derived constructors may only return object or undefined");
10508    }
10509    return _assertThisInitialized(self);
10510  }
10511  function _createSuper(Derived) {
10512    var hasNativeReflectConstruct = _isNativeReflectConstruct();
10513    return function _createSuperInternal() {
10514      var Super = _getPrototypeOf(Derived),
10515        result;
10516      if (hasNativeReflectConstruct) {
10517        var NewTarget = _getPrototypeOf(this).constructor;
10518        result = Reflect.construct(Super, arguments, NewTarget);
10519      } else {
10520        result = Super.apply(this, arguments);
10521      }
10522      return _possibleConstructorReturn(this, result);
10523    };
10524  }
10525  function _unsupportedIterableToArray(o, minLen) {
10526    if (!o) return;
10527    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
10528    var n = Object.prototype.toString.call(o).slice(8, -1);
10529    if (n === "Object" && o.constructor) n = o.constructor.name;
10530    if (n === "Map" || n === "Set") return Array.from(o);
10531    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
10532  }
10533  function _arrayLikeToArray(arr, len) {
10534    if (len == null || len > arr.length) len = arr.length;
10535    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
10536    return arr2;
10537  }
10538  function _createForOfIteratorHelper(o, allowArrayLike) {
10539    var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
10540    if (!it) {
10541      if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
10542        if (it) o = it;
10543        var i = 0;
10544        var F = function () {};
10545        return {
10546          s: F,
10547          n: function () {
10548            if (i >= o.length) return {
10549              done: true
10550            };
10551            return {
10552              done: false,
10553              value: o[i++]
10554            };
10555          },
10556          e: function (e) {
10557            throw e;
10558          },
10559          f: F
10560        };
10561      }
10562      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
10563    }
10564    var normalCompletion = true,
10565      didErr = false,
10566      err;
10567    return {
10568      s: function () {
10569        it = it.call(o);
10570      },
10571      n: function () {
10572        var step = it.next();
10573        normalCompletion = step.done;
10574        return step;
10575      },
10576      e: function (e) {
10577        didErr = true;
10578        err = e;
10579      },
10580      f: function () {
10581        try {
10582          if (!normalCompletion && it.return != null) it.return();
10583        } finally {
10584          if (didErr) throw err;
10585        }
10586      }
10587    };
10588  }
10589  function s$a() {
10590    return {
10591      fns: {},
10592      clear: function clear() {
10593        this.fns = {};
10594      },
10595      emit: function emit(s) {
10596        for (var _len = arguments.length, f = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
10597          f[_key - 1] = arguments[_key];
10598        }
10599        (this.fns[s] || []).map(function (s) {
10600          return s.apply(s, f);
10601        });
10602      },
10603      off: function off(s, f) {
10604        if (this.fns[s]) {
10605          var n = this.fns[s].indexOf(f);
10606          if (n >= 0) {
10607            this.fns[s].splice(n, 1);
10608          }
10609        }
10610      },
10611      on: function on(s, f) {
10612        (this.fns[s] = this.fns[s] || []).push(f);
10613      }
10614    };
10615  }
10616  function t$11() {
10617    return {
10618      filters: {},
10619      add: function add(t, e) {
10620        (this.filters[t] = this.filters[t] || []).push(e);
10621      },
10622      clear: function clear() {
10623        this.filters = {};
10624      },
10625      execute: function execute(t, e, i) {
10626        if (!this.filters[t] || !this.filters[t].length) {
10627          return e;
10628        }
10629        var s = e;
10630        var r = this.filters[t];
10631        var l = r.length;
10632        for (var _t = 0; _t < l; _t++) {
10633          s = r[_t].apply(s, i);
10634        }
10635        return s;
10636      },
10637      remove: function remove(t, e) {
10638        if (this.filters[t]) {
10639          this.filters[t] = this.filters[t].filter(function (t) {
10640            return t !== e;
10641          });
10642        }
10643      }
10644    };
10645  }
10646  function e$H(e, t, r, n) {
10647    var o = (r.getAttribute("type") || "").toLowerCase();
10648    var c = r.tagName.toLowerCase();
10649    if (c === "textarea") {
10650      return r.value;
10651    }
10652    if (c === "select") {
10653      var _e = r;
10654      var _t = _e.selectedIndex;
10655      return _t >= 0 ? _e.options.item(_t).value : "";
10656    }
10657    if (c === "input") {
10658      if ("radio" === o || "checkbox" === o) {
10659        var _e2 = n.filter(function (e) {
10660          return e.checked;
10661        }).length;
10662        return _e2 === 0 ? "" : _e2 + "";
10663      } else {
10664        return r.value;
10665      }
10666    }
10667    return "";
10668  }
10669  function r$d(r, e) {
10670    var t = Array.isArray(e) ? e : [e];
10671    var a = r;
10672    t.forEach(function (r) {
10673      a = a.replace("%s", r);
10674    });
10675    return a;
10676  }
10677  function s$9() {
10678    var s = function s(e) {
10679      return parseFloat("".concat(e).replace(",", "."));
10680    };
10681    return {
10682      validate: function validate(a) {
10683        var t = a.value;
10684        if (t === "") {
10685          return {
10686            valid: true
10687          };
10688        }
10689        var n = Object.assign({}, {
10690          inclusive: true,
10691          message: ""
10692        }, a.options);
10693        var l = s(n.min);
10694        var o = s(n.max);
10695        return n.inclusive ? {
10696          message: r$d(a.l10n ? n.message || a.l10n.between["default"] : n.message, ["".concat(l), "".concat(o)]),
10697          valid: parseFloat(t) >= l && parseFloat(t) <= o
10698        } : {
10699          message: r$d(a.l10n ? n.message || a.l10n.between.notInclusive : n.message, ["".concat(l), "".concat(o)]),
10700          valid: parseFloat(t) > l && parseFloat(t) < o
10701        };
10702      }
10703    };
10704  }
10705  function t$10() {
10706    return {
10707      validate: function validate(t) {
10708        return {
10709          valid: true
10710        };
10711      }
10712    };
10713  }
10714  function t$$(t, n) {
10715    if ("function" === typeof t) {
10716      return t.apply(this, n);
10717    } else if ("string" === typeof t) {
10718      var e = t;
10719      if ("()" === e.substring(e.length - 2)) {
10720        e = e.substring(0, e.length - 2);
10721      }
10722      var i = e.split(".");
10723      var o = i.pop();
10724      var f = window;
10725      var _iterator = _createForOfIteratorHelper(i),
10726        _step;
10727      try {
10728        for (_iterator.s(); !(_step = _iterator.n()).done;) {
10729          var _t = _step.value;
10730          f = f[_t];
10731        }
10732      } catch (err) {
10733        _iterator.e(err);
10734      } finally {
10735        _iterator.f();
10736      }
10737      return typeof f[o] === "undefined" ? null : f[o].apply(this, n);
10738    }
10739  }
10740  function o$4() {
10741    return {
10742      validate: function validate(o) {
10743        var l = t$$(o.options.callback, [o]);
10744        return "boolean" === typeof l ? {
10745          valid: l
10746        } : l;
10747      }
10748    };
10749  }
10750  function t$_() {
10751    return {
10752      validate: function validate(t) {
10753        var o = "select" === t.element.tagName.toLowerCase() ? t.element.querySelectorAll("option:checked").length : t.elements.filter(function (e) {
10754          return e.checked;
10755        }).length;
10756        var s = t.options.min ? "".concat(t.options.min) : "";
10757        var n = t.options.max ? "".concat(t.options.max) : "";
10758        var a = t.l10n ? t.options.message || t.l10n.choice["default"] : t.options.message;
10759        var l = !(s && o < parseInt(s, 10) || n && o > parseInt(n, 10));
10760        switch (true) {
10761          case !!s && !!n:
10762            a = r$d(t.l10n ? t.l10n.choice.between : t.options.message, [s, n]);
10763            break;
10764          case !!s:
10765            a = r$d(t.l10n ? t.l10n.choice.more : t.options.message, s);
10766            break;
10767          case !!n:
10768            a = r$d(t.l10n ? t.l10n.choice.less : t.options.message, n);
10769            break;
10770        }
10771        return {
10772          message: a,
10773          valid: l
10774        };
10775      }
10776    };
10777  }
10778  var t$Z = {
10779    AMERICAN_EXPRESS: {
10780      length: [15],
10781      prefix: ["34", "37"]
10782    },
10783    DANKORT: {
10784      length: [16],
10785      prefix: ["5019"]
10786    },
10787    DINERS_CLUB: {
10788      length: [14],
10789      prefix: ["300", "301", "302", "303", "304", "305", "36"]
10790    },
10791    DINERS_CLUB_US: {
10792      length: [16],
10793      prefix: ["54", "55"]
10794    },
10795    DISCOVER: {
10796      length: [16],
10797      prefix: ["6011", "622126", "622127", "622128", "622129", "62213", "62214", "62215", "62216", "62217", "62218", "62219", "6222", "6223", "6224", "6225", "6226", "6227", "6228", "62290", "62291", "622920", "622921", "622922", "622923", "622924", "622925", "644", "645", "646", "647", "648", "649", "65"]
10798    },
10799    ELO: {
10800      length: [16],
10801      prefix: ["4011", "4312", "4389", "4514", "4573", "4576", "5041", "5066", "5067", "509", "6277", "6362", "6363", "650", "6516", "6550"]
10802    },
10803    FORBRUGSFORENINGEN: {
10804      length: [16],
10805      prefix: ["600722"]
10806    },
10807    JCB: {
10808      length: [16],
10809      prefix: ["3528", "3529", "353", "354", "355", "356", "357", "358"]
10810    },
10811    LASER: {
10812      length: [16, 17, 18, 19],
10813      prefix: ["6304", "6706", "6771", "6709"]
10814    },
10815    MAESTRO: {
10816      length: [12, 13, 14, 15, 16, 17, 18, 19],
10817      prefix: ["5018", "5020", "5038", "5868", "6304", "6759", "6761", "6762", "6763", "6764", "6765", "6766"]
10818    },
10819    MASTERCARD: {
10820      length: [16],
10821      prefix: ["51", "52", "53", "54", "55"]
10822    },
10823    SOLO: {
10824      length: [16, 18, 19],
10825      prefix: ["6334", "6767"]
10826    },
10827    UNIONPAY: {
10828      length: [16, 17, 18, 19],
10829      prefix: ["622126", "622127", "622128", "622129", "62213", "62214", "62215", "62216", "62217", "62218", "62219", "6222", "6223", "6224", "6225", "6226", "6227", "6228", "62290", "62291", "622920", "622921", "622922", "622923", "622924", "622925"]
10830    },
10831    VISA: {
10832      length: [16],
10833      prefix: ["4"]
10834    },
10835    VISA_ELECTRON: {
10836      length: [16],
10837      prefix: ["4026", "417500", "4405", "4508", "4844", "4913", "4917"]
10838    }
10839  };
10840  function l$2() {
10841    return {
10842      validate: function validate(l) {
10843        if (l.value === "") {
10844          return {
10845            meta: {
10846              type: null
10847            },
10848            valid: true
10849          };
10850        }
10851        if (/[^0-9-\s]+/.test(l.value)) {
10852          return {
10853            meta: {
10854              type: null
10855            },
10856            valid: false
10857          };
10858        }
10859        var r = l.value.replace(/\D/g, "");
10860        if (!t$15(r)) {
10861          return {
10862            meta: {
10863              type: null
10864            },
10865            valid: false
10866          };
10867        }
10868        for (var _i = 0, _Object$keys = Object.keys(t$Z); _i < _Object$keys.length; _i++) {
10869          var _e = _Object$keys[_i];
10870          for (var n in t$Z[_e].prefix) {
10871            if (l.value.substr(0, t$Z[_e].prefix[n].length) === t$Z[_e].prefix[n] && t$Z[_e].length.indexOf(r.length) !== -1) {
10872              return {
10873                meta: {
10874                  type: _e
10875                },
10876                valid: true
10877              };
10878            }
10879          }
10880        }
10881        return {
10882          meta: {
10883            type: null
10884          },
10885          valid: false
10886        };
10887      }
10888    };
10889  }
10890  function t$Y(t, e, n, r) {
10891    if (isNaN(t) || isNaN(e) || isNaN(n)) {
10892      return false;
10893    }
10894    if (t < 1e3 || t > 9999 || e <= 0 || e > 12) {
10895      return false;
10896    }
10897    var s = [31, t % 400 === 0 || t % 100 !== 0 && t % 4 === 0 ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
10898    if (n <= 0 || n > s[e - 1]) {
10899      return false;
10900    }
10901    if (r === true) {
10902      var _r = new Date();
10903      var _s = _r.getFullYear();
10904      var a = _r.getMonth();
10905      var u = _r.getDate();
10906      return t < _s || t === _s && e - 1 < a || t === _s && e - 1 === a && n < u;
10907    }
10908    return true;
10909  }
10910  function n$1() {
10911    var n = function n(t, e, _n) {
10912      var s = e.indexOf("YYYY");
10913      var a = e.indexOf("MM");
10914      var l = e.indexOf("DD");
10915      if (s === -1 || a === -1 || l === -1) {
10916        return null;
10917      }
10918      var o = t.split(" ");
10919      var r = o[0].split(_n);
10920      if (r.length < 3) {
10921        return null;
10922      }
10923      var c = new Date(parseInt(r[s], 10), parseInt(r[a], 10) - 1, parseInt(r[l], 10));
10924      if (o.length > 1) {
10925        var _t = o[1].split(":");
10926        c.setHours(_t.length > 0 ? parseInt(_t[0], 10) : 0);
10927        c.setMinutes(_t.length > 1 ? parseInt(_t[1], 10) : 0);
10928        c.setSeconds(_t.length > 2 ? parseInt(_t[2], 10) : 0);
10929      }
10930      return c;
10931    };
10932    var s = function s(t, e) {
10933      var n = e.replace(/Y/g, "y").replace(/M/g, "m").replace(/D/g, "d").replace(/:m/g, ":M").replace(/:mm/g, ":MM").replace(/:S/, ":s").replace(/:SS/, ":ss");
10934      var s = t.getDate();
10935      var a = s < 10 ? "0".concat(s) : s;
10936      var l = t.getMonth() + 1;
10937      var o = l < 10 ? "0".concat(l) : l;
10938      var r = "".concat(t.getFullYear()).substr(2);
10939      var c = t.getFullYear();
10940      var i = t.getHours() % 12 || 12;
10941      var g = i < 10 ? "0".concat(i) : i;
10942      var u = t.getHours();
10943      var m = u < 10 ? "0".concat(u) : u;
10944      var d = t.getMinutes();
10945      var f = d < 10 ? "0".concat(d) : d;
10946      var p = t.getSeconds();
10947      var h = p < 10 ? "0".concat(p) : p;
10948      var $ = {
10949        H: "".concat(u),
10950        HH: "".concat(m),
10951        M: "".concat(d),
10952        MM: "".concat(f),
10953        d: "".concat(s),
10954        dd: "".concat(a),
10955        h: "".concat(i),
10956        hh: "".concat(g),
10957        m: "".concat(l),
10958        mm: "".concat(o),
10959        s: "".concat(p),
10960        ss: "".concat(h),
10961        yy: "".concat(r),
10962        yyyy: "".concat(c)
10963      };
10964      return n.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMs])\1?|"[^"]*"|'[^']*'/g, function (t) {
10965        return $[t] ? $[t] : t.slice(1, t.length - 1);
10966      });
10967    };
10968    return {
10969      validate: function validate(a) {
10970        if (a.value === "") {
10971          return {
10972            meta: {
10973              date: null
10974            },
10975            valid: true
10976          };
10977        }
10978        var l = Object.assign({}, {
10979          format: a.element && a.element.getAttribute("type") === "date" ? "YYYY-MM-DD" : "MM/DD/YYYY",
10980          message: ""
10981        }, a.options);
10982        var o = a.l10n ? a.l10n.date["default"] : l.message;
10983        var r = {
10984          message: "".concat(o),
10985          meta: {
10986            date: null
10987          },
10988          valid: false
10989        };
10990        var c = l.format.split(" ");
10991        var i = c.length > 1 ? c[1] : null;
10992        var g = c.length > 2 ? c[2] : null;
10993        var u = a.value.split(" ");
10994        var m = u[0];
10995        var d = u.length > 1 ? u[1] : null;
10996        if (c.length !== u.length) {
10997          return r;
10998        }
10999        var f = l.separator || (m.indexOf("/") !== -1 ? "/" : m.indexOf("-") !== -1 ? "-" : m.indexOf(".") !== -1 ? "." : "/");
11000        if (f === null || m.indexOf(f) === -1) {
11001          return r;
11002        }
11003        var p = m.split(f);
11004        var h = c[0].split(f);
11005        if (p.length !== h.length) {
11006          return r;
11007        }
11008        var $ = p[h.indexOf("YYYY")];
11009        var M = p[h.indexOf("MM")];
11010        var Y = p[h.indexOf("DD")];
11011        if (!/^\d+$/.test($) || !/^\d+$/.test(M) || !/^\d+$/.test(Y) || $.length > 4 || M.length > 2 || Y.length > 2) {
11012          return r;
11013        }
11014        var D = parseInt($, 10);
11015        var x = parseInt(M, 10);
11016        var y = parseInt(Y, 10);
11017        if (!t$Y(D, x, y)) {
11018          return r;
11019        }
11020        var I = new Date(D, x - 1, y);
11021        if (i) {
11022          var _t2 = d.split(":");
11023          if (i.split(":").length !== _t2.length) {
11024            return r;
11025          }
11026          var _e = _t2.length > 0 ? _t2[0].length <= 2 && /^\d+$/.test(_t2[0]) ? parseInt(_t2[0], 10) : -1 : 0;
11027          var _n2 = _t2.length > 1 ? _t2[1].length <= 2 && /^\d+$/.test(_t2[1]) ? parseInt(_t2[1], 10) : -1 : 0;
11028          var _s = _t2.length > 2 ? _t2[2].length <= 2 && /^\d+$/.test(_t2[2]) ? parseInt(_t2[2], 10) : -1 : 0;
11029          if (_e === -1 || _n2 === -1 || _s === -1) {
11030            return r;
11031          }
11032          if (_s < 0 || _s > 60) {
11033            return r;
11034          }
11035          if (_e < 0 || _e >= 24 || g && _e > 12) {
11036            return r;
11037          }
11038          if (_n2 < 0 || _n2 > 59) {
11039            return r;
11040          }
11041          I.setHours(_e);
11042          I.setMinutes(_n2);
11043          I.setSeconds(_s);
11044        }
11045        var O = typeof l.min === "function" ? l.min() : l.min;
11046        var v = O instanceof Date ? O : O ? n(O, h, f) : I;
11047        var H = typeof l.max === "function" ? l.max() : l.max;
11048        var T = H instanceof Date ? H : H ? n(H, h, f) : I;
11049        var S = O instanceof Date ? s(v, l.format) : O;
11050        var b = H instanceof Date ? s(T, l.format) : H;
11051        switch (true) {
11052          case !!S && !b:
11053            return {
11054              message: r$d(a.l10n ? a.l10n.date.min : o, S),
11055              meta: {
11056                date: I
11057              },
11058              valid: I.getTime() >= v.getTime()
11059            };
11060          case !!b && !S:
11061            return {
11062              message: r$d(a.l10n ? a.l10n.date.max : o, b),
11063              meta: {
11064                date: I
11065              },
11066              valid: I.getTime() <= T.getTime()
11067            };
11068          case !!b && !!S:
11069            return {
11070              message: r$d(a.l10n ? a.l10n.date.range : o, [S, b]),
11071              meta: {
11072                date: I
11073              },
11074              valid: I.getTime() <= T.getTime() && I.getTime() >= v.getTime()
11075            };
11076          default:
11077            return {
11078              message: "".concat(o),
11079              meta: {
11080                date: I
11081              },
11082              valid: true
11083            };
11084        }
11085      }
11086    };
11087  }
11088  function o$3() {
11089    return {
11090      validate: function validate(o) {
11091        var t = "function" === typeof o.options.compare ? o.options.compare.call(this) : o.options.compare;
11092        return {
11093          valid: t === "" || o.value !== t
11094        };
11095      }
11096    };
11097  }
11098  function e$G() {
11099    return {
11100      validate: function validate(e) {
11101        return {
11102          valid: e.value === "" || /^\d+$/.test(e.value)
11103        };
11104      }
11105    };
11106  }
11107  function t$X() {
11108    var t = function t(_t3, e) {
11109      var s = _t3.split(/"/);
11110      var l = s.length;
11111      var n = [];
11112      var r = "";
11113      for (var _t = 0; _t < l; _t++) {
11114        if (_t % 2 === 0) {
11115          var _l = s[_t].split(e);
11116          var a = _l.length;
11117          if (a === 1) {
11118            r += _l[0];
11119          } else {
11120            n.push(r + _l[0]);
11121            for (var _t2 = 1; _t2 < a - 1; _t2++) {
11122              n.push(_l[_t2]);
11123            }
11124            r = _l[a - 1];
11125          }
11126        } else {
11127          r += '"' + s[_t];
11128          if (_t < l - 1) {
11129            r += '"';
11130          }
11131        }
11132      }
11133      n.push(r);
11134      return n;
11135    };
11136    return {
11137      validate: function validate(e) {
11138        if (e.value === "") {
11139          return {
11140            valid: true
11141          };
11142        }
11143        var s = Object.assign({}, {
11144          multiple: false,
11145          separator: /[,;]/
11146        }, e.options);
11147        var l = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
11148        var n = s.multiple === true || "".concat(s.multiple) === "true";
11149        if (n) {
11150          var _n = s.separator || /[,;]/;
11151          var r = t(e.value, _n);
11152          var a = r.length;
11153          for (var _t4 = 0; _t4 < a; _t4++) {
11154            if (!l.test(r[_t4])) {
11155              return {
11156                valid: false
11157              };
11158            }
11159          }
11160          return {
11161            valid: true
11162          };
11163        } else {
11164          return {
11165            valid: l.test(e.value)
11166          };
11167        }
11168      }
11169    };
11170  }
11171  function e$F() {
11172    return {
11173      validate: function validate(e) {
11174        if (e.value === "") {
11175          return {
11176            valid: true
11177          };
11178        }
11179        var t;
11180        var i = e.options.extension ? e.options.extension.toLowerCase().split(",") : null;
11181        var s = e.options.type ? e.options.type.toLowerCase().split(",") : null;
11182        var n = window["File"] && window["FileList"] && window["FileReader"];
11183        if (n) {
11184          var _n = e.element.files;
11185          var o = _n.length;
11186          var a = 0;
11187          if (e.options.maxFiles && o > parseInt("".concat(e.options.maxFiles), 10)) {
11188            return {
11189              meta: {
11190                error: "INVALID_MAX_FILES"
11191              },
11192              valid: false
11193            };
11194          }
11195          if (e.options.minFiles && o < parseInt("".concat(e.options.minFiles), 10)) {
11196            return {
11197              meta: {
11198                error: "INVALID_MIN_FILES"
11199              },
11200              valid: false
11201            };
11202          }
11203          var r = {};
11204          for (var l = 0; l < o; l++) {
11205            a += _n[l].size;
11206            t = _n[l].name.substr(_n[l].name.lastIndexOf(".") + 1);
11207            r = {
11208              ext: t,
11209              file: _n[l],
11210              size: _n[l].size,
11211              type: _n[l].type
11212            };
11213            if (e.options.minSize && _n[l].size < parseInt("".concat(e.options.minSize), 10)) {
11214              return {
11215                meta: Object.assign({}, {
11216                  error: "INVALID_MIN_SIZE"
11217                }, r),
11218                valid: false
11219              };
11220            }
11221            if (e.options.maxSize && _n[l].size > parseInt("".concat(e.options.maxSize), 10)) {
11222              return {
11223                meta: Object.assign({}, {
11224                  error: "INVALID_MAX_SIZE"
11225                }, r),
11226                valid: false
11227              };
11228            }
11229            if (i && i.indexOf(t.toLowerCase()) === -1) {
11230              return {
11231                meta: Object.assign({}, {
11232                  error: "INVALID_EXTENSION"
11233                }, r),
11234                valid: false
11235              };
11236            }
11237            if (_n[l].type && s && s.indexOf(_n[l].type.toLowerCase()) === -1) {
11238              return {
11239                meta: Object.assign({}, {
11240                  error: "INVALID_TYPE"
11241                }, r),
11242                valid: false
11243              };
11244            }
11245          }
11246          if (e.options.maxTotalSize && a > parseInt("".concat(e.options.maxTotalSize), 10)) {
11247            return {
11248              meta: Object.assign({}, {
11249                error: "INVALID_MAX_TOTAL_SIZE",
11250                totalSize: a
11251              }, r),
11252              valid: false
11253            };
11254          }
11255          if (e.options.minTotalSize && a < parseInt("".concat(e.options.minTotalSize), 10)) {
11256            return {
11257              meta: Object.assign({}, {
11258                error: "INVALID_MIN_TOTAL_SIZE",
11259                totalSize: a
11260              }, r),
11261              valid: false
11262            };
11263          }
11264        } else {
11265          t = e.value.substr(e.value.lastIndexOf(".") + 1);
11266          if (i && i.indexOf(t.toLowerCase()) === -1) {
11267            return {
11268              meta: {
11269                error: "INVALID_EXTENSION",
11270                ext: t
11271              },
11272              valid: false
11273            };
11274          }
11275        }
11276        return {
11277          valid: true
11278        };
11279      }
11280    };
11281  }
11282  function a$7() {
11283    return {
11284      validate: function validate(a) {
11285        if (a.value === "") {
11286          return {
11287            valid: true
11288          };
11289        }
11290        var s = Object.assign({}, {
11291          inclusive: true,
11292          message: ""
11293        }, a.options);
11294        var t = parseFloat("".concat(s.min).replace(",", "."));
11295        return s.inclusive ? {
11296          message: r$d(a.l10n ? s.message || a.l10n.greaterThan["default"] : s.message, "".concat(t)),
11297          valid: parseFloat(a.value) >= t
11298        } : {
11299          message: r$d(a.l10n ? s.message || a.l10n.greaterThan.notInclusive : s.message, "".concat(t)),
11300          valid: parseFloat(a.value) > t
11301        };
11302      }
11303    };
11304  }
11305  function o$2() {
11306    return {
11307      validate: function validate(o) {
11308        var t = "function" === typeof o.options.compare ? o.options.compare.call(this) : o.options.compare;
11309        return {
11310          valid: t === "" || o.value === t
11311        };
11312      }
11313    };
11314  }
11315  function a$6() {
11316    return {
11317      validate: function validate(a) {
11318        if (a.value === "") {
11319          return {
11320            valid: true
11321          };
11322        }
11323        var e = Object.assign({}, {
11324          decimalSeparator: ".",
11325          thousandsSeparator: ""
11326        }, a.options);
11327        var t = e.decimalSeparator === "." ? "\\." : e.decimalSeparator;
11328        var r = e.thousandsSeparator === "." ? "\\." : e.thousandsSeparator;
11329        var o = new RegExp("^-?[0-9]{1,3}(".concat(r, "[0-9]{3})*(").concat(t, "[0-9]+)?$"));
11330        var n = new RegExp(r, "g");
11331        var s = "".concat(a.value);
11332        if (!o.test(s)) {
11333          return {
11334            valid: false
11335          };
11336        }
11337        if (r) {
11338          s = s.replace(n, "");
11339        }
11340        if (t) {
11341          s = s.replace(t, ".");
11342        }
11343        var i = parseFloat(s);
11344        return {
11345          valid: !isNaN(i) && isFinite(i) && Math.floor(i) === i
11346        };
11347      }
11348    };
11349  }
11350  function d() {
11351    return {
11352      validate: function validate(d) {
11353        if (d.value === "") {
11354          return {
11355            valid: true
11356          };
11357        }
11358        var a = Object.assign({}, {
11359          ipv4: true,
11360          ipv6: true
11361        }, d.options);
11362        var e = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\/([0-9]|[1-2][0-9]|3[0-2]))?$/;
11363        var s = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*(\/(\d|\d\d|1[0-1]\d|12[0-8]))?$/;
11364        switch (true) {
11365          case a.ipv4 && !a.ipv6:
11366            return {
11367              message: d.l10n ? a.message || d.l10n.ip.ipv4 : a.message,
11368              valid: e.test(d.value)
11369            };
11370          case !a.ipv4 && a.ipv6:
11371            return {
11372              message: d.l10n ? a.message || d.l10n.ip.ipv6 : a.message,
11373              valid: s.test(d.value)
11374            };
11375          case a.ipv4 && a.ipv6:
11376          default:
11377            return {
11378              message: d.l10n ? a.message || d.l10n.ip["default"] : a.message,
11379              valid: e.test(d.value) || s.test(d.value)
11380            };
11381        }
11382      }
11383    };
11384  }
11385  function s$8() {
11386    return {
11387      validate: function validate(s) {
11388        if (s.value === "") {
11389          return {
11390            valid: true
11391          };
11392        }
11393        var a = Object.assign({}, {
11394          inclusive: true,
11395          message: ""
11396        }, s.options);
11397        var l = parseFloat("".concat(a.max).replace(",", "."));
11398        return a.inclusive ? {
11399          message: r$d(s.l10n ? a.message || s.l10n.lessThan["default"] : a.message, "".concat(l)),
11400          valid: parseFloat(s.value) <= l
11401        } : {
11402          message: r$d(s.l10n ? a.message || s.l10n.lessThan.notInclusive : a.message, "".concat(l)),
11403          valid: parseFloat(s.value) < l
11404        };
11405      }
11406    };
11407  }
11408  function t$W() {
11409    return {
11410      validate: function validate(t) {
11411        var n = !!t.options && !!t.options.trim;
11412        var o = t.value;
11413        return {
11414          valid: !n && o !== "" || n && o !== "" && o.trim() !== ""
11415        };
11416      }
11417    };
11418  }
11419  function a$5() {
11420    return {
11421      validate: function validate(a) {
11422        if (a.value === "") {
11423          return {
11424            valid: true
11425          };
11426        }
11427        var e = Object.assign({}, {
11428          decimalSeparator: ".",
11429          thousandsSeparator: ""
11430        }, a.options);
11431        var t = "".concat(a.value);
11432        if (t.substr(0, 1) === e.decimalSeparator) {
11433          t = "0".concat(e.decimalSeparator).concat(t.substr(1));
11434        } else if (t.substr(0, 2) === "-".concat(e.decimalSeparator)) {
11435          t = "-0".concat(e.decimalSeparator).concat(t.substr(2));
11436        }
11437        var r = e.decimalSeparator === "." ? "\\." : e.decimalSeparator;
11438        var s = e.thousandsSeparator === "." ? "\\." : e.thousandsSeparator;
11439        var i = new RegExp("^-?[0-9]{1,3}(".concat(s, "[0-9]{3})*(").concat(r, "[0-9]+)?$"));
11440        var o = new RegExp(s, "g");
11441        if (!i.test(t)) {
11442          return {
11443            valid: false
11444          };
11445        }
11446        if (s) {
11447          t = t.replace(o, "");
11448        }
11449        if (r) {
11450          t = t.replace(r, ".");
11451        }
11452        var l = parseFloat(t);
11453        return {
11454          valid: !isNaN(l) && isFinite(l)
11455        };
11456      }
11457    };
11458  }
11459  function r$c() {
11460    return {
11461      validate: function validate(r) {
11462        return t$$(r.options.promise, [r]);
11463      }
11464    };
11465  }
11466  function e$E() {
11467    return {
11468      validate: function validate(e) {
11469        if (e.value === "") {
11470          return {
11471            valid: true
11472          };
11473        }
11474        var t = e.options.regexp;
11475        if (t instanceof RegExp) {
11476          return {
11477            valid: t.test(e.value)
11478          };
11479        } else {
11480          var n = t.toString();
11481          var o = e.options.flags ? new RegExp(n, e.options.flags) : new RegExp(n);
11482          return {
11483            valid: o.test(e.value)
11484          };
11485        }
11486      }
11487    };
11488  }
11489  var e$D = function e(_e) {
11490    return Array(_e).fill("").map(function (e) {
11491      return Math.random().toString(36).charAt(2);
11492    }).join("");
11493  };
11494  function t$V(t, n) {
11495    var o = function o(e) {
11496      return Object.keys(e).map(function (t) {
11497        return "".concat(encodeURIComponent(t), "=").concat(encodeURIComponent(e[t]));
11498      }).join("&");
11499    };
11500    return new Promise(function (s, a) {
11501      var r = Object.assign({}, {
11502        crossDomain: false,
11503        headers: {},
11504        method: "GET",
11505        params: {}
11506      }, n);
11507      var d = Object.keys(r.params).map(function (e) {
11508        return "".concat(encodeURIComponent(e), "=").concat(encodeURIComponent(r.params[e]));
11509      }).join("&");
11510      var c = t.indexOf("?");
11511      var i = "GET" === r.method ? "".concat(t).concat(c ? "?" : "&").concat(d) : t;
11512      if (r.crossDomain) {
11513        var _t = document.createElement("script");
11514        var _n = "___FormValidationFetch_".concat(e$D(12), "___");
11515        window[_n] = function (e) {
11516          delete window[_n];
11517          s(e);
11518        };
11519        _t.src = "".concat(i).concat(c ? "&" : "?", "callback=").concat(_n);
11520        _t.async = true;
11521        _t.addEventListener("load", function () {
11522          _t.parentNode.removeChild(_t);
11523        });
11524        _t.addEventListener("error", function () {
11525          return a;
11526        });
11527        document.head.appendChild(_t);
11528      } else {
11529        var _e2 = new XMLHttpRequest();
11530        _e2.open(r.method, i);
11531        _e2.setRequestHeader("X-Requested-With", "XMLHttpRequest");
11532        if ("POST" === r.method) {
11533          _e2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
11534        }
11535        Object.keys(r.headers).forEach(function (t) {
11536          return _e2.setRequestHeader(t, r.headers[t]);
11537        });
11538        _e2.addEventListener("load", function () {
11539          s(JSON.parse(this.responseText));
11540        });
11541        _e2.addEventListener("error", function () {
11542          return a;
11543        });
11544        _e2.send(o(r.params));
11545      }
11546    });
11547  }
11548  function a$4() {
11549    var a = {
11550      crossDomain: false,
11551      data: {},
11552      headers: {},
11553      method: "GET",
11554      validKey: "valid"
11555    };
11556    return {
11557      validate: function validate(t) {
11558        if (t.value === "") {
11559          return Promise.resolve({
11560            valid: true
11561          });
11562        }
11563        var s = Object.assign({}, a, t.options);
11564        var r = s.data;
11565        if ("function" === typeof s.data) {
11566          r = s.data.call(this, t);
11567        }
11568        if ("string" === typeof r) {
11569          r = JSON.parse(r);
11570        }
11571        r[s.name || t.field] = t.value;
11572        var o = "function" === typeof s.url ? s.url.call(this, t) : s.url;
11573        return t$V(o, {
11574          crossDomain: s.crossDomain,
11575          headers: s.headers,
11576          method: s.method,
11577          params: r
11578        }).then(function (e) {
11579          return Promise.resolve({
11580            message: e["message"],
11581            meta: e,
11582            valid: "".concat(e[s.validKey]) === "true"
11583          });
11584        })["catch"](function (e) {
11585          return Promise.reject({
11586            valid: false
11587          });
11588        });
11589      }
11590    };
11591  }
11592  function e$C() {
11593    return {
11594      validate: function validate(e) {
11595        if (e.value === "") {
11596          return {
11597            valid: true
11598          };
11599        }
11600        var a = Object.assign({}, {
11601          case: "lower"
11602        }, e.options);
11603        var s = (a["case"] || "lower").toLowerCase();
11604        return {
11605          message: a.message || (e.l10n ? "upper" === s ? e.l10n.stringCase.upper : e.l10n.stringCase["default"] : a.message),
11606          valid: "upper" === s ? e.value === e.value.toUpperCase() : e.value === e.value.toLowerCase()
11607        };
11608      }
11609    };
11610  }
11611  function t$U() {
11612    var t = function t(e) {
11613      var t = e.length;
11614      for (var s = e.length - 1; s >= 0; s--) {
11615        var n = e.charCodeAt(s);
11616        if (n > 127 && n <= 2047) {
11617          t++;
11618        } else if (n > 2047 && n <= 65535) {
11619          t += 2;
11620        }
11621        if (n >= 56320 && n <= 57343) {
11622          s--;
11623        }
11624      }
11625      return "".concat(t);
11626    };
11627    return {
11628      validate: function validate(s) {
11629        var n = Object.assign({}, {
11630          message: "",
11631          trim: false,
11632          utf8Bytes: false
11633        }, s.options);
11634        var a = n.trim === true || "".concat(n.trim) === "true" ? s.value.trim() : s.value;
11635        if (a === "") {
11636          return {
11637            valid: true
11638          };
11639        }
11640        var r = n.min ? "".concat(n.min) : "";
11641        var l = n.max ? "".concat(n.max) : "";
11642        var i = n.utf8Bytes ? t(a) : a.length;
11643        var g = true;
11644        var m = s.l10n ? n.message || s.l10n.stringLength["default"] : n.message;
11645        if (r && i < parseInt(r, 10) || l && i > parseInt(l, 10)) {
11646          g = false;
11647        }
11648        switch (true) {
11649          case !!r && !!l:
11650            m = r$d(s.l10n ? n.message || s.l10n.stringLength.between : n.message, [r, l]);
11651            break;
11652          case !!r:
11653            m = r$d(s.l10n ? n.message || s.l10n.stringLength.more : n.message, "".concat(parseInt(r, 10)));
11654            break;
11655          case !!l:
11656            m = r$d(s.l10n ? n.message || s.l10n.stringLength.less : n.message, "".concat(parseInt(l, 10)));
11657            break;
11658        }
11659        return {
11660          message: m,
11661          valid: g
11662        };
11663      }
11664    };
11665  }
11666  function t$T() {
11667    var t = {
11668      allowEmptyProtocol: false,
11669      allowLocal: false,
11670      protocol: "http, https, ftp"
11671    };
11672    return {
11673      validate: function validate(o) {
11674        if (o.value === "") {
11675          return {
11676            valid: true
11677          };
11678        }
11679        var a = Object.assign({}, t, o.options);
11680        var l = a.allowLocal === true || "".concat(a.allowLocal) === "true";
11681        var f = a.allowEmptyProtocol === true || "".concat(a.allowEmptyProtocol) === "true";
11682        var u = a.protocol.split(",").join("|").replace(/\s/g, "");
11683        var e = new RegExp("^" + "(?:(?:" + u + ")://)" + (f ? "?" : "") + "(?:\\S+(?::\\S*)?@)?" + "(?:" + (l ? "" : "(?!(?:10|127)(?:\\.\\d{1,3}){3})" + "(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})" + "(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})") + "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])" + "(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}" + "(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))" + "|" + "(?:(?:[a-z\\u00a1-\\uffff0-9]-?)*[a-z\\u00a1-\\uffff0-9]+)" + "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-?)*[a-z\\u00a1-\\uffff0-9])*" + "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))" + (l ? "?" : "") + ")" + "(?::\\d{2,5})?" + "(?:/[^\\s]*)?$", "i");
11684        return {
11685          valid: e.test(o.value)
11686        };
11687      }
11688    };
11689  }
11690  function a$3() {
11691    return {
11692      validate: function validate(a) {
11693        return {
11694          valid: a.value === "" || /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$/.test(a.value)
11695        };
11696      }
11697    };
11698  }
11699  function a$2() {
11700    return {
11701      validate: function validate(a) {
11702        return {
11703          valid: a.value === "" || /^[a-zA-Z]{6}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?$/.test(a.value)
11704        };
11705      }
11706    };
11707  }
11708  function e$B() {
11709    var e = ["hex", "rgb", "rgba", "hsl", "hsla", "keyword"];
11710    var a = ["aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "green", "greenyellow", "grey", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen"];
11711    var r = function r(e) {
11712      return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e);
11713    };
11714    var l = function l(e) {
11715      return /^hsl\((\s*(-?\d+)\s*,)(\s*(\b(0?\d{1,2}|100)\b%)\s*,)(\s*(\b(0?\d{1,2}|100)\b%)\s*)\)$/.test(e);
11716    };
11717    var s = function s(e) {
11718      return /^hsla\((\s*(-?\d+)\s*,)(\s*(\b(0?\d{1,2}|100)\b%)\s*,){2}(\s*(0?(\.\d+)?|1(\.0+)?)\s*)\)$/.test(e);
11719    };
11720    var t = function t(e) {
11721      return a.indexOf(e) >= 0;
11722    };
11723    var i = function i(e) {
11724      return /^rgb\((\s*(\b([01]?\d{1,2}|2[0-4]\d|25[0-5])\b)\s*,){2}(\s*(\b([01]?\d{1,2}|2[0-4]\d|25[0-5])\b)\s*)\)$/.test(e) || /^rgb\((\s*(\b(0?\d{1,2}|100)\b%)\s*,){2}(\s*(\b(0?\d{1,2}|100)\b%)\s*)\)$/.test(e);
11725    };
11726    var o = function o(e) {
11727      return /^rgba\((\s*(\b([01]?\d{1,2}|2[0-4]\d|25[0-5])\b)\s*,){3}(\s*(0?(\.\d+)?|1(\.0+)?)\s*)\)$/.test(e) || /^rgba\((\s*(\b(0?\d{1,2}|100)\b%)\s*,){3}(\s*(0?(\.\d+)?|1(\.0+)?)\s*)\)$/.test(e);
11728    };
11729    return {
11730      validate: function validate(a) {
11731        if (a.value === "") {
11732          return {
11733            valid: true
11734          };
11735        }
11736        var n = typeof a.options.type === "string" ? a.options.type.toString().replace(/s/g, "").split(",") : a.options.type || e;
11737        var _iterator = _createForOfIteratorHelper(n),
11738          _step;
11739        try {
11740          for (_iterator.s();
11740 !(_step = _iterator.n()).done;) {
11741            var d = _step.value;
11742            var _n = d.toLowerCase();
11743            if (e.indexOf(_n) === -1) {
11744              continue;
11745            }
11746            var g = true;
11747            switch (_n) {
11748              case "hex":
11749                g = r(a.value);
11750                break;
11751              case "hsl":
11752                g = l(a.value);
11753                break;
11754              case "hsla":
11755                g = s(a.value);
11756                break;
11757              case "keyword":
11758                g = t(a.value);
11759                break;
11760              case "rgb":
11761                g = i(a.value);
11762                break;
11763              case "rgba":
11764                g = o(a.value);
11765                break;
11766            }
11767            if (g) {
11768              return {
11769                valid: true
11770              };
11771            }
11772          }
11773        } catch (err) {
11774          _iterator.e(err);
11775        } finally {
11776          _iterator.f();
11777        }
11778        return {
11779          valid: false
11780        };
11781      }
11782    };
11783  }
11784  function t$S() {
11785    return {
11786      validate: function validate(t) {
11787        if (t.value === "") {
11788          return {
11789            valid: true
11790          };
11791        }
11792        var e = t.value.toUpperCase();
11793        if (!/^[0123456789ABCDEFGHJKLMNPQRSTUVWXYZ*@#]{9}$/.test(e)) {
11794          return {
11795            valid: false
11796          };
11797        }
11798        var r = e.split("");
11799        var a = r.pop();
11800        var n = r.map(function (t) {
11801          var e = t.charCodeAt(0);
11802          switch (true) {
11803            case t === "*":
11804              return 36;
11805            case t === "@":
11806              return 37;
11807            case t === "#":
11808              return 38;
11809            case e >= "A".charCodeAt(0) && e <= "Z".charCodeAt(0):
11810              return e - "A".charCodeAt(0) + 10;
11811            default:
11812              return parseInt(t, 10);
11813          }
11814        });
11815        var c = n.map(function (t, e) {
11816          var r = e % 2 === 0 ? t : 2 * t;
11817          return Math.floor(r / 10) + r % 10;
11818        }).reduce(function (t, e) {
11819          return t + e;
11820        }, 0);
11821        var o = (10 - c % 10) % 10;
11822        return {
11823          valid: a === "".concat(o)
11824        };
11825      }
11826    };
11827  }
11828  function e$A() {
11829    return {
11830      validate: function validate(e) {
11831        if (e.value === "") {
11832          return {
11833            valid: true
11834          };
11835        }
11836        if (!/^(\d{8}|\d{12}|\d{13}|\d{14})$/.test(e.value)) {
11837          return {
11838            valid: false
11839          };
11840        }
11841        var t = e.value.length;
11842        var a = 0;
11843        var l = t === 8 ? [3, 1] : [1, 3];
11844        for (var r = 0; r < t - 1; r++) {
11845          a += parseInt(e.value.charAt(r), 10) * l[r % 2];
11846        }
11847        a = (10 - a % 10) % 10;
11848        return {
11849          valid: "".concat(a) === e.value.charAt(t - 1)
11850        };
11851      }
11852    };
11853  }
11854  function e$z() {
11855    var e = {
11856      ANDOVER: ["10", "12"],
11857      ATLANTA: ["60", "67"],
11858      AUSTIN: ["50", "53"],
11859      BROOKHAVEN: ["01", "02", "03", "04", "05", "06", "11", "13", "14", "16", "21", "22", "23", "25", "34", "51", "52", "54", "55", "56", "57", "58", "59", "65"],
11860      CINCINNATI: ["30", "32", "35", "36", "37", "38", "61"],
11861      FRESNO: ["15", "24"],
11862      INTERNET: ["20", "26", "27", "45", "46", "47"],
11863      KANSAS_CITY: ["40", "44"],
11864      MEMPHIS: ["94", "95"],
11865      OGDEN: ["80", "90"],
11866      PHILADELPHIA: ["33", "39", "41", "42", "43", "48", "62", "63", "64", "66", "68", "71", "72", "73", "74", "75", "76", "77", "81", "82", "83", "84", "85", "86", "87", "88", "91", "92", "93", "98", "99"],
11867      SMALL_BUSINESS_ADMINISTRATION: ["31"]
11868    };
11869    return {
11870      validate: function validate(t) {
11871        if (t.value === "") {
11872          return {
11873            meta: null,
11874            valid: true
11875          };
11876        }
11877        if (!/^[0-9]{2}-?[0-9]{7}$/.test(t.value)) {
11878          return {
11879            meta: null,
11880            valid: false
11881          };
11882        }
11883        var a = "".concat(t.value.substr(0, 2));
11884        for (var _t in e) {
11885          if (e[_t].indexOf(a) !== -1) {
11886            return {
11887              meta: {
11888                campus: _t
11889              },
11890              valid: true
11891            };
11892          }
11893        }
11894        return {
11895          meta: null,
11896          valid: false
11897        };
11898      }
11899    };
11900  }
11901  function r$b() {
11902    return {
11903      validate: function validate(r) {
11904        if (r.value === "") {
11905          return {
11906            valid: true
11907          };
11908        }
11909        var t = r.value.toUpperCase();
11910        if (!/^[GRID:]*([0-9A-Z]{2})[-\s]*([0-9A-Z]{5})[-\s]*([0-9A-Z]{10})[-\s]*([0-9A-Z]{1})$/g.test(t)) {
11911          return {
11912            valid: false
11913          };
11914        }
11915        t = t.replace(/\s/g, "").replace(/-/g, "");
11916        if ("GRID:" === t.substr(0, 5)) {
11917          t = t.substr(5);
11918        }
11919        return {
11920          valid: t$13(t)
11921        };
11922      }
11923    };
11924  }
11925  function e$y() {
11926    return {
11927      validate: function validate(e) {
11928        return {
11929          valid: e.value === "" || /^[0-9a-fA-F]+$/.test(e.value)
11930        };
11931      }
11932    };
11933  }
11934  function Z() {
11935    var Z = {
11936      AD: "AD[0-9]{2}[0-9]{4}[0-9]{4}[A-Z0-9]{12}",
11937      AE: "AE[0-9]{2}[0-9]{3}[0-9]{16}",
11938      AL: "AL[0-9]{2}[0-9]{8}[A-Z0-9]{16}",
11939      AO: "AO[0-9]{2}[0-9]{21}",
11940      AT: "AT[0-9]{2}[0-9]{5}[0-9]{11}",
11941      AZ: "AZ[0-9]{2}[A-Z]{4}[A-Z0-9]{20}",
11942      BA: "BA[0-9]{2}[0-9]{3}[0-9]{3}[0-9]{8}[0-9]{2}",
11943      BE: "BE[0-9]{2}[0-9]{3}[0-9]{7}
11943[0-9]{2}",
11944      BF: "BF[0-9]{2}[0-9]{23}",
11945      BG: "BG[0-9]{2}[A-Z]{4}[0-9]{4}[0-9]{2}[A-Z0-9]{8}",
11946      BH: "BH[0-9]{2}[A-Z]{4}[A-Z0-9]{14}",
11947      BI: "BI[0-9]{2}[0-9]{12}",
11948      BJ: "BJ[0-9]{2}[A-Z]{1}[0-9]{23}",
11949      BR: "BR[0-9]{2}[0-9]{8}[0-9]{5}[0-9]{10}[A-Z][A-Z0-9]",
11950      CH: "CH[0-9]{2}[0-9]{5}[A-Z0-9]{12}",
11951      CI: "CI[0-9]{2}[A-Z]{1}[0-9]{23}",
11952      CM: "CM[0-9]{2}[0-9]{23}",
11953      CR: "CR[0-9]{2}[0-9][0-9]{3}[0-9]{14}",
11954      CV: "CV[0-9]{2}[0-9]{21}",
11955      CY: "CY[0-9]{2}[0-9]{3}[0-9]{5}[A-Z0-9]{16}",
11956      CZ: "CZ[0-9]{2}[0-9]{20}",
11957      DE: "DE[0-9]{2}[0-9]{8}[0-9]{10}",
11958      DK: "DK[0-9]{2}[0-9]{14}",
11959      DO: "DO[0-9]{2}[A-Z0-9]{4}[0-9]{20}",
11960      DZ: "DZ[0-9]{2}[0-9]{20}",
11961      EE: "EE[0-9]{2}[0-9]{2}[0-9]{2}[0-9]{11}[0-9]{1}",
11962      ES: "ES[0-9]{2}[0-9]{4}[0-9]{4}[0-9]{1}[0-9]{1}[0-9]{10}",
11963      FI: "FI[0-9]{2}[0-9]{6}[0-9]{7}[0-9]{1}",
11964      FO: "FO[0-9]{2}[0-9]{4}[0-9]{9}[0-9]{1}",
11965      FR: "FR[0-9]{2}[0-9]{5}[0-9]{5}[A-Z0-9]{11}[0-9]{2}",
11966      GB: "GB[0-9]{2}[A-Z]{4}[0-9]{6}[0-9]{8}",
11967      GE: "GE[0-9]{2}[A-Z]{2}[0-9]{16}",
11968      GI: "GI[0-9]{2}[A-Z]{4}[A-Z0-9]{15}",
11969      GL: "GL[0-9]{2}[0-9]{4}[0-9]{9}[0-9]{1}",
11970      GR: "GR[0-9]{2}[0-9]{3}[0-9]{4}[A-Z0-9]{16}",
11971      GT: "GT[0-9]{2}[A-Z0-9]{4}[A-Z0-9]{20}",
11972      HR: "HR[0-9]{2}[0-9]{7}[0-9]{10}",
11973      HU: "HU[0-9]{2}[0-9]{3}[0-9]{4}[0-9]{1}[0-9]{15}[0-9]{1}",
11974      IE: "IE[0-9]{2}[A-Z]{4}[0-9]{6}[0-9]{8}",
11975      IL: "IL[0-9]{2}[0-9]{3}[0-9]{3}[0-9]{13}",
11976      IR: "IR[0-9]{2}[0-9]{22}",
11977      IS: "IS[0-9]{2}[0-9]{4}[0-9]{2}[0-9]{6}[0-9]{10}",
11978      IT: "IT[0-9]{2}[A-Z]{1}[0-9]{5}[0-9]{5}[A-Z0-9]{12}",
11979      JO: "JO[0-9]{2}[A-Z]{4}[0-9]{4}[0]{8}[A-Z0-9]{10}",
11980      KW: "KW[0-9]{2}[A-Z]{4}[0-9]{22}",
11981      KZ: "KZ[0-9]{2}[0-9]{3}[A-Z0-9]{13}",
11982      LB: "LB[0-9]{2}[0-9]{4}[A-Z0-9]{20}",
11983      LI: "LI[0-9]{2}[0-9]{5}[A-Z0-9]{12}",
11984      LT: "LT[0-9]{2}[0-9]{5}[0-9]{11}",
11985      LU: "LU[0-9]{2}[0-9]{3}[A-Z0-9]{13}",
11986      LV: "LV[0-9]{2}[A-Z]{4}[A-Z0-9]{13}",
11987      MC: "MC[0-9]{2}[0-9]{5}[0-9]{5}[A-Z0-9]{11}[0-9]{2}",
11988      MD: "MD[0-9]{2}[A-Z0-9]{20}",
11989      ME: "ME[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",
11990      MG: "MG[0-9]{2}[0-9]{23}",
11991      MK: "MK[0-9]{2}[0-9]{3}[A-Z0-9]{10}[0-9]{2}",
11992      ML: "ML[0-9]{2}[A-Z]{1}[0-9]{23}",
11993      MR: "MR13[0-9]{5}[0-9]{5}[0-9]{11}[0-9]{2}",
11994      MT: "MT[0-9]{2}[A-Z]{4}[0-9]{5}[A-Z0-9]{18}",
11995      MU: "MU[0-9]{2}[A-Z]{4}[0-9]{2}[0-9]{2}[0-9]{12}[0-9]{3}[A-Z]{3}",
11996      MZ: "MZ[0-9]{2}[0-9]{21}",
11997      NL: "NL[0-9]{2}[A-Z]{4}[0-9]{10}",
11998      NO: "NO[0-9]{2}[0-9]{4}[0-9]{6}[0-9]{1}",
11999      PK: "PK[0-9]{2}[A-Z]{4}[A-Z0-9]{16}",
12000      PL: "PL[0-9]{2}[0-9]{8}[0-9]{16}",
12001      PS: "PS[0-9]{2}[A-Z]{4}[A-Z0-9]{21}",
12002      PT: "PT[0-9]{2}[0-9]{4}[0-9]{4}[0-9]{11}[0-9]{2}",
12003      QA: "QA[0-9]{2}[A-Z]{4}[A-Z0-9]{21}",
12004      RO: "RO[0-9]{2}[A-Z]{4}[A-Z0-9]{16}",
12005      RS: "RS[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",
12006      SA: "SA[0-9]{2}[0-9]{2}[A-Z0-9]{18}",
12007      SE: "SE[0-9]{2}[0-9]{3}[0-9]{16}[0-9]{1}",
12008      SI: "SI[0-9]{2}[0-9]{5}[0-9]{8}[0-9]{2}",
12009      SK: "SK[0-9]{2}[0-9]{4}[0-9]{6}[0-9]{10}",
12010      SM: "SM[0-9]{2}[A-Z]{1}[0-9]{5}[0-9]{5}[A-Z0-9]{12}",
12011      SN: "SN[0-9]{2}[A-Z]{1}[0-9]{23}",
12012      TL: "TL38[0-9]{3}[0-9]{14}[0-9]{2}",
12013      TN: "TN59[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",
12014      TR: "TR[0-9]{2}[0-9]{5}[A-Z0-9]{1}[A-Z0-9]{16}",
12015      VG: "VG[0-9]{2}[A-Z]{4}[0-9]{16}",
12016      XK: "XK[0-9]{2}[0-9]{4}[0-9]{10}[0-9]{2}"
12017    };
12018    var e = ["AT", "BE", "BG", "CH", "CY", "CZ", "DE", "DK", "EE", "ES", "FI", "FR", "GB", "GI", "GR", "HR", "HU", "IE", "IS", "IT", "LI", "LT", "LU", "LV", "MC", "MT", "NL", "NO", "PL", "PT", "RO", "SE", "SI", "SK", "SM"];
12019    return {
12020      validate: function validate(s) {
12021        if (s.value === "") {
12022          return {
12023            valid: true
12024          };
12025        }
12026        var t = Object.assign({}, {
12027          message: ""
12028        }, s.options);
12029        var a = s.value.replace(/[^a-zA-Z0-9]/g, "").toUpperCase();
12030        var r = t.country || a.substr(0, 2);
12031        if (!Z[r]) {
12032          return {
12033            message: t.message,
12034            valid: false
12035          };
12036        }
12037        if (t.sepa !== undefined) {
12038          var _A = e.indexOf(r) !== -1;
12039          if ((t.sepa === "true" || t.sepa === true) && !_A || (t.sepa === "fal
12039se" || t.sepa === false) && _A) {
12040            return {
12041              message: t.message,
12042              valid: false
12043            };
12044          }
12045        }
12046        var n = r$d(s.l10n ? t.message || s.l10n.iban.country : t.message, s.l10n ? s.l10n.iban.countries[r] : r);
12047        if (!new RegExp("^".concat(Z[r], "$")).test(s.value)) {
12048          return {
12049            message: n,
12050            valid: false
12051          };
12052        }
12053        a = "".concat(a.substr(4)).concat(a.substr(0, 4));
12054        a = a.split("").map(function (A) {
12055          var Z = A.charCodeAt(0);
12056          return Z >= "A".charCodeAt(0) && Z <= "Z".charCodeAt(0) ? Z - "A".charCodeAt(0) + 10 : A;
12057        }).join("");
12058        var I = parseInt(a.substr(0, 1), 10);
12059        var L = a.length;
12060        for (var _A2 = 1; _A2 < L; ++_A2) {
12061          I = (I * 10 + parseInt(a.substr(_A2, 1), 10)) % 97;
12062        }
12063        return {
12064          message: n,
12065          valid: I === 1
12066        };
12067      }
12068    };
12069  }
12070  function t$R(t) {
12071    var e = t.replace(/\./g, "");
12072    return {
12073      meta: {},
12074      valid: /^\d{7,8}$/.test(e)
12075    };
12076  }
12077  function t$Q(t, r) {
12078    if (!/^\d{13}$/.test(t)) {
12079      return false;
12080    }
12081    var e = parseInt(t.substr(0, 2), 10);
12082    var s = parseInt(t.substr(2, 2), 10);
12083    var n = parseInt(t.substr(7, 2), 10);
12084    var a = parseInt(t.substr(12, 1), 10);
12085    if (e > 31 || s > 12) {
12086      return false;
12087    }
12088    var u = 0;
12089    for (var _r = 0; _r < 6; _r++) {
12090      u += (7 - _r) * (parseInt(t.charAt(_r), 10) + parseInt(t.charAt(_r + 6), 10));
12091    }
12092    u = 11 - u % 11;
12093    if (u === 10 || u === 11) {
12094      u = 0;
12095    }
12096    if (u !== a) {
12097      return false;
12098    }
12099    switch (r.toUpperCase()) {
12100      case "BA":
12101        return 10 <= n && n <= 19;
12102      case "MK":
12103        return 41 <= n && n <= 49;
12104      case "ME":
12105        return 20 <= n && n <= 29;
12106      case "RS":
12107        return 70 <= n && n <= 99;
12108      case "SI":
12109        return 50 <= n && n <= 59;
12110      default:
12111        return true;
12112    }
12113  }
12114  function r$a(r) {
12115    return {
12116      meta: {},
12117      valid: t$Q(r, "BA")
12118    };
12119  }
12120  function e$x(e) {
12121    if (!/^\d{10}$/.test(e) && !/^\d{6}\s\d{3}\s\d{1}$/.test(e)) {
12122      return {
12123        meta: {},
12124        valid: false
12125      };
12126    }
12127    var s = e.replace(/\s/g, "");
12128    var r = parseInt(s.substr(0, 2), 10) + 1900;
12129    var a = parseInt(s.substr(2, 2), 10);
12130    var l = parseInt(s.substr(4, 2), 10);
12131    if (a > 40) {
12132      r += 100;
12133      a -= 40;
12134    } else if (a > 20) {
12135      r -= 100;
12136      a -= 20;
12137    }
12138    if (!t$Y(r, a, l)) {
12139      return {
12140        meta: {},
12141        valid: false
12142      };
12143    }
12144    var i = 0;
12145    var n = [2, 4, 8, 5, 10, 9, 7, 3, 6];
12146    for (var _t = 0; _t < 9; _t++) {
12147      i += parseInt(s.charAt(_t), 10) * n[_t];
12148    }
12149    i = i % 11 % 10;
12150    return {
12151      meta: {},
12152      valid: "".concat(i) === s.substr(9, 1)
12153    };
12154  }
12155  function t$P(t) {
12156    var e = t.replace(/\D/g, "");
12157    if (!/^\d{11}$/.test(e) || /^1{11}|2{11}|3{11}|4{11}|5{11}|6{11}|7{11}|8{11}|9{11}|0{11}$/.test(e)) {
12158      return {
12159        meta: {},
12160        valid: false
12161      };
12162    }
12163    var a = 0;
12164    var r;
12165    for (r = 0; r < 9; r++) {
12166      a += (10 - r) * parseInt(e.charAt(r), 10);
12167    }
12168    a = 11 - a % 11;
12169    if (a === 10 || a === 11) {
12170      a = 0;
12171    }
12172    if ("".concat(a) !== e.charAt(9)) {
12173      return {
12174        meta: {},
12175        valid: false
12176      };
12177    }
12178    var f = 0;
12179    for (r = 0; r < 10; r++) {
12180      f += (11 - r) * parseInt(e.charAt(r), 10);
12181    }
12182    f = 11 - f % 11;
12183    if (f === 10 || f === 11) {
12184      f = 0;
12185    }
12186    return {
12187      meta: {},
12188      valid: "".concat(f) === e.charAt(10)
12189    };
12190  }
12191  function t$O(t) {
12192    if (!/^756[.]{0,1}[0-9]{4}[.]{0,1}[0-9]{4}[.]{0,1}[0-9]{2}$/.test(t)) {
12193      return {
12194        meta: {},
12195        valid: false
12196      };
12197    }
12198    var e = t.replace(/\D/g, "").substr(3);
12199    var r = e.length;
12200    var a = r === 8 ? [3, 1] : [1, 3];
12201    var n = 0;
12202    for (var _t = 0; _t < r - 1; _t++) {
12203      n += parseInt(e.charAt(_t), 10) * a[_t % 2];
12204    }
12205    n = 10 - n % 10;
12206    return {
12207      meta: {},
12208      valid: "".concat(n) === e.charAt(r - 1)
12209    };
12210  }
12211  function e$w(e) {
12212    if (!/^\d{7,8}[-]{0,1}[0-9K]$/i.test(e)) {
12213      return {
12214        meta: {},
12215        valid: false
12216      };
12217    }
12218    var t = e.replace(/-/g, "");
12219    while (t.length < 9) {
12220      t = "0".concat(t);
12221    }
12222    var l = [3, 2, 7, 6, 5, 4, 3, 2];
12223    var a = 0;
12224    for (var _e = 0; _e < 8; _e++) {
12225      a += parseInt(t.charAt(_e), 10) * l[_e];
12226    }
12227    a = 11 - a % 11;
12228    var r = "".concat(a);
12229    if (a === 11) {
12230      r = "0";
12231    } else if (a === 10) {
12232      r = "K";
12233    }
12234    return {
12235      meta: {},
12236      valid: r === t.charAt(8).toUpperCase()
12237    };
12238  }
12239  function r$9(r) {
12240    var s = r.trim();
12241    if (!/^\d{15}$/.test(s) && !/^\d{17}[\dXx]{1}$/.test(s)) {
12242      return {
12243        meta: {},
12244        valid: false
12245      };
12246    }
12247    var e = {
12248      11: {
12249        0: [0],
12250        1: [[0, 9], [11, 17]],
12251        2: [0, 28, 29]
12252      },
12253      12: {
12254        0: [0],
12255        1: [[0, 16]],
12256        2: [0, 21, 23, 25]
12257      },
12258      13: {
12259        0: [0],
12260        1: [[0, 5], 7, 8, 21, [23, 33], [81, 85]],
12261        2: [[0, 5], [7, 9], [23, 25], 27, 29, 30, 81, 83],
12262        3: [[0, 4], [21, 24]],
12263        4: [[0, 4], 6, 21, [23, 35], 81],
12264        5: [[0, 3], [21, 35], 81, 82],
12265        6: [[0, 4], [21, 38], [81, 84]],
12266        7: [[0, 3], 5, 6, [21, 33]],
12267        8: [[0, 4], [21, 28]],
12268        9: [[0, 3], [21, 30], [81, 84]],
12269        10: [[0, 3], [22, 26], 28, 81, 82],
12270        11: [[0, 2], [21, 28], 81, 82]
12271      },
12272      14: {
12273        0: [0],
12274        1: [0, 1, [5, 10], [21, 23], 81],
12275        2: [[0, 3], 11, 12, [21, 27]],
12276        3: [[0, 3], 11, 21, 22],
12277        4: [[0, 2], 11, 21, [23, 31], 81],
12278        5: [[0, 2], 21, 22, 24, 25, 81],
12279        6: [[0, 3], [21, 24]],
12280        7: [[0, 2], [21, 29], 81],
12281        8: [[0, 2], [21, 30], 81, 82],
12282        9: [[0, 2], [21, 32], 81],
12283        10: [[0, 2], [21, 34], 81, 82],
12284        11: [[0, 2], [21, 30], 81, 82],
12285        23: [[0, 3], 22, 23, [25, 30], 32, 33]
12286      },
12287      15: {
12288        0: [0],
12289        1: [[0, 5], [21, 25]],
12290        2: [[0, 7], [21, 23]],
12291        3: [[0, 4]],
12292        4: [[0, 4], [21, 26], [28, 30]],
12293        5: [[0, 2], [21, 26], 81],
12294        6: [[0, 2], [21, 27]],
12295        7: [[0, 3], [21, 27], [81, 85]],
12296        8: [[0, 2], [21, 26]],
12297        9: [[0, 2], [21, 29], 81],
12298        22: [[0, 2], [21, 24]],
12299        25: [[0, 2], [22, 31]],
12300        26: [[0, 2], [24, 27], [29, 32], 34],
12301        28: [0, 1, [22, 27]],
12302        29: [0, [21, 23]]
12303      },
12304      21: {
12305        0: [0],
12306        1: [[0, 6], [11, 14], [22, 24], 81],
12307        2: [[0, 4], [11, 13], 24, [81, 83]],
12308        3: [[0, 4], 11, 21, 23, 81],
12309        4: [[0, 4], 11, [21, 23]],
12310        5: [[0, 5], 21, 22],
12311        6: [[0, 4], 24, 81, 82],
12312        7: [[0, 3], 11, 26, 27, 81, 82],
12313        8: [[0, 4], 11, 81, 82],
12314        9: [[0, 5], 11, 21, 22],
12315        10: [[0, 5], 11, 21, 81],
12316        11: [[0, 3], 21, 22],
12317        12: [[0, 2], 4, 21, 23, 24, 81, 82],
12318        13: [[0, 3], 21, 22, 24, 81, 82],
12319        14: [[0, 4], 21, 22, 81]
12320      },
12321      22: {
12322        0: [0],
12323        1: [[0, 6], 12, 22, [81, 83]],
12324        2: [[0, 4], 11, 21, [81, 84]],
12325        3: [[0, 3], 22, 23, 81, 82],
12326        4: [[0, 3], 21, 22],
12327        5: [[0, 3], 21, 23, 24, 81, 82],
12328        6: [[0, 2], 4, 5, [21, 23], 25, 81],
12329        7: [[0, 2], [21, 24], 81],
12330        8: [[0, 2], 21, 22, 81, 82],
12331        24: [[0, 6], 24, 26]
12332      },
12333      23: {
12334        0: [0],
12335        1: [[0, 12], 21, [23, 29], [81, 84]],
12336        2: [[0, 8], 21, [23, 25], 27, [29, 31], 81],
12337        3: [[0, 7], 21, 81, 82],
12338        4: [[0, 7], 21, 22],
12339        5: [[0, 3], 5, 6, [21, 24]],
12340        6: [[0, 6], [21, 24]],
12341        7: [[0, 16], 22, 81],
12342        8: [[0, 5], 11, 22, 26, 28, 33, 81, 82],
12343        9: [[0, 4], 21],
12344        10: [[0, 5], 24, 25, 81, [83, 85]],
12345        11: [[0, 2], 21, 23, 24, 81, 82],
12346        12: [[0, 2], [21, 26], [81, 83]],
12347        27: [[0, 4], [21, 23]]
12348      },
12349      31: {
12350        0: [0],
12351        1: [0, 1, [3, 10], [12, 20]],
12352        2: [0, 30]
12353      },
12354      32: {
12355        0: [0],
12356        1: [[0, 7], 11, [13, 18], 24, 25],
12357        2: [[0, 6], 11, 81, 82],
12358        3: [[0, 5], 11, 12, [21, 24], 81, 82],
12359        4: [[0, 2], 4, 5, 11, 12, 81, 82],
12360        5: [[0, 9], [81, 85]],
12361        6: [[0, 2], 11, 12, 21, 23, [81, 84]],
12362        7: [0, 1, 3, 5, 6, [21, 24]],
12363        8: [[0, 4], 11, 26, [29, 31]],
12364        9: [[0, 3], [21, 25], 28, 81, 82],
12365        10: [[0, 3], 11, 12, 23, 81, 84, 88],
12366        11: [[0, 2], 11, 12, [81, 83]],
12367        12: [[0, 4], [81, 84]],
12368        13: [[0, 2], 11, [21, 24]]
12369      },
12370      33: {
12371        0: [0],
12372        1: [[0, 6], [8, 10], 22, 27, 82, 83, 85],
12373        2: [0, 1, [3, 6], 11, 12, 25, 26, [81, 83]],
12374        3: [[0, 4], 22, 24, [26, 29], 81, 82],
12375        4: [[0, 2], 11, 21, 24, [81, 83]],
12376        5: [[0, 3], [21, 23]],
12377        6: [[0, 2], 21, 24, [81, 83]],
12378        7: [[0, 3], 23, 26, 27, [81, 84]],
12379        8: [[0, 3], 22, 24, 25, 81],
12380        9: [[0, 3], 21, 22],
12381        10: [[0, 4], [21, 24], 81, 82],
12382        11: [[0, 2], [21, 27], 81]
12383      },
12384      34: {
12385        0: [0],
12386        1: [[0, 4], 11, [21, 24], 81],
12387        2: [[0, 4], 7, 8, [21, 23], 25],
12388        3: [[0, 4], 11, [21, 23]],
12389        4: [[0, 6], 21],
12390        5: [[0, 4], 6, [21, 23]],
12391        6: [[0, 4], 21],
12392        7: [[0, 3], 11, 21],
12393        8: [[0, 3], 11, [22, 28], 81],
12394        10: [[0, 4], [21, 24]],
12395        11: [[0, 3], 22, [24, 26], 81, 82],
12396        12: [[0, 4], 21, 22, 25, 26, 82],
12397        13: [[0, 2], [21, 24]],
12398        14: [[0, 2], [21, 24]],
12399        15: [[0, 3], [21, 25]],
12400        16: [[0, 2], [21, 23]],
12401        17: [[0, 2], [21, 23]],
12402        18: [[0, 2], [21, 25], 81]
12403      },
12404      35: {
12405        0: [0],
12406        1: [[0, 5], 11, [21, 25], 28, 81, 82],
12407        2: [[0, 6], [11, 13]],
12408        3: [[0, 5], 22],
12409        4: [[0, 3], 21, [23, 30], 81],
12410        5: [[0, 5], 21, [24, 27], [81, 83]],
12411        6: [[0, 3], [22, 29], 81],
12412        7: [[0, 2], [21, 25], [81, 84]],
12413        8: [[0, 2], [21, 25], 81],
12414        9: [[0, 2], [21, 26], 81, 82]
12415      },
12416      36: {
12417        0: [0],
12418        1: [[0, 5], 11, [21, 24]],
12419        2: [[0, 3], 22, 81],
12420        3: [[0, 2], 13, [21, 23]],
12421        4: [[0, 3], 21, [23, 30], 81, 82],
12422        5: [[0, 2], 21],
12423        6: [[0, 2], 22, 81],
12424        7: [[0, 2], [21, 35], 81, 82],
12425        8: [[0, 3], [21, 30], 81],
12426        9: [[0, 2], [21, 26], [81, 83]],
12427        10: [[0, 2], [21, 30]],
12428        11: [[0, 2], [21, 30], 81]
12429      },
12430      37: {
12431        0: [0],
12432        1: [[0, 5], 12, 13, [24, 26], 81],
12433        2: [[0, 3], 5, [11, 14], [81, 85]],
12434        3: [[0, 6], [21, 23]],
12435        4: [[0, 6], 81],
12436        5: [[0, 3], [21, 23]],
12437        6: [[0, 2], [11, 13], 34, [81, 87]],
12438        7: [[0, 5], 24, 25, [81, 86]],
12439        8: [[0, 2], 11, [26, 32], [81, 83]],
12440        9: [[0, 3], 11, 21, 23, 82, 83],
12441        10: [[0, 2], [81, 83]],
12442        11: [[0, 3], 21, 22],
12443        12: [[0, 3]],
12444        13: [[0, 2], 11, 12, [21, 29]],
12445        14: [[0, 2], [21, 28], 81, 82],
12446        15: [[0, 2], [21, 26], 81],
12447        16: [[0, 2], [21, 26]],
12448        17: [[0, 2], [21, 28]]
12449      },
12450      41: {
12451        0: [0],
12452        1: [[0, 6], 8, 22, [81, 85]],
12453        2: [[0, 5], 11, [21, 25]],
12454        3: [[0, 7], 11, [22, 29], 81],
12455        4: [[0, 4], 11, [21, 23], 25, 81, 82],
12456        5: [[0, 3], 5, 6, 22, 23, 26, 27, 81],
12457        6: [[0, 3], 11, 21, 22],
12458        7: [[0, 4], 11, 21, [24, 28], 81, 82],
12459        8: [[0, 4], 11, [21, 23], 25, [81, 83]],
12460        9: [[0, 2], 22, 23, [26, 28]],
12461        10: [[0, 2], [23, 25], 81, 82],
12462        11: [[0, 4], [21, 23]],
12463        12: [[0, 2], 21, 22, 24, 81, 82],
12464        13: [[0, 3], [21, 30], 81],
12465        14: [[0, 3], [21, 26], 81],
12466        15: [[0, 3], [21, 28]],
12467        16: [[0, 2], [21, 28], 81],
12468        17: [[0, 2], [21, 29]],
12469        90: [0, 1]
12470      },
12471      42: {
12472        0: [0],
12473        1: [[0, 7], [11, 17]],
12474        2: [[0, 5], 22, 81],
12475        3: [[0, 3], [21, 25], 81],
12476        5: [[0, 6], [25, 29], [81, 83]],
12477        6: [[0, 2], 6, 7, [24, 26], [82, 84]],
12478        7: [[0, 4]],
12479        8: [[0, 2], 4, 21, 22, 81],
12480        9: [[0, 2], [21, 23], 81, 82, 84],
12481        10: [[0, 3], [22, 24], 81, 83, 87],
12482        11: [[0, 2], [21, 27], 81, 82],
12483        12: [[0, 2], [21, 24], 81],
12484        13: [[0, 3], 21, 81],
12485        28: [[0, 2], 22, 23, [25, 28]],
12486        90: [0, [4, 6], 21]
12487      },
12488      43: {
12489        0: [0],
12490        1: [[0, 5], 11, 12, 21, 22, 24, 81],
12491        2: [[0, 4], 11, 21, [23, 25], 81],
12492        3: [[0, 2], 4, 21, 81, 82],
12493        4: [0, 1, [5, 8], 12, [21, 24], 26, 81, 82],
12494        5: [[0, 3], 11, [21, 25], [27, 29], 81],
12495        6: [[0, 3], 11, 21, 23, 24, 26, 81, 82],
12496        7: [[0, 3], [21, 26], 81],
12497        8: [[0, 2], 11, 21, 22],
12498        9: [[0, 3], [21, 23], 81],
12499        10: [[0, 3], [21, 28], 81],
12500        11: [[0, 3], [21, 29]],
12501        12: [[0, 2], [21, 30], 81],
12502        13: [[0, 2], 21, 22, 81, 82],
12503        31: [0, 1, [22, 27], 30]
12504      },
12505      44: {
12506        0: [0],
12507        1: [[0, 7], [11, 16], 83, 84],
12508        2: [[0, 5], 21, 22, 24, 29, 32, 33, 81, 82],
12509        3: [0, 1, [3, 8]],
12510        4: [[0, 4]],
12511        5: [0, 1, [6, 15], 23, 82, 83],
12512        6: [0, 1, [4, 8]],
12513        7: [0, 1, [3, 5], 81, [83, 85]],
12514        8: [[0, 4], 11, 23, 25, [81, 83]],
12515        9: [[0, 3], 23, [81, 83]],
12516        12: [[0, 3], [23, 26], 83, 84],
12517        13: [[0, 3], [22, 24], 81],
12518        14: [[0, 2], [21, 24], 26, 27, 81],
12519        15: [[0, 2], 21, 23, 81],
12520        16: [[0, 2], [21, 25]],
12521        17: [[0, 2], 21, 23, 81],
12522        18: [[0, 3], 21, 23, [25, 27], 81, 82],
12523        19: [0],
12524        20: [0],
12525        51: [[0, 3], 21, 22],
12526        52: [[0, 3], 21, 22, 24, 81],
12527        53: [[0, 2], [21, 23], 81]
12528      },
12529      45: {
12530        0: [0],
12531        1: [[0, 9], [21, 27]],
12532        2: [[0, 5], [21, 26]],
12533        3: [[0, 5], 11, 12, [21, 32]],
12534        4: [0, 1, [3, 6], 11, [21, 23], 81],
12535        5: [[0, 3], 12, 21],
12536        6: [[0, 3], 21, 81],
12537        7: [[0, 3], 21, 22],
12538        8: [[0, 4], 21, 81],
12539        9: [[0, 3], [21, 24], 81],
12540        10: [[0, 2], [21, 31]],
12541        11: [[0, 2], [21, 23]],
12542        12: [[0, 2], [21, 29], 81],
12543        13: [[0, 2], [21, 24], 81],
12544        14: [[0, 2], [21, 25], 81]
12545      },
12546      46: {
12547        0: [0],
12548        1: [0, 1, [5, 8]],
12549        2: [0, 1],
12550        3: [0, [21, 23]],
12551        90: [[0, 3], [5, 7], [21, 39]]
12552      },
12553      50: {
12554        0: [0],
12555        1: [[0, 19]],
12556        2: [0, [22, 38], [40, 43]],
12557        3: [0, [81, 84]]
12558      },
12559      51: {
12560        0: [0],
12561        1: [0, 1, [4, 8], [12, 15], [21, 24], 29, 31, 32, [81, 84]],
12562        3: [[0, 4], 11, 21, 22],
12563        4: [[0, 3], 11, 21, 22],
12564        5: [[0, 4], 21, 22, 24, 25],
12565        6: [0, 1, 3, 23, 26, [81, 83]],
12566        7: [0, 1, 3, 4, [22, 27], 81],
12567        8: [[0, 2], 11, 12, [21, 24]],
12568        9: [[0, 4], [21, 23]],
12569        10: [[0, 2], 11, 24, 25, 28],
12570        11: [[0, 2], [11, 13], 23, 24, 26, 29, 32, 33, 81],
12571        13: [[0, 4], [21, 25], 81],
12572        14: [[0, 2], [21, 25]],
12573        15: [[0, 3], [21, 29]],
12574        16: [[0, 3], [21, 23], 81],
12575        17: [[0, 3], [21, 25], 81],
12576        18: [[0, 3], [21, 27]],
12577        19: [[0, 3], [21, 23]],
12578        20: [[0, 2], 21, 22, 81],
12579        32: [0, [21, 33]],
12580        33: [0, [21, 38]],
12581        34: [0, 1, [22, 37]]
12582      },
12583      52: {
12584        0: [0],
12585        1: [[0, 3], [11, 15], [21, 23], 81],
12586        2: [0, 1, 3, 21, 22],
12587        3: [[0, 3], [21, 30], 81, 82],
12588        4: [[0, 2], [21, 25]],
12589        5: [[0, 2], [21, 27]],
12590        6: [[0, 3], [21, 28]],
12591        22: [0, 1, [22, 30]],
12592        23: [0, 1, [22, 28]],
12593        24: [0, 1, [22, 28]],
12594        26: [0, 1, [22, 36]],
12595        27: [[0, 2], 22, 23, [25, 32]]
12596      },
12597      53: {
12598        0: [0],
12599        1: [[0, 3], [11, 14], 21, 22, [24, 29], 81],
12600        3: [[0, 2], [21, 26], 28, 81],
12601        4: [[0, 2], [21, 28]],
12602        5: [[0, 2], [21, 24]],
12603        6: [[0, 2], [21, 30]],
12604        7: [[0, 2], [21, 24]],
12605        8: [[0, 2], [21, 29]],
12606        9: [[0, 2], [21, 27]],
12607        23: [0, 1, [22, 29], 31],
12608        25: [[0, 4], [22, 32]],
12609        26: [0, 1, [21, 28]],
12610        27: [0, 1, [22, 30]],
12611        28: [0, 1, 22, 23],
12612        29: [0, 1, [22, 32]],
12613        31: [0, 2, 3, [22, 24]],
12614        34: [0, [21, 23]],
12615        33: [0, 21, [23, 25]],
12616        
1261635: [0, [21, 28]]
12617      },
12618      54: {
12619        0: [0],
12620        1: [[0, 2], [21, 27]],
12621        21: [0, [21, 29], 32, 33],
12622        22: [0, [21, 29], [31, 33]],
12623        23: [0, 1, [22, 38]],
12624        24: [0, [21, 31]],
12625        25: [0, [21, 27]],
12626        26: [0, [21, 27]]
12627      },
12628      61: {
12629        0: [0],
12630        1: [[0, 4], [11, 16], 22, [24, 26]],
12631        2: [[0, 4], 22],
12632        3: [[0, 4], [21, 24], [26, 31]],
12633        4: [[0, 4], [22, 31], 81],
12634        5: [[0, 2], [21, 28], 81, 82],
12635        6: [[0, 2], [21, 32]],
12636        7: [[0, 2], [21, 30]],
12637        8: [[0, 2], [21, 31]],
12638        9: [[0, 2], [21, 29]],
12639        10: [[0, 2], [21, 26]]
12640      },
12641      62: {
12642        0: [0],
12643        1: [[0, 5], 11, [21, 23]],
12644        2: [0, 1],
12645        3: [[0, 2], 21],
12646        4: [[0, 3], [21, 23]],
12647        5: [[0, 3], [21, 25]],
12648        6: [[0, 2], [21, 23]],
12649        7: [[0, 2], [21, 25]],
12650        8: [[0, 2], [21, 26]],
12651        9: [[0, 2], [21, 24], 81, 82],
12652        10: [[0, 2], [21, 27]],
12653        11: [[0, 2], [21, 26]],
12654        12: [[0, 2], [21, 28]],
12655        24: [0, 21, [24, 29]],
12656        26: [0, 21, [23, 30]],
12657        29: [0, 1, [21, 27]],
12658        30: [0, 1, [21, 27]]
12659      },
12660      63: {
12661        0: [0],
12662        1: [[0, 5], [21, 23]],
12663        2: [0, 2, [21, 25]],
12664        21: [0, [21, 23], [26, 28]],
12665        22: [0, [21, 24]],
12666        23: [0, [21, 24]],
12667        25: [0, [21, 25]],
12668        26: [0, [21, 26]],
12669        27: [0, 1, [21, 26]],
12670        28: [[0, 2], [21, 23]]
12671      },
12672      64: {
12673        0: [0],
12674        1: [0, 1, [4, 6], 21, 22, 81],
12675        2: [[0, 3], 5, [21, 23]],
12676        3: [[0, 3], [21, 24], 81],
12677        4: [[0, 2], [21, 25]],
12678        5: [[0, 2], 21, 22]
12679      },
12680      65: {
12681        0: [0],
12682        1: [[0, 9], 21],
12683        2: [[0, 5]],
12684        21: [0, 1, 22, 23],
12685        22: [0, 1, 22, 23],
12686        23: [[0, 3], [23, 25], 27, 28],
12687        28: [0, 1, [22, 29]],
12688        29: [0, 1, [22, 29]],
12689        30: [0, 1, [22, 24]],
12690        31: [0, 1, [21, 31]],
12691        32: [0, 1, [21, 27]],
12692        40: [0, 2, 3, [21, 28]],
12693        42: [[0, 2], 21, [23, 26]],
12694        43: [0, 1, [21, 26]],
12695        90: [[0, 4]],
12696        27: [[0, 2], 22, 23]
12697      },
12698      71: {
12699        0: [0]
12700      },
12701      81: {
12702        0: [0]
12703      },
12704      82: {
12705        0: [0]
12706      }
12707    };
12708    var a = parseInt(s.substr(0, 2), 10);
12709    var n = parseInt(s.substr(2, 2), 10);
12710    var l = parseInt(s.substr(4, 2), 10);
12711    if (!e[a] || !e[a][n]) {
12712      return {
12713        meta: {},
12714        valid: false
12715      };
12716    }
12717    var i = false;
12718    var u = e[a][n];
12719    var o;
12720    for (o = 0; o < u.length; o++) {
12721      if (Array.isArray(u[o]) && u[o][0] <= l && l <= u[o][1] || !Array.isArray(u[o]) && l === u[o]) {
12722        i = true;
12723        break;
12724      }
12725    }
12726    if (!i) {
12727      return {
12728        meta: {},
12729        valid: false
12730      };
12731    }
12732    var f;
12733    if (s.length === 18) {
12734      f = s.substr(6, 8);
12735    } else {
12736      f = "19".concat(s.substr(6, 6));
12737    }
12738    var c = parseInt(f.substr(0, 4), 10);
12739    var p = parseInt(f.substr(4, 2), 10);
12740    var d = parseInt(f.substr(6, 2), 10);
12741    if (!t$Y(c, p, d)) {
12742      return {
12743        meta: {},
12744        valid: false
12745      };
12746    }
12747    if (s.length === 18) {
12748      var _t = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
12749      var _r = 0;
12750      for (o = 0; o < 17; o++) {
12751        _r += parseInt(s.charAt(o), 10) * _t[o];
12752      }
12753      _r = (12 - _r % 11) % 11;
12754      var _e = s.charAt(17).toUpperCase() !== "X" ? parseInt(s.charAt(17), 10) : 10;
12755      return {
12756        meta: {},
12757        valid: _e === _r
12758      };
12759    }
12760    return {
12761      meta: {},
12762      valid: true
12763    };
12764  }
12765  function t$N(t) {
12766    var e = t.replace(/\./g, "").replace("-", "");
12767    if (!/^\d{8,16}$/.test(e)) {
12768      return {
12769        meta: {},
12770        valid: false
12771      };
12772    }
12773    var r = e.length;
12774    var a = [3, 7, 13, 17, 19, 23, 29, 37, 41, 43, 47, 53, 59, 67, 71];
12775    var l = 0;
12776    for (var _t = r - 2; _t >= 0; _t--) {
12777      l += parseInt(e.charAt(_t), 10) * a[_t];
12778    }
12779    l = l % 11;
12780    if (l >= 2) {
12781      l = 11 - l;
12782    }
12783    return {
12784      meta: {},
12785      valid: "".concat(l) === e.substr(r - 1)
12786    };
12787  }
12788  function e$v(e) {
12789    if (!/^\d{9,10}$/.test(e)) {
12790      return {
12791        meta: {},
12792        valid: false
12793      };
12794    }
12795    var r = 1900 + parseInt(e.substr(0, 2), 10);
12796    var s = parseInt(e.substr(2, 2), 10) % 50 % 20;
12797    var a = parseInt(e.substr(4, 2), 10);
12798    if (e.length === 9) {
12799      if (r >= 1980) {
12800        r -= 100;
12801      }
12802      if (r > 1953) {
12803        return {
12804          meta: {},
12805          valid: false
12806        };
12807      }
12808    } else if (r < 1954) {
12809      r += 100;
12810    }
12811    if (!t$Y(r, s, a)) {
12812      return {
12813        meta: {},
12814        valid: false
12815      };
12816    }
12817    if (e.length === 10) {
12818      var _t = parseInt(e.substr(0, 9), 10) % 11;
12819      if (r < 1985) {
12820        _t = _t % 10;
12821      }
12822      return {
12823        meta: {},
12824        valid: "".concat(_t) === e.substr(9, 1)
12825      };
12826    }
12827    return {
12828      meta: {},
12829      valid: true
12830    };
12831  }
12832  function e$u(e) {
12833    if (!/^[0-9]{6}[-]{0,1}[0-9]{4}$/.test(e)) {
12834      return {
12835        meta: {},
12836        valid: false
12837      };
12838    }
12839    var a = e.replace(/-/g, "");
12840    var r = parseInt(a.substr(0, 2), 10);
12841    var s = parseInt(a.substr(2, 2), 10);
12842    var n = parseInt(a.substr(4, 2), 10);
12843    switch (true) {
12844      case "5678".indexOf(a.charAt(6)) !== -1 && n >= 58:
12845        n += 1800;
12846        break;
12847      case "0123".indexOf(a.charAt(6)) !== -1:
12848      case "49".indexOf(a.charAt(6)) !== -1 && n >= 37:
12849        n += 1900;
12850        break;
12851      default:
12852        n += 2e3;
12853        break;
12854    }
12855    return {
12856      meta: {},
12857      valid: t$Y(n, s, r)
12858    };
12859  }
12860  function t$M(t) {
12861    var e = /^[0-9]{8}[-]{0,1}[A-HJ-NP-TV-Z]$/.test(t);
12862    var s = /^[XYZ][-]{0,1}[0-9]{7}[-]{0,1}[A-HJ-NP-TV-Z]$/.test(t);
12863    var n = /^[A-HNPQS][-]{0,1}[0-9]{7}[-]{0,1}[0-9A-J]$/.test(t);
12864    if (!e && !s && !n) {
12865      return {
12866        meta: {},
12867        valid: false
12868      };
12869    }
12870    var r = t.replace(/-/g, "");
12871    var l;
12872    var a;
12873    var f = true;
12874    if (e || s) {
12875      a = "DNI";
12876      var _t = "XYZ".indexOf(r.charAt(0));
12877      if (_t !== -1) {
12878        r = _t + r.substr(1) + "";
12879        a = "NIE";
12880      }
12881      l = parseInt(r.substr(0, 8), 10);
12882      l = "TRWAGMYFPDXBNJZSQVHLCKE"[l % 23];
12883      return {
12884        meta: {
12885          type: a
12886        },
12887        valid: l === r.substr(8, 1)
12888      };
12889    } else {
12890      l = r.substr(1, 7);
12891      a = "CIF";
12892      var _t2 = r[0];
12893      var _e = r.substr(-1);
12894      var _s = 0;
12895      for (var _t3 = 0; _t3 < l.length; _t3++) {
12896        if (_t3 % 2 !== 0) {
12897          _s += parseInt(l[_t3], 10);
12898        } else {
12899          var _e2 = "" + parseInt(l[_t3], 10) * 2;
12900          _s += parseInt(_e2[0], 10);
12901          if (_e2.length === 2) {
12902            _s += parseInt(_e2[1], 10);
12903          }
12904        }
12905      }
12906      var _n = _s - Math.floor(_s / 10) * 10;
12907      if (_n !== 0) {
12908        _n = 10 - _n;
12909      }
12910      if ("KQS".indexOf(_t2) !== -1) {
12911        f = _e === "JABCDEFGHI"[_n];
12912      } else if ("ABEH".indexOf(_t2) !== -1) {
12913        f = _e === "" + _n;
12914      } else {
12915        f = _e === "" + _n || _e === "JABCDEFGHI"[_n];
12916      }
12917      return {
12918        meta: {
12919          type: a
12920        },
12921        valid: f
12922      };
12923    }
12924  }
12925  function s$7(s) {
12926    if (!/^[0-9]{6}[-+A][0-9]{3}[0-9ABCDEFHJKLMNPRSTUVWXY]$/.test(s)) {
12927      return {
12928        meta: {},
12929        valid: false
12930      };
12931    }
12932    var r = parseInt(s.substr(0, 2), 10);
12933    var a = parseInt(s.substr(2, 2), 10);
12934    var e = parseInt(s.substr(4, 2), 10);
12935    var n = {
12936      "+": 1800,
12937      "-": 1900,
12938      A: 2e3
12939    };
12940    e = n[s.charAt(6)] + e;
12941    if (!t$Y(e, a, r)) {
12942      return {
12943        meta: {},
12944        valid: false
12945      };
12946    }
12947    var u = parseInt(s.substr(7, 3), 10);
12948    if (u < 2) {
12949      return {
12950        meta: {},
12951        valid: false
12952      };
12953    }
12954    var i = parseInt(s.substr(0, 6) + s.substr(7, 3) + "", 10);
12955    return {
12956      meta: {},
12957      valid: "0123456789ABCDEFHJKLMNPRSTUVWXY".charAt(i % 31) === s.charAt(10)
12958    };
12959  }
12960  function t$L(t) {
12961    var s = t.toUpperCase();
12962    if (!/^(1|2)\d{2}\d{2}(\d{2}|\d[A-Z]|\d{3})\d{2,3}\d{3}\d{2}$/.test(s)) {
12963      return {
12964        meta: {},
12965        valid: false
12966      };
12967    }
12968    var e = s.substr(5, 2);
12969    switch (true) {
12970      case /^\d{2}$/.test(e):
12971        s = t;
12972        break;
12973      case e === "2A":
12974        s = "".concat(t.substr(0, 5), "19").concat(t.substr(7));
12975        break;
12976      case e === "2B":
12977        s = "".concat(t.substr(0, 5), "18").concat(t.substr(7));
12978        break;
12979      default:
12980        return {
12981          meta: {},
12982          valid: false
12983        };
12984    }
12985    var r = 97 - parseInt(s.substr(0, 13), 10) % 97;
12986    var a = r < 10 ? "0".concat(r) : "".concat(r);
12987    return {
12988      meta: {},
12989      valid: a === s.substr(13)
12990    };
12991  }
12992  function t$K(t) {
12993    var e = t.toUpperCase();
12994    if (!/^[A-MP-Z]{1,2}[0-9]{6}[0-9A]$/.test(e)) {
12995      return {
12996        meta: {},
12997        valid: false
12998      };
12999    }
13000    var s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
13001    var n = e.charAt(0);
13002    var r = e.charAt(1);
13003    var a = 0;
13004    var c = e;
13005    if (/^[A-Z]$/.test(r)) {
13006      a += 9 * (10 + s.indexOf(n));
13007      a += 8 * (10 + s.indexOf(r));
13008      c = e.substr(2);
13009    } else {
13010      a += 9 * 36;
13011      a += 8 * (10 + s.indexOf(n));
13012      c = e.substr(1);
13013    }
13014    var o = c.length;
13015    for (var _t = 0; _t < o - 1; _t++) {
13016      a += (7 - _t) * parseInt(c.charAt(_t), 10);
13017    }
13018    var f = a % 11;
13019    var l = f === 0 ? "0" : 11 - f === 10 ? "A" : "".concat(11 - f);
13020    return {
13021      meta: {},
13022      valid: l === c.charAt(o - 1)
13023    };
13024  }
13025  function o$1(o) {
13026    return {
13027      meta: {},
13028      valid: /^[0-9]{11}$/.test(o) && t$14(o)
13029    };
13030  }
13031  function e$t(e) {
13032    if (!/^[2-9]\d{11}$/.test(e)) {
13033      return {
13034        meta: {},
13035        valid: false
13036      };
13037    }
13038    var r = e.split("").map(function (t) {
13039      return parseInt(t, 10);
13040    });
13041    return {
13042      meta: {},
13043      valid: t$12(r)
13044    };
13045  }
13046  function t$J(t) {
13047    if (!/^\d{7}[A-W][AHWTX]?$/.test(t)) {
13048      return {
13049        meta: {},
13050        valid: false
13051      };
13052    }
13053    var r = function r(t) {
13054      var r = t;
13055      while (r.length < 7) {
13056        r = "0".concat(r);
13057      }
13058      var e = "WABCDEFGHIJKLMNOPQRSTUV";
13059      var s = 0;
13060      for (var _t = 0; _t < 7; _t++) {
13061        s += parseInt(r.charAt(_t), 10) * (8 - _t);
13062      }
13063      s += 9 * e.indexOf(r.substr(7));
13064      return e[s % 23];
13065    };
13066    var e = t.length === 9 && ("A" === t.charAt(8) || "H" === t.charAt(8)) ? t.charAt(7) === r(t.substr(0, 7) + t.substr(8) + "") : t.charAt(7) === r(t.substr(0, 7));
13067    return {
13068      meta: {},
13069      valid: e
13070    };
13071  }
13072  function e$s(e) {
13073    if (!/^\d{1,9}$/.test(e)) {
13074      return {
13075        meta: {},
13076        valid: false
13077      };
13078    }
13079    return {
13080      meta: {},
13081      valid: t$15(e)
13082    };
13083  }
13084  function e$r(e) {
13085    if (!/^[0-9]{6}[-]{0,1}[0-9]{4}$/.test(e)) {
13086      return {
13087        meta: {},
13088        valid: false
13089      };
13090    }
13091    var r = e.replace(/-/g, "");
13092    var s = parseInt(r.substr(0, 2), 10);
13093    var a = parseInt(r.substr(2, 2), 10);
13094    var n = parseInt(r.substr(4, 2), 10);
13095    var l = parseInt(r.charAt(9), 10);
13096    n = l === 9 ? 1900 + n : (20 + l) * 100 + n;
13097    if (!t$Y(n, a, s, true)) {
13098      return {
13099        meta: {},
13100        valid: false
13101      };
13102    }
13103    var c = [3, 2, 7, 6, 5, 4, 3, 2];
13104    var i = 0;
13105    for (var _t = 0; _t < 8; _t++) {
13106      i += parseInt(r.charAt(_t), 10) * c[_t];
13107    }
13108    i = 11 - i % 11;
13109    return {
13110      meta: {},
13111      valid: "".concat(i) === r.charAt(8)
13112    };
13113  }
13114  function e$q(e) {
13115    var a = e.replace("-", "");
13116    if (!/^\d{13}$/.test(a)) {
13117      return {
13118        meta: {},
13119        valid: false
13120      };
13121    }
13122    var s = a.charAt(6);
13123    var r = parseInt(a.substr(0, 2), 10);
13124    var c = parseInt(a.substr(2, 2), 10);
13125    var n = parseInt(a.substr(4, 2), 10);
13126    switch (s) {
13127      case "1":
13128      case "2":
13129      case "5":
13130      case "6":
13131        r += 1900;
13132        break;
13133      case "3":
13134      case "4":
13135      case "7":
13136      case "8":
13137        r += 2e3;
13138        break;
13139      default:
13140        r += 1800;
13141        break;
13142    }
13143    if (!t$Y(r, c, n)) {
13144      return {
13145        meta: {},
13146        valid: false
13147      };
13148    }
13149    var l = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5];
13150    var o = a.length;
13151    var i = 0;
13152    for (var _t = 0; _t < o - 1; _t++) {
13153      i += l[_t] * parseInt(a.charAt(_t), 10);
13154    }
13155    var u = (11 - i % 11) % 10;
13156    return {
13157      meta: {},
13158      valid: "".concat(u) === a.charAt(o - 1)
13159    };
13160  }
13161  function r$8(r) {
13162    if (!/^[0-9]{11}$/.test(r)) {
13163      return {
13164        meta: {},
13165        valid: false
13166      };
13167    }
13168    var e = parseInt(r.charAt(0), 10);
13169    var a = parseInt(r.substr(1, 2), 10);
13170    var s = parseInt(r.substr(3, 2), 10);
13171    var n = parseInt(r.substr(5, 2), 10);
13172    var i = e % 2 === 0 ? 17 + e / 2 : 17 + (e + 1) / 2;
13173    a = i * 100 + a;
13174    if (!t$Y(a, s, n, true)) {
13175      return {
13176        meta: {},
13177        valid: false
13178      };
13179    }
13180    var l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1];
13181    var f = 0;
13182    var u;
13183    for (u = 0; u < 10; u++) {
13184      f += parseInt(r.charAt(u), 10) * l[u];
13185    }
13186    f = f % 11;
13187    if (f !== 10) {
13188      return {
13189        meta: {},
13190        valid: "".concat(f) === r.charAt(10)
13191      };
13192    }
13193    f = 0;
13194    l = [3, 4, 5, 6, 7, 8, 9, 1, 2, 3];
13195    for (u = 0; u < 10; u++) {
13196      f += parseInt(r.charAt(u), 10) * l[u];
13197    }
13198    f = f % 11;
13199    if (f === 10) {
13200      f = 0;
13201    }
13202    return {
13203      meta: {},
13204      valid: "".concat(f) === r.charAt(10)
13205    };
13206  }
13207  function e$p(e) {
13208    if (!/^[0-9]{6}[-]{0,1}[0-9]{5}$/.test(e)) {
13209      return {
13210        meta: {},
13211        valid: false
13212      };
13213    }
13214    var r = e.replace(/\D/g, "");
13215    var a = parseInt(r.substr(0, 2), 10);
13216    var s = parseInt(r.substr(2, 2), 10);
13217    var n = parseInt(r.substr(4, 2), 10);
13218    n = n + 1800 + parseInt(r.charAt(6), 10) * 100;
13219    if (!t$Y(n, s, a, true)) {
13220      return {
13221        meta: {},
13222        valid: false
13223      };
13224    }
13225    var l = 0;
13226    var i = [10, 5, 8, 4, 2, 1, 6, 3, 7, 9];
13227    for (var _t = 0; _t < 10; _t++) {
13228      l += parseInt(r.charAt(_t), 10) * i[_t];
13229    }
13230    l = (l + 1) % 11 % 10;
13231    return {
13232      meta: {},
13233      valid: "".concat(l) === r.charAt(10)
13234    };
13235  }
13236  function r$7(r) {
13237    return {
13238      meta: {},
13239      valid: t$Q(r, "ME")
13240    };
13241  }
13242  function r$6(r) {
13243    return {
13244      meta: {},
13245      valid: t$Q(r, "MK")
13246    };
13247  }
13248  function O(O) {
13249    var t = O.toUpperCase();
13250    if (!/^[A-Z]{4}\d{6}[A-Z]{6}[0-9A-Z]\d$/.test(t)) {
13251      return {
13252        meta: {},
13253        valid: false
13254      };
13255    }
13256    var C = ["BACA", "BAKA", "BUEI", "BUEY", "CACA", "CACO", "CAGA", "CAGO", "CAKA", "CAKO", "COGE", "COGI", "COJA", "COJE", "COJI", "COJO", "COLA", "CULO", "FALO", "FETO", "GETA", "GUEI", "GUEY", "JETA", "JOTO", "KACA", "KACO", "KAGA", "KAGO", "KAKA", "KAKO", "KOGE", "KOGI", "KOJA", "KOJE", "KOJI", "KOJO", "KOLA", "KULO", "LILO", "LOCA", "LOCO", "LOKA", "LOKO", "MAME", "MAMO", "MEAR", "MEAS", "MEON", "MIAR", "MION", "MOCO", "MOKO", "MULA", "MULO", "NACA", "NACO", "PEDA", "PEDO", "PENE", "PIPI", "PITO", "POPO", "PUTA", "PUTO", "QULO", "RATA", "ROBA", "ROBE", "ROBO", "RUIN", "SENO", "TETA", "VACA", "VAGA", "VAGO", "VAKA", "VUEI", "VUEY", "WUEI", "WUEY"];
13257    var e = t.substr(0, 4);
13258    if (C.indexOf(e) >= 0) {
13259      return {
13260        meta: {},
13261        valid: false
13262      };
13263    }
13264    var s = parseInt(t.substr(4, 2), 10);
13265    var r = parseInt(t.substr(6, 2), 10);
13266    var a = parseInt(t.substr(6, 2), 10);
13267    if (/^[0-9]$/.test(t.charAt(16))) {
13268      s += 1900;
13269    } else {
13270      s += 2e3;
13271    }
13272    if (!t$Y(s, r, a)) {
13273      return {
13274        meta: {},
13275        valid: false
13276      };
13277    }
13278    var E = t.charAt(10);
13279    if (E !== "H" && E !== "M") {
13280      return {
13281        meta: {},
13282        valid: false
13283      };
13284    }
13285    var n = t.substr(11, 2);
13286    var K = ["AS", "BC", "BS", "CC", "CH", "CL", "CM", "CS", "DF", "DG", "GR", "GT", "HG", "JC", "MC", "MN", "MS", "NE", "NL", "NT", "OC", "PL", "QR", "QT", "SL", "SP", "SR", "TC", "TL", "TS", "VZ", "YN", "ZS"];
13287    if (K.indexOf(n) === -1) {
13288      return {
13289        meta: {},
13290        valid: false
13291      };
13292    }
13293    var i = "0123456789ABCDEFGHIJKLMN&OPQRSTUVWXYZ";
13294    var L = 0;
13295    var l = t.length;
13296    for (var _A = 0; _A < l - 1; _A++) {
13297      L += (18 - _A) * i.indexOf(t.charAt(_A));
13298    }
13299    L = (10 - L % 10) % 10;
13300    return {
13301      meta: {},
13302      valid: "".concat(L) === t.charAt(l - 1)
13303    };
13304  }
13305  function s$6(s) {
13306    if (!/^\d{12}$/.test(s)) {
13307      return {
13308        meta: {},
13309        valid: false
13310      };
13311    }
13312    var e = parseInt(s.substr(0, 2), 10);
13313    var r = parseInt(s.substr(2, 2), 10);
13314    var a = parseInt(s.substr(4, 2), 10);
13315    if (!t$Y(e + 1900, r, a) && !t$Y(e + 2e3, r, a)) {
13316      return {
13317        meta: {},
13318        valid: false
13319      };
13320    }
13321    var n = s.substr(6, 2);
13322    var i = ["17", "18", "19", "20", "69", "70", "73", "80", "81", "94", "95", "96", "97"];
13323    return {
13324      meta: {},
13325      valid: i.indexOf(n) === -1
13326    };
13327  }
13328  function e$o(e) {
13329    if (e.length < 8) {
13330      return {
13331        meta: {},
13332        valid: false
13333      };
13334    }
13335    var t = e;
13336    if (t.length === 8) {
13337      t = "0".concat(t);
13338    }
13339    if (!/^[0-9]{4}[.]{0,1}[0-9]{2}[.]{0,1}[0-9]{3}$/.test(t)) {
13340      return {
13341        meta: {},
13342        valid: false
13343      };
13344    }
13345    t = t.replace(/\./g, "");
13346    if (parseInt(t, 10) === 0) {
13347      return {
13348        meta: {},
13349        valid: false
13350      };
13351    }
13352    var a = 0;
13353    var l = t.length;
13354    for (var _e = 0; _e < l - 1; _e++) {
13355      a += (9 - _e) * parseInt(t.charAt(_e), 10);
13356    }
13357    a = a % 11;
13358    if (a === 10) {
13359      a = 0;
13360    }
13361    return {
13362      meta: {},
13363      valid: "".concat(a) === t.charAt(l - 1)
13364    };
13365  }
13366  function t$I(t) {
13367    if (!/^\d{11}$/.test(t)) {
13368      return {
13369        meta: {},
13370        valid: false
13371      };
13372    }
13373    var r = function r(t) {
13374      var r = [3, 7, 6, 1, 8, 9, 4, 5, 2];
13375      var e = 0;
13376      for (var n = 0; n < 9; n++) {
13377        e += r[n] * parseInt(t.charAt(n), 10);
13378      }
13379      return 11 - e % 11;
13380    };
13381    var e = function e(t) {
13382      var r = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
13383      var e = 0;
13384      for (var n = 0; n < 10; n++) {
13385        e += r[n] * parseInt(t.charAt(n), 10);
13386      }
13387      return 11 - e % 11;
13388    };
13389    return {
13390      meta: {},
13391      valid: "".concat(r(t)) === t.substr(-2, 1) && "".concat(e(t)) === t.substr(-1)
13392    };
13393  }
13394  function t$H(t) {
13395    if (!/^\d{8}[0-9A-Z]*$/.test(t)) {
13396      return {
13397        meta: {},
13398        valid: false
13399      };
13400    }
13401    if (t.length === 8) {
13402      return {
13403        meta: {},
13404        valid: true
13405      };
13406    }
13407    var e = [3, 2, 7, 6, 5, 4, 3, 2];
13408    var r = 0;
13409    for (var _a = 0; _a < 8; _a++) {
13410      r += e[_a] * parseInt(t.charAt(_a), 10);
13411    }
13412    var a = r % 11;
13413    var n = [6, 5, 4, 3, 2, 1, 1, 0, 9, 8, 7][a];
13414    var c = "KJIHGFEDCBA".charAt(a);
13415    return {
13416      meta: {},
13417      valid: t.charAt(8) === "".concat(n) || t.charAt(8) === c
13418    };
13419  }
13420  function t$G(t) {
13421    if (!/^[0-9]{11}$/.test(t)) {
13422      return {
13423        meta: {},
13424        valid: false
13425      };
13426    }
13427    var e = 0;
13428    var a = t.length;
13429    var r = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3, 7];
13430    for (var n = 0; n < a - 1; n++) {
13431      e += r[n] * parseInt(t.charAt(n), 10);
13432    }
13433    e = e % 10;
13434    if (e === 0) {
13435      e = 10;
13436    }
13437    e = 10 - e;
13438    return {
13439      meta: {},
13440      valid: "".concat(e) === t.charAt(a - 1)
13441    };
13442  }
13443  function e$n(e) {
13444    if (!/^[0-9]{13}$/.test(e)) {
13445      return {
13446        meta: {},
13447        valid: false
13448      };
13449    }
13450    var a = parseInt(e.charAt(0), 10);
13451    if (a === 0 || a === 7 || a === 8) {
13452      return {
13453        meta: {},
13454        valid: false
13455      };
13456    }
13457    var r = parseInt(e.substr(1, 2), 10);
13458    var s = parseInt(e.substr(3, 2), 10);
13459    var n = parseInt(e.substr(5, 2), 10);
13460    var i = {
13461      1: 1900,
13462      2: 1900,
13463      3: 1800,
13464      4: 1800,
13465      5: 2e3,
13466      6: 2e3
13467    };
13468    if (n > 31 && s > 12) {
13469      return {
13470        meta: {},
13471        valid: false
13472      };
13473    }
13474    if (a !== 9) {
13475      r = i[a + ""] + r;
13476      if (!t$Y(r, s, n)) {
13477        return {
13478          meta: {},
13479          valid: false
13480        };
13481      }
13482    }
13483    var l = 0;
13484    var f = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9];
13485    var o = e.length;
13486    for (var _t = 0; _t < o - 1; _t++) {
13487      l += parseInt(e.charAt(_t), 10) * f[_t];
13488    }
13489    l = l % 11;
13490    if (l === 10) {
13491      l = 1;
13492    }
13493    return {
13494      meta: {},
13495      valid: "".concat(l) === e.charAt(o - 1)
13496    };
13497  }
13498  function r$5(r) {
13499    return {
13500      meta: {},
13501      valid: t$Q(r, "RS")
13502    };
13503  }
13504  function r$4(r) {
13505    if (!/^[0-9]{10}$/.test(r) && !/^[0-9]{6}[-|+][0-9]{4}$/.test(r)) {
13506      return {
13507        meta: {},
13508        valid: false
13509      };
13510    }
13511    var e = r.replace(/[^0-9]/g, "");
13512    var a = parseInt(e.substr(0, 2), 10) + 1900;
13513    var n = parseInt(e.substr(2, 2), 10);
13514    var i = parseInt(e.substr(4, 2), 10);
13515    if (!t$Y(a, n, i)) {
13516      return {
13517        meta: {},
13518        valid: false
13519      };
13520    }
13521    return {
13522      meta: {},
13523      valid: t$15(e)
13524    };
13525  }
13526  function r$3(r) {
13527    return {
13528      meta: {},
13529      valid: t$Q(r, "SI")
13530    };
13531  }
13532  function t$F(t) {
13533    return {
13534      meta: {},
13535      valid: /^\d{5}$/.test(t)
13536    };
13537  }
13538  function t$E(t) {
13539    if (t.length !== 13) {
13540      return {
13541        meta: {},
13542        valid: false
13543      };
13544    }
13545    var e = 0;
13546    for (var a = 0; a < 12; a++) {
13547      e += parseInt(t.charAt(a), 10) * (13 - a);
13548    }
13549    return {
13550      meta: {},
13551      valid: (11 - e % 11) % 10 === parseInt(t.charAt(12), 10)
13552    };
13553  }
13554  function t$D(t) {
13555    if (t.length !== 11) {
13556      return {
13557        meta: {},
13558        valid: false
13559      };
13560    }
13561    var e = 0;
13562    for (var a = 0; a < 10; a++) {
13563      e += parseInt(t.charAt(a), 10);
13564    }
13565    return {
13566      meta: {},
13567      valid: e % 10 === parseInt(t.charAt(10), 10)
13568    };
13569  }
13570  function t$C(t) {
13571    var e = t.toUpperCase();
13572    if (!/^[A-Z][12][0-9]{8}$/.test(e)) {
13573      return {
13574        meta: {},
13575        valid: false
13576      };
13577    }
13578    var a = e.length;
13579    var n = "ABCDEFGHJKLMNPQRSTUVXYWZIO";
13580    var r = n.indexOf(e.charAt(0)) + 10;
13581    var o = Math.floor(r / 10) + r % 10 * (a - 1);
13582    var s = 0;
13583    for (var _t = 1; _t < a - 1; _t++) {
13584      s += parseInt(e.charAt(_t), 10) * (a - 1 - _t);
13585    }
13586    return {
13587      meta: {},
13588      valid: (o + s + parseInt(e.charAt(a - 1), 10)) % 10 === 0
13589    };
13590  }
13591  function t$B(t) {
13592    if (!/^\d{8}$/.test(t)) {
13593      return {
13594        meta: {},
13595        valid: false
13596      };
13597    }
13598    var e = [2, 9, 8, 7, 6, 3, 4];
13599    var a = 0;
13600    for (var r = 0; r < 7; r++) {
13601      a += parseInt(t.charAt(r), 10) * e[r];
13602    }
13603    a = a % 10;
13604    if (a > 0) {
13605      a = 10 - a;
13606    }
13607    return {
13608      meta: {},
13609      valid: "".concat(a) === t.charAt(7)
13610    };
13611  }
13612  function r$2(r) {
13613    if (!/^[0-9]{10}[0|1][8|9][0-9]$/.test(r)) {
13614      return {
13615        meta: {},
13616        valid: false
13617      };
13618    }
13619    var s = parseInt(r.substr(0, 2), 10);
13620    var a = new Date().getFullYear() % 100;
13621    var l = parseInt(r.substr(2, 2), 10);
13622    var n = parseInt(r.substr(4, 2), 10);
13623    s = s >= a ? s + 1900 : s + 2e3;
13624    if (!t$Y(s, l, n)) {
13625      return {
13626        meta: {},
13627        valid: false
13628      };
13629    }
13630    return {
13631      meta: {},
13632      valid: t$15(r)
13633    };
13634  }
13635  function F() {
13636    var F = ["AR", "BA", "BG", "BR", "CH", "CL", "CN", "CO", "CZ", "DK", "EE", "ES", "FI", "FR", "HK", "HR", "ID", "IE", "IL", "IS", "KR", "LT", "LV", "ME", "MK", "MX", "MY", "NL", "NO", "PE", "PL", "RO", "RS", "SE", "SI", "SK", "SM", "TH", "TR", "TW", "UY", "ZA"];
13637    return {
13638      validate: function validate(P) {
13639        if (P.value === "") {
13640          return {
13641            valid: true
13642          };
13643        }
13644        var Y = Object.assign({}, {
13645          message: ""
13646        }, P.options);
13647        var Z = P.value.substr(0, 2);
13648        if ("function" === typeof Y.country) {
13649          Z = Y.country.call(this);
13650        } else {
13651          Z = Y.country;
13652        }
13653        if (F.indexOf(Z) === -1) {
13654          return {
13655            valid: true
13656          };
13657        }
13658        var G = {
13659          meta: {},
13660          valid: true
13661        };
13662        switch (Z.toLowerCase()) {
13663          case "ar":
13664            G = t$R(P.value);
13665            break;
13666          case "ba":
13667            G = r$a(P.value);
13668            break;
13669          case "bg":
13670            G = e$x(P.value);
13671            break;
13672          case "br":
13673            G = t$P(P.value);
13674            break;
13675          case "ch":
13676            G = t$O(P.value);
13677            break;
13678          case "cl":
13679            G = e$w(P.value);
13680            break;
13681          case "cn":
13682            G = r$9(P.value);
13683            break;
13684          case "co":
13685            G = t$N(P.value);
13686            break;
13687          case "cz":
13688            G = e$v(P.value);
13689            break;
13690          case "dk":
13691            G = e$u(P.value);
13692            break;
13693          case "ee":
13694            G = r$8(P.value);
13695            break;
13696          case "es":
13697            G = t$M(P.value);
13698            break;
13699          case "fi":
13700            G = s$7(P.value);
13701            break;
13702          case "fr":
13703            G = t$L(P.value);
13704            break;
13705          case "hk":
13706            G = t$K(P.value);
13707            break;
13708          case "hr":
13709            G = o$1(P.value);
13710            break;
13711          case "id":
13712            G = e$t(P.value);
13713            break;
13714          case "ie":
13715            G = t$J(P.value);
13716            break;
13717          case "il":
13718            G = e$s(P.value);
13719            break;
13720          case "is":
13721            G = e$r(P.value);
13722            break;
13723          case "kr":
13724            G = e$q(P.value);
13725            break;
13726          case "lt":
13727            G = r$8(P.value);
13728            break;
13729          case "lv":
13730            G = e$p(P.value);
13731            break;
13732          case "me":
13733            G = r$7(P.value);
13734            break;
13735          case "mk":
13736            G = r$6(P.value);
13737            break;
13738          case "mx":
13739            G = O(P.value);
13740            break;
13741          case "my":
13742            G = s$6(P.value);
13743            break;
13744          case "nl":
13745            G = e$o(P.value);
13746            break;
13747          case "no":
13748            G = t$I(P.value);
13749            break;
13750          case "pe":
13751            G = t$H(P.value);
13752            break;
13753          case "pl":
13754            G = t$G(P.value);
13755            break;
13756          case "ro":
13757            G = e$n(P.value);
13758            break;
13759          case "rs":
13760            G = r$5(P.value);
13761            break;
13762          case "se":
13763            G = r$4(P.value);
13764            break;
13765          case "si":
13766            G = r$3(P.value);
13767            break;
13768          case "sk":
13769            G = e$v(P.value);
13770            break;
13771          case "sm":
13772            G = t$F(P.value);
13773            break;
13774          case "th":
13775            G = t$E(P.value);
13776            break;
13777          case "tr":
13778            G = t$D(P.value);
13779            break;
13780          case "tw":
13781            G = t$C(P.value);
13782            break;
13783          case "uy":
13784            G = t$B(P.value);
13785            break;
13786          case "za":
13787            G = r$2(P.value);
13788            break;
13789        }
13790        var V = r$d(P.l10n && P.l10n.id ? Y.message || P.l10n.id.country : Y.message, P.l10n && P.l10n.id && P.l10n.id.countries ? P.l10n.id.countries[Z.toUpperCase()] : Z.toUpperCase());
13791        return Object.assign({}, {
13792          message: V
13793        }, G);
13794      }
13795    };
13796  }
13797  function t$A() {
13798    return {
13799      validate: function validate(t) {
13800        if (t.value === "") {
13801          return {
13802            valid: true
13803          };
13804        }
13805        switch (true) {
13806          case /^\d{15}$/.test(t.value):
13807          case /^\d{2}-\d{6}-\d{6}-\d{1}$/.test(t.value):
13808          case /^\d{2}\s\d{6}\s\d{6}\s\d{1}$/.test(t.value):
13809            return {
13810              valid: t$15(t.value.replace(/[^0-9]/g, ""))
13811            };
13812          case /^\d{14}$/.test(t.value):
13813          case /^\d{16}$/.test(t.value):
13814          case /^\d{2}-\d{6}-\d{6}(|-\d{2})$/.test(t.value):
13815          case /^\d{2}\s\d{6}\s\d{6}(|\s\d{2})$/.test(t.value):
13816            return {
13817              valid: true
13818            };
13819          default:
13820            return {
13821              valid: false
13822            };
13823        }
13824      }
13825    };
13826  }
13827  function e$m() {
13828    return {
13829      validate: function validate(e) {
13830        if (e.value === "") {
13831          return {
13832            valid: true
13833          };
13834        }
13835        if (!/^IMO \d{7}$/i.test(e.value)) {
13836          return {
13837            valid: false
13838          };
13839        }
13840        var t = e.value.replace(/^.*(\d{7})$/, "$1");
13841        var r = 0;
13842        for (var _e = 6; _e >= 1; _e--) {
13843          r += parseInt(t.slice(6 - _e, -_e), 10) * (_e + 1);
13844        }
13845        return {
13846          valid: r % 10 === parseInt(t.charAt(6), 10)
13847        };
13848      }
13849    };
13850  }
13851  function e$l() {
13852    return {
13853      validate: function validate(e) {
13854        if (e.value === "") {
13855          return {
13856            meta: {
13857              type: null
13858            },
13859            valid: true
13860          };
13861        }
13862        var t;
13863        switch (true) {
13864          case /^\d{9}[\dX]$/.test(e.value):
13865          case e.value.length === 13 && /^(\d+)-(\d+)-(\d+)-([\dX])$/.test(e.value):
13866          case e.value.length === 13 && /^(\d+)\s(\d+)\s(\d+)\s([\dX])$/.test(e.value):
13867            t = "ISBN10";
13868            break;
13869          case /^(978|979)\d{9}[\dX]$/.test(e.value):
13870          case e.value.length === 17 && /^(978|979)-(\d+)-(\d+)-(\d+)-([\dX])$/.test(e.value):
13871          case e.value.length === 17 && /^(978|979)\s(\d+)\s(\d+)\s(\d+)\s([\dX])$/.test(e.value):
13872            t = "ISBN13";
13873            break;
13874          default:
13875            return {
13876              meta: {
13877                type: null
13878              },
13879              valid: false
13880            };
13881        }
13882        var a = e.value.replace(/[^0-9X]/gi, "").split("");
13883        var l = a.length;
13884        var s = 0;
13885        var d;
13886        var u;
13887        switch (t) {
13888          case "ISBN10":
13889            s = 0;
13890            for (d = 0; d < l - 1; d++) {
13891              s += parseInt(a[d], 10) * (10 - d);
13892            }
13893            u = 11 - s % 11;
13894            if (u === 11) {
13895              u = 0;
13896            } else if (u === 10) {
13897              u = "X";
13898            }
13899            return {
13900              meta: {
13901                type: t
13902              },
13903              valid: "".concat(u) === a[l - 1]
13904            };
13905          case "ISBN13":
13906            s = 0;
13907            for (d = 0; d < l - 1; d++) {
13908              s += d % 2 === 0 ? parseInt(a[d], 10) : parseInt(a[d], 10) * 3;
13909            }
13910            u = 10 - s % 10;
13911            if (u === 10) {
13912              u = "0";
13913            }
13914            return {
13915              meta: {
13916                type: t
13917              },
13918              valid: "".concat(u) === a[l - 1]
13919            };
13920        }
13921      }
13922    };
13923  }
13924  function M() {
13925    var M = "AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|" + "BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|" + "SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|" + "IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|" + "MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|" + "PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|" + "SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|" + "YE|ZM|ZW";
13926    return {
13927      validate: function validate(t) {
13928        if (t.value === "") {
13929          return {
13930            valid: true
13931          };
13932        }
13933        var S = t.value.toUpperCase();
13934        var A = new RegExp("^(" + M + ")[0-9A-Z]{10}$");
13935        if (!A.test(t.value)) {
13936          return {
13937            valid: false
13938          };
13939        }
13940        var G = S.length;
13941        var C = "";
13942        var T;
13943        for (T = 0; T < G - 1; T++) {
13944          var _M = S.charCodeAt(T);
13945          C += _M > 57 ? (_M - 55).toString() : S.charAt(T);
13946        }
13947        var e = "";
13948        var B = C.length;
13949        var E = B % 2 !== 0 ? 0 : 1;
13950        for (T = 0; T < B; T++) {
13951          e += parseInt(C[T], 10) * (T % 2 === E ? 2 : 1) + "";
13952        }
13953        var N = 0;
13954        for (T = 0; T < e.length; T++) {
13955          N += parseInt(e.charAt(T), 10);
13956        }
13957        N = (10 - N % 10) % 10;
13958        return {
13959          valid: "".concat(N) === S.charAt(G - 1)
13960        };
13961      }
13962    };
13963  }
13964  function e$k() {
13965    return {
13966      validate: function validate(e) {
13967        if (e.value === "") {
13968          return {
13969            meta: null,
13970            valid: true
13971          };
13972        }
13973        var t;
13974        switch (true) {
13975          case /^M\d{9}$/.test(e.value):
13976          case /^M-\d{4}-\d{4}-\d{1}$/.test(e.value):
13977          case /^M\s\d{4}\s\d{4}\s\d{1}$/.test(e.value):
13978            t = "ISMN10";
13979            break;
13980          case /^9790\d{9}$/.test(e.value):
13981          case /^979-0-\d{4}-\d{4}-\d{1}$/.test(e.value):
13982          case /^979\s0\s\d{4}\s\d{4}\s\d{1}$/.test(e.value):
13983            t = "ISMN13";
13984            break;
13985          default:
13986            return {
13987              meta: null,
13988              valid: false
13989            };
13990        }
13991        var a = e.value;
13992        if ("ISMN10" === t) {
13993          a = "9790".concat(a.substr(1));
13994        }
13995        a = a.replace(/[^0-9]/gi, "");
13996        var s = 0;
13997        var l = a.length;
13998        var d = [1, 3];
13999        for (var _e = 0; _e < l - 1; _e++) {
14000          s += parseInt(a.charAt(_e), 10) * d[_e % 2];
14001        }
14002        s = (10 - s % 10) % 10;
14003        return {
14004          meta: {
14005            type: t
14006          },
14007          valid: "".concat(s) === a.charAt(l - 1)
14008        };
14009      }
14010    };
14011  }
14012  function e$j() {
14013    return {
14014      validate: function validate(e) {
14015        if (e.value === "") {
14016          return {
14017            valid: true
14018          };
14019        }
14020        if (!/^\d{4}-\d{3}[\dX]$/.test(e.value)) {
14021          return {
14022            valid: false
14023          };
14024        }
14025        var t = e.value.replace(/[^0-9X]/gi, "").split("");
14026        var l = t.length;
14027        var r = 0;
14028        if (t[7] === "X") {
14029          t[7] = "10";
14030        }
14031        for (var _e = 0; _e < l; _e++) {
14032          r += parseInt(t[_e], 10) * (8 - _e);
14033        }
14034        return {
14035          valid: r % 11 === 0
14036        };
14037      }
14038    };
14039  }
14040  function a$1() {
14041    return {
14042      validate: function validate(a) {
14043        return {
14044          valid: a.value === "" || /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/.test(a.value) || /^([0-9A-Fa-f]{4}\.){2}([0-9A-Fa-f]{4})$/.test(a.value)
14045        };
14046      }
14047    };
14048  }
14049  function e$i() {
14050    return {
14051      validate: function validate(e) {
14052        if (e.value === "") {
14053          return {
14054            valid: true
14055          };
14056        }
14057        var r = e.value;
14058        if (/^[0-9A-F]{15}$/i.test(r) || /^[0-9A-F]{2}[- ][0-9A-F]{6}[- ][0-9A-F]{6}[- ][0-9A-F]$/i.test(r) || /^\d{19}$/.test(r) || /^\d{5}[- ]\d{5}[- ]\d{4}[- ]\d{4}[- ]\d$/.test(r)) {
14059          var _e = r.charAt(r.length - 1).toUpperCase();
14060          r = r.replace(/[- ]/g, "");
14061          if (r.match(/^\d*$/i)) {
14062            return {
14063              valid: t$15(r)
14064            };
14065          }
14066          r = r.slice(0, -1);
14067          var a = "";
14068          var i;
14069          for (i = 1; i <= 13; i += 2) {
14070            a += (parseInt(r.charAt(i), 16) * 2).toString(16);
14071          }
14072          var l = 0;
14073          for (i = 0; i < a.length; i++) {
14074            l += parseInt(a.charAt(i), 16);
14075          }
14076          return {
14077            valid: l % 10 === 0 ? _e === "0" : _e === ((Math.floor((l + 10) / 10) * 10 - l) * 2).toString(16).toUpperCase()
14078          };
14079        }
14080        if (/^[0-9A-F]{14}$/i.test(r) || /^[0-9A-F]{2}[- ][0-9A-F]{6}[- ][0-9A-F]{6}$/i.test(r) || /^\d{18}$/.test(r) || /^\d{5}[- ]\d{5}[- ]\d{4}[- ]\d{4}$/.test(r)) {
14081          return {
14082            valid: true
14083          };
14084        }
14085        return {
14086          valid: false
14087        };
14088      }
14089    };
14090  }
14091  function e$h() {
14092    var e = ["AE", "BG", "BR", "CN", "CZ", "DE", "DK", "ES", "FR", "GB", "IN", "MA", "NL", "PK", "RO", "RU", "SK", "TH", "US", "VE"];
14093    return {
14094      validate: function validate(t) {
14095        if (t.value === "") {
14096          return {
14097            valid: true
14098          };
14099        }
14100        var a = Object.assign({}, {
14101          message: ""
14102        }, t.options);
14103        var d = t.value.trim();
14104        var r = d.substr(0, 2);
14105        if ("function" === typeof a.country) {
14106          r = a.country.call(this);
14107        } else {
14108          r = a.country;
14109        }
14110        if (!r || e.indexOf(r.toUpperCase()) === -1) {
14111          return {
14112            valid: true
14113          };
14114        }
14115        var c = true;
14116        switch (r.toUpperCase()) {
14117          case "AE":
14118            c = /^(((\+|00)?971[\s.-]?(\(0\)[\s.-]?)?|0)(\(5(0|2|5|6)\)|5(0|2|5|6)|2|3|4|6|7|9)|60)([\s.-]?[0-9]){7}$/.test(d);
14119            break;
14120          case "BG":
14121            c = /^(0|359|00)(((700|900)[0-9]{5}|((800)[0-9]{5}|(800)[0-9]{4}))|(87|88|89)([0-9]{7})|((2[0-9]{7})|(([3-9][0-9])(([0-9]{6})|([0-9]{5})))))$/.test(d.replace(/\+|\s|-|\/|\(|\)/gi, ""));
14122            break;
14123          case "BR":
14124            c = /^(([\d]{4}[-.\s]{1}[\d]{2,3}[-.\s]{1}[\d]{2}[-.\s]{1}[\d]{2})|([\d]{4}[-.\s]{1}[\d]{3}[-.\s]{1}[\d]{4})|((\(?\+?[0-9]{2}\)?\s?)?(\(?\d{2}\)?\s?)?\d{4,5}[-.\s]?\d{4}))$/.test(d);
14125            break;
14126          case "CN":
14127            c = /^((00|\+)?(86(?:-| )))?((\d{11})|(\d{3}[- ]{1}\d{4}[- ]{1}\d{4})|((\d{2,4}[- ]){1}(\d{7,8}|(\d{3,4}[- ]{1}\d{4}))([- ]{1}\d{1,4})?))$/.test(d);
14128            break;
14129          case "CZ":
14130            c = /^(((00)([- ]?)|\+)(420)([- ]?))?((\d{3})([- ]?)){2}(\d{3})$/.test(d);
14131            break;
14132          case "DE":
14133            c = /^(((((((00|\+)49[ \-/]?)|0)[1-9][0-9]{1,4})[ \-/]?)|((((00|\+)49\()|\(0)[1-9][0-9]{1,4}\)[ \-/]?))[0-9]{1,7}([ \-/]?[0-9]{1,5})?)$/.test(d);
14134            break;
14135          case "DK":
14136            c = /^(\+45|0045|\(45\))?\s?[2-9](\s?\d){7}$/.test(d);
14137            break;
14138          case "ES":
14139            c = /^(?:(?:(?:\+|00)34\D?))?(?:5|6|7|8|9)(?:\d\D?){8}$/.test(d);
14140            break;
14141          case "FR":
14142            c = /^(?:(?:(?:\+|00)33[ ]?(?:\(0\)[ ]?)?)|0){1}[1-9]{1}([ .-]?)(?:\d{2}\1?){3}\d{2}$/.test(d);
14143            break;
14144          case "GB":
14145            c = /^\(?(?:(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?\(?(?:0\)?[\s-]?\(?)?|0)(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}|\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4}|\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3})|\d{5}\)?[\s-]?\d{4,5}|8(?:00[\s-]?11[\s-]?11|45[\s-]?46[\s-]?4\d))(?:(?:[\s-]?(?:x|ext\.?\s?|#)\d+)?)$/.test(d);
14146            break;
14147          case "IN":
14148            c = /((\+?)((0[ -]+)*|(91 )*)(\d{12}|\d{10}))|\d{5}([- ]*)\d{6}/.test(d);
14149            break;
14150          case "MA":
14151            c = /^(?:(?:(?:\+|00)212[\s]?(?:[\s]?\(0\)[\s]?)?)|0){1}(?:5[\s.-]?[2-3]|6[\s.-]?[13-9]){1}[0-9]{1}(?:[\s.-]?\d{2}){3}$/.test(d);
14152            break;
14153          case "NL":
14154            c = /^((\+|00(\s|\s?-\s?)?)31(\s|\s?-\s?)?(\(0\)[-\s]?)?|0)[1-9]((\s|\s?-\s?)?[0-9])((\s|\s?-\s?)?[0-9])((\s|\s?-\s?)?[0-9])\s?[0-9]\s?[0-9]\s?[0-9]\s?[0-9]\s?[0-9]$/gm.test(d);
14155            break;
14156          case "PK":
14157            c = /^0?3[0-9]{2}[0-9]{7}$/.test(d);
14158            break;
14159          case "RO":
14160            c = /^(\+4|)?(07[0-8]{1}[0-9]{1}|02[0-9]{2}|03[0-9]{2}){1}?(\s|\.|-)?([0-9]{3}(\s|\.|-|)){2}$/g.test(d);
14161            break;
14162          case "RU":
14163            c = /^((8|\+7|007)[-./ ]?)?([(/.]?\d{3}[)/.]?[-./ ]?)?[\d\-./ ]{7,10}$/g.test(d);
14164            break;
14165          case "SK":
14166            c = /^(((00)([- ]?)|\+)(421)([- ]?))?((\d{3})([- ]?)){2}(\d{3})$/.test(d);
14167            break;
14168          case "TH":
14169            c = /^0\(?([6|8-9]{2})*-([0-9]{3})*-([0-9]{4})$/.test(d);
14170            break;
14171          case "VE":
14172            c = /^0(?:2(?:12|4[0-9]|5[1-9]|6[0-9]|7[0-8]|8[1-35-8]|9[1-5]|3[45789])|4(?:1[246]|2[46]))\d{7}$/.test(d);
14173            break;
14174          case "US":
14175          default:
14176            c = /^(?:(1-?)|(\+1 ?))?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$/.test(d);
14177            break;
14178        }
14179        return {
14180          message: r$d(t.l10n && t.l10n.phone ? a.message || t.l10n.phone.country : a.message, t.l10n && t.l10n.phone && t.l10n.phone.countries ? t.l10n.phone.countries[r] : r),
14181          valid: c
14182        };
14183      }
14184    };
14185  }
14186  function e$g() {
14187    return {
14188      validate: function validate(e) {
14189        if (e.value === "") {
14190          return {
14191            valid: true
14192          };
14193        }
14194        if (!/^\d{9}$/.test(e.value)) {
14195          return {
14196            valid: false
14197          };
14198        }
14199        var t = 0;
14200        for (var a = 0; a < e.value.length; a += 3) {
14201          t += parseInt(e.value.charAt(a), 10) * 3 + parseInt(e.value.charAt(a + 1), 10) * 7 + parseInt(e.value.charAt(a + 2), 10);
14202        }
14203        return {
14204          valid: t !== 0 && t % 10 === 0
14205        };
14206      }
14207    };
14208  }
14209  function t$z() {
14210    return {
14211      validate: function validate(t) {
14212        if (t.value === "") {
14213          return {
14214            valid: true
14215          };
14216        }
14217        var e = t.value.toUpperCase();
14218        if (!/^[0-9A-Z]{7}$/.test(e)) {
14219          return {
14220            valid: false
14221          };
14222        }
14223        var r = [1, 3, 1, 7, 3, 9, 1];
14224        var a = e.length;
14225        var l = 0;
14226        for (var _t = 0; _t < a - 1; _t++) {
14227          l += r[_t] * parseInt(e.charAt(_t), 36);
14228        }
14229        l = (10 - l % 10) % 10;
14230        return {
14231          valid: "".concat(l) === e.charAt(a - 1)
14232        };
14233      }
14234    };
14235  }
14236  function e$f() {
14237    return {
14238      validate: function validate(e) {
14239        return {
14240          valid: e.value === "" || /^\d{9}$/.test(e.value) && t$15(e.value)
14241        };
14242      }
14243    };
14244  }
14245  function e$e() {
14246    return {
14247      validate: function validate(e) {
14248        if (e.value === "") {
14249          return {
14250            valid: true
14251          };
14252        }
14253        var t = e.value.length;
14254        var l = 0;
14255        var r;
14256        for (var a = 0; a < t; a++) {
14257          r = parseInt(e.value.charAt(a), 10);
14258          if (a % 2 === 0) {
14259            r = r * 2;
14260            if (r > 9) {
14261              r -= 9;
14262            }
14263          }
14264          l += r;
14265        }
14266        return {
14267          valid: l % 10 === 0
14268        };
14269      }
14270    };
14271  }
14272  function e$d() {
14273    var e = function e(t, _e) {
14274      var s = Math.pow(10, _e);
14275      var a = t * s;
14276      var n;
14277      switch (true) {
14278        case a === 0:
14279          n = 0;
14280          break;
14281        case a > 0:
14282          n = 1;
14283          break;
14284        case a < 0:
14285          n = -1;
14286          break;
14287      }
14288      var r = a % 1 === .5 * n;
14289      return r ? (Math.floor(a) + (n > 0 ? 1 : 0)) / s : Math.round(a) / s;
14290    };
14291    var s = function s(t, _s) {
14292      if (_s === 0) {
14293        return 1;
14294      }
14295      var a = "".concat(t).split(".");
14296      var n = "".concat(_s).split(".");
14297      var r = (a.length === 1 ? 0 : a[1].length) + (n.length === 1 ? 0 : n[1].length);
14298      return e(t - _s * Math.floor(t / _s), r);
14299    };
14300    return {
14301      validate: function validate(e) {
14302        if (e.value === "") {
14303          return {
14304            valid: true
14305          };
14306        }
14307        var a = parseFloat(e.value);
14308        if (isNaN(a) || !isFinite(a)) {
14309          return {
14310            valid: false
14311          };
14312        }
14313        var n = Object.assign({}, {
14314          baseValue: 0,
14315          message: "",
14316          step: 1
14317        }, e.options);
14318        var r = s(a - n.baseValue, n.step);
14319        return {
14320          message: r$d(e.l10n ? n.message || e.l10n.step["default"] : n.message, "".concat(n.step)),
14321          valid: r === 0 || r === n.step
14322        };
14323      }
14324    };
14325  }
14326  function s$5() {
14327    return {
14328      validate: function validate(s) {
14329        if (s.value === "") {
14330          return {
14331            valid: true
14332          };
14333        }
14334        var A = Object.assign({}, {
14335          message: ""
14336        }, s.options);
14337        var i = {
14338          3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,
14339          4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
14340          5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
14341          all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i
14342        };
14343        var n = A.version ? "".concat(A.version) : "all";
14344        return {
14345          message: A.version ? r$d(s.l10n ? A.message || s.l10n.uuid.version : A.message, A.version) : s.l10n ? s.l10n.uuid["default"] : A.message,
14346          valid: null === i[n] ? true : i[n].test(s.value)
14347        };
14348      }
14349    };
14350  }
14351  function t$y(t) {
14352    var e = t.replace("-", "");
14353    if (/^AR[0-9]{11}$/.test(e)) {
14354      e = e.substr(2);
14355    }
14356    if (!/^[0-9]{11}$/.test(e)) {
14357      return {
14358        meta: {},
14359        valid: false
14360      };
14361    }
14362    var r = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
14363    var a = 0;
14364    for (var _t = 0; _t < 10; _t++) {
14365      a += parseInt(e.charAt(_t), 10) * r[_t];
14366    }
14367    a = 11 - a % 11;
14368    if (a === 11) {
14369      a = 0;
14370    }
14371    return {
14372      meta: {},
14373      valid: "".concat(a) === e.substr(10)
14374    };
14375  }
14376  function t$x(t) {
14377    var e = t;
14378    if (/^ATU[0-9]{8}$/.test(e)) {
14379      e = e.substr(2);
14380    }
14381    if (!/^U[0-9]{8}$/.test(e)) {
14382      return {
14383        meta: {},
14384        valid: false
14385      };
14386    }
14387    e = e.substr(1);
14388    var r = [1, 2, 1, 2, 1, 2, 1];
14389    var s = 0;
14390    var a = 0;
14391    for (var _t = 0; _t < 7; _t++) {
14392      a = parseInt(e.charAt(_t), 10) * r[_t];
14393      if (a > 9) {
14394        a = Math.floor(a / 10) + a % 10;
14395      }
14396      s += a;
14397    }
14398    s = 10 - (s + 4) % 10;
14399    if (s === 10) {
14400      s = 0;
14401    }
14402    return {
14403      meta: {},
14404      valid: "".concat(s) === e.substr(7, 1)
14405    };
14406  }
14407  function t$w(t) {
14408    var e = t;
14409    if (/^BE[0]?[0-9]{9}$/.test(e)) {
14410      e = e.substr(2);
14411    }
14412    if (!/^[0]?[0-9]{9}$/.test(e)) {
14413      return {
14414        meta: {},
14415        valid: false
14416      };
14417    }
14418    if (e.length === 9) {
14419      e = "0".concat(e);
14420    }
14421    if (e.substr(1, 1) === "0") {
14422      return {
14423        meta: {},
14424        valid: false
14425      };
14426    }
14427    var s = parseInt(e.substr(0, 8), 10) + parseInt(e.substr(8, 2), 10);
14428    return {
14429      meta: {},
14430      valid: s % 97 === 0
14431    };
14432  }
14433  function r$1(r) {
14434    var e = r;
14435    if (/^BG[0-9]{9,10}$/.test(e)) {
14436      e = e.substr(2);
14437    }
14438    if (!/^[0-9]{9,10}$/.test(e)) {
14439      return {
14440        meta: {},
14441        valid: false
14442      };
14443    }
14444    var s = 0;
14445    var n = 0;
14446    if (e.length === 9) {
14447      for (n = 0; n < 8; n++) {
14448        s += parseInt(e.charAt(n), 10) * (n + 1);
14449      }
14450      s = s % 11;
14451      if (s === 10) {
14452        s = 0;
14453        for (n = 0; n < 8; n++) {
14454          s += parseInt(e.charAt(n), 10) * (n + 3);
14455        }
14456        s = s % 11;
14457      }
14458      s = s % 10;
14459      return {
14460        meta: {},
14461        valid: "".concat(s) === e.substr(8)
14462      };
14463    } else {
14464      var _r = function _r(r) {
14465        var e = parseInt(r.substr(0, 2), 10) + 1900;
14466        var s = parseInt(r.substr(2, 2), 10);
14467        var n = parseInt(r.substr(4, 2), 10);
14468        if (s > 40) {
14469          e += 100;
14470          s -= 40;
14471        } else if (s > 20) {
14472          e -= 100;
14473          s -= 20;
14474        }
14475        if (!t$Y(e, s, n)) {
14476          return false;
14477        }
14478        var a = [2, 4, 8, 5, 10, 9, 7, 3, 6];
14479        var l = 0;
14480        for (var _t = 0; _t < 9; _t++) {
14481          l += parseInt(r.charAt(_t), 10) * a[_t];
14482        }
14483        l = l % 11 % 10;
14484        return "".concat(l) === r.substr(9, 1);
14485      };
14486      var _s = function _s(t) {
14487        var r = [21, 19, 17, 13, 11, 9, 7, 3, 1];
14488        var e = 0;
14489        for (var _s2 = 0; _s2 < 9; _s2++) {
14490          e += parseInt(t.charAt(_s2), 10) * r[_s2];
14491        }
14492        e = e % 10;
14493        return "".concat(e) === t.substr(9, 1);
14494      };
14495      var _n = function _n(t) {
14496        var r = [4, 3, 2, 7, 6, 5, 4, 3, 2];
14497        var e = 0;
14498        for (var _s3 = 0; _s3 < 9; _s3++) {
14499          e += parseInt(t.charAt(_s3), 10) * r[_s3];
14500        }
14501        e = 11 - e % 11;
14502        if (e === 10) {
14503          return false;
14504        }
14505        if (e === 11) {
14506          e = 0;
14507        }
14508        return "".concat(e) === t.substr(9, 1);
14509      };
14510      return {
14511        meta: {},
14512        valid: _r(e) || _s(e) || _n(e)
14513      };
14514    }
14515  }
14516  function t$v(t) {
14517    if (t === "") {
14518      return {
14519        meta: {},
14520        valid: true
14521      };
14522    }
14523    var e = t.replace(/[^\d]+/g, "");
14524    if (e === "" || e.length !== 14) {
14525      return {
14526        meta: {},
14527        valid: false
14528      };
14529    }
14530    if (e === "00000000000000" || e === "11111111111111" || e === "22222222222222" || e === "33333333333333" || e === "44444444444444" || e === "55555555555555" || e === "66666666666666" || e === "77777777777777" || e === "88888888888888" || e === "99999999999999") {
14531      return {
14532        meta: {},
14533        valid: false
14534      };
14535    }
14536    var r = e.length - 2;
14537    var a = e.substring(0, r);
14538    var l = e.substring(r);
14539    var n = 0;
14540    var i = r - 7;
14541    var s;
14542    for (s = r; s >= 1; s--) {
14543      n += parseInt(a.charAt(r - s), 10) * i--;
14544      if (i < 2) {
14545        i = 9;
14546      }
14547    }
14548    var f = n % 11 < 2 ? 0 : 11 - n % 11;
14549    if (f !== parseInt(l.charAt(0), 10)) {
14550      return {
14551        meta: {},
14552        valid: false
14553      };
14554    }
14555    r = r + 1;
14556    a = e.substring(0, r);
14557    n = 0;
14558    i = r - 7;
14559    for (s = r; s >= 1; s--) {
14560      n += parseInt(a.charAt(r - s), 10) * i--;
14561      if (i < 2) {
14562        i = 9;
14563      }
14564    }
14565    f = n % 11 < 2 ? 0 : 11 - n % 11;
14566    return {
14567      meta: {},
14568      valid: f === parseInt(l.charAt(1), 10)
14569    };
14570  }
14571  function t$u(t) {
14572    var e = t;
14573    if (/^CHE[0-9]{9}(MWST|TVA|IVA|TPV)?$/.test(e)) {
14574      e = e.substr(2);
14575    }
14576    if (!/^E[0-9]{9}(MWST|TVA|IVA|TPV)?$/.test(e)) {
14577      return {
14578        meta: {},
14579        valid: false
14580      };
14581    }
14582    e = e.substr(1);
14583    var r = [5, 4, 3, 2, 7, 6, 5, 4];
14584    var s = 0;
14585    for (var _t = 0; _t < 8; _t++) {
14586      s += parseInt(e.charAt(_t), 10) * r[_t];
14587    }
14588    s = 11 - s % 11;
14589    if (s === 10) {
14590      return {
14591        meta: {},
14592        valid: false
14593      };
14594    }
14595    if (s === 11) {
14596      s = 0;
14597    }
14598    return {
14599      meta: {},
14600      valid: "".concat(s) === e.substr(8, 1)
14601    };
14602  }
14603  function t$t(t) {
14604    var e = t;
14605    if (/^CY[0-5|9][0-9]{7}[A-Z]$/.test(e)) {
14606      e = e.substr(2);
14607    }
14608    if (!/^[0-5|9][0-9]{7}[A-Z]$/.test(e)) {
14609      return {
14610        meta: {},
14611        valid: false
14612      };
14613    }
14614    if (e.substr(0, 2) === "12") {
14615      return {
14616        meta: {},
14617        valid: false
14618      };
14619    }
14620    var r = 0;
14621    var s = {
14622      0: 1,
14623      1: 0,
14624      2: 5,
14625      3: 7,
14626      4: 9,
14627      5: 13,
14628      6: 15,
14629      7: 17,
14630      8: 19,
14631      9: 21
14632    };
14633    for (var _t = 0; _t < 8; _t++) {
14634      var a = parseInt(e.charAt(_t), 10);
14635      if (_t % 2 === 0) {
14636        a = s["".concat(a)];
14637      }
14638      r += a;
14639    }
14640    return {
14641      meta: {},
14642      valid: "".concat("ABCDEFGHIJKLMNOPQRSTUVWXYZ"[r % 26]) === e.substr(8, 1)
14643    };
14644  }
14645  function e$c(e) {
14646    var r = e;
14647    if (/^CZ[0-9]{8,10}$/.test(r)) {
14648      r = r.substr(2);
14649    }
14650    if (!/^[0-9]{8,10}$/.test(r)) {
14651      return {
14652        meta: {},
14653        valid: false
14654      };
14655    }
14656    var a = 0;
14657    var s = 0;
14658    if (r.length === 8) {
14659      if ("".concat(r.charAt(0)) === "9") {
14660        return {
14661          meta: {},
14662          valid: false
14663        };
14664      }
14665      a = 0;
14666      for (s = 0; s < 7; s++) {
14667        a += parseInt(r.charAt(s), 10) * (8 - s);
14668      }
14669      a = 11 - a % 11;
14670      if (a === 10) {
14671        a = 0;
14672      }
14673      if (a === 11) {
14674        a = 1;
14675      }
14676      return {
14677        meta: {},
14678        valid: "".concat(a) === r.substr(7, 1)
14679      };
14680    } else if (r.length === 9 && "".concat(r.charAt(0)) === "6") {
14681      a = 0;
14682      for (s = 0; s < 7; s++) {
14683        a += parseInt(r.charAt(s + 1), 10) * (8 - s);
14684      }
14685      a = 11 - a % 11;
14686      if (a === 10) {
14687        a = 0;
14688      }
14689      if (a === 11) {
14690        a = 1;
14691      }
14692      a = [8, 7, 6, 5, 4, 3, 2, 1, 0, 9, 10][a - 1];
14693      return {
14694        meta: {},
14695        valid: "".concat(a) === r.substr(8, 1)
14696      };
14697    } else if (r.length === 9 || r.length === 10) {
14698      var _e = 1900 + parseInt(r.substr(0, 2), 10);
14699      var _a = parseInt(r.substr(2, 2), 10) % 50 % 20;
14700      var _s = parseInt(r.substr(4, 2), 10);
14701      if (r.length === 9) {
14702        if (_e >= 1980) {
14703          _e -= 100;
14704        }
14705        if (_e > 1953) {
14706          return {
14707            meta: {},
14708            valid: false
14709          };
14710        }
14711      } else if (_e < 1954) {
14712        _e += 100;
14713      }
14714      if (!t$Y(_e, _a, _s)) {
14715        return {
14716          meta: {},
14717          valid: false
14718        };
14719      }
14720      if (r.length === 10) {
14721        var _t = parseInt(r.substr(0, 9), 10) % 11;
14722        if (_e < 1985) {
14723          _t = _t % 10;
14724        }
14725        return {
14726          meta: {},
14727          valid: "".concat(_t) === r.substr(9, 1)
14728        };
14729      }
14730      return {
14731        meta: {},
14732        valid: true
14733      };
14734    }
14735    return {
14736      meta: {},
14737      valid: false
14738    };
14739  }
14740  function e$b(e) {
14741    var r = e;
14742    if (/^DE[0-9]{9}$/.test(r)) {
14743      r = r.substr(2);
14744    }
14745    if (!/^[0-9]{9}$/.test(r)) {
14746      return {
14747        meta: {},
14748        valid: false
14749      };
14750    }
14751    return {
14752      meta: {},
14753      valid: t$14(r)
14754    };
14755  }
14756  function t$s(t) {
14757    var e = t;
14758    if (/^DK[0-9]{8}$/.test(e)) {
14759      e = e.substr(2);
14760    }
14761    if (!/^[0-9]{8}$/.test(e)) {
14762      return {
14763        meta: {},
14764        valid: false
14765      };
14766    }
14767    var r = 0;
14768    var a = [2, 7, 6, 5, 4, 3, 2, 1];
14769    for (var _t = 0; _t < 8; _t++) {
14770      r += parseInt(e.charAt(_t), 10) * a[_t];
14771    }
14772    return {
14773      meta: {},
14774      valid: r % 11 === 0
14775    };
14776  }
14777  function t$r(t) {
14778    var e = t;
14779    if (/^EE[0-9]{9}$/.test(e)) {
14780      e = e.substr(2);
14781    }
14782    if (!/^[0-9]{9}$/.test(e)) {
14783      return {
14784        meta: {},
14785        valid: false
14786      };
14787    }
14788    var r = 0;
14789    var a = [3, 7, 1, 3, 7, 1, 3, 7, 1];
14790    for (var _t = 0; _t < 9; _t++) {
14791      r += parseInt(e.charAt(_t), 10) * a[_t];
14792    }
14793    return {
14794      meta: {},
14795      valid: r % 10 === 0
14796    };
14797  }
14798  function t$q(t) {
14799    var e = t;
14800    if (/^ES[0-9A-Z][0-9]{7}
14800[0-9A-Z]$/.test(e)) {
14801      e = e.substr(2);
14802    }
14803    if (!/^[0-9A-Z][0-9]{7}[0-9A-Z]$/.test(e)) {
14804      return {
14805        meta: {},
14806        valid: false
14807      };
14808    }
14809    var s = function s(t) {
14810      var e = parseInt(t.substr(0, 8), 10);
14811      return "".concat("TRWAGMYFPDXBNJZSQVHLCKE"[e % 23]) === t.substr(8, 1);
14812    };
14813    var r = function r(t) {
14814      var e = ["XYZ".indexOf(t.charAt(0)), t.substr(1)].join("");
14815      var s = "TRWAGMYFPDXBNJZSQVHLCKE"[parseInt(e, 10) % 23];
14816      return "".concat(s) === t.substr(8, 1);
14817    };
14818    var n = function n(t) {
14819      var e = t.charAt(0);
14820      var s;
14821      if ("KLM".indexOf(e) !== -1) {
14822        s = parseInt(t.substr(1, 8), 10);
14823        s = "TRWAGMYFPDXBNJZSQVHLCKE"[s % 23];
14824        return "".concat(s) === t.substr(8, 1);
14825      } else if ("ABCDEFGHJNPQRSUVW".indexOf(e) !== -1) {
14826        var _e = [2, 1, 2, 1, 2, 1, 2];
14827        var _s = 0;
14828        var _r = 0;
14829        for (var _n = 0; _n < 7; _n++) {
14830          _r = parseInt(t.charAt(_n + 1), 10) * _e[_n];
14831          if (_r > 9) {
14832            _r = Math.floor(_r / 10) + _r % 10;
14833          }
14834          _s += _r;
14835        }
14836        _s = 10 - _s % 10;
14837        if (_s === 10) {
14838          _s = 0;
14839        }
14840        return "".concat(_s) === t.substr(8, 1) || "JABCDEFGHI"[_s] === t.substr(8, 1);
14841      }
14842      return false;
14843    };
14844    var a = e.charAt(0);
14845    if (/^[0-9]$/.test(a)) {
14846      return {
14847        meta: {
14848          type: "DNI"
14849        },
14850        valid: s(e)
14851      };
14852    } else if (/^[XYZ]$/.test(a)) {
14853      return {
14854        meta: {
14855          type: "NIE"
14856        },
14857        valid: r(e)
14858      };
14859    } else {
14860      return {
14861        meta: {
14862          type: "CIF"
14863        },
14864        valid: n(e)
14865      };
14866    }
14867  }
14868  function t$p(t) {
14869    var e = t;
14870    if (/^FI[0-9]{8}$/.test(e)) {
14871      e = e.substr(2);
14872    }
14873    if (!/^[0-9]{8}$/.test(e)) {
14874      return {
14875        meta: {},
14876        valid: false
14877      };
14878    }
14879    var r = [7, 9, 10, 5, 8, 4, 2, 1];
14880    var a = 0;
14881    for (var _t = 0; _t < 8; _t++) {
14882      a += parseInt(e.charAt(_t), 10) * r[_t];
14883    }
14884    return {
14885      meta: {},
14886      valid: a % 11 === 0
14887    };
14888  }
14889  function e$a(e) {
14890    var r = e;
14891    if (/^FR[0-9A-Z]{2}[0-9]{9}$/.test(r)) {
14892      r = r.substr(2);
14893    }
14894    if (!/^[0-9A-Z]{2}[0-9]{9}$/.test(r)) {
14895      return {
14896        meta: {},
14897        valid: false
14898      };
14899    }
14900    if (r.substr(2, 4) !== "000") {
14901      return {
14902        meta: {},
14903        valid: t$15(r.substr(2))
14904      };
14905    }
14906    if (/^[0-9]{2}$/.test(r.substr(0, 2))) {
14907      return {
14908        meta: {},
14909        valid: r.substr(0, 2) === "".concat(parseInt(r.substr(2) + "12", 10) % 97)
14910      };
14911    } else {
14912      var _t = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ";
14913      var _e;
14914      if (/^[0-9]$/.test(r.charAt(0))) {
14915        _e = _t.indexOf(r.charAt(0)) * 24 + _t.indexOf(r.charAt(1)) - 10;
14916      } else {
14917        _e = _t.indexOf(r.charAt(0)) * 34 + _t.indexOf(r.charAt(1)) - 100;
14918      }
14919      return {
14920        meta: {},
14921        valid: (parseInt(r.substr(2), 10) + 1 + Math.floor(_e / 11)) % 11 === _e % 11
14922      };
14923    }
14924  }
14925  function t$o(t) {
14926    var s = t;
14927    if (/^GB[0-9]{9}$/.test(s) || /^GB[0-9]{12}$/.test(s) || /^GBGD[0-9]{3}$/.test(s) || /^GBHA[0-9]{3}$/.test(s) || /^GB(GD|HA)8888[0-9]{5}$/.test(s)) {
14928      s = s.substr(2);
14929    }
14930    if (!/^[0-9]{9}$/.test(s) && !/^[0-9]{12}$/.test(s) && !/^GD[0-9]{3}$/.test(s) && !/^HA[0-9]{3}$/.test(s) && !/^(GD|HA)8888[0-9]{5}$/.test(s)) {
14931      return {
14932        meta: {},
14933        valid: false
14934      };
14935    }
14936    var e = s.length;
14937    if (e === 5) {
14938      var _t = s.substr(0, 2);
14939      var _e = parseInt(s.substr(2), 10);
14940      return {
14941        meta: {},
14942        valid: "GD" === _t && _e < 500 || "HA" === _t && _e >= 500
14943      };
14944    } else if (e === 11 && ("GD8888" === s.substr(0, 6) || "HA8888" === s.substr(0, 6))) {
14945      if ("GD" === s.substr(0, 2) && parseInt(s.substr(6, 3), 10) >= 500 || "HA" === s.substr(0, 2) && parseInt(s.substr(6, 3), 10) < 500) {
14946        return {
14947          meta: {},
14948          valid: false
14949        };
14950      }
14951      return {
14952        meta: {},
14953        valid: parseInt(s.substr(6, 3), 10) % 97 === parseInt(s.substr(9, 2), 10)
14954      };
14955    } else if (e === 9 || e === 12) {
14956      var _t2 = [8, 7, 6, 5, 4, 3, 2, 10, 1];
14957      var _e2 = 0;
14958      for (var _r = 0; _r < 9; _r++) {
14959        _e2 += parseInt(s.charAt(_r), 10) * _t2[_r];
14960      }
14961      _e2 = _e2 % 97;
14962      var r = parseInt(s.substr(0, 3), 10) >= 100 ? _e2 === 0 || _e2 === 42 || _e2 === 55 : _e2 === 0;
14963      return {
14964        meta: {},
14965        valid: r
14966      };
14967    }
14968    return {
14969      meta: {},
14970      valid: true
14971    };
14972  }
14973  function t$n(t) {
14974    var e = t;
14975    if (/^(GR|EL)[0-9]{9}$/.test(e)) {
14976      e = e.substr(2);
14977    }
14978    if (!/^[0-9]{9}$/.test(e)) {
14979      return {
14980        meta: {},
14981        valid: false
14982      };
14983    }
14984    if (e.length === 8) {
14985      e = "0".concat(e);
14986    }
14987    var r = [256, 128, 64, 32, 16, 8, 4, 2];
14988    var s = 0;
14989    for (var _t = 0; _t < 8; _t++) {
14990      s += parseInt(e.charAt(_t), 10) * r[_t];
14991    }
14992    s = s % 11 % 10;
14993    return {
14994      meta: {},
14995      valid: "".concat(s) === e.substr(8, 1)
14996    };
14997  }
14998  function e$9(e) {
14999    var r = e;
15000    if (/^HR[0-9]{11}$/.test(r)) {
15001      r = r.substr(2);
15002    }
15003    if (!/^[0-9]{11}$/.test(r)) {
15004      return {
15005        meta: {},
15006        valid: false
15007      };
15008    }
15009    return {
15010      meta: {},
15011      valid: t$14(r)
15012    };
15013  }
15014  function t$m(t) {
15015    var e = t;
15016    if (/^HU[0-9]{8}$/.test(e)) {
15017      e = e.substr(2);
15018    }
15019    if (!/^[0-9]{8}$/.test(e)) {
15020      return {
15021        meta: {},
15022        valid: false
15023      };
15024    }
15025    var r = [9, 7, 3, 1, 9, 7, 3, 1];
15026    var a = 0;
15027    for (var _t = 0; _t < 8; _t++) {
15028      a += parseInt(e.charAt(_t), 10) * r[_t];
15029    }
15030    return {
15031      meta: {},
15032      valid: a % 10 === 0
15033    };
15034  }
15035  function t$l(t) {
15036    var e = t;
15037    if (/^IE[0-9][0-9A-Z*+][0-9]{5}[A-Z]{1,2}$/.test(e)) {
15038      e = e.substr(2);
15039    }
15040    if (!/^[0-9][0-9A-Z*+][0-9]{5}[A-Z]{1,2}$/.test(e)) {
15041      return {
15042        meta: {},
15043        valid: false
15044      };
15045    }
15046    var r = function r(t) {
15047      var e = t;
15048      while (e.length < 7) {
15049        e = "0".concat(e);
15050      }
15051      var r = "WABCDEFGHIJKLMNOPQRSTUV";
15052      var s = 0;
15053      for (var _t = 0; _t < 7; _t++) {
15054        s += parseInt(e.charAt(_t), 10) * (8 - _t);
15055      }
15056      s += 9 * r.indexOf(e.substr(7));
15057      return r[s % 23];
15058    };
15059    if (/^[0-9]+$/.test(e.substr(0, 7))) {
15060      return {
15061        meta: {},
15062        valid: e.charAt(7) === r("".concat(e.substr(0, 7)).concat(e.substr(8)))
15063      };
15064    } else if ("ABCDEFGHIJKLMNOPQRSTUVWXYZ+*".indexOf(e.charAt(1)) !== -1) {
15065      return {
15066        meta: {},
15067        valid: e.charAt(7) === r("".concat(e.substr(2, 5)).concat(e.substr(0, 1)))
15068      };
15069    }
15070    return {
15071      meta: {},
15072      valid: true
15073    };
15074  }
15075  function t$k(t) {
15076    var e = t;
15077    if (/^IS[0-9]{5,6}$/.test(e)) {
15078      e = e.substr(2);
15079    }
15080    return {
15081      meta: {},
15082      valid: /^[0-9]{5,6}$/.test(e)
15083    };
15084  }
15085  function e$8(e) {
15086    var r = e;
15087    if (/^IT[0-9]{11}$/.test(r)) {
15088      r = r.substr(2);
15089    }
15090    if (!/^[0-9]{11}$/.test(r)) {
15091      return {
15092        meta: {},
15093        valid: false
15094      };
15095    }
15096    if (parseInt(r.substr(0, 7), 10) === 0) {
15097      return {
15098        meta: {},
15099        valid: false
15100      };
15101    }
15102    var a = parseInt(r.substr(7, 3), 10);
15103    if (a < 1 || a > 201 && a !== 999 && a !== 888) {
15104      return {
15105        meta: {},
15106        valid: false
15107      };
15108    }
15109    return {
15110      meta: {},
15111      valid: t$15(r)
15112    };
15113  }
15114  function t$j(t) {
15115    var e = t;
15116    if (/^LT([0-9]{7}1[0-9]|[0-9]{10}1[0-9])$/.test(e)) {
15117      e = e.substr(2);
15118    }
15119    if (!/^([0-9]{7}1[0-9]|[0-9]{10}1[0-9])$/.test(e)) {
15120      return {
15121        meta: {},
15122        valid: false
15123      };
15124    }
15125    var r = e.length;
15126    var a = 0;
15127    var l;
15128    for (l = 0; l < r - 1; l++) {
15129      a += parseInt(e.charAt(l), 10) * (1 + l % 9);
15130    }
15131    var f = a % 11;
15132    if (f === 10) {
15133      a = 0;
15134      for (l = 0; l < r - 1; l++) {
15135        a += parseInt(e.charAt(l), 10) * (1 + (l + 2) % 9);
15136      }
15137    }
15138    f = f % 11 % 10;
15139    return {
15140      meta: {},
15141      valid: "".concat(f) === e.charAt(r - 1)
15142    };
15143  }
15144  function t$i(t) {
15145    var e = t;
15146    if (/^LU[0-9]{8}$/.test(e)) {
15147      e = e.substr(2);
15148    }
15149    if (!/^[0-9]{8}$/.test(e)) {
15150      return {
15151        meta: {},
15152        valid: false
15153      };
15154    }
15155    return {
15156      meta: {},
15157      valid: "".concat(parseInt(e.substr(0, 6), 10) % 89) === e.substr(6, 2)
15158    };
15159  }
15160  function e$7(e) {
15161    var r = e;
15162    if (/^LV[0-9]{11}$/.test(r)) {
15163      r = r.substr(2);
15164    }
15165    if (!/^[0-9]{11}$/.test(r)) {
15166      return {
15167        meta: {},
15168        valid: false
15169      };
15170    }
15171    var s = parseInt(r.charAt(0), 10);
15172    var a = r.length;
15173    var n = 0;
15174    var l = [];
15175    var i;
15176    if (s > 3) {
15177      n = 0;
15178      l = [9, 1, 4, 8, 3, 10, 2, 5, 7, 6, 1];
15179      for (i = 0; i < a; i++) {
15180        n += parseInt(r.charAt(i), 10) * l[i];
15181      }
15182      n = n % 11;
15183      return {
15184        meta: {},
15185        valid: n === 3
15186      };
15187    } else {
15188      var _e = parseInt(r.substr(0, 2), 10);
15189      var _s = parseInt(r.substr(2, 2), 10);
15190      var f = parseInt(r.substr(4, 2), 10);
15191      f = f + 1800 + parseInt(r.charAt(6), 10) * 100;
15192      if (!t$Y(f, _s, _e)) {
15193        return {
15194          meta: {},
15195          valid: false
15196        };
15197      }
15198      n = 0;
15199      l = [10, 5, 8, 4, 2, 1, 6, 3, 7, 9];
15200      for (i = 0; i < a - 1; i++) {
15201        n += parseInt(r.charAt(i), 10) * l[i];
15202      }
15203      n = (n + 1) % 11 % 10;
15204      return {
15205        meta: {},
15206        valid: "".concat(n) === r.charAt(a - 1)
15207      };
15208    }
15209  }
15210  function t$h(t) {
15211    var e = t;
15212    if (/^MT[0-9]{8}$/.test(e)) {
15213      e = e.substr(2);
15214    }
15215    if (!/^[0-9]{8}$/.test(e)) {
15216      return {
15217        meta: {},
15218        valid: false
15219      };
15220    }
15221    var r = [3, 4, 6, 7, 8, 9, 10, 1];
15222    var a = 0;
15223    for (var _t = 0; _t < 8; _t++) {
15224      a += parseInt(e.charAt(_t), 10) * r[_t];
15225    }
15226    return {
15227      meta: {},
15228      valid: a % 37 === 0
15229    };
15230  }
15231  function t$g(t) {
15232    return t.split("").map(function (t) {
15233      var n = t.charCodeAt(0);
15234      return n >= 65 && n <= 90 ? n - 55 : t;
15235    }).join("").split("").map(function (t) {
15236      return parseInt(t, 10);
15237    });
15238  }
15239  function n(n) {
15240    var e = t$g(n);
15241    var r = 0;
15242    var o = e.length;
15243    for (var _t = 0; _t < o - 1; ++_t) {
15244      r = (r + e[_t]) * 10 % 97;
15245    }
15246    r += e[o - 1];
15247    return r % 97 === 1;
15248  }
15249  function e$6(e) {
15250    var i = e;
15251    if (/^NL[0-9]{9}B[0-9]{2}$/.test(i)) {
15252      i = i.substr(2);
15253    }
15254    if (!/^[0-9]{9}B[0-9]{2}$/.test(i)) {
15255      return {
15256        meta: {},
15257        valid: false
15258      };
15259    }
15260    var o = i.substr(0, 9);
15261    return {
15262      meta: {},
15263      valid: e$o(o).valid || n("NL".concat(i))
15264    };
15265  }
15266  function t$f(t) {
15267    var e = t;
15268    if (/^NO[0-9]{9}$/.test(e)) {
15269      e = e.substr(2);
15270    }
15271    if (!/^[0-9]{9}$/.test(e)) {
15272      return {
15273        meta: {},
15274        valid: false
15275      };
15276    }
15277    var r = [3, 2, 7, 6, 5, 4, 3, 2];
15278    var s = 0;
15279    for (var _t = 0; _t < 8; _t++) {
15280      s += parseInt(e.charAt(_t), 10) * r[_t];
15281    }
15282    s = 11 - s % 11;
15283    if (s === 11) {
15284      s = 0;
15285    }
15286    return {
15287      meta: {},
15288      valid: "".concat(s) === e.substr(8, 1)
15289    };
15290  }
15291  function t$e(t) {
15292    var e = t;
15293    if (/^PL[0-9]{10}$/.test(e)) {
15294      e = e.substr(2);
15295    }
15296    if (!/^[0-9]{10}$/.test(e)) {
15297      return {
15298        meta: {},
15299        valid: false
15300      };
15301    }
15302    var r = [6, 5, 7, 2, 3, 4, 5, 6, 7, -1];
15303    var a = 0;
15304    for (var _t = 0; _t < 10; _t++) {
15305      a += parseInt(e.charAt(_t), 10) * r[_t];
15306    }
15307    return {
15308      meta: {},
15309      valid: a % 11 === 0
15310    };
15311  }
15312  function t$d(t) {
15313    var e = t;
15314    if (/^PT[0-9]{9}$/.test(e)) {
15315      e = e.substr(2);
15316    }
15317    if (!/^[0-9]{9}$/.test(e)) {
15318      return {
15319        meta: {},
15320        valid: false
15321      };
15322    }
15323    var r = [9, 8, 7, 6, 5, 4, 3, 2];
15324    var s = 0;
15325    for (var _t = 0; _t < 8; _t++) {
15326      s += parseInt(e.charAt(_t), 10) * r[_t];
15327    }
15328    s = 11 - s % 11;
15329    if (s > 9) {
15330      s = 0;
15331    }
15332    return {
15333      meta: {},
15334      valid: "".concat(s) === e.substr(8, 1)
15335    };
15336  }
15337  function t$c(t) {
15338    var e = t;
15339    if (/^RO[1-9][0-9]{1,9}$/.test(e)) {
15340      e = e.substr(2);
15341    }
15342    if (!/^[1-9][0-9]{1,9}$/.test(e)) {
15343      return {
15344        meta: {},
15345        valid: false
15346      };
15347    }
15348    var s = e.length;
15349    var r = [7, 5, 3, 2, 1, 7, 5, 3, 2].slice(10 - s);
15350    var l = 0;
15351    for (var _t = 0; _t < s - 1; _t++) {
15352      l += parseInt(e.charAt(_t), 10) * r[_t];
15353    }
15354    l = 10 * l % 11 % 10;
15355    return {
15356      meta: {},
15357      valid: "".concat(l) === e.substr(s - 1, 1)
15358    };
15359  }
15360  function t$b(t) {
15361    var e = t;
15362    if (/^RS[0-9]{9}$/.test(e)) {
15363      e = e.substr(2);
15364    }
15365    if (!/^[0-9]{9}$/.test(e)) {
15366      return {
15367        meta: {},
15368        valid: false
15369      };
15370    }
15371    var r = 10;
15372    var a = 0;
15373    for (var _t = 0; _t < 8; _t++) {
15374      a = (parseInt(e.charAt(_t), 10) + r) % 10;
15375      if (a === 0) {
15376        a = 10;
15377      }
15378      r = 2 * a % 11;
15379    }
15380    return {
15381      meta: {},
15382      valid: (r + parseInt(e.substr(8, 1), 10)) % 10 === 1
15383    };
15384  }
15385  function t$a(t) {
15386    var e = t;
15387    if (/^RU([0-9]{10}|[0-9]{12})$/.test(e)) {
15388      e = e.substr(2);
15389    }
15390    if (!/^([0-9]{10}|[0-9]{12})$/.test(e)) {
15391      return {
15392        meta: {},
15393        valid: false
15394      };
15395    }
15396    var r = 0;
15397    if (e.length === 10) {
15398      var _t = [2, 4, 10, 3, 5, 9, 4, 6, 8, 0];
15399      var s = 0;
15400      for (r = 0; r < 10; r++) {
15401        s += parseInt(e.charAt(r), 10) * _t[r];
15402      }
15403      s = s % 11;
15404      if (s > 9) {
15405        s = s % 10;
15406      }
15407      return {
15408        meta: {},
15409        valid: "".concat(s) === e.substr(9, 1)
15410      };
15411    } else if (e.length === 12) {
15412      var _t2 = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8, 0];
15413      var _s = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8, 0];
15414      var a = 0;
15415      var l = 0;
15416      for (r = 0; r < 11; r++) {
15417        a += parseInt(e.charAt(r), 10) * _t2[r];
15418        l += parseInt(e.charAt(r), 10) * _s[r];
15419      }
15420      a = a % 11;
15421      if (a > 9) {
15422        a = a % 10;
15423      }
15424      l = l % 11;
15425      if (l > 9) {
15426        l = l % 10;
15427      }
15428      return {
15429        meta: {},
15430        valid: "".concat(a) === e.substr(10, 1) && "".concat(l) === e.substr(11, 1)
15431      };
15432    }
15433    return {
15434      meta: {},
15435      valid: true
15436    };
15437  }
15438  function e$5(e) {
15439    var r = e;
15440    if (/^SE[0-9]{10}01$/.test(r)) {
15441      r = r.substr(2);
15442    }
15443    if (!/^[0-9]{10}01$/.test(r)) {
15444      return {
15445        meta: {},
15446        valid: false
15447      };
15448    }
15449    r = r.substr(0, 10);
15450    return {
15451      meta: {},
15452      valid: t$15(r)
15453    };
15454  }
15455  function t$9(t) {
15456    var e = t.match(/^(SI)?([1-9][0-9]{7})$/);
15457    if (!e) {
15458      return {
15459        meta: {},
15460        valid: false
15461      };
15462    }
15463    var r = e[1] ? t.substr(2) : t;
15464    var a = [8, 7, 6, 5, 4, 3, 2];
15465    var s = 0;
15466    for (var _t = 0; _t < 7; _t++) {
15467      s += parseInt(r.charAt(_t), 10) * a[_t];
15468    }
15469    s = 11 - s % 11;
15470    if (s === 10) {
15471      s = 0;
15472    }
15473    return {
15474      meta: {},
15475      valid: "".concat(s) === r.substr(7, 1)
15476    };
15477  }
15478  function t$8(t) {
15479    var e = t;
15480    if (/^SK[1-9][0-9][(2-4)|(6-9)][0-9]{7}$/.test(e)) {
15481      e = e.substr(2);
15482    }
15483    if (!/^[1-9][0-9][(2-4)|(6-9)][0-9]{7}$/.test(e)) {
15484      return {
15485        meta: {},
15486        valid: false
15487      };
15488    }
15489    return {
15490      meta: {},
15491      valid: parseInt(e, 10) % 11 === 0
15492    };
15493  }
15494  function t$7(t) {
15495    var e = t;
15496    if (/^VE[VEJPG][0-9]{9}$/.test(e)) {
15497      e = e.substr(2);
15498    }
15499    if (!/^[VEJPG][0-9]{9}$/.test(e)) {
15500      return {
15501        meta: {},
15502        valid: false
15503      };
15504    }
15505    var r = {
15506      E: 8,
15507      G: 20,
15508      J: 12,
15509      P: 16,
15510      V: 4
15511    };
15512    var s = [3, 2, 7, 6, 5, 4, 3, 2];
15513    var a = r[e.charAt(0)];
15514    for (var _t = 0; _t < 8; _t++) {
15515      a += parseInt(e.charAt(_t + 1), 10) * s[_t];
15516    }
15517    a = 11 - a % 11;
15518    if (a === 11 || a === 10) {
15519      a = 0;
15520    }
15521    return {
15522      meta: {},
15523      valid: "".concat(a) === e.substr(9, 1)
15524    };
15525  }
15526  function t$6(t) {
15527    var e = t;
15528    if (/^ZA4[0-9]{9}$/.test(e)) {
15529      e = e.substr(2);
15530    }
15531    return {
15532      meta: {},
15533      valid: /^4[0-9]{9}$/.test(e)
15534    };
15535  }
15536  function x() {
15537    var x = ["AR", "AT", "BE", "BG", "BR", "CH", "CY", "CZ", "DE", "DK", "EE", "EL", "ES", "FI", "FR", "GB", "GR", "HR", "HU", "IE", "IS", "IT", "LT", "LU", "LV", "MT", "NL", "NO", "PL", "PT", "RO", "RU", "RS", "SE", "SK", "SI", "VE", "ZA"];
15538    return {
15539      validate: function validate(D) {
15540        var F = D.value;
15541        if (F === "") {
15542          return {
15543            valid: true
15544          };
15545        }
15546        var K = Object.assign({}, {
15547          message: ""
15548        }, D.options);
15549        var N = F.substr(0, 2);
15550        if ("function" === typeof K.country) {
15551          N = K.country.call(this);
15552        } else {
15553          N = K.country;
15554        }
15555        if (x.indexOf(N) === -1) {
15556          return {
15557            valid: true
15558          };
15559        }
15560        var P = {
15561          meta: {},
15562          valid: true
15563        };
15564        switch (N.toLowerCase()) {
15565          case "ar":
15566            P = t$y(F);
15567            break;
15568          case "at":
15569            P = t$x(F);
15570            break;
15571          case "be":
15572            P = t$w(F);
15573            break;
15574          case "bg":
15575            P = r$1(F);
15576            break;
15577          case "br":
15578            P = t$v(F);
15579            break;
15580          case "ch":
15581            P = t$u(F);
15582            break;
15583          case "cy":
15584            P = t$t(F);
15585            break;
15586          case "cz":
15587            P = e$c(F);
15588            break;
15589          case "de":
15590            P = e$b(F);
15591            break;
15592          case "dk":
15593            P = t$s(F);
15594            break;
15595          case "ee":
15596            P = t$r(F);
15597            break;
15598          case "el":
15599            P = t$n(F);
15600            break;
15601          case "es":
15602            P = t$q(F);
15603            break;
15604          case "fi":
15605            P = t$p(F);
15606            break;
15607          case "fr":
15608            P = e$a(F);
15609            break;
15610          case "gb":
15611            P = t$o(F);
15612            break;
15613          case "gr":
15614            P = t$n(F);
15615            break;
15616          case "hr":
15617            P = e$9(F);
15618            break;
15619          case "hu":
15620            P = t$m(F);
15621            break;
15622          case "ie":
15623            P = t$l(F);
15624            break;
15625          case "is":
15626            P = t$k(F);
15627            break;
15628          case "it":
15629            P = e$8(F);
15630            break;
15631          case "lt":
15632            P = t$j(F);
15633            break;
15634          case "lu":
15635            P = t$i(F);
15636            break;
15637          case "lv":
15638            P = e$7(F);
15639            break;
15640          case "mt":
15641            P = t$h(F);
15642            break;
15643          case "nl":
15644            P = e$6(F);
15645            break;
15646          case "no":
15647            P = t$f(F);
15648            break;
15649          case "pl":
15650            P = t$e(F);
15651            break;
15652          case "pt":
15653            P = t$d(F);
15654            break;
15655          case "ro":
15656            P = t$c(F);
15657            break;
15658          case "rs":
15659            P = t$b(F);
15660            break;
15661          case "ru":
15662            P = t$a(F);
15663            break;
15664          case "se":
15665            P = e$5(F);
15666            break;
15667          case "si":
15668            P = t$9(F);
15669            break;
15670          case "sk":
15671            P = t$8(F);
15672            break;
15673          case "ve":
15674            P = t$7(F);
15675            break;
15676          case "za":
15677            P = t$6(F);
15678            break;
15679        }
15680        var Z = r$d(D.l10n && D.l10n.vat ? K.message || D.l10n.vat.country : K.message, D.l10n && D.l10n.vat && D.l10n.vat.countries ? D.l10n.vat.countries[N.toUpperCase()] : N.toUpperCase());
15681        return Object.assign({}, {
15682          message: Z
15683        }, P);
15684      }
15685    };
15686  }
15687  function t$5() {
15688    return {
15689      validate: function validate(t) {
15690        if (t.value === "") {
15691          return {
15692            valid: true
15693          };
15694        }
15695        if (!/^[a-hj-npr-z0-9]{8}[0-9xX][a-hj-npr-z0-9]{8}$/i.test(t.value)) {
15696          return {
15697            valid: false
15698          };
15699        }
15700        var e = t.value.toUpperCase();
15701        var r = {
15702          A: 1,
15703          B: 2,
15704          C: 3,
15705          D: 4,
15706          E: 5,
15707          F: 6,
15708          G: 7,
15709          H: 8,
15710          J: 1,
15711          K: 2,
15712          L: 3,
15713          M: 4,
15714          N: 5,
15715          P: 7,
15716          R: 9,
15717          S: 2,
15718          T: 3,
15719          U: 4,
15720          V: 5,
15721          W: 6,
15722          X: 7,
15723          Y: 8,
15724          Z: 9,
15725          0: 0,
15726          1: 1,
15727          2: 2,
15728          3: 3,
15729          4: 4,
15730          5: 5,
15731          6: 6,
15732          7: 7,
15733          8: 8,
15734          9: 9
15735        };
15736        var a = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2];
15737        var l = e.length;
15738        var n = 0;
15739        for (var _t = 0; _t < l; _t++) {
15740          n += r["".concat(e.charAt(_t))] * a[_t];
15741        }
15742        var u = "".concat(n % 11);
15743        if (u === "10") {
15744          u = "X";
15745        }
15746        return {
15747          valid: u === e.charAt(8)
15748        };
15749      }
15750    };
15751  }
15752  function s$4() {
15753    var s = ["AT", "BG", "BR", "CA", "CH", "CZ", "DE", "DK", "ES", "FR", "GB", "IE", "IN", "IT", "MA", "NL", "PL", "PT", "RO", "RU", "SE", "SG", "SK", "US"];
15754    var a = function a(e) {
15755      var s = "[ABCDEFGHIJKLMNOPRSTUWYZ]";
15756      var a = "[ABCDEFGHKLMNOPQRSTUVWXY]";
15757      var t = "[ABCDEFGHJKPMNRSTUVWXY]";
15758      var r = "[ABEHMNPRVWXY]";
15759      var u = "[ABDEFGHJLNPQRSTUWXYZ]";
15760      var c = [new RegExp("^(".concat(s, "{1}").concat(a, "?[0-9]{1,2})(\\s*)([0-9]{1}").concat(u, "{2})$"), "i"), new RegExp("^(".concat(s, "{1}[0-9]{1}").concat(t, "{1})(\\s*)([0-9]{1}").concat(u, "{2})$"), "i"), new RegExp("^(".concat(s, "{1}").concat(a, "{1}?[0-9]{1}").concat(r, "{1})(\\s*)([0-9]{1}").concat(u, "{2})$"), "i"), new RegExp("^(BF1)(\\s*)([0-6]{1}[ABDEFGHJLNPQRST]{1}[ABDEFGHJLNPQRSTUWZYZ]{1})$", "i"), /^(GIR)(\s*)(0AA)$/i, /^(BFPO)(\s*)([0-9]{1,4})$/i, /^(BFPO)(\s*)(c\/o\s*[0-9]{1,3})$/i, /^([A-Z]{4}
15760)(\s*)(1ZZ)$/i, /^(AI-2640)$/i];
15761      for (var _i = 0, _c = c; _i < _c.length; _i++) {
15762        var _s = _c[_i];
15763        if (_s.test(e)) {
15764          return true;
15765        }
15766      }
15767      return false;
15768    };
15769    return {
15770      validate: function validate(t) {
15771        var r = Object.assign({}, {
15772          message: ""
15773        }, t.options);
15774        if (t.value === "" || !r.country) {
15775          return {
15776            valid: true
15777          };
15778        }
15779        var u = t.value.substr(0, 2);
15780        if ("function" === typeof r.country) {
15781          u = r.country.call(this);
15782        } else {
15783          u = r.country;
15784        }
15785        if (!u || s.indexOf(u.toUpperCase()) === -1) {
15786          return {
15787            valid: true
15788          };
15789        }
15790        var c = false;
15791        u = u.toUpperCase();
15792        switch (u) {
15793          case "AT":
15794            c = /^([1-9]{1})(\d{3})$/.test(t.value);
15795            break;
15796          case "BG":
15797            c = /^([1-9]{1}[0-9]{3})$/.test(t.value);
15798            break;
15799          case "BR":
15800            c = /^(\d{2})([.]?)(\d{3})([-]?)(\d{3})$/.test(t.value);
15801            break;
15802          case "CA":
15803            c = /^(?:A|B|C|E|G|H|J|K|L|M|N|P|R|S|T|V|X|Y){1}[0-9]{1}(?:A|B|C|E|G|H|J|K|L|M|N|P|R|S|T|V|W|X|Y|Z){1}\s?[0-9]{1}(?:A|B|C|E|G|H|J|K|L|M|N|P|R|S|T|V|W|X|Y|Z){1}[0-9]{1}$/i.test(t.value);
15804            break;
15805          case "CH":
15806            c = /^([1-9]{1})(\d{3})$/.test(t.value);
15807            break;
15808          case "CZ":
15809            c = /^(\d{3})([ ]?)(\d{2})$/.test(t.value);
15810            break;
15811          case "DE":
15812            c = /^(?!01000|99999)(0[1-9]\d{3}|[1-9]\d{4})$/.test(t.value);
15813            break;
15814          case "DK":
15815            c = /^(DK(-|\s)?)?\d{4}$/i.test(t.value);
15816            break;
15817          case "ES":
15818            c = /^(?:0[1-9]|[1-4][0-9]|5[0-2])\d{3}$/.test(t.value);
15819            break;
15820          case "FR":
15821            c = /^[0-9]{5}$/i.test(t.value);
15822            break;
15823          case "GB":
15824            c = a(t.value);
15825            break;
15826          case "IN":
15827            c = /^\d{3}\s?\d{3}$/.test(t.value);
15828            break;
15829          case "IE":
15830            c = /^(D6W|[ACDEFHKNPRTVWXY]\d{2})\s[0-9ACDEFHKNPRTVWXY]{4}$/.test(t.value);
15831            break;
15832          case "IT":
15833            c = /^(I-|IT-)?\d{5}$/i.test(t.value);
15834            break;
15835          case "MA":
15836            c = /^[1-9][0-9]{4}$/i.test(t.value);
15837            break;
15838          case "NL":
15839            c = /^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{2}$/i.test(t.value);
15840            break;
15841          case "PL":
15842            c = /^[0-9]{2}-[0-9]{3}$/.test(t.value);
15843            break;
15844          case "PT":
15845            c = /^[1-9]\d{3}-\d{3}$/.test(t.value);
15846            break;
15847          case "RO":
15848            c = /^(0[1-8]{1}|[1-9]{1}[0-5]{1})?[0-9]{4}$/i.test(t.value);
15849            break;
15850          case "RU":
15851            c = /^[0-9]{6}$/i.test(t.value);
15852            break;
15853          case "SE":
15854            c = /^(S-)?\d{3}\s?\d{2}$/i.test(t.value);
15855            break;
15856          case "SG":
15857            c = /^([0][1-9]|[1-6][0-9]|[7]([0-3]|[5-9])|[8][0-2])(\d{4})$/i.test(t.value);
15858            break;
15859          case "SK":
15860            c = /^(\d{3})([ ]?)(\d{2})$/.test(t.value);
15861            break;
15862          case "US":
15863          default:
15864            c = /^\d{4,5}([-]?\d{4})?$/.test(t.value);
15865            break;
15866        }
15867        return {
15868          message: r$d(t.l10n && t.l10n.zipCode ? r.message || t.l10n.zipCode.country : r.message, t.l10n && t.l10n.zipCode && t.l10n.zipCode.countries ? t.l10n.zipCode.countries[u] : u),
15869          valid: c
15870        };
15871      }
15872    };
15873  }
15874  var s$3 = {
15875    between: s$9,
15876    blank: t$10,
15877    callback: o$4,
15878    choice: t$_,
15879    creditCard: l$2,
15880    date: n$1,
15881    different: o$3,
15882    digits: e$G,
15883    emailAddress: t$X,
15884    file: e$F,
15885    greaterThan: a$7,
15886    identical: o$2,
15887    integer: a$6,
15888    ip: d,
15889    lessThan: s$8,
15890    notEmpty: t$W,
15891    numeric: a$5,
15892    promise: r$c,
15893    regexp: e$E,
15894    remote: a$4,
15895    stringCase: e$C,
15896    stringLength: t$U,
15897    uri: t$T,
15898    base64: a$3,
15899    bic: a$2,
15900    color: e$B,
15901    cusip: t$S,
15902    ean: e$A,
15903    ein: e$z,
15904    grid: r$b,
15905    hex: e$y,
15906    iban: Z,
15907    id: F,
15908    imei: t$A,
15909    imo: e$m,
15910    isbn: e$l,
15911    isin: M,
15912    ismn: e$k,
15913    issn: e$j,
15914    mac: a$1,
15915    meid: e$i,
15916    phone: e$h,
15917    rtn: e$g,
15918    sedol: t$z,
15919    siren: e$f,
15920    siret: e$e,
15921    step: e$d,
15922    uuid: s$5,
15923    vat: x,
15924    vin: t$5,
15925    zipCode: s$4
15926  };
15927  var l$1 = function () {
15928    function l(i, s) {
15929      _classCallCheck(this, l);
15930      this.elements = {};
15931      this.ee = s$a();
15932      this.filter = t$11();
15933      this.plugins = {};
15934      this.results = new Map();
15935      this.validators = {};
15936      this.form = i;
15937      this.fields = s;
15938    }
15939    _createClass(l, [{
15940      key: "on",
15941      value: function on(e, t) {
15942        this.ee.on(e, t);
15943        return this;
15944      }
15945    }, {
15946      key: "off",
15947      value: function off(e, t) {
15948        this.ee.off(e, t);
15949        return this;
15950      }
15951    }, {
15952      key: "emit",
15953      value: function emit(e) {
15954        var _this$ee;
15955        for (var _len = arguments.length, t = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
15956          t[_key - 1] = arguments[_key];
15957        }
15958        (_this$ee = this.ee).emit.apply(_this$ee, [e].concat(t));
15959        return this;
15960      }
15961    }, {
15962      key: "registerPlugin",
15963      value: function registerPlugin(e, t) {
15964        if (this.plugins[e]) {
15965          throw new Error("The plguin ".concat(e, " is registered"));
15966        }
15967        t.setCore(this);
15968        t.install();
15969        this.plugins[e] = t;
15970        return this;
15971      }
15972    }, {
15973      key: "deregisterPlugin",
15974      value: function deregisterPlugin(e) {
15975        var t = this.plugins[e];
15976        if (t) {
15977          t.uninstall();
15978        }
15979        delete this.plugins[e];
15980        return this;
15981      }
15982    }, {
15983      key: "registerValidator",
15984      value: function registerValidator(e, t) {
15985        if (this.validators[e]) {
15986          throw new Error("The validator ".concat(e, " is registered"));
15987        }
15988        this.validators[e] = t;
15989        return this;
15990      }
15991    }, {
15992      key: "registerFilter",
15993      value: function registerFilter(e, t) {
15994        this.filter.add(e, t);
15995        return this;
15996      }
15997    }, {
15998      key: "deregisterFilter",
15999      value: function deregisterFilter(e, t) {
16000        this.filter.remove(e, t);
16001        return this;
16002      }
16003    }, {
16004      key: "executeFilter",
16005      value: function executeFilter(e, t, i) {
16006        return this.filter.execute(e, t, i);
16007      }
16008    }, {
16009      key: "addField",
16010      value: function addField(e, t) {
16011        var i = Object.assign({}, {
16012          selector: "",
16013          validators: {}
16014        }, t);
16015        this.fields[e] = this.fields[e] ? {
16016          selector: i.selector || this.fields[e].selector,
16017          validators: Object.assign({}, this.fields[e].validators, i.validators)
16018        } : i;
16019        this.elements[e] = this.queryElements(e);
16020        this.emit("core.field.added", {
16021          elements: this.elements[e],
16022          field: e,
16023          options: this.fields[e]
16024        });
16025        return this;
16026      }
16027    }, {
16028      key: "removeField",
16029      value: function removeField(e) {
16030        if (!this.fields[e]) {
16031          throw new Error("The field ".concat(e, " validators are not defined. Please ensure the field is added first"));
16032        }
16033        var t = this.elements[e];
16034        var i = this.fields[e];
16035        delete this.elements[e];
16036        delete this.fields[e];
16037        this.emit("core.field.removed", {
16038          elements: t,
16039          field: e,
16040          options: i
16041        });
16042        return this;
16043      }
16044    }, {
16045      key: "validate",
16046      value: function validate() {
16047        var _this = this;
16048        this.emit("core.form.validating", {
16049          formValidation: this
16050        });
16051        return this.filter.execute("validate-pre", Promise.resolve(), []).then(function () {
16052          return Promise.all(Object.keys(_this.fields).map(function (e) {
16053            return _this.validateField(e);
16054          })).then(function (e) {
16055            switch (true) {
16056              case e.indexOf("Invalid") !== -1:
16057                _this.emit("core.form.invalid", {
16058                  formValidation: _this
16059                });
16060                return Promise.resolve("Invalid");
16061              case e.indexOf("NotValidated") !== -1:
16062                _this.emit("core.form.notvalidated", {
16063                  formValidation: _this
16064                });
16065                return Promise.resolve("NotValidated");
16066              default:
16067                _this.emit("core.form.valid", {
16068                  formValidation: _this
16069                });
16070                return Promise.resolve("Valid");
16071            }
16072          });
16073        });
16074      }
16075    }, {
16076      key: "validateField",
16077      value: function validateField(e) {
16078        var _this2 = this;
16079        var t = this.results.get(e);
16080        if (t === "Valid" || t === "Invalid") {
16081          return Promise.resolve(t);
16082        }
16083        this.emit("core.field.validating", e);
16084        var i = this.elements[e];
16085        if (i.length === 0) {
16086          this.emit("core.field.valid", e);
16087          return Promise.resolve("Valid");
16088        }
16089        var s = i[0].getAttribute("type");
16090        if ("radio" === s || "checkbox" === s || i.length === 1) {
16091          return this.validateElement(e, i[0]);
16092        } else {
16093          return Promise.all(i.map(function (t) {
16094            return _this2.validateElement(e, t);
16095          })).then(function (t) {
16096            switch (true) {
16097              case t.indexOf("Invalid") !== -1:
16098                _this2.emit("core.field.invalid", e);
16099                _this2.results.set(e, "Invalid");
16100                return Promise.resolve("Invalid");
16101              case t.indexOf("NotValidated") !== -1:
16102                _this2.emit("core.field.notvalidated", e);
16103                _this2.results["delete"](e);
16104                return Promise.resolve("NotValidated");
16105              default:
16106                _this2.emit("core.field.valid", e);
16107                _this2.results.set(e, "Valid");
16108                return Promise.resolve("Valid");
16109            }
16110          });
16111        }
16112      }
16113    }, {
16114      key: "validateElement",
16115      value: function validateElement(e, t) {
16116        var _this3 = this;
16117        this.results["delete"](e);
16118        var i = this.elements[e];
16119        var s = this.filter.execute("element-ignored", false, [e, t, i]);
16120        if (s) {
16121          this.emit("core.element.ignored", {
16122            element: t,
16123            elements: i,
16124            field: e
16125          });
16126          return Promise.resolve("Ignored");
16127        }
16128        var _l = this.fields[e].validators;
16129        this.emit("core.element.validating", {
16130          element: t,
16131          elements: i,
16132          field: e
16133        });
16134        var r = Object.keys(_l).map(function (i) {
16135          return function () {
16136            return _this3.executeValidator(e, t, i, _l[i]);
16137          };
16138        });
16139        return this.waterfall(r).then(function (s) {
16140          var _l2 = s.indexOf("Invalid") === -1;
16141          _this3.emit("core.element.validated", {
16142            element: t,
16143            elements: i,
16144            field: e,
16145            valid: _l2
16146          });
16147          var r = t.getAttribute("type");
16148          if ("radio" === r || "checkbox" === r || i.length === 1) {
16149            _this3.emit(_l2 ? "core.field.valid" : "core.field.invalid", e);
16150          }
16151          return Promise.resolve(_l2 ? "Valid" : "Invalid");
16152        })["catch"](function (s) {
16153          _this3.emit("core.element.notvalidated", {
16154            element: t,
16155            elements: i,
16156            field: e
16157          });
16158          return Promise.resolve(s);
16159        });
16160      }
16161    }, {
16162      key: "executeValidator",
16163      value: function executeValidator(e, t, i, s) {
16164        var _this4 = this;
16165        var _l3 = this.elements[e];
16166        var r = this.filter.execute("validator-name", i, [i, e]);
16167        s.message = this.filter.execute("validator-message", s.message, [this.locale, e, r]);
16168        if (!this.validators[r] || s.enabled === false) {
16169          this.emit("core.validator.validated", {
16170            element: t,
16171            elements: _l3,
16172            field: e,
16173            result: this.normalizeResult(e, r, {
16174              valid: true
16175            }),
16176            validator: r
16177          });
16178          return Promise.resolve("Valid");
16179        }
16180        var a = this.validators[r];
16181        var d = this.getElementValue(e, t, r);
16182        var o = this.filter.execute("field-should-validate", true, [e, t, d, i]);
16183        if (!o) {
16184          this.emit("core.validator.notvalidated", {
16185            element: t,
16186            elements: _l3,
16187            field: e,
16188            validator: i
16189          });
16190          return Promise.resolve("NotValidated");
16191        }
16192        this.emit("core.validator.validating", {
16193          element: t,
16194          elements: _l3,
16195          field: e,
16196          validator: i
16197        });
16198        var n = a().validate({
16199          element: t,
16200          elements: _l3,
16201          field: e,
16202          l10n: this.localization,
16203          options: s,
16204          value: d
16205        });
16206        var h = "function" === typeof n["then"];
16207        if (h) {
16208          return n.then(function (s) {
16209            var r = _this4.normalizeResult(e, i, s);
16210            _this4.emit("core.validator.validated", {
16211              element: t,
16212              elements: _l3,
16213              field: e,
16214              result: r,
16215              validator: i
16216            });
16217            return r.valid ? "Valid" : "Invalid";
16218          });
16219        } else {
16220          var _s = this.normalizeResult(e, i, n);
16221          this.emit("core.validator.validated", {
16222            element: t,
16223            elements: _l3,
16224            field: e,
16225            result: _s,
16226            validator: i
16227          });
16228          return Promise.resolve(_s.valid ? "Valid" : "Invalid");
16229        }
16230      }
16231    }, {
16232      key: "getElementValue",
16233      value: function getElementValue(e, t, s) {
16234        var _l4 = e$H(this.form, e, t, this.elements[e]);
16235        return this.filter.execute("field-value", _l4, [_l4, e, t, s]);
16236      }
16237    }, {
16238      key: "getElements",
16239      value: function getElements(e) {
16240        return this.elements[e];
16241      }
16242    }, {
16243      key: "getFields",
16244      value: function getFields() {
16245        return this.fields;
16246      }
16247    }, {
16248      key: "getFormElement",
16249      value: function getFormElement() {
16250        return this.form;
16251      }
16252    }, {
16253      key: "getLocale",
16254      value: function getLocale() {
16255        return this.locale;
16256      }
16257    }, {
16258      key: "getPlugin",
16259      value: function getPlugin(e) {
16260        return this.plugins[e];
16261      }
16262    }, {
16263      key: "updateFieldStatus",
16264      value: function updateFieldStatus(e, t, i) {
16265        var _this5 = this;
16266        var s = this.elements[e];
16267        var _l5 = s[0].getAttribute("type");
16268        var r = "radio" === _l5 || "checkbox" === _l5 ? [s[0]] : s;
16269        r.forEach(function (s) {
16270          return _this5.updateElementStatus(e, s, t, i);
16271        });
16272        if (!i) {
16273          switch (t) {
16274            case "NotValidated":
16275              this.emit("core.field.notvalidated", e);
16276              this.results["delete"](e);
16277              break;
16278            case "Validating":
16279              this.emit("core.field.validating", e);
16280              this.results["delete"](e);
16281              break;
16282            case "Valid":
16283              this.emit("core.field.valid", e);
16284              this.results.set(e, "Valid");
16285              break;
16286            case "Invalid":
16287              this.emit("core.field.invalid", e);
16288              this.results.set(e, "Invalid");
16289              break;
16290          }
16291        } else if (t === "Invalid") {
16292          this.emit("core.field.invalid", e);
16293          this.results.set(e, "Invalid");
16294        }
16295        return this;
16296      }
16297    }, {
16298      key: "updateElementStatus",
16299      value: function updateElementStatus(e, t, i, s) {
16300        var _this6 = this;
16301        var _l6 = this.elements[e];
16302        var r = this.fields[e].validators;
16303        var a = s ? [s] : Object.keys(r);
16304        switch (i) {
16305          case "NotValidated":
16306            a.forEach(function (i) {
16307              return _this6.emit("core.validator.notvalidated", {
16308                element: t,
16309                elements: _l6,
16310                field: e,
16311                validator: i
16312              });
16313            });
16314            this.emit("core.element.notvalidated", {
16315              element: t,
16316              elements: _l6,
16317              field: e
16318            });
16319            break;
16320          case "Validating":
16321            a.forEach(function (i) {
16322              return _this6.emit("core.validator.validating", {
16323                element: t,
16324                elements: _l6,
16325                field: e,
16326                validator: i
16327              });
16328            });
16329            this.emit("core.element.validating", {
16330              element: t,
16331              elements: _l6,
16332              field: e
16333            });
16334            break;
16335          case "Valid":
16336            a.forEach(function (i) {
16337              return _this6.emit("core.validator.validated", {
16338                element: t,
16339                elements: _l6,
16340                field: e,
16341                result: {
16342                  message: r[i].message,
16343                  valid: true
16344                },
16345                validator: i
16346              });
16347            });
16348            this.emit("core.element.validated", {
16349              element: t,
16350              elements: _l6,
16351              field: e,
16352              valid: true
16353            });
16354            break;
16355          case "Invalid":
16356            a.forEach(function (i) {
16357              return _this6.emit("core.validator.validated", {
16358                element: t,
16359                elements: _l6,
16360                field: e,
16361                result: {
16362                  message: r[i].message,
16363                  valid: false
16364                },
16365                validator: i
16366              });
16367            });
16368            this.emit("core.element.validated", {
16369              element: t,
16370              elements: _l6,
16371              field: e,
16372              valid: false
16373            });
16374            break;
16375        }
16376        return this;
16377      }
16378    }, {
16379      key: "resetForm",
16380      value: function resetForm(e) {
16381        var _this7 = this;
16382        Object.keys(this.fields).forEach(function (t) {
16383          return _this7.resetField(t, e);
16384        });
16385        this.emit("core.form.reset", {
16386          formValidation: this,
16387          reset: e
16388        });
16389        return this;
16390      }
16391    }, {
16392      key: "resetField",
16393      value: function resetField(e, t) {
16394        if (t) {
16395          var _t = this.elements[e];
16396          var _i = _t[0].getAttribute("type");
16397          _t.forEach(function (e) {
16398            if ("radio" === _i || "checkbox" === _i) {
16399              e.removeAttribute("selected");
16400              e.removeAttribute("checked");
16401              e.checked = false;
16402            } else {
16403              e.setAttribute("value", "");
16404              if (e instanceof HTMLInputElement || e instanceof HTMLTextAreaElement) {
16405                e.value = "";
16406              }
16407            }
16408          });
16409        }
16410        this.updateFieldStatus(e, "NotValidated");
16411        this.emit("core.field.reset", {
16412          field: e,
16413          reset: t
16414        });
16415        return this;
16416      }
16417    }, {
16418      key: "revalidateField",
16419      value: function revalidateField(e) {
16420        if (!this.fields[e]) {
16421          return Promise.resolve("Ignored");
16422        }
16423        this.updateFieldStatus(e, "NotValidated");
16424        return this.validateField(e);
16425      }
16426    }, {
16427      key: "disableValidator",
16428      value: function disableValidator(e, t) {
16429        if (!this.fields[e]) {
16430          return this;
16431        }
16432        var i = this.elements[e];
16433        this.toggleValidator(false, e, t);
16434        this.emit("core.validator.disabled", {
16435          elements: i,
16436          field: e,
16437          formValidation: this,
16438          validator: t
16439        });
16440        return this;
16441      }
16442    }, {
16443      key: "enableValidator",
16444      value: function enableValidator(e, t) {
16445        if (!this.fields[e]) {
16446          return this;
16447        }
16448        var i = this.elements[e];
16449        this.toggleValidator(true, e, t);
16450        this.emit("core.validator.enabled", {
16451          elements: i,
16452          field: e,
16453          formValidation: this,
16454          validator: t
16455        });
16456        return this;
16457      }
16458    }, {
16459      key: "updateValidatorOption",
16460      value: function updateValidatorOption(e, t, i, s) {
16461        if (this.fields[e] && this.fields[e].validators && this.fields[e].validators[t]) {
16462          this.fields[e].validators[t][i] = s;
16463        }
16464        return this;
16465      }
16466    }, {
16467      key: "setFieldOptions",
16468      value: function setFieldOptions(e, t) {
16469        this.fields[e] = t;
16470        return this;
16471      }
16472    }, {
16473      key: "destroy",
16474      value: function destroy() {
16475        var _this8 = this;
16476        Object.keys(this.plugins).forEach(function (e) {
16477          return _this8.plugins[e].uninstall();
16478        });
16479        this.ee.clear();
16480        this.filter.clear();
16481        this.results.clear();
16482        this.plugins = {};
16483        return this;
16484      }
16485    }, {
16486      key: "setLocale",
16487      value: function setLocale(e, t) {
16488        this.locale = e;
16489        this.localization = t;
16490        return this;
16491      }
16492    }, {
16493      key: "waterfall",
16494      value: function waterfall(e) {
16495        return e.reduce(function (e, t) {
16496          return e.then(function (e) {
16497            return t().then(function (t) {
16498              e.push(t);
16499              return e;
16500            });
16501          });
16502        }, Promise.resolve([]));
16503      }
16504    }, {
16505      key: "queryElements",
16506      value: function queryElements(e) {
16507        var t = this.fields[e].selector ? "#" === this.fields[e].selector.charAt(0) ? '[id="'.concat(this.fields[e].selector.substring(1), '"]') : this.fields[e].selector : '[name="'.concat(e, '"]');
16508        return [].slice.call(this.form.querySelectorAll(t));
16509      }
16510    }, {
16511      key: "normalizeResult",
16512      value: function normalizeResult(e, t, i) {
16513        var s = this.fields[e].validators[t];
16514        return Object.assign({}, i, {
16515          message: i.message || (s ? s.message : "") || (this.localization && this.localization[t] && this.localization[t]["default"] ? this.localization[t]["default"] : "") || "The field ".concat(e, " is not val
16515id")
16516        });
16517      }
16518    }, {
16519      key: "toggleValidator",
16520      value: function toggleValidator(e, t, i) {
16521        var _this9 = this;
16522        var s = this.fields[t].validators;
16523        if (i && s && s[i]) {
16524          this.fields[t].validators[i].enabled = e;
16525        } else if (!i) {
16526          Object.keys(s).forEach(function (i) {
16527            return _this9.fields[t].validators[i].enabled = e;
16528          });
16529        }
16530        return this.updateFieldStatus(t, "NotValidated", i);
16531      }
16532    }]);
16533    return l;
16534  }();
16535  function r(e, t) {
16536    var i = Object.assign({}, {
16537      fields: {},
16538      locale: "en_US",
16539      plugins: {},
16540      init: function init(e) {}
16541    }, t);
16542    var r = new l$1(e, i.fields);
16543    r.setLocale(i.locale, i.localization);
16544    Object.keys(i.plugins).forEach(function (e) {
16545      return r.registerPlugin(e, i.plugins[e]);
16546    });
16547    Object.keys(s$3).forEach(function (e) {
16548      return r.registerValidator(e, s$3[e]);
16549    });
16550    i.init(r);
16551    Object.keys(i.fields).forEach(function (e) {
16552      return r.addField(e, i.fields[e]);
16553    });
16554    return r;
16555  }
16556  var t$4 = function () {
16557    function t(_t) {
16558      _classCallCheck(this, t);
16559      this.opts = _t;
16560    }
16561    _createClass(t, [{
16562      key: "setCore",
16563      value: function setCore(_t2) {
16564        this.core = _t2;
16565        return this;
16566      }
16567    }, {
16568      key: "install",
16569      value: function install() {}
16570    }, {
16571      key: "uninstall",
16572      value: function uninstall() {}
16573    }]);
16574    return t;
16575  }();
16576  var index$2 = {
16577    getFieldValue: e$H
16578  };
16579  var e$4 = function (_t) {
16580    _inherits(e, _t);
16581    var _super = _createSuper(e);
16582    function e(t) {
16583      var _this;
16584      _classCallCheck(this, e);
16585      _this = _super.call(this, t);
16586      _this.opts = t || {};
16587      _this.validatorNameFilter = _this.getValidatorName.bind(_assertThisInitialized(_this));
16588      return _this;
16589    }
16590    _createClass(e, [{
16591      key: "install",
16592      value: function install() {
16593        this.core.registerFilter("validator-name", this.validatorNameFilter);
16594      }
16595    }, {
16596      key: "uninstall",
16597      value: function uninstall() {
16598        this.core.deregisterFilter("validator-name", this.validatorNameFilter);
16599      }
16600    }, {
16601      key: "getValidatorName",
16602      value: function getValidatorName(t, _e) {
16603        return this.opts[t] || t;
16604      }
16605    }]);
16606    return e;
16607  }(t$4);
16608  var i$3 = function (_e) {
16609    _inherits(i, _e);
16610    var _super = _createSuper(i);
16611    function i() {
16612      var _this;
16613      _classCallCheck(this, i);
16614      _this = _super.call(this, {});
16615      _this.elementValidatedHandler = _this.onElementValidated.bind(_assertThisInitialized(_this));
16616      _this.fieldValidHandler = _this.onFieldValid.bind(_assertThisInitialized(_this));
16617      _this.fieldInvalidHandler = _this.onFieldInvalid.bind(_assertThisInitialized(_this));
16618      _this.messageDisplayedHandler = _this.onMessageDisplayed.bind(_assertThisInitialized(_this));
16619      return _this;
16620    }
16621    _createClass(i, [{
16622      key: "install",
16623      value: function install() {
16624        this.core.on("core.field.valid", this.fieldValidHandler).on("core.field.invalid", this.fieldInvalidHandler).on("core.element.validated", this.elementValidatedHandler).on("plugins.message.displayed", this.messageDisplayedHandler);
16625      }
16626    }, {
16627      key: "uninstall",
16628      value: function uninstall() {
16629        this.core.off("core.field.valid", this.fieldValidHandler).off("core.field.invalid", this.fieldInvalidHandler).off("core.element.validated", this.elementValidatedHandler).off("plugins.message.displayed", this.messageDisplayedHandler);
16630      }
16631    }, {
16632      key: "onElementValidated",
16633      value: function onElementValidated(e) {
16634        if (e.valid) {
16635          e.element.setAttribute("aria-invalid", "false");
16636          e.element.removeAttribute("aria-describedby");
16637        }
16638      }
16639    }, {
16640      key: "onFieldValid",
16641      value: function onFieldValid(e) {
16642        var _i = this.core.getElements(e);
16643        if (_i) {
16644          _i.forEach(function (e) {
16645            e.setAttribute("aria-invalid", "false");
16646            e.removeAttribute("aria-describedby");
16647          });
16648        }
16649      }
16650    }, {
16651      key: "onFieldInvalid",
16652      value: function onFieldInvalid(e) {
16653        var _i2 = this.core.getElements(e);
16654        if (_i2) {
16655          _i2.forEach(function (e) {
16656            return e.setAttribute("aria-invalid", "true");
16657          });
16658        }
16659      }
16660    }, {
16661      key: "onMessageDisplayed",
16662      value: function onMessageDisplayed(e) {
16663        e.messageElement.setAttribute("role", "alert");
16664        e.messageElement.setAttribute("aria-hidden", "false");
16665        var _i3 = this.core.getElements(e.field);
16666        var t = _i3.indexOf(e.element);
16667        var l = "js-fv-".concat(e.field, "-").concat(t, "-").concat(Date.now(), "-message");
16668        e.messageElement.setAttribute("id", l);
16669        e.element.setAttribute("aria-describedby", l);
16670        var a = e.element.getAttribute("type");
16671        if ("radio" === a || "checkbox" === a) {
16672          _i3.forEach(function (e) {
16673            return e.setAttribute("aria-describedby", l);
16674          });
16675        }
16676      }
16677    }]);
16678    return i;
16679  }(t$4);
16680  var t$3 = function (_e) {
16681    _inherits(t, _e);
16682    var _super = _createSuper(t);
16683    function t(e) {
16684      var _this;
16685      _classCallCheck(this, t);
16686      _this = _super.call(this, e);
16687      _this.addedFields = new Map();
16688      _this.opts = Object.assign({}, {
16689        html5Input: false,
16690        pluginPrefix: "data-fvp-",
16691        prefix: "data-fv-"
16692      }, e);
16693      _this.fieldAddedHandler = _this.onFieldAdded.bind(_assertThisInitialized(_this));
16694      _this.fieldRemovedHandler = _this.onFieldRemoved.bind(_assertThisInitialized(_this));
16695      return _this;
16696    }
16697    _createClass(t, [{
16698      key: "install",
16699      value: function install() {
16700        var _this2 = this;
16701        this.parsePlugins();
16702        var e = this.parseOptions();
16703        Object.keys(e).forEach(function (_t) {
16704          if (!_this2.addedFields.has(_t)) {
16705            _this2.addedFields.set(_t, true);
16706          }
16707          _this2.core.addField(_t, e[_t]);
16708        });
16709        this.core.on("core.field.added", this.fieldAddedHandler).on("core.field.removed", this.fieldRemovedHandler);
16710      }
16711    }, {
16712      key: "uninstall",
16713      value: function uninstall() {
16714        this.addedFields.clear();
16715        this.core.off("core.field.added", this.fieldAddedHandler).off("core.field.removed", this.fieldRemovedHandler);
16716      }
16717    }, {
16718      key: "onFieldAdded",
16719      value: function onFieldAdded(e) {
16720        var _this3 = this;
16721        var _t2 = e.elements;
16722        if (!_t2 || _t2.length === 0 || this.addedFields.has(e.field)) {
16723          return;
16724        }
16725        this.addedFields.set(e.field, true);
16726        _t2.forEach(function (_t3) {
16727          var s = _this3.parseElement(_t3);
16728          if (!_this3.isEmptyOption(s)) {
16729            var _t12 = {
16730              selector: e.options.selector,
16731              validators: Object.assign({}, e.options.validators || {}, s.validators)
16732            };
16733            _this3.core.setFieldOptions(e.field, _t12);
16734          }
16735        });
16736      }
16737    }, {
16738      key: "onFieldRemoved",
16739      value: function onFieldRemoved(e) {
16740        if (e.field && this.addedFields.has(e.field)) {
16741          this.addedFields["delete"](e.field);
16742        }
16743      }
16744    }, {
16745      key: "parseOptions",
16746      value: function parseOptions() {
16747        var _this4 = this;
16748        var e = this.opts.prefix;
16749        var _t5 = {};
16750        var s = this.core.getFields();
16751        var a = this.core.getFormElement();
16752        var i = [].slice.call(a.querySelectorAll("[name], [".concat(e, "field]")));
16753        i.forEach(function (s) {
16754          var a = _this4.parseElement(s);
16755          if (!_this4.isEmptyOption(a)) {
16756            var _i = s.getAttribute("name") || s.getAttribute("".concat(e, "field"));
16757            _t5[_i] = Object.assign({}, _t5[_i], a);
16758          }
16759        });
16760        Object.keys(_t5).forEach(function (e) {
16761          Object.keys(_t5[e].validators).forEach(function (a) {
16762            _t5[e].validators[a].enabled = _t5[e].validators[a].enabled || false;
16763            if (s[e] && s[e].validators && s[e].validators[a]) {
16764              Object.assign(_t5[e].validators[a], s[e].validators[a]);
16765            }
16766          });
16767        });
16768        return Object.assign({}, s, _t5);
16769      }
16770    }, {
16771      key: "createPluginInstance",
16772      value: function createPluginInstance(e, _t6) {
16773        var s = e.split(".");
16774        var a = window || this;
16775        for (var _e2 = 0, _t13 = s.length; _e2 < _t13; _e2++) {
16776          a = a[s[_e2]];
16777        }
16778        if (typeof a !== "function") {
16779          throw new Error("the plugin ".concat(e, " doesn't exist"));
16780        }
16781        return new a(_t6);
16782      }
16783    }, {
16784      key: "parsePlugins",
16785      value: function parsePlugins() {
16786        var _this5 = this;
16787        var e = this.core.getFormElement();
16788        var _t8 = new RegExp("^".concat(this.opts.pluginPrefix, "([a-z0-9-]+)(___)*([a-z0-9-]+)*$"));
16789        var s = e.attributes.length;
16790        var a = {};
16791        for (var i = 0; i < s; i++) {
16792          var _s = e.attributes[i].name;
16793          var n = e.attributes[i].value;
16794          var r = _t8.exec(_s);
16795          if (r && r.length === 4) {
16796            var _e3 = this.toCamelCase(r[1]);
16797            a[_e3] = Object.assign({}, r[3] ? _defineProperty({}, this.toCamelCase(r[3]), n) : {
16798              enabled: "" === n || "true" === n
16799            }, a[_e3]);
16800          }
16801        }
16802        Object.keys(a).forEach(function (e) {
16803          var _t9 = a[e];
16804          var s = _t9["enabled"];
16805          var i = _t9["class"];
16806          if (s && i) {
16807            delete _t9["enabled"];
16808            delete _t9["clazz"];
16809            var _s2 = _this5.createPluginInstance(i, _t9);
16810            _this5.core.registerPlugin(e, _s2);
16811          }
16812        });
16813      }
16814    }, {
16815      key: "isEmptyOption",
16816      value: function isEmptyOption(e) {
16817        var _t10 = e.validators;
16818        return Object.keys(_t10).length === 0 && _t10.constructor === Object;
16819      }
16820    }, {
16821      key: "parseElement",
16822      value: function parseElement(e) {
16823        var _t11 = new RegExp("^".concat(this.opts.prefix, "([a-z0-9-]+)(___)*([a-z0-9-]+)*$"));
16824        var s = e.attributes.length;
16825        var a = {};
16826        var i = e.getAttribute("type");
16827        for (var n = 0; n < s; n++) {
16828          var _s3 = e.attributes[n].name;
16829          var r = e.attributes[n].value;
16830          if (this.opts.html5Input) {
16831            switch (true) {
16832              case "minlength" === _s3:
16833                a["stringLength"] = Object.assign({}, {
16834                  enabled: true,
16835                  min: parseInt(r, 10)
16836                }, a["stringLength"]);
16837                break;
16838              case "maxlength" === _s3:
16839                a["stringLength"] = Object.assign({}, {
16840                  enabled: true,
16841                  max: parseInt(r, 10)
16842                }, a["stringLength"]);
16843                break;
16844              case "pattern" === _s3:
16845                a["regexp"] = Object.assign({}, {
16846                  enabled: true,
16847                  regexp: r
16848                }, a["regexp"]);
16849                break;
16850              case "required" === _s3:
16851                a["notEmpty"] = Object.assign({}, {
16852                  enabled: true
16853                }, a["notEmpty"]);
16854                break;
16855              case "type" === _s3 && "color" === r:
16856                a["color"] = Object.assign({}, {
16857                  enabled: true,
16858                  type: "hex"
16859                }, a["color"]);
16860                break;
16861              case "type" === _s3 && "email" === r:
16862                a["emailAddress"] = Object.assign({}, {
16863                  enabled: true
16864                }, a["emailAddress"]);
16865                break;
16866              case "type" === _s3 && "url" === r:
16867                a["uri"] = Object.assign({}, {
16868                  enabled: true
16869                }, a["uri"]);
16870                break;
16871              case "type" === _s3 && "range" === r:
16872                a["between"] = Object.assign({}, {
16873                  enabled: true,
16874                  max: parseFloat(e.getAttribute("max")),
16875                  min: parseFloat(e.getAttribute("min"))
16876                }, a["between"]);
16877                break;
16878              case "min" === _s3 && i !== "date" && i !== "range":
16879                a["greaterThan"] = Object.assign({}, {
16880                  enabled: true,
16881                  min: parseFloat(r)
16882                }, a["greaterThan"]);
16883                break;
16884              case "max" === _s3 && i !== "date" && i !== "range":
16885                a["lessThan"] = Object.assign({}, {
16886                  enabled: true,
16887                  max: parseFloat(r)
16888                }, a["lessThan"]);
16889                break;
16890            }
16891          }
16892          var l = _t11.exec(_s3);
16893          if (l && l.length === 4) {
16894            var _e4 = this.toCamelCase(l[1]);
16895            a[_e4] = Object.assign({}, l[3] ? _defineProperty({}, this.toCamelCase(l[3]), this.normalizeValue(r)) : {
16896              enabled: "" === r || "true" === r
16897            }, a[_e4]);
16898          }
16899        }
16900        return {
16901          validators: a
16902        };
16903      }
16904    }, {
16905      key: "normalizeValue",
16906      value: function normalizeValue(e) {
16907        return e === "true" ? true : e === "false" ? false : e;
16908      }
16909    }, {
16910      key: "toUpperCase",
16911      value: function toUpperCase(e) {
16912        return e.charAt(1).toUpperCase();
16913      }
16914    }, {
16915      key: "toCamelCase",
16916      value: function toCamelCase(e) {
16917        return e.replace(/-./g, this.toUpperCase);
16918      }
16919    }]);
16920    return t;
16921  }(t$4);
16922  var o = function (_t) {
16923    _inherits(o, _t);
16924    var _super = _createSuper(o);
16925    function o() {
16926      var _this;
16927      _classCallCheck(this, o);
16928      _this = _super.call(this, {});
16929      _this.onValidHandler = _this.onFormValid.bind(_assertThisInitialized(_this));
16930      return _this;
16931    }
16932    _createClass(o, [{
16933      key: "install",
16934      value: function install() {
16935        var t = this.core.getFormElement();
16936        if (t.querySelectorAll('[type="submit"][name="submit"]').length) {
16937          throw new Error("Do not use `submit` for the name attribute of submit button");
16938        }
16939        this.core.on("core.form.valid", this.onValidHandler);
16940      }
16941    }, {
16942      key: "uninstall",
16943      value: function uninstall() {
16944        this.core.off("core.form.valid", this.onValidHandler);
16945      }
16946    }, {
16947      key: "onFormValid",
16948      value: function onFormValid() {
16949        var t = this.core.getFormElement();
16950        if (t instanceof HTMLFormElement) {
16951          t.submit();
16952        }
16953      }
16954    }]);
16955    return o;
16956  }(t$4);
16957  var e$3 = function (_t) {
16958    _inherits(e, _t);
16959    var _super = _createSuper(e);
16960    function e(t) {
16961      var _this;
16962      _classCallCheck(this, e);
16963      _this = _super.call(this, t);
16964      _this.opts = t || {};
16965      _this.triggerExecutedHandler = _this.onTriggerExecuted.bind(_assertThisInitialized(_this));
16966      return _this;
16967    }
16968    _createClass(e, [{
16969      key: "install",
16970      value: function install() {
16971        this.core.on("plugins.trigger.executed", this.triggerExecutedHandler);
16972      }
16973    }, {
16974      key: "uninstall",
16975      value: function uninstall() {
16976        this.core.off("plugins.trigger.executed", this.triggerExecutedHandler);
16977      }
16978    }, {
16979      key: "onTriggerExecuted",
16980      value: function onTriggerExecuted(t) {
16981        if (this.opts[t.field]) {
16982          var _e3 = this.opts[t.field].split(" ");
16983          var _iterator = _createForOfIteratorHelper(_e3),
16984            _step;
16985          try {
16986            for (_iterator.s(); !(_step = _iterator.n()).done;) {
16987              var _t2 = _step.value;
16988              var _e4 = _t2.trim();
16989              if (this.opts[_e4]) {
16990                this.core.revalidateField(_e4);
16991              }
16992            }
16993          } catch (err) {
16994            _iterator.e(err);
16995          } finally {
16996            _iterator.f();
16997          }
16998        }
16999      }
17000    }]);
17001    return e;
17002  }(t$4);
17003  var e$2 = function (_t) {
17004    _inherits(e, _t);
17005    var _super = _createSuper(e);
17006    function e(t) {
17007      var _this;
17008      _classCallCheck(this, e);
17009      _this = _super.call(this, t);
17010      _this.opts = Object.assign({}, {
17011        excluded: e.defaultIgnore
17012      }, t);
17013      _this.ignoreValidationFilter = _this.ignoreValidation.bind(_assertThisInitialized(_this));
17014      return _this;
17015    }
17016    _createClass(e, [{
17017      key: "install",
17018      value: function install() {
17019        this.core.registerFilter("element-ignored", this.ignoreValidationFilter);
17020      }
17021    }, {
17022      key: "uninstall",
17023      value: function uninstall() {
17024        this.core.deregisterFilter("element-ignored", this.ignoreValidationFilter);
17025      }
17026    }, {
17027      key: "ignoreValidation",
17028      value: function ignoreValidation(t, _e2, i) {
17029        return this.opts.excluded.apply(this, [t, _e2, i]);
17030      }
17031    }], [{
17032      key: "defaultIgnore",
17033      value: function defaultIgnore(t, _e, i) {
17034        var r = !!(_e.offsetWidth || _e.offsetHeight || _e.getClientRects().length);
17035        var n = _e.getAttribute("disabled");
17036        return n === "" || n === "disabled" || _e.getAttribute("type") === "hidden" || !r;
17037      }
17038    }]);
17039    return e;
17040  }(t$4);
17041  var t$2 = function (_e) {
17042    _inherits(t, _e);
17043    var _super = _createSuper(t);
17044    function t(e) {
17045      var _this;
17046      _classCallCheck(this, t);
17047      _this = _super.call(this, e);
17048      _this.statuses = new Map();
17049      _this.opts = Object.assign({}, {
17050        onStatusChanged: function onStatusChanged() {}
17051      }, e);
17052      _this.elementValidatingHandler = _this.onElementValidating.bind(_assertThisInitialized(_this));
17053      _this.elementValidatedHandler = _this.onElementValidated.bind(_assertThisInitialized(_this));
17054      _this.elementNotValidatedHandler = _this.onElementNotValidated.bind(_assertThisInitialized(_this));
17055      _this.elementIgnoredHandler = _this.onElementIgnored.bind(_assertThisInitialized(_this));
17056      _this.fieldAddedHandler = _this.onFieldAdded.bind(_assertThisInitialized(_this));
17057      _this.fieldRemovedHandler = _this.onFieldRemoved.bind(_assertThisInitialized(_this));
17058      return _this;
17059    }
17060    _createClass(t, [{
17061      key: "install",
17062      value: function install() {
17063        this.core.on("core.element.validating", this.elementValidatingHandler).on("core.element.validated", this.elementValidatedHandler).on("core.element.notvalidated", this.elementNotValidatedHandler).on("core.element.ignored", this.elementIgnoredHandler).on("core.field.added", this.fieldAddedHandler).on("core.field.removed", this.fieldRemovedHandler);
17064      }
17065    }, {
17066      key: "uninstall",
17067      value: function uninstall() {
17068        this.statuses.clear();
17069        this.core.off("core.element.validating", this.elementValidatingHandler).off("core.element.validated", this.elementValidatedHandler).off("core.element.notvalidated", this.elementNotValidatedHandler).off("core.element.ignored", this.elementIgnoredHandler).off("core.field.added", this.fieldAddedHandler).off("core.field.removed", this.fieldRemovedHandler);
17070      }
17071    }, {
17072      key: "areFieldsValid",
17073      value: function areFieldsValid() {
17074        return Array.from(this.statuses.values()).every(function (e) {
17075          return e === "Valid" || e === "NotValidated" || e === "Ignored";
17076        });
17077      }
17078    }, {
17079      key: "getStatuses",
17080      value: function getStatuses() {
17081        return this.statuses;
17082      }
17083    }, {
17084      key: "onFieldAdded",
17085      value: function onFieldAdded(e) {
17086        this.statuses.set(e.field, "NotValidated");
17087      }
17088    }, {
17089      key: "onFieldRemoved",
17090      value: function onFieldRemoved(e) {
17091        if (this.statuses.has(e.field)) {
17092          this.statuses["delete"](e.field);
17093        }
17094        this.opts.onStatusChanged(this.areFieldsValid());
17095      }
17096    }, {
17097      key: "onElementValidating",
17098      value: function onElementValidating(e) {
17099        this.statuses.set(e.field, "Validating");
17100        this.opts.onStatusChanged(false);
17101      }
17102    }, {
17103      key: "onElementValidated",
17104      value: function onElementValidated(e) {
17105        this.statuses.set(e.field, e.valid ? "Valid" : "Invalid");
17106        if (e.valid) {
17107          this.opts.onStatusChanged(this.areFieldsValid());
17108        } else {
17109          this.opts.onStatusChanged(false);
17110        }
17111      }
17112    }, {
17113      key: "onElementNotValidated",
17114      value: function onElementNotValidated(e) {
17115        this.statuses.set(e.field, "NotValidated");
17116        this.opts.onStatusChanged(false);
17117      }
17118    }, {
17119      key: "onElementIgnored",
17120      value: function onElementIgnored(e) {
17121        this.statuses.set(e.field, "Ignored");
17122        this.opts.onStatusChanged(this.areFieldsValid());
17123      }
17124    }]);
17125    return t;
17126  }(t$4);
17127  function s$2(s, a) {
17128    a.split(" ").forEach(function (a) {
17129      if (s.classList) {
17130        s.classList.add(a);
17131      } else if (" ".concat(s.className, " ").indexOf(" ".concat(a, " "))) {
17132        s.className += " ".concat(a);
17133      }
17134    });
17135  }
17136  function a(s, a) {
17137    a.split(" ").forEach(function (a) {
17138      s.classList ? s.classList.remove(a) : s.className = s.className.replace(a, "");
17139    });
17140  }
17141  function c(c, e) {
17142    var t = [];
17143    var f = [];
17144    Object.keys(e).forEach(function (s) {
17145      if (s) {
17146        e[s] ? t.push(s) : f.push(s);
17147      }
17148    });
17149    f.forEach(function (s) {
17150      return a(c, s);
17151    });
17152    t.forEach(function (a) {
17153      return s$2(c, a);
17154    });
17155  }
17156  function e$1(e, t) {
17157    var l = e.matches || e.webkitMatchesSelector || e["mozMatchesSelector"] || e["msMatchesSelector"];
17158    if (l) {
17159      return l.call(e, t);
17160    }
17161    var c = [].slice.call(e.parentElement.querySelectorAll(t));
17162    return c.indexOf(e) >= 0;
17163  }
17164  function t$1(t, l) {
17165    var c = t;
17166    while (c) {
17167      if (e$1(c, l)) {
17168        break;
17169      }
17170      c = c.parentElement;
17171    }
17172    return c;
17173  }
17174  var s$1 = function (_e) {
17175    _inherits(s, _e);
17176    var _super = _createSuper(s);
17177    function s(e) {
17178      var _this;
17179      _classCallCheck(this, s);
17180      _this = _super.call(this, e);
17181      _this.useDefaultContainer = false;
17182      _this.messages = new Map();
17183      _this.defaultContainer = document.createElement("div");
17184      _this.useDefaultContainer = !e || !e.container;
17185      _this.opts = Object.assign({}, {
17186        container: function container(e, t) {
17187          return _this.defaultContainer;
17188        }
17189      }, e);
17190      _this.elementIgnoredHandler = _this.onElementIgnored.bind(_assertThisInitialized(_this));
17191      _this.fieldAddedHandler = _this.onFieldAdded.bind(_assertThisInitialized(_this));
17192      _this.fieldRemovedHandler = _this.onFieldRemoved.bind(_assertThisInitialized(_this));
17193      _this.validatorValidatedHandler = _this.onValidatorValidated.bind(_assertThisInitialized(_this));
17194      _this.validatorNotValidatedHandler = _this.onValidatorNotValidated.bind(_assertThisInitialized(_this));
17195      return _this;
17196    }
17197    _createClass(s, [{
17198      key: "install",
17199      value: function install() {
17200        if (this.useDefaultContainer) {
17201          this.core.getFormElement().appendChild(this.defaultContainer);
17202        }
17203        this.core.on("core.element.ignored", this.elementIgnoredHandler).on("core.field.added", this.fieldAddedHandler).on("core.field.removed", this.fieldRemovedHandler).on("core.validator.validated", this.validatorValidatedHandler).on("core.validator.notvalidated", this.validatorNotValidatedHandler);
17204      }
17205    }, {
17206      key: "uninstall",
17207      value: function uninstall() {
17208        if (this.useDefaultContainer) {
17209          this.core.getFormElement().removeChild(this.defaultContainer);
17210        }
17211        this.messages.forEach(function (e) {
17212          return e.parentNode.removeChild(e);
17213        });
17214        this.messages.clear();
17215        this.core.off("core.element.ignored", this.elementIgnoredHandler).off("core.field.added", this.fieldAddedHandler).off("core.field.removed", this.fieldRemovedHandler).off("core.validator.validated", this.validatorValidatedHandler).off("core.validator.notvalidated", this.validatorNotValidatedHandler);
17216      }
17217    }, {
17218      key: "onFieldAdded",
17219      value: function onFieldAdded(e) {
17220        var _this2 = this;
17221        var t = e.elements;
17222        if (t) {
17223          t.forEach(function (e) {
17224            var t = _this2.messages.get(e);
17225            if (t) {
17226              t.parentNode.removeChild(t);
17227              _this2.messages["delete"](e);
17228            }
17229          });
17230          this.prepareFieldContainer(e.field, t);
17231        }
17232      }
17233    }, {
17234      key: "onFieldRemoved",
17235      value: function onFieldRemoved(e) {
17236        var _this3 = this;
17237        if (!e.elements.length || !e.field) {
17238          return;
17239        }
17240        var t = e.elements[0].getAttribute("type");
17241        var _s2 = "radio" === t || "checkbox" === t ? [e.elements[0]] : e.elements;
17242        _s2.forEach(function (e) {
17243          if (_this3.messages.has(e)) {
17244            var _t = _this3.messages.get(e);
17245            _t.parentNode.removeChild(_t);
17246            _this3.messages["delete"](e);
17247          }
17248        });
17249      }
17250    }, {
17251      key: "prepareFieldContainer",
17252      value: function prepareFieldContainer(e, t) {
17253        var _this4 = this;
17254        if (t.length) {
17255          var _s12 = t[0].getAttribute("type");
17256          if ("radio" === _s12 || "checkbox" === _s12) {
17257            this.prepareElementContainer(e, t[0], t);
17258          } else {
17259            t.forEach(function (_s4) {
17260              return _this4.prepareElementContainer(e, _s4, t);
17261            });
17262          }
17263        }
17264      }
17265    }, {
17266      key: "prepareElementContainer",
17267      value: function prepareElementContainer(e, _s5, i) {
17268        var a;
17269        if ("string" === typeof this.opts.container) {
17270          var _e2 = "#" === this.opts.container.charAt(0) ? '[id="'.concat(this.opts.container.substring(1), '"]') : this.opts.container;
17271          a = this.core.getFormElement().querySelector(_e2);
17272        } else {
17273          a = this.opts.container(e, _s5);
17274        }
17275        var l = document.createElement("div");
17276        a.appendChild(l);
17277        c(l, {
17278          "fv-plugins-message-container": true
17279        });
17280        this.core.emit("plugins.message.placed", {
17281          element: _s5,
17282          elements: i,
17283          field: e,
17284          messageElement: l
17285        });
17286        this.messages.set(_s5, l);
17287      }
17288    }, {
17289      key: "getMessage",
17290      value: function getMessage(e) {
17291        return typeof e.message === "string" ? e.message : e.message[this.core.getLocale()];
17292      }
17293    }, {
17294      key: "onValidatorValidated",
17295      value: function onValidatorValidated(e) {
17296        var _s6 = e.elements;
17297        var i = e.element.getAttribute("type");
17298        var a = ("radio" === i || "checkbox" === i) && _s6.length > 0 ? _s6[0] : e.element;
17299        if (this.messages.has(a)) {
17300          var _s13 = this.messages.get(a);
17301          var _i = _s13.querySelector('[data-field="'.concat(e.field, '"][data-validator="').concat(e.validator, '"]'));
17302          if (!_i && !e.result.valid) {
17303            var _i2 = document.createElement("div");
17304            _i2.innerHTML = this.getMessage(e.result);
17305            _i2.setAttribute("data-field", e.field);
17306            _i2.setAttribute("data-validator", e.validator);
17307            if (this.opts.clazz) {
17308              c(_i2, _defineProperty({}, this.opts.clazz, true));
17309            }
17310            _s13.appendChild(_i2);
17311            this.core.emit("plugins.message.displayed", {
17312              element: e.element,
17313              field: e.field,
17314              message: e.result.message,
17315              messageElement: _i2,
17316              meta: e.result.meta,
17317              validator: e.validator
17318            });
17319          } else if (_i && !e.result.valid) {
17320            _i.innerHTML = this.getMessage(e.result);
17321            this.core.emit("plugins.message.displayed", {
17322              element: e.element,
17323              field: e.field,
17324              message: e.result.message,
17325              messageElement: _i,
17326              meta: e.result.meta,
17327              validator: e.validator
17328            });
17329          } else if (_i && e.result.valid) {
17330            _s13.removeChild(_i);
17331          }
17332        }
17333      }
17334    }, {
17335      key: "onValidatorNotValidated",
17336      value: function onValidatorNotValidated(e) {
17337        var t = e.elements;
17338        var _s8 = e.element.getAttribute("type");
17339        var i = "radio" === _s8 || "checkbox" === _s8 ? t[0] : e.element;
17340        if (this.messages.has(i)) {
17341          var _t3 = this.messages.get(i);
17342          var _s14 = _t3.querySelector('[data-field="'.concat(e.field, '"][data-validator="').concat(e.validator, '"]'));
17343          if (_s14) {
17344            _t3.removeChild(_s14);
17345          }
17346        }
17347      }
17348    }, {
17349      key: "onElementIgnored",
17350      value: function onElementIgnored(e) {
17351        var t = e.elements;
17352        var _s10 = e.element.getAttribute("type");
17353        var i = "radio" === _s10 || "checkbox" === _s10 ? t[0] : e.element;
17354        if (this.messages.has(i)) {
17355          var _t4 = this.messages.get(i);
17356          var _s15 = [].slice.call(_t4.querySelectorAll('[data-field="'.concat(e.field, '"]')));
17357          _s15.forEach(function (e) {
17358            _t4.removeChild(e);
17359          });
17360        }
17361      }
17362    }], [{
17363      key: "getClosestContainer",
17364      value: function getClosestContainer(e, t, _s) {
17365        var i = e;
17366        while (i) {
17367          if (i === t) {
17368            break;
17369          }
17370          i = i.parentElement;
17371          if (_s.test(i.className)) {
17372            break;
17373          }
17374        }
17375        return i;
17376      }
17377    }]);
17378    return s;
17379  }(t$4);
17380  var l = function (_e) {
17381    _inherits(l, _e);
17382    var _super = _createSuper(l);
17383    function l(e) {
17384      var _this;
17385      _classCallCheck(this, l);
17386      _this = _super.call(this, e);
17387      _this.results = new Map();
17388      _this.containers = new Map();
17389      _this.MESSAGE_PLUGIN = "___frameworkMessage";
17390      _this.opts = Object.assign({}, {
17391        defaultMessageContainer: true,
17392        eleInvalidClass: "",
17393        eleValidClass: "",
17394        rowClasses: "",
17395        rowValidatingClass: ""
17396      }, e);
17397      _this.elementIgnoredHandler = _this.onElementIgnored.bind(_assertThisInitialized(_this));
17398      _this.elementValidatingHandler = _this.onElementValidating.bind(_assertThisInitialized(_this));
17399      _this.elementValidatedHandler = _this.onElementValidated.bind(_assertThisInitialized(_this));
17400      _this.elementNotValidatedHandler = _this.onElementNotValidated.bind(_assertThisInitialized(_this));
17401      _this.iconPlacedHandler = _this.onIconPlaced.bind(_assertThisInitialized(_this));
17402      _this.fieldAddedHandler = _this.onFieldAdded.bind(_assertThisInitialized(_this));
17403      _this.fieldRemovedHandler = _this.onFieldRemoved.bind(_assertThisInitialized(_this));
17404      _this.messagePlacedHandler = _this.onMessagePlaced.bind(_assertThisInitialized(_this));
17405      return _this;
17406    }
17407    _createClass(l, [{
17408      key: "install",
17409      value: function install() {
17410        var _t,
17411          _this2 = this;
17412        c(this.core.getFormElement(), (_t = {}, _defineProperty(_t, this.opts.formClass, true), _defineProperty(_t, "fv-plugins-framework", true), _t));
17413        this.core.on("core.element.ignored", this.elementIgnoredH
17413andler).on("core.element.validating", this.elementValidatingHandler).on("core.element.validated", this.elementValidatedHandler).on("core.element.notvalidated", this.elementNotValidatedHandler).on("plugins.icon.placed", this.iconPlacedHandler).on("core.field.added", this.fieldAddedHandler).on("core.field.removed", this.fieldRemovedHandler);
17414        if (this.opts.defaultMessageContainer) {
17415          this.core.registerPlugin(this.MESSAGE_PLUGIN, new s$1({
17416            clazz: this.opts.messageClass,
17417            container: function container(e, t) {
17418              var _l = "string" === typeof _this2.opts.rowSelector ? _this2.opts.rowSelector : _this2.opts.rowSelector(e, t);
17419              var a = t$1(t, _l);
17420              return s$1.getClosestContainer(t, a, _this2.opts.rowPattern);
17421            }
17422          }));
17423          this.core.on("plugins.message.placed", this.messagePlacedHandler);
17424        }
17425      }
17426    }, {
17427      key: "uninstall",
17428      value: function uninstall() {
17429        var _t2;
17430        this.results.clear();
17431        this.containers.clear();
17432        c(this.core.getFormElement(), (_t2 = {}, _defineProperty(_t2, this.opts.formClass, false), _defineProperty(_t2, "fv-plugins-framework", false), _t2));
17433        this.core.off("core.element.ignored", this.elementIgnoredHandler).off("core.element.validating", this.elementValidatingHandler).off("core.element.validated", this.elementValidatedHandler).off("core.element.notvalidated", this.elementNotValidatedHandler).off("plugins.icon.placed", this.iconPlacedHandler).off("core.field.added", this.fieldAddedHandler).off("core.field.removed", this.fieldRemovedHandler);
17434        if (this.opts.defaultMessageContainer) {
17435          this.core.deregisterPlugin(this.MESSAGE_PLUGIN);
17436          this.core.off("plugins.message.placed", this.messagePlacedHandler);
17437        }
17438      }
17439    }, {
17440      key: "onIconPlaced",
17441      value: function onIconPlaced(e) {}
17442    }, {
17443      key: "onMessagePlaced",
17444      value: function onMessagePlaced(e) {}
17445    }, {
17446      key: "onFieldAdded",
17447      value: function onFieldAdded(e) {
17448        var _this3 = this;
17449        var s = e.elements;
17450        if (s) {
17451          s.forEach(function (e) {
17452            var s = _this3.containers.get(e);
17453            if (s) {
17454              var _t3;
17455              c(s, (_t3 = {}, _defineProperty(_t3, _this3.opts.rowInvalidClass, false), _defineProperty(_t3, _this3.opts.rowValidatingClass, false), _defineProperty(_t3, _this3.opts.rowValidClass, false), _defineProperty(_t3, "fv-plugins-icon-container", false), _t3));
17456              _this3.containers["delete"](e);
17457            }
17458          });
17459          this.prepareFieldContainer(e.field, s);
17460        }
17461      }
17462    }, {
17463      key: "onFieldRemoved",
17464      value: function onFieldRemoved(e) {
17465        var _this4 = this;
17466        e.elements.forEach(function (e) {
17467          var s = _this4.containers.get(e);
17468          if (s) {
17469            var _t4;
17470            c(s, (_t4 = {}, _defineProperty(_t4, _this4.opts.rowInvalidClass, false), _defineProperty(_t4, _this4.opts.rowValidatingClass, false), _defineProperty(_t4, _this4.opts.rowValidClass, false), _t4));
17471          }
17472        });
17473      }
17474    }, {
17475      key: "prepareFieldContainer",
17476      value: function prepareFieldContainer(e, t) {
17477        var _this5 = this;
17478        if (t.length) {
17479          var _s = t[0].getAttribute("type");
17480          if ("radio" === _s || "checkbox" === _s) {
17481            this.prepareElementContainer(e, t[0]);
17482          } else {
17483            t.forEach(function (t) {
17484              return _this5.prepareElementContainer(e, t);
17485            });
17486          }
17487        }
17488      }
17489    }, {
17490      key: "prepareElementContainer",
17491      value: function prepareElementContainer(e, i) {
17492        var _l2 = "string" === typeof this.opts.rowSelector ? this.opts.rowSelector : this.opts.rowSelector(e, i);
17493        var a = t$1(i, _l2);
17494        if (a !== i) {
17495          var _t5;
17496          c(a, (_t5 = {}, _defineProperty(_t5, this.opts.rowClasses, true), _defineProperty(_t5, "fv-plugins-icon-container", true), _t5));
17497          this.containers.set(i, a);
17498        }
17499      }
17500    }, {
17501      key: "onElementValidating",
17502      value: function onElementValidating(e) {
17503        var s = e.elements;
17504        var i = e.element.getAttribute("type");
17505        var _l3 = "radio" === i || "checkbox" === i ? s[0] : e.element;
17506        var a = this.containers.get(_l3);
17507        if (a) {
17508          var _t6;
17509          c(a, (_t6 = {}, _defineProperty(_t6, this.opts.rowInvalidClass, false), _defineProperty(_t6, this.opts.rowValidatingClass, true), _defineProperty(_t6, this.opts.rowValidClass, false), _t6));
17510        }
17511      }
17512    }, {
17513      key: "onElementNotValidated",
17514      value: function onElementNotValidated(e) {
17515        this.removeClasses(e.element, e.elements);
17516      }
17517    }, {
17518      key: "onElementIgnored",
17519      value: function onElementIgnored(e) {
17520        this.removeClasses(e.element, e.elements);
17521      }
17522    }, {
17523      key: "removeClasses",
17524      value: function removeClasses(e, s) {
17525        var _this6 = this;
17526        var i = e.getAttribute("type");
17527        var _l4 = "radio" === i || "checkbox" === i ? s[0] : e;
17528        s.forEach(function (e) {
17529          var _t7;
17530          c(e, (_t7 = {}, _defineProperty(_t7, _this6.opts.eleValidClass, false), _defineProperty(_t7, _this6.opts.eleInvalidClass, false), _t7));
17531        });
17532        var a = this.containers.get(_l4);
17533        if (a) {
17534          var _t8;
17535          c(a, (_t8 = {}, _defineProperty(_t8, this.opts.rowInvalidClass, false), _defineProperty(_t8, this.opts.rowValidatingClass, false), _defineProperty(_t8, this.opts.rowValidClass, false), _t8));
17536        }
17537      }
17538    }, {
17539      key: "onElementValidated",
17540      value: function onElementValidated(e) {
17541        var _this7 = this;
17542        var s = e.elements;
17543        var i = e.element.getAttribute("type");
17544        var _l5 = "radio" === i || "checkbox" === i ? s[0] : e.element;
17545        s.forEach(function (s) {
17546          var _t9;
17547          c(s, (_t9 = {}, _defineProperty(_t9, _this7.opts.eleValidClass, e.valid), _defineProperty(_t9, _this7.opts.eleInvalidClass, !e.valid), _t9));
17548        });
17549        var a = this.containers.get(_l5);
17550        if (a) {
17551          if (!e.valid) {
17552            var _t10;
17553            this.results.set(_l5, false);
17554            c(a, (_t10 = {}, _defineProperty(_t10, this.opts.rowInvalidClass, true), _defineProperty(_t10, this.opts.rowValidatingClass, false), _defineProperty(_t10, this.opts.rowValidClass, false), _t10));
17555          } else {
17556            this.results["delete"](_l5);
17557            var _e2 = true;
17558            this.containers.forEach(function (t, s) {
17559              if (t === a && _this7.results.get(s) === false) {
17560                _e2 = false;
17561              }
17562            });
17563            if (_e2) {
17564              var _t11;
17565              c(a, (_t11 = {}, _defineProperty(_t11, this.opts.rowInvalidClass, false), _defineProperty(_t11, this.opts.rowValidatingClass, false), _defineProperty(_t11, this.opts.rowValidClass, true), _t11));
17566            }
17567          }
17568        }
17569      }
17570    }]);
17571    return l;
17572  }(t$4);
17573  var i$2 = function (_e) {
17574    _inherits(i, _e);
17575    var _super = _createSuper(i);
17576    function i(e) {
17577      var _this;
17578      _classCallCheck(this, i);
17579      _this = _super.call(this, e);
17580      _this.icons = new Map();
17581      _this.opts = Object.assign({}, {
17582        invalid: "fv-plugins-icon--invalid",
17583        onPlaced: function onPlaced() {},
17584        onSet: function onSet() {},
17585        valid: "fv-plugins-icon--valid",
17586        validating: "fv-plugins-icon--validating"
17587      }, e);
17588      _this.elementValidatingHandler = _this.onElementValidating.bind(_assertThisInitialized(_this));
17589      _this.elementValidatedHandler = _this.onElementValidated.bind(_assertThisInitialized(_this));
17590      _this.elementNotValidatedHandler = _this.onElementNotValidated.bind(_assertThisInitialized(_this));
17591      _this.elementIgnoredHandler = _this.onElementIgnored.bind(_assertThisInitialized(_this));
17592      _this.fieldAddedHandler = _this.onFieldAdded.bind(_assertThisInitialized(_this));
17593      return _this;
17594    }
17595    _createClass(i, [{
17596      key: "install",
17597      value: function install() {
17598        this.core.on("core.element.validating", this.elementValidatingHandler).on("core.element.validated", this.elementValidatedHandler).on("core.element.notvalidated", this.elementNotValidatedHandler).on("core.element.ignored", this.elementIgnoredH
17598andler).on("core.field.added", this.fieldAddedHandler);
17599      }
17600    }, {
17601      key: "uninstall",
17602      value: function uninstall() {
17603        this.icons.forEach(function (e) {
17604          return e.parentNode.removeChild(e);
17605        });
17606        this.icons.clear();
17607        this.core.off("core.element.validating", this.elementValidatingHandler).off("core.element.validated", this.elementValidatedHandler).off("core.element.notvalidated", this.elementNotValidatedHandler).off("core.element.ignored", this.elementIgnoredHandler).off("core.field.added", this.fieldAddedHandler);
17608      }
17609    }, {
17610      key: "onFieldAdded",
17611      value: function onFieldAdded(e) {
17612        var _this2 = this;
17613        var t = e.elements;
17614        if (t) {
17615          t.forEach(function (e) {
17616            var t = _this2.icons.get(e);
17617            if (t) {
17618              t.parentNode.removeChild(t);
17619              _this2.icons["delete"](e);
17620            }
17621          });
17622          this.prepareFieldIcon(e.field, t);
17623        }
17624      }
17625    }, {
17626      key: "prepareFieldIcon",
17627      value: function prepareFieldIcon(e, t) {
17628        var _this3 = this;
17629        if (t.length) {
17630          var _i8 = t[0].getAttribute("type");
17631          if ("radio" === _i8 || "checkbox" === _i8) {
17632            this.prepareElementIcon(e, t[0]);
17633          } else {
17634            t.forEach(function (t) {
17635              return _this3.prepareElementIcon(e, t);
17636            });
17637          }
17638        }
17639      }
17640    }, {
17641      key: "prepareElementIcon",
17642      value: function prepareElementIcon(e, _i2) {
17643        var n = document.createElement("i");
17644        n.setAttribute("data-field", e);
17645        _i2.parentNode.insertBefore(n, _i2.nextSibling);
17646        c(n, {
17647          "fv-plugins-icon": true
17648        });
17649        var l = {
17650          classes: {
17651            invalid: this.opts.invalid,
17652            valid: this.opts.valid,
17653            validating: this.opts.validating
17654          },
17655          element: _i2,
17656          field: e,
17657          iconElement: n
17658        };
17659        this.core.emit("plugins.icon.placed", l);
17660        this.opts.onPlaced(l);
17661        this.icons.set(_i2, n);
17662      }
17663    }, {
17664      key: "onElementValidating",
17665      value: function onElementValidating(e) {
17666        var _this$setClasses;
17667        var t = this.setClasses(e.field, e.element, e.elements, (_this$setClasses = {}, _defineProperty(_this$setClasses, this.opts.invalid, false), _defineProperty(_this$setClasses, this.opts.valid, false), _defineProperty(_this$setClasses, this.opts.validating, true), _this$setClasses));
17668        var _i3 = {
17669          element: e.element,
17670          field: e.field,
17671          iconElement: t,
17672          status: "Validating"
17673        };
17674        this.core.emit("plugins.icon.set", _i3);
17675        this.opts.onSet(_i3);
17676      }
17677    }, {
17678      key: "onElementValidated",
17679      value: function onElementValidated(e) {
17680        var _this$setClasses2;
17681        var t = this.setClasses(e.field, e.element, e.elements, (_this$setClasses2 = {}, _defineProperty(_this$setClasses2, this.opts.invalid, !e.valid), _defineProperty(_this$setClasses2, this.opts.valid, e.valid), _defineProperty(_this$setClasses2, this.opts.validating, false), _this$setClasses2));
17682        var _i4 = {
17683          element: e.element,
17684          field: e.field,
17685          iconElement: t,
17686          status: e.valid ? "Valid" : "Invalid"
17687        };
17688        this.core.emit("plugins.icon.set", _i4);
17689        this.opts.onSet(_i4);
17690      }
17691    }, {
17692      key: "onElementNotValidated",
17693      value: function onElementNotValidated(e) {
17694        var _this$setClasses3;
17695        var t = this.setClasses(e.field, e.element, e.elements, (_this$setClasses3 = {}, _defineProperty(_this$setClasses3, this.opts.invalid, false), _defineProperty(_this$setClasses3, this.opts.valid, false), _defineProperty(_this$setClasses3, this.opts.validating, false), _this$setClasses3));
17696        var _i5 = {
17697          element: e.element,
17698          field: e.field,
17699          iconElement: t,
17700          status: "NotValidated"
17701        };
17702        this.core.emit("plugins.icon.set", _i5);
17703        this.opts.onSet(_i5);
17704      }
17705    }, {
17706      key: "onElementIgnored",
17707      value: function onElementIgnored(e) {
17708        var _this$setClasses4;
17709        var t = this.setClasses(e.field, e.element, e.elements, (_this$setClasses4 = {}, _defineProperty(_this$setClasses4, this.opts.invalid, false), _defineProperty(_this$setClasses4, this.opts.valid, false), _defineProperty(_this$setClasses4, this.opts.validating, false), _this$setClasses4));
17710        var _i6 = {
17711          element: e.element,
17712          field: e.field,
17713          iconElement: t,
17714          status: "Ignored"
17715        };
17716        this.core.emit("plugins.icon.set", _i6);
17717        this.opts.onSet(_i6);
17718      }
17719    }, {
17720      key: "setClasses",
17721      value: function setClasses(e, _i7, n, l) {
17722        var s = _i7.getAttribute("type");
17723        var d = "radio" === s || "checkbox" === s ? n[0] : _i7;
17724        if (this.icons.has(d)) {
17725          var _e2 = this.icons.get(d);
17726          c(_e2, l);
17727          return _e2;
17728        } else {
17729          return null;
17730        }
17731      }
17732    }]);
17733    return i;
17734  }(t$4);
17735  var i$1 = function (_e) {
17736    _inherits(i, _e);
17737    var _super = _createSuper(i);
17738    function i(e) {
17739      var _this;
17740      _classCallCheck(this, i);
17741      _this = _super.call(this, e);
17742      _this.invalidFields = new Map();
17743      _this.opts = Object.assign({}, {
17744        enabled: true
17745      }, e);
17746      _this.validatorHandler = _this.onValidatorValidated.bind(_assertThisInitialized(_this));
17747      _this.shouldValidateFilter = _this.shouldValidate.bind(_assertThisInitialized(_this));
17748      _this.fieldAddedHandler = _this.onFieldAdded.bind(_assertThisInitialized(_this));
17749      _this.elementNotValidatedHandler = _this.onElementNotValidated.bind(_assertThisInitialized(_this));
17750      _this.elementValidatingHandler = _this.onElementValidating.bind(_assertThisInitialized(_this));
17751      return _this;
17752    }
17753    _createClass(i, [{
17754      key: "install",
17755      value: function install() {
17756        this.core.on("core.validator.validated", this.validatorHandler).on("core.field.added", this.fieldAddedHandler).on("core.element.notvalidated", this.elementNotValidatedHandler).on("core.element.validating", this.elementValidatingHandler).registerFilter("field-should-validate", this.shouldValidateFilter);
17757      }
17758    }, {
17759      key: "uninstall",
17760      value: function uninstall() {
17761        this.invalidFields.clear();
17762        this.core.off("core.validator.validated", this.validatorHandler).off("core.field.added", this.fieldAddedHandler).off("core.element.notvalidated", this.elementNotValidatedHandler).off("core.element.validating", this.elementValidatingHandler).deregisterFilter("field-should-validate", this.shouldValidateFilter);
17763      }
17764    }, {
17765      key: "shouldValidate",
17766      value: function shouldValidate(e, _i, t, l) {
17767        var d = (this.opts.enabled === true || this.opts.enabled[e] === true) && this.invalidFields.has(_i) && !!this.invalidFields.get(_i).length && this.invalidFields.get(_i).indexOf(l) === -1;
17768        return !d;
17769      }
17770    }, {
17771      key: "onValidatorValidated",
17772      value: function onValidatorValidated(e) {
17773        var _i2 = this.invalidFields.has(e.element) ? this.invalidFields.get(e.element) : [];
17774        var t = _i2.indexOf(e.validator);
17775        if (e.result.valid && t >= 0) {
17776          _i2.splice(t, 1);
17777        } else if (!e.result.valid && t === -1) {
17778          _i2.push(e.validator);
17779        }
17780        this.invalidFields.set(e.element, _i2);
17781      }
17782    }, {
17783      key: "onFieldAdded",
17784      value: function onFieldAdded(e) {
17785        if (e.elements) {
17786          this.clearInvalidFields(e.elements);
17787        }
17788      }
17789    }, {
17790      key: "onElementNotValidated",
17791      value: function onElementNotValidated(e) {
17792        this.clearInvalidFields(e.elements);
17793      }
17794    }, {
17795      key: "onElementValidating",
17796      value: function onElementValidating(e) {
17797        this.clearInvalidFields(e.elements);
17798      }
17799    }, {
17800      key: "clearInvalidFields",
17801      value: function clearInvalidFields(e) {
17802        var _this2 = this;
17803        e.forEach(function (e) {
17804          return _this2.invalidFields["delete"](e);
17805        });
17806      }
17807    }]);
17808    return i;
17809  }(t$4);
17810  var e = function (_t) {
17811    _inherits(e, _t);
17812    var _super = _createSuper(e);
17813    function e(t) {
17814      var _this;
17815      _classCallCheck(this, e);
17816      _this = _super.call(this, t);
17817      _this.isFormValid = false;
17818      _this.opts = Object.assign({}, {
17819        aspNetButton: false,
17820        buttons: function buttons(t) {
17821          return [].slice.call(t.querySelectorAll('[type="submit"]:not([formnovalidate])'));
17822        }
17823      }, t);
17824      _this.submitHandler = _this.handleSubmitEvent.bind(_assertThisInitialized(_this));
17825      _this.buttonClickHandler = _this.handleClickEvent.bind(_assertThisInitialized(_this));
17826      return _this;
17827    }
17828    _createClass(e, [{
17829      key: "install",
17830      value: function install() {
17831        var _this2 = this;
17832        if (!(this.core.getFormElement() instanceof HTMLFormElement)) {
17833          return;
17834        }
17835        var t = this.core.getFormElement();
17836        this.submitButtons = this.opts.buttons(t);
17837        t.setAttribute("novalidate", "novalidate");
17838        t.addEventListener("submit", this.submitHandler);
17839        this.hiddenClickedEle = document.createElement("input");
17840        this.hiddenClickedEle.setAttribute("type", "hidden");
17841        t.appendChild(this.hiddenClickedEle);
17842        this.submitButtons.forEach(function (t) {
17843          t.addEventListener("click", _this2.buttonClickHandler);
17844        });
17845      }
17846    }, {
17847      key: "uninstall",
17848      value: function uninstall() {
17849        var _this3 = this;
17850        var t = this.core.getFormElement();
17851        if (t instanceof HTMLFormElement) {
17852          t.removeEventListener("submit", this.submitHandler);
17853        }
17854        this.submitButtons.forEach(function (t) {
17855          t.removeEventListener("click", _this3.buttonClickHandler);
17856        });
17857        this.hiddenClickedEle.parentElement.removeChild(this.hiddenClickedEle);
17858      }
17859    }, {
17860      key: "handleSubmitEvent",
17861      value: function handleSubmitEvent(t) {
17862        this.validateForm(t);
17863      }
17864    }, {
17865      key: "handleClickEvent",
17866      value: function handleClickEvent(t) {
17867        var _e = t.currentTarget;
17868        if (_e instanceof HTMLElement) {
17869          if (this.opts.aspNetButton && this.isFormValid === true) ;else {
17870            var _e3 = this.core.getFormElement();
17871            _e3.removeEventListener("submit", this.submitHandler);
17872            this.clickedButton = t.target;
17873            var i = this.clickedButton.getAttribute("name");
17874            var s = this.clickedButton.getAttribute("value");
17875            if (i && s) {
17876              this.hiddenClickedEle.setAttribute("name", i);
17877              this.hiddenClickedEle.setAttribute("value", s);
17878            }
17879            this.validateForm(t);
17880          }
17881        }
17882      }
17883    }, {
17884      key: "validateForm",
17885      value: function validateForm(t) {
17886        var _this4 = this;
17887        t.preventDefault();
17888        this.core.validate().then(function (t) {
17889          if (t === "Valid" && _this4.opts.aspNetButton && !_this4.isFormValid && _this4.clickedButton) {
17890            _this4.isFormValid = true;
17891            _this4.clickedButton.removeEventListener("click", _this4.buttonClickHandler);
17892            _this4.clickedButton.click();
17893          }
17894        });
17895      }
17896    }]);
17897    return e;
17898  }(t$4);
17899  var i = function (_t) {
17900    _inherits(i, _t);
17901    var _super = _createSuper(i);
17902    function i(t) {
17903      var _this;
17904      _classCallCheck(this, i);
17905      _this = _super.call(this, t);
17906      _this.messages = new Map();
17907      _this.opts = Object.assign({}, {
17908        placement: "top",
17909        trigger: "click"
17910      }, t);
17911      _this.iconPlacedHandler = _this.onIconPlaced.bind(_assertThisInitialized(_this));
17912      _this.validatorValidatedHandler = _this.onValidatorValidated.bind(_assertThisInitialized(_this));
17913      _this.elementValidatedHandler = _this.onElementValidated.bind(_assertThisInitialized(_this));
17914      _this.documentClickHandler = _this.onDocumentClicked.bind(_assertThisInitialized(_this));
17915      return _this;
17916    }
17917    _createClass(i, [{
17918      key: "install",
17919      value: function install() {
17920        this.tip = document.createElement("div");
17921        c(this.tip, _defineProperty({
17922          "fv-plugins-tooltip": true
17923        }, "fv-plugins-tooltip--".concat(this.opts.placement), true));
17924        document.body.appendChild(this.tip);
17925        this.core.on("plugins.icon.placed", this.iconPlacedHandler).on("core.validator.validated", this.validatorValidatedHandler).on("core.element.validated", this.elementValidatedHandler);
17926        if ("click" === this.opts.trigger) {
17927          document.addEventListener("click", this.documentClickHandler);
17928        }
17929      }
17930    }, {
17931      key: "uninstall",
17932      value: function uninstall() {
17933        this.messages.clear();
17934        document.body.removeChild(this.tip);
17935        this.core.off("plugins.icon.placed", this.iconPlacedHandler).off("core.validator.validated", this.validatorValidatedHandler).off("core.element.validated", this.elementValidatedHandler);
17936        if ("click" === this.opts.trigger) {
17937          document.removeEventListener("click", this.documentClickHandler);
17938        }
17939      }
17940    }, {
17941      key: "onIconPlaced",
17942      value: function onIconPlaced(t) {
17943        var _this2 = this;
17944        c(t.iconElement, {
17945          "fv-plugins-tooltip-icon": true
17946        });
17947        switch (this.opts.trigger) {
17948          case "hover":
17949            t.iconElement.addEventListener("mouseenter", function (e) {
17950              return _this2.show(t.element, e);
17951            });
17952            t.iconElement.addEventListener("mouseleave", function (t) {
17953              return _this2.hide();
17954            });
17955            break;
17956          case "click":
17957          default:
17958            t.iconElement.addEventListener("click", function (e) {
17959              return _this2.show(t.element, e);
17960            });
17961            break;
17962        }
17963      }
17964    }, {
17965      key: "onValidatorValidated",
17966      value: function onValidatorValidated(t) {
17967        if (!t.result.valid) {
17968          var _e2 = t.elements;
17969          var _i4 = t.element.getAttribute("type");
17970          var s = "radio" === _i4 || "checkbox" === _i4 ? _e2[0] : t.element;
17971          var o = typeof t.result.message === "string" ? t.result.message : t.result.message[this.core.getLocale()];
17972          this.messages.set(s, o);
17973        }
17974      }
17975    }, {
17976      key: "onElementValidated",
17977      value: function onElementValidated(t) {
17978        if (t.valid) {
17979          var _e3 = t.elements;
17980          var _i5 = t.element.getAttribute("type");
17981          var s = "radio" === _i5 || "checkbox" === _i5 ? _e3[0] : t.element;
17982          this.messages["delete"](s);
17983        }
17984      }
17985    }, {
17986      key: "onDocumentClicked",
17987      value: function onDocumentClicked(t) {
17988        this.hide();
17989      }
17990    }, {
17991      key: "show",
17992      value: function show(t, _i3) {
17993        _i3.preventDefault();
17994        _i3.stopPropagation();
17995        if (!this.messages.has(t)) {
17996          return;
17997        }
17998        c(this.tip, {
17999          "fv-plugins-tooltip--hide": false
18000        });
18001        this.tip.innerHTML = '<div class="fv-plugins-tooltip__content">'.concat(this.messages.get(t), "</div>");
18002        var s = _i3.target;
18003        var o = s.getBoundingClientRect();
18004        var _this$tip$getBounding = this.tip.getBoundingClientRect(),
18005          l = _this$tip$getBounding.height,
18006          n = _this$tip$getBounding.width;
18007        var a = 0;
18008        var d = 0;
18009        switch (this.opts.placement) {
18010          case "bottom":
18011            a = o.top + o.height;
18012            d = o.left + o.width / 2 - n / 2;
18013            break;
18014          case "bottom-left":
18015            a = o.top + o.height;
18016            d = o.left;
18017            break;
18018          case "bottom-right":
18019            a = o.top + o.height;
18020            d = o.left + o.width - n;
18021            break;
18022          case "left":
18023            a = o.top + o.height / 2 - l / 2;
18024            d = o.left - n;
18025            break;
18026          case "right":
18027            a = o.top + o.height / 2 - l / 2;
18028            d = o.left + o.width;
18029            break;
18030          case "top-left":
18031            a = o.top - l;
18032            d = o.left;
18033            break;
18034          case "top-right":
18035            a = o.top - l;
18036            d = o.left + o.width - n;
18037            break;
18038          case "top":
18039          default:
18040            a = o.top - l;
18041            d = o.left + o.width / 2 - n / 2;
18042            break;
18043        }
18044        var c$1 = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
18045        var r = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;
18046        a = a + c$1;
18047        d = d + r;
18048        this.tip.setAttribute("style", "top: ".concat(a, "px; left: ").concat(d, "px"));
18049      }
18050    }, {
18051      key: "hide",
18052      value: function hide() {
18053        c(this.tip, {
18054          "fv-plugins-tooltip--hide": true
18055        });
18056      }
18057    }]);
18058    return i;
18059  }(t$4);
18060  var t = function (_e) {
18061    _inherits(t, _e);
18062    var _super = _createSuper(t);
18063    function t(e) {
18064      var _this;
18065      _classCallCheck(this, t);
18066      _this = _super.call(this, e);
18067      _this.handlers = [];
18068      _this.timers = new Map();
18069      var _t = document.createElement("div");
18070      _this.defaultEvent = !("oninput" in _t) ? "keyup" : "input";
18071      _this.opts = Object.assign({}, {
18072        delay: 0,
18073        event: _this.defaultEvent,
18074        threshold: 0
18075      }, e);
18076      _this.fieldAddedHandler = _this.onFieldAdded.bind(_assertThisInitialized(_this));
18077      _this.fieldRemovedHandler = _this.onFieldRemoved.bind(_assertThisInitialized(_this));
18078      return _this;
18079    }
18080    _createClass(t, [{
18081      key: "install",
18082      value: function install() {
18083        this.core.on("core.field.added", this.fieldAddedHandler).on("core.field.removed", this.fieldRemovedHandler);
18084      }
18085    }, {
18086      key: "uninstall",
18087      value: function uninstall() {
18088        this.handlers.forEach(function (e) {
18089          return e.element.removeEventListener(e.event, e.handler);
18090        });
18091        this.handlers = [];
18092        this.timers.forEach(function (e) {
18093          return window.clearTimeout(e);
18094        });
18095        this.timers.clear();
18096        this.core.off("core.field.added", this.fieldAddedHandler).off("core.field.removed", this.fieldRemovedHandler);
18097      }
18098    }, {
18099      key: "prepareHandler",
18100      value: function prepareHandler(e, _t2) {
18101        var _this2 = this;
18102        _t2.forEach(function (_t3) {
18103          var i = [];
18104          if (!!_this2.opts.event && _this2.opts.event[e] === false) {
18105            i = [];
18106          } else if (!!_this2.opts.event && !!_this2.opts.event[e] && typeof _this2.opts.event[e] !== "function") {
18107            i = _this2.opts.event[e].split(" ");
18108          } else if ("string" === typeof _this2.opts.event && _this2.opts.event !== _this2.defaultEvent) {
18109            i = _this2.opts.event.split(" ");
18110          } else {
18111            var _e2 = _t3.getAttribute("type");
18112            var s = _t3.tagName.toLowerCase();
18113            var n = "radio" === _e2 || "checkbox" === _e2 || "file" === _e2 || "select" === s ? "change" : _this2.ieVersion >= 10 && _t3.getAttribute("placeholder") ? "keyup" : _this2.defaultEvent;
18114            i = [n];
18115          }
18116          i.forEach(function (i) {
18117            var s = function s(i) {
18118              return _this2.handleEvent(i, e, _t3);
18119            };
18120            _this2.handlers.push({
18121              element: _t3,
18122              event: i,
18123              field: e,
18124              handler: s
18125            });
18126            _t3.addEventListener(i, s);
18127          });
18128        });
18129      }
18130    }, {
18131      key: "handleEvent",
18132      value: function handleEvent(e, _t4, i) {
18133        var _this3 = this;
18134        if (this.exceedThreshold(_t4, i) && this.core.executeFilter("plugins-trigger-should-validate", true, [_t4, i])) {
18135          var s = function s() {
18136            return _this3.core.validateElement(_t4, i).then(function (s) {
18137              _this3.core.emit("plugins.trigger.executed", {
18138                element: i,
18139                event: e,
18140                field: _t4
18141              });
18142            });
18143          };
18144          var n = this.opts.delay[_t4] || this.opts.delay;
18145          if (n === 0) {
18146            s();
18147          } else {
18148            var _e3 = this.timers.get(i);
18149            if (_e3) {
18150              window.clearTimeout(_e3);
18151            }
18152            this.timers.set(i, window.setTimeout(s, n * 1e3));
18153          }
18154        }
18155      }
18156    }, {
18157      key: "onFieldAdded",
18158      value: function onFieldAdded(e) {
18159        this.handlers.filter(function (_t5) {
18160          return _t5.field === e.field;
18161        }
18161).forEach(function (e) {
18162          return e.element.removeEventListener(e.event, e.handler);
18163        });
18164        this.prepareHandler(e.field, e.elements);
18165      }
18166    }, {
18167      key: "onFieldRemoved",
18168      value: function onFieldRemoved(e) {
18169        this.handlers.filter(function (_t6) {
18170          return _t6.field === e.field && e.elements.indexOf(_t6.element) >= 0;
18171        }).forEach(function (e) {
18172          return e.element.removeEventListener(e.event, e.handler);
18173        });
18174      }
18175    }, {
18176      key: "exceedThreshold",
18177      value: function exceedThreshold(e, _t7) {
18178        var i = this.opts.threshold[e] === 0 || this.opts.threshold === 0 ? false : this.opts.threshold[e] || this.opts.threshold;
18179        if (!i) {
18180          return true;
18181        }
18182        var s = _t7.getAttribute("type");
18183        if (["button", "checkbox", "file", "hidden", "image", "radio", "reset", "submit"].indexOf(s) !== -1) {
18184          return true;
18185        }
18186        var n = this.core.getElementValue(e, _t7);
18187        return n.length >= i;
18188      }
18189    }]);
18190    return t;
18191  }(t$4);
18192  var index$1 = {
18193    Alias: e$4,
18194    Aria: i$3,
18195    Declarative: t$3,
18196    DefaultSubmit: o,
18197    Dependency: e$3,
18198    Excluded: e$2,
18199    FieldStatus: t$2,
18200    Framework: l,
18201    Icon: i$2,
18202    Message: s$1,
18203    Sequence: i$1,
18204    SubmitButton: e,
18205    Tooltip: i,
18206    Trigger: t
18207  };
18208  function s(s, t) {
18209    return s.classList ? s.classList.contains(t) : new RegExp("(^| )".concat(t, "( |$)"), "gi").test(s.className);
18210  }
18211  var index = {
18212    call: t$$,
18213    classSet: c,
18214    closest: t$1,
18215    fetch: t$V,
18216    format: r$d,
18217    hasClass: s,
18218    isValidDate: t$Y
18219  };
18220  var p = {};
18221  exports.Plugin = t$4;
18222  exports.algorithms = index$3;
18223  exports.filters = index$2;
18224  exports.formValidation = r;
18225  exports.locales = p;
18226  exports.plugins = index$1;
18227  exports.utils = index;
18228  exports.validators = s$3;
18229  Object.defineProperty(exports, "__esModule", {
18230    value: true
18231  });
18232});
18233
18234/***/ }),
18235
18236/***/ "./resources/plugins/gsap/gsap.js":
18237/*!****************************************!*\
18238  !*** ./resources/plugins/gsap/gsap.js ***!
18239  \****************************************/
18240/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
18241
18242"use strict";
18243__webpack_require__.r(__webpack_exports__);
18244/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18245/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
18246/* harmony export */ });
18247/* harmony import */ var gsap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gsap */ "./node_modules/gsap/index.js");
18248/* harmony import */ var gsap_PixiPlugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gsap/PixiPlugin */ "./node_modules/gsap/PixiPlugin.js");
18249/* harmony import */ var gsap_MotionPathPlugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gsap/MotionPathPlugin */ "./node_modules/gsap/MotionPathPlugin.js");
18250/* harmony import */ var gsap_ScrollTrigger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! gsap/ScrollTrigger */ "./node_modules/gsap/ScrollTrigger.js");
18251
18252
18253
18254
18255// import { ScrollSmoother } from "gsap/ScrollSmoother";
18256
18257// gsap.registerPlugin(PixiPlugin, MotionPathPlugin, ScrollTrigger, ScrollSmoother);
18258gsap__WEBPACK_IMPORTED_MODULE_0__.gsap.registerPlugin(gsap_PixiPlugin__WEBPACK_IMPORTED_MODULE_1__.PixiPlugin, gsap_MotionPathPlugin__WEBPACK_IMPORTED_MODULE_2__.MotionPathPlugin, gsap_ScrollTrigger__WEBPACK_IMPORTED_MODULE_3__.ScrollTrigger);
18259
18260// create the smooth scroller FIRST!
18261// wondow.smoother = ScrollSmoother.create({
18262//     content: "#body",
18263//     smooth: 3,
18264//     normalizeScroll: true,
18265//     ignoreMobileResize: true,
18266//     effects: true,
18267//     // preventDefault: true,
18268//     // ease: 'power4.out',
18269//     // smoothTouch: 0.1,
18270// });
18271
18272/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (gsap__WEBPACK_IMPORTED_MODULE_0__.gsap);
18273
18274/***/ }),
18275
18276/***/ "./resources/plugins/locomotive/locomotive-scroll.js":
18277/*!***********************************************************!*\
18278  !*** ./resources/plugins/locomotive/locomotive-scroll.js ***!
18279  \***********************************************************/
18280/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
18281
18282"use strict";
18283__webpack_require__.r(__webpack_exports__);
18284/* harmony import */ var locomotive_scroll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! locomotive-scroll */ "./node_modules/locomotive-scroll/dist/locomotive-scroll.esm.js");
18285
18286window.locoScroll = new locomotive_scroll__WEBPACK_IMPORTED_MODULE_0__["default"]({
18287  el: document.querySelector('[data-scroll-container]'),
18288  smooth: true
18289});
18290
18291/***/ }),
18292
18293/***/ "./resources/plugins/msDropdown/js/index.js":
18294/*!**************************************************!*\
18295  !*** ./resources/plugins/msDropdown/js/index.js ***!
18296  \**************************************************/
18297/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
18298
18299"use strict";
18300__webpack_require__.r(__webpack_exports__);
18301/* harmony import */ var _lib_dd_webcomponent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/dd-webcomponent */ "./resources/plugins/msDropdown/js/lib/dd-webcomponent.js");
18302/* harmony import */ var _lib_dd__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/dd */ "./resources/plugins/msDropdown/js/lib/dd.js");
18303
18304
18305window.MsDropdown = _lib_dd__WEBPACK_IMPORTED_MODULE_1__["default"];
18306(function () {
18307  let isSafari = navigator.vendor && navigator.vendor.indexOf('Apple') > -1 && navigator.userAgent && navigator.userAgent.indexOf('CriOS') == -1 && navigator.userAgent.indexOf('FxiOS') == -1;
18308  if (isSafari) {
18309    _lib_dd__WEBPACK_IMPORTED_MODULE_1__["default"].make("select[is='ms-dropdown']");
18310    /**
18311     * Not a good idea to override this
18312     * but if you want to use document.createElement("select"); this can be enable for safari.
18313     * how to use:
18314     * var select = document.createElement("select", {is:'ms-dropdown'});
18315     * select.setAttribute("is", "ms-dropdown");
18316     * select.options[0] = new Option("Hashtag CMS", "https://www.hashtagcms.org"); // add an option
18317     * select.options[1] = new Option("My Website", "https://www.marghoobsuleman.com"); // add an option
18318     * document.body.appendChild(select);
18319     */
18320
18321    /*
18322    window.addEventListener("load", ()=> {
18323        let OriginalAppendChild = Element.prototype.appendChild;
18324        Element.prototype.appendChild = function() {
18325            OriginalAppendChild.apply(this, arguments);
18326            let select = arguments[0];
18327            if(select.nodeName === "SELECT" && select.getAttribute("is") === "ms-dropdown") {
18328                select.msDropdown = new MsDropdown(select);
18329            }
18330        };
18331     })
18332     */
18333  }
18334})();
18335
18336/***/ }),
18337
18338/***/ "./resources/plugins/msDropdown/js/lib/dd-webcomponent.js":
18339/*!****************************************************************!*\
18340  !*** ./resources/plugins/msDropdown/js/lib/dd-webcomponent.js ***!
18341  \****************************************************************/
18342/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
18343
18344"use strict";
18345__webpack_require__.r(__webpack_exports__);
18346/* harmony import */ var _dd__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dd */ "./resources/plugins/msDropdown/js/lib/dd.js");
18347
18348class dd extends HTMLSelectElement {
18349  constructor(element, settings) {
18350    super();
18351  }
18352  connectedCallback() {
18353    if (!this.msDropdown) {
18354      this.msDropdown = new _dd__WEBPACK_IMPORTED_MODULE_0__["default"](this);
18355    }
18356    try {
18357      this.addEventListener("change", evt => {
18358        if (!this.multiple) {
18359          this.msDropdown.selectedIndex = this.selectedIndex;
18360        } else {
18361          this.msDropdown.refresh();
18362        }
18363      });
18364    } catch (e) {
18365      console.log(e.message);
18366    }
18367  }
18368  disconnectedCallback() {
18369    //console.log('disconnectedCallback');
18370  }
18371  adoptedCallback() {
18372    //console.log('adoptedCallback', this);
18373  }
18374  attributeChangedCallback(name, oldValue, newValue) {
18375    if (this.msDropdown) {
18376      if (name.indexOf("data-") !== -1) {
18377        name = name.replace("data-", "");
18378        let nameStr = name.toLowerCase().split('-');
18379        for (let i = 1; i < nameStr.length; i++) {
18380          nameStr[i] = nameStr[i].charAt(0).toUpperCase() + nameStr[i].substring(1);
18381        }
18382        this.msDropdown.setSettingAttribute(nameStr.join(""), newValue, true); //update settings and refresh
18383      } else {
18384        //this.msDropdown[name] = newValue;
18385      }
18386    }
18387  }
18388  static get observedAttributes() {
18389    return ['data-main-css', 'data-show-icon', 'data-event', 'data-child-width', 'data-child-height', 'data-enable-checkbox', 'data-checkbox-name-suffix', 'data-enable-auto-filter', 'data-visible-rows', 'data-show-plus-item-counter', 'data-error-message', 'data-show-filter-always', 'data-show-list-counter', 'data-image-position'];
18390  }
18391}
18392customElements.define('ms-dropdown', dd, {
18393  extends: 'select'
18394});
18395
18396/***/ }),
18397
18398/***/ "./resources/plugins/msDropdown/js/lib/dd.js":
18399/*!***************************************************!*\
18400  !*** ./resources/plugins/msDropdown/js/lib/dd.js ***!
18401  \***************************************************/
18402/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
18403
18404"use strict";
18405__webpack_require__.r(__webpack_exports__);
18406/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18407/* harmony export */   "default": () => (/* binding */ MsDropdown)
18408/* harmony export */ });
18409/* harmony import */ var _ddmaker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ddmaker */ "./resources/plugins/msDropdown/js/lib/ddmaker.js");
18410/**
18411 * MSDropdown - dd.js
18412 * @author: Marghoob Suleman
18413 * @website: https://www.marghoobsuleman.com/
18414 * @version: 4.0.2
18415 * @revision: 5
18416 * @date: 5th Sep 2021
18417 * msDropdown is free web component: you can redistribute it and/or modify
18418 * it under the terms of the either the MIT License or the Gnu General Public License (GPL) Version 2
18419 */
18420
18421
18422class MsDropdown {
18423  constructor(ele, settings) {
18424    if (typeof ele === "string") {
18425      document.querySelectorAll(ele).forEach(current => {
18426        new MsDropdown(current, settings);
18427      });
18428    } else {
18429      ele.msDropdown = this;
18430      this._ddMaker = new _ddmaker__WEBPACK_IMPORTED_MODULE_0__["default"](ele, settings);
18431    }
18432  }
18433  /*****************  Public methods and props ***********/
18434
18435  /**
18436   * Set setting attributes
18437   * @param key
18438   * @param value
18439   * @param shouldRefresh
18440   */
18441  setSettingAttribute(key, value, shouldRefresh = false) {
18442    this._ddMaker.setSettingAttribute(key, value);
18443    if (shouldRefresh) {
18444      this._ddMaker.refresh();
18445    }
18446  }
18447  /**
18448  * Add an item to select
18449  * Object can be pass as below
18450  * new Option("Label", "value") or
18451  * {text:"Label", value:"value"}
18452  * or Label as string
18453  * or full object ie {text:"", value:"", description:'', image:'', className:'' title:'', imageCss:''}
18454  * @param obj {option | object}
18455  * @param index {int}
18456  */
18457  add(obj, index) {
18458    this._ddMaker.add(obj, index);
18459  }
18460
18461  /**
18462   * Remove an item from select
18463   * @param index {int}
18464   */
18465  remove(index) {
18466    return this._ddMaker.remove(index);
18467  }
18468
18469  /**
18470   * Move to next index
18471   */
18472  next() {
18473    this._ddMaker.next();
18474  }
18475
18476  /**
18477   * Move to previous index
18478   */
18479  previous() {
18480    this._ddMaker.previous();
18481  }
18482
18483  /**
18484   * Open this dropdown
18485   */
18486  open() {
18487    this._ddMaker.open(null, false);
18488  }
18489
18490  /**
18491   * Close this dropdown
18492   */
18493  close() {
18494    this._ddMaker.close(null);
18495  }
18496
18497  /**
18498   * Return named item element with data
18499   * @param name {string}
18500   * @param withData
18501   */
18502  namedItem(name, withData = false) {
18503    return this._ddMaker.namedItem(name, withData);
18504  }
18505
18506  /**
18507   * Get data by index
18508   * @param index {int}
18509   * @param withData
18510   */
18511  item(index, withData = false) {
18512    return this._ddMaker.item(index, withData);
18513  }
18514
18515  /**
18516   * Show hide or get status of visibility
18517   * @param isShow
18518   * @return {boolean}
18519   */
18520  visible(isShow = null) {
18521    return this._ddMaker.visible(isShow);
18522  }
18523
18524  /**
18525   * Calculate item height and set child height
18526   * @param numberOfRows {int}
18527   */
18528  showRows(numberOfRows) {
18529    this._ddMaker.showRows(numberOfRows);
18530  }
18531
18532  /**
18533   * Alias of showRows
18534   * @param numberOfRows {int}
18535   */
18536  visibleRows(numberOfRows) {
18537    this._ddMaker.showRows(numberOfRows);
18538  }
18539
18540  /**
18541   * Add event listener
18542   * @param type {string}
18543   * @param fn {function}
18544   */
18545  on(type, fn) {
18546    this._ddMaker.on(type, fn);
18547  }
18548
18549  /**
18550   * Remove event listener
18551   * @param type {string}
18552   * @param fn {function}
18553   */
18554  off(type, fn) {
18555    this._ddMaker.off(type, fn);
18556  }
18557  /**
18558   * update ui and value
18559   */
18560  updateUiAndValue() {
18561    this._ddMaker.updateUiAndValue();
18562  }
18563
18564  /**
18565   * Remake msDropdown
18566   */
18567  refresh() {
18568    this._ddMaker.refresh();
18569  }
18570  /**
18571   * Remove msDropdown
18572   */
18573  destroy() {
18574    this._ddMaker.destroy();
18575  }
18576
18577  /*** Props ***/
18578  /**
18579   * Get selected index
18580   * @return {int}
18581   */
18582  get selectedIndex() {
18583    return this._ddMaker.selectedIndex;
18584  }
18585
18586  /**
18587   * Set Index
18588   * @param index {int}
18589   */
18590  set selectedIndex(index) {
18591    this._ddMaker.selectedIndex = index;
18592  }
18593
18594  /**
18595   * Get options
18596   * @return {HTMLOptionElement}
18597   */
18598  get options() {
18599    return this._ddMaker.options;
18600  }
18601
18602  /**
18603   * Set options length
18604   * @param option {int | HTMLOptionElement}
18605   */
18606  set options(option) {
18607    this._ddMaker.options = option;
18608  }
18609
18610  /**
18611   * get options UI
18612   * @return {NodeList}
18613   */
18614  get optionsUI() {
18615    return this._ddMaker.optionsUI;
18616  }
18617
18618  /**
18619   * Get length
18620   * @return {int}
18621   */
18622  get length() {
18623    return this._ddMaker.length;
18624  }
18625
18626  /**
18627   * Set length
18628   * @param size {int}
18629   */
18630  set length(size) {
18631    this._ddMaker.length = size;
18632  }
18633
18634  /**
18635   * Get value
18636   * @return {string | any}
18637   */
18638  get value() {
18639    return this._ddMaker.value;
18640  }
18641
18642  /**
18643   * Set value
18644   * @param val {string | any}
18645   */
18646  set value(val) {
18647    this._ddMaker.value = val;
18648  }
18649
18650  /**
18651   * get selected text
18652   * @return {string}
18653   */
18654  get selectedText() {
18655    return this._ddMaker.selectedText;
18656  }
18657
18658  /**
18659   * Check if this is disabled
18660   * @return {boolean}
18661   */
18662  get disabled() {
18663    return this._ddMaker.disabled;
18664  }
18665
18666  /**
18667   * Set disabled
18668   * @param val {boolean}
18669   */
18670  set disabled(val) {
18671    this._ddMaker.disabled = val;
18672  }
18673
18674  /**
18675   * Get form name if this is inside a form
18676   * @return {string}
18677   */
18678  get form() {
18679    return this._ddMaker.form;
18680  }
18681
18682  /**
18683   * Get multiple
18684   * @return {boolean}
18685   */
18686  get multiple() {
18687    return this._ddMaker.multiple;
18688  }
18689
18690  /**
18691   * Set multiple
18692   * @param val {boolean}
18693   */
18694  set multiple(val) {
18695    this._ddMaker.multiple = val;
18696  }
18697
18698  /**
18699   * Get the name
18700   * @return {string}
18701   */
18702  get name() {
18703    return this._ddMaker.name;
18704  }
18705
18706  /**
18707   * Set the name
18708   * @param val {string}
18709   */
18710  set name(val) {
18711    this._ddMaker.name = val;
18712  }
18713
18714  /**
18715   * Get required
18716   * @return {boolean}
18717   */
18718  get required() {
18719    return this._ddMaker.required;
18720  }
18721
18722  /**
18723   * Set required
18724   * @param val {boolean}
18725   */
18726  set required(val) {
18727    this._ddMaker.required = val;
18728  }
18729
18730  /**
18731   * return the size/height of the dropdown
18732   * @return {int}
18733   */
18734  get size() {
18735    return this._ddMaker.size;
18736  }
18737
18738  /**
18739   * Change the height of the element
18740   * @param val {int}
18741   */
18742  set size(val) {
18743    this._ddMaker.size = val;
18744  }
18745
18746  /**
18747   * Get selected option
18748   * @return {HTMLOptionElement}
18749   */
18750  get selectedOptions() {
18751    return this._ddMaker.selectedOptions;
18752  }
18753
18754  /**
18755   * Get element children
18756   * @return {HTMLCollection}
18757   */
18758  get children() {
18759    return this._ddMaker.children;
18760  }
18761
18762  /**
18763   * Get selected ui data
18764   * @return {object | {data: *, ui: *, index: *, option: *}}
18765   */
18766  get uiData() {
18767    return this._ddMaker.uiData;
18768  }
18769
18770  /**
18771   * Make dropdown
18772   * @param ele
18773   * @param settings
18774   */
18775  static make(ele, settings) {
18776    if (!ele.msDropdown) {
18777      try {
18778        let ddSelect = new MsDropdown(ele, settings);
18779        ele.addEventListener("change", () => {
18780          if (!ele.multiple) {
18781            ele.msDropdown.selectedIndex = current.selectedIndex;
18782          } else {
18783            ele.msDropdown.refresh();
18784          }
18785        });
18786        return ddSelect;
18787      } catch (e) {
18788        console.log(e.message);
18789      }
18790    }
18791  }
18792
18793  /**
18794   * Get version
18795   * @return {string}
18796   */
18797  static get version() {
18798    return "4.0.2";
18799  }
18800
18801  /**
18802   * Get author
18803   * @return {string}
18804   */
18805  static get author() {
18806    return "Marghoob Suleman";
18807  }
18808}
18809
18810/***/ }),
18811
18812/***/ "./resources/plugins/msDropdown/js/lib/ddmaker.js":
18813/*!********************************************************!*\
18814  !*** ./resources/plugins/msDropdown/js/lib/ddmaker.js ***!
18815  \********************************************************/
18816/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
18817
18818"use strict";
18819__webpack_require__.r(__webpack_exports__);
18820/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18821/* harmony export */   "default": () => (/* binding */ ddMaker)
18822/* harmony export */ });
18823function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18824function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18825function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
18826function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
18827function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18828/**
18829 * MSDropdown - ddmaker.js
18830 * @author: Marghoob Suleman
18831 * @website: https://www.marghoobsuleman.com/
18832 * @version: 4.0.2
18833 * @revision: 5
18834 * @date: 21st Sep 2021
18835 * msDropdown is free web component: you can redistribute it and/or modify
18836 * it under the terms of the either the MIT License or the Gnu General Public License (GPL) Version 2
18837 */
18838
18839let _oldC = null;
18840class ddMaker {
18841  constructor(ele, settings) {
18842    let defaultSettings = {
18843      byJson: {
18844        data: null,
18845        selectedIndex: 0,
18846        name: null,
18847        size: 0,
18848        multiple: false,
18849        width: 250
18850      },
18851      mainCss: 'ms-dd',
18852      rowHeight: null,
18853      visibleRows: null,
18854      showIcon: true,
18855      zIndex: 9999,
18856      event: 'click',
18857      style: '',
18858      childWidth: null,
18859      childHeight: null,
18860      enableCheckbox: false,
18861      //this needs to be multiple or it will set the element to multiple
18862      checkboxNameSuffix: '_mscheck',
18863      showPlusItemCounter: true,
18864      enableAutoFilter: true,
18865      showFilterAlways: false,
18866      showListCounter: false,
18867      imagePosition: 'left',
18868      errorMessage: 'Please select an item from this list',
18869      on: {
18870        create: null,
18871        open: null,
18872        close: null,
18873        add: null,
18874        remove: null,
18875        change: null,
18876        blur: null,
18877        click: null,
18878        dblclick: null,
18879        mousemove: null,
18880        mouseover: null,
18881        mouseout: null,
18882        focus: null,
18883        mousedown: null,
18884        mouseup: null
18885      }
18886    };
18887    this.ele = ele;
18888    //merge with data settings
18889    this._settings = _objectSpread(_objectSpread({}, defaultSettings), settings);
18890    this._css = {};
18891    this._onDocumentClick = null;
18892    this._onDocumentKeyDown = null;
18893    this._onDocumentKeyUp = null;
18894    this._isOpen = false;
18895    this._DOWN_ARROW = 40;
18896    this._UP_ARROW = 38;
18897    this._LEFT_ARROW = 37;
18898    this._RIGHT_ARROW = 39;
18899    this._ESCAPE = 27;
18900    this._ENTER = 13;
18901    this._ALPHABETS_START = 47;
18902    this._SHIFT = 16;
18903    this._CONTROL = 17;
18904    this._MAC_CONTROL = 91;
18905    this._BACKSPACE = 8;
18906    this._DELETE = 46;
18907    this._SPACE = 32;
18908    this._shiftHolded = false;
18909    this._controlHolded = false;
18910    this._isFirstTime = true;
18911    this._cacheEle = {};
18912    this._isMouseDown = false;
18913    this._itemsArr = [];
18914    this._css = {
18915      dd: this._settings.mainCss + " ms-pr",
18916      wrapperDisabled: 'disabled',
18917      headerA: "ms-list-option option-selected",
18918      header: 'ms-dd-header',
18919      headerMiddleContent: 'ms-header-middle-content',
18920      arrow: 'ms-dd-arrow',
18921      arrowDown: 'ms-dd-pointer-down',
18922      arrowUp: 'ms-dd-pointer-up',
18923      headerCounter: 'ms-header-counter',
18924      listOfItems: 'ms-options',
18925      itemContent: 'ms-dd-option-content',
18926      item: 'ms-list-option',
18927      itemSpan: 'ms-middle',
18928      itemSpanOpt: 'ms-optgroup-padding',
18929      itemLabel: 'ms-dd-label',
18930      itemImage: 'ms-dd-option-image',
18931      itemDesc: 'ms-dd-desc',
18932      itemSelected: 'option-selected',
18933      itemDisabled: 'disabled',
18934      itemEnabled: 'enabled',
18935      optgroup: "ms-optgroup",
18936      listCounter: 'ms-list-counter',
18937      valueInput: 'ms-value-input',
18938      checkbox: 'ms-checkbox',
18939      imageRight: 'ico-align-right'
18940    };
18941
18942    //init
18943    this._wrapper = {};
18944    this._createByJson();
18945    this._checkDataSettings();
18946    this._isList = this.ele.size > 1;
18947    this._isMultiple = this.ele.multiple;
18948    this._enableCheckbox = this._settings.enableCheckbox;
18949    if (this._isList || this._enableCheckbox.toString() === "true") {
18950      this._isMultiple = this.ele.multiple = true;
18951    }
18952    this._isFilterApplied = false;
18953    this._nexPrevCounter = 0;
18954    this._init();
18955  }
18956
18957  /**
18958   * Init
18959   * @private
18960   */
18961  _init() {
18962    //console.log(this.name, this.selectedIndex)
18963    this._makeLayout();
18964
18965    //console.log(this.name, this.selectedIndex)
18966    this._updateUiAndValueByIndex(this.selectedIndex);
18967    if (this.ele.size > 1) {
18968      this._makeUiAsList(true, this.ele.size);
18969      this._scrollToItem();
18970    }
18971
18972    //adjust child width
18973    if (this._settings.childWidth !== null) {
18974      this._wrapper.listOfItems.style.width = this._settings.childWidth;
18975    }
18976    //hide original
18977    this._showHideOriginal(false);
18978    if (this._settings.showFilterAlways.toString() === "true") {
18979      this._settings.enableAutoFilter = true;
18980      this._showHideFilterBox(true);
18981    }
18982    if (this.ele.autofocus) {
18983      this._wrapper.holder.focus();
18984      this._wrapper.filterInput.focus();
18985    } else {
18986      this._wrapper.filterInput.blur();
18987    }
18988    this.updateUiAndValue();
18989    this._fireLocalEventIfExist("create");
18990    this._fireEventIfExist("onCreate");
18991  }
18992
18993  /**
18994   * Show hide Original
18995   * @param isShow
18996   * @private
18997   */
18998  _showHideOriginal(isShow = true) {
18999    if (isShow) {
19000      this._show(this.ele);
19001    } else {
19002      this._hide(this.ele);
19003    }
19004  }
19005
19006  /**
19007   * Check data settings.
19008   * Read from select data-* attributes
19009   * @private
19010   */
19011  _checkDataSettings() {
19012    let dataSet = this._getDataSet(this.ele);
19013    let settings = this._settings;
19014    settings.mainCss = dataSet?.mainCss || settings.mainCss;
19015    settings.showIcon = dataSet?.showIcon || settings.showIcon;
19016    settings.event = dataSet?.event || settings.event;
19017    settings.childWidth = dataSet?.childWidth || settings.childWidth;
19018    settings.childHeight = dataSet?.childHeight || settings.childHeight;
19019    settings.enableCheckbox = dataSet?.enableCheckbox || settings.enableCheckbox;
19020    settings.checkboxNameSuffix = dataSet?.checkboxNameSuffix || settings.checkboxNameSuffix;
19021    /*settings.append = dataSet.append || settings.append;
19022    settings.prepend = dataSet.prepend || settings.prepend;*/
19023    settings.enableAutoFilter = dataSet?.enableAutoFilter || settings.enableAutoFilter;
19024    settings.visibleRows = dataSet?.visibleRows || settings.visibleRows;
19025    settings.showPlusItemCounter = dataSet?.showPlusItemCounter || settings.showPlusItemCounter;
19026    settings.errorMessage = dataSet?.errorMessage || settings.errorMessage;
19027    settings.showFilterAlways = dataSet?.showFilterAlways || settings.showFilterAlways;
19028    settings.showListCounter = dataSet?.showListCounter || settings.showListCounter;
19029    settings.imagePosition = dataSet?.imagePosition || settings.imagePosition;
19030    this._settings = _objectSpread(_objectSpread({}, this._settings), settings);
19031  }
19032
19033  /**
19034   * Set setting attribute
19035   * @param key
19036   * @param value
19037   */
19038  setSettingAttribute(key, value) {
19039    this._settings[key] = value;
19040  }
19041
19042  /**
19043   * Create by json
19044   * @private
19045   */
19046  _createByJson() {
19047    if (this._settings.byJson.data) {
19048      try {
19049        let json = this._settings.byJson;
19050        //this._settings.byJson.data = settings.byJson.data;
19051        //change element
19052        let obj = {};
19053        obj.name = json.name || this.ele.id || "";
19054        if (json.size > 0) {
19055          obj.size = json.size;
19056        }
19057        if (json.multiple) {
19058          obj.multiple = json.multiple;
19059        }
19060        let oSelect = this._createEle("select", obj);
19061        let total = json.data.length;
19062        for (let i = 0; i < total; i++) {
19063          let current = json.data[i];
19064          let opt = new Option(current.text, current.value);
19065          if (current.disabled) {
19066            opt.disabled = true;
19067          }
19068          for (let p in current) {
19069            if (current.hasOwnProperty(p) && p.toLowerCase() !== 'text') {
19070              let key = `data-${p}`;
19071              key = key.replace(/([A-Z])/g, "-$1").toLowerCase(); //replace caps letter with -letter
19072              opt.setAttribute(key, current[p]);
19073            }
19074          }
19075          oSelect.options[i] = opt;
19076        }
19077        //add this
19078        this.ele.appendChild(oSelect);
19079        oSelect.selectedIndex = json.selectedIndex;
19080        if (json.width) {
19081          this.ele.style.width = json.width + 'px';
19082        }
19083
19084        //now change element for the base ele
19085        this.ele = oSelect;
19086      } catch (e) {
19087        throw "There is an error in json data.";
19088      }
19089    }
19090  }
19091
19092  /**
19093   * Scroll to item
19094   * @param item
19095   * @param behavior
19096   */
19097  _scrollToItem(item, behavior = 'smooth') {
19098    item = item || this.uiData.ui;
19099    if (item) {
19100      item = item.length > 1 ? item[0] : item;
19101      this._scrollToIfNeeded(item);
19102    }
19103  }
19104
19105  /**
19106   * Show filter box
19107   * @param isShow
19108   * @private
19109   */
19110  _showHideFilterBox(isShow = true) {
19111    if (isShow) {
19112      this._show(this._wrapper.filterHolder);
19113      this._wrapper.filterInput.focus();
19114      if (this._settings.showFilterAlways.toString() === "false") {
19115        this._hide(this._wrapper.headerA);
19116      }
19117    } else {
19118      this._wrapper.filterInput.value = "";
19119      this._hide(this._wrapper.filterHolder);
19120      this._show(this._wrapper.headerA);
19121    }
19122  }
19123
19124  /**
19125   * Apply filters
19126   * @param e
19127   * @private
19128   */
19129  _applyFilters(e) {
19130    let sText = this._wrapper.filterInput.value;
19131    if (sText.length === 0) {
19132      this._show(this._wrapper.headerA);
19133      this._makeChildren();
19134      this._isFilterApplied = false;
19135    } else {
19136      if (this._settings.showFilterAlways.toString() === "false") {
19137        this._hide(this._wrapper.headerA);
19138      }
19139      if (!this._isOpen) {
19140        this.open(null);
19141      }
19142
19143      //hide all
19144      let options = [...this.options];
19145      let filterOptions = options.filter(function (item) {
19146        return item.nodeName !== "OPTGROUP" && item.disabled === false && item.text.toLowerCase().indexOf(sText.toLowerCase()) >= 0;
19147      });
19148      this._makeChildren(filterOptions);
19149      this._isFilterApplied = true;
19150      this._nexPrevCounter = -1;
19151      this._scrollToIfNeeded(null, 0);
19152    }
19153  }
19154
19155  /**
19156   * Make filter box
19157   * @return {any}
19158   * @private
19159   */
19160  _makeFilterBox() {
19161    let div = this._createEle("div", {
19162      className: 'ms-filter-box'
19163    });
19164    let input = this._createEle("input", {
19165      type: "text"
19166    });
19167    div.appendChild(input);
19168    this._wrapper.filterInput = input;
19169    this._wrapper.filterHolder = div;
19170    this._bindEvents(input, "input", evt => {
19171      this._applyFilters(evt);
19172    });
19173    return div;
19174  }
19175
19176  /**
19177   * Make header
19178   * @return {any}
19179   * @private
19180   */
19181  _makeHeader() {
19182    let css = this._css;
19183    let divHeader = this._createEle("div", {
19184      className: css.header
19185    });
19186    let headerA = this._createEle("a", {
19187      className: css.headerA
19188    });
19189    let headerContent = this._createEle("span", {
19190      className: css.headerMiddleContent
19191    });
19192    let arrow = this._createEle("span", {
19193      className: css.arrow + ' ' + css.arrowDown
19194    });
19195    headerA.appendChild(arrow);
19196    headerA.appendChild(headerContent);
19197    divHeader.appendChild(headerA);
19198    this._wrapper.header = divHeader;
19199    this._wrapper.headerA = headerA;
19200    this._wrapper.headerContent = headerContent;
19201    this._wrapper.arrow = arrow;
19202    if (this._settings.imagePosition !== "left") {
19203      headerA.classList.add(css.imageRight);
19204    }
19205    this._bindEvents(divHeader, this._settings.event, evt => {
19206      this.open(evt);
19207    });
19208    return divHeader;
19209  }
19210
19211  /**
19212   * Make children
19213   * @param byOption
19214   * @return {*}
19215   * @private
19216   */
19217  _makeChildren(byOption = null) {
19218    let css = this._css;
19219    let isCheckbox = this._enableCheckbox.toString() === "true";
19220    let ul,
19221      $this = this;
19222
19223    /**
19224     * Make Object
19225     * @param opts
19226     * @param counter
19227     * @return {{opt: *, itemObj: *}}
19228     * @private
19229     */
19230    let _makeObject = function (opts, counter) {
19231      let opt = {};
19232      opt = $this._parseOption(opts);
19233      //{image, title, description, value, text, className, imageCss, index, selected, disabled}
19234      let itemObj = {
19235        label: {
19236          text: opt.text,
19237          css: css.itemLabel
19238        },
19239        img: {
19240          src: opt.image,
19241          css: css.itemImage
19242        },
19243        desc: {
19244          text: opt.description,
19245          css: css.itemDesc
19246        },
19247        isDisabled: opts.disabled || false,
19248        isSelected: opts.selected || false,
19249        isCheckbox: isCheckbox,
19250        value: opt.value,
19251        title: opt.title,
19252        imageCss: `${opt.imageCss} ${opt.className}`,
19253        counter: counter + 1,
19254        isOptGroup: opts.nodeName === "OPTGROUP",
19255        innerSpanCss: css.itemContent
19256      };
19257      return {
19258        opt,
19259        itemObj
19260      };
19261    };
19262
19263    /**
19264     * Bind events
19265     * @param li
19266     * @param itemObj
19267     */
19268    let bindEvents = function (li, itemObj) {
19269      if (!itemObj.isDisabled) {
19270        $this._bindEvents(li, "mouseup", evt => {
19271          $this._isMouseDown = false;
19272          if (!isCheckbox || evt.target.nodeName !== "INPUT") {
19273            if (!$this._isList) {
19274              $this.close(evt);
19275            }
19276          }
19277        });
19278        $this._bindEvents(li, "mousedown", evt => {
19279          $this._isMouseDown = true;
19280          if (!isCheckbox || evt.target.nodeName !== "INPUT") {
19281            if ($this._shiftHolded && $this._isMultiple) {
19282              //multiple select if shift is pressed
19283              let oldIndex = $this.selectedIndex;
19284              let newIndex = li.index;
19285              $this._setSelectedByIndexFromTo(oldIndex, newIndex);
19286            } else if ($this._controlHolded && $this._isMultiple) {
19287              //select another one without resetting
19288              $this._setSelectedByItem(li, false, false);
19289            } else {
19290              //normal click
19291              $this._setSelectedByItem(li);
19292            }
19293          } else {
19294            //this is checkbox - make it toggle
19295            $this._setSelectedByItemToggle(li._refCheckbox, li);
19296          }
19297        });
19298        $this._bindEvents(li, "mouseover", evt => {
19299          if ($this._isMouseDown && $this._isMultiple) {
19300            $this._setSelectedByItem(li, false, false);
19301          }
19302        });
19303      }
19304    };
19305
19306    //use old one holder if required
19307    if (!this._wrapper.listOfItems) {
19308      ul = this._createEle("ul", {
19309        className: css.listOfItems,
19310        zIndex: this._settings.zIndex
19311      });
19312      this._wrapper.listOfItems = ul;
19313    } else {
19314      ul = this._wrapper.listOfItems;
19315    }
19316    ul.innerHTML = ""; //clear old one
19317    let options = byOption === null ? this.ele.children : byOption;
19318    let optLen = options.length;
19319    for (let i = 0; i < optLen; i++) {
19320      let current = options[i];
19321      let parseObj = _makeObject(current, i);
19322      let opt = parseObj.opt;
19323      let itemObj = parseObj.itemObj;
19324      let li = this._createRow(itemObj);
19325      if (opt.className !== '') {
19326        li.className = li.className + " " + opt.className;
19327      }
19328      if (opt.internalStyle !== '') {
19329        li.style = opt.internalStyle;
19330      }
19331      li.index = opt.index;
19332      li.setAttribute("data-ms-index", opt.index);
19333      if (itemObj.isOptGroup) {
19334        //let make children of optgroup
19335        let c_options = current.children;
19336        let c_optLen = c_options.length;
19337        let ul2 = this._createEle("ul");
19338        for (let j = 0; j < c_optLen; j++) {
19339          let c_current = c_options[j];
19340          let c_parseObj = _makeObject(c_current, j);
19341          let c_opt = c_parseObj.opt;
19342          let c_itemObj = c_parseObj.itemObj;
19343          let c_li = this._createRow(c_itemObj);
19344          if (c_opt.className !== '') {
19345            c_li.className = c_li.className + " " + c_opt.className;
19346          }
19347          if (c_opt.internalStyle !== '') {
19348            c_li.style = c_opt.internalStyle;
19349          }
19350          c_li.index = c_opt.index;
19351          c_li.setAttribute("data-ms-index", c_opt.index);
19352          if (c_itemObj.isSelected) {
19353            this._setSelectedByItem(c_li, true);
19354          }
19355          bindEvents(c_li, c_itemObj);
19356          if (this._settings.imagePosition !== "left") {
19357            c_li.classList.add(css.imageRight);
19358          }
19359          ul2.appendChild(c_li);
19360        }
19361        li.appendChild(ul2);
19362      }
19363      if (!itemObj.isOptGroup) {
19364        bindEvents(li, itemObj);
19365      }
19366      if (this._settings.imagePosition !== "left") {
19367        li.classList.add(css.imageRight);
19368      }
19369      ul.appendChild(li);
19370      if (itemObj.isSelected) {
19371        this._setSelectedByItem(li, true);
19372      }
19373    }
19374    if (this._settings.childHeight !== null) {
19375      ul.style.maxHeight = this._settings.childHeight + 'px';
19376    }
19377    return ul;
19378  }
19379
19380  /**
19381   * Make Layout
19382   * @return {any}
19383   * @private
19384   */
19385  _makeLayout() {
19386    this.ele.tabIndex = -1;
19387    let css = this._css;
19388    let wrapper = this._createEle("div", {
19389      tabIndex: 0,
19390      className: css.dd
19391    });
19392    let name = this.ele.name;
19393    let isRequired = this.ele.required;
19394    let valueBox = this._createEle("input", {
19395      tabIndex: -1,
19396      name: name,
19397      type: "text",
19398      className: this._css.valueInput,
19399      required: isRequired
19400    });
19401    wrapper.appendChild(valueBox);
19402    this.ele.required = false;
19403    this.ele.name = "";
19404
19405    //This is for multiple select
19406    let moreValueBox = this._createEle("div", {
19407      className: "more",
19408      style: "display:none"
19409    });
19410    wrapper.appendChild(moreValueBox);
19411    this._wrapper.valueBox = valueBox;
19412    this._wrapper.moreValueBox = moreValueBox;
19413
19414    //Make header
19415    let divHeader = this._makeHeader();
19416
19417    //Filter box
19418    let filterBox = this._makeFilterBox();
19419    divHeader.appendChild(filterBox);
19420    this._showHideFilterBox(false);
19421
19422    //make options
19423    let ul = this._makeChildren();
19424    wrapper.appendChild(divHeader);
19425    wrapper.appendChild(ul);
19426    this._wrapper.holder = wrapper;
19427
19428    //add in document
19429    this._insertAfter(wrapper, this.ele);
19430
19431    //hide children
19432    this._hide(ul);
19433    if (this.disabled) {
19434      wrapper.classList.add(css.wrapperDisabled);
19435    }
19436    let style = this._getInternalStyle(this.ele);
19437    wrapper.setAttribute("style", style);
19438    if (this._settings.byJson.data !== null) {
19439      wrapper.setAttribute("style", `width:${this._settings.byJson.width}px`);
19440    }
19441
19442    //clear
19443    let div = this._createEle("div", {
19444      style: "clear:both"
19445    });
19446    wrapper.appendChild(div);
19447    this._bindEvents(this._wrapper.holder, "focus", evt => {
19448      if (this._isList) {
19449        this._bindDocumentEvents(null, false, true);
19450      } else {
19451        if (_oldC) {
19452          _oldC.close(null);
19453          _oldC = null;
19454        }
19455        this._bindDocumentEvents(null, true, true);
19456        _oldC = this;
19457      }
19458      this._fireLocalEventIfExist("focus");
19459      this._fireEventIfExist("focus");
19460    });
19461    this._bindEvents(this._wrapper.holder, "blur", evt => {
19462      if (this._isList) {
19463        this._unbindDocumentEvents();
19464      }
19465      this._fireLocalEventIfExist("blur");
19466      this._fireEventIfExist("blur");
19467    });
19468    this._bindEvents(this._wrapper.holder, "dblclick", evt => {
19469      this._fireLocalEventIfExist("blur");
19470      this._fireEventIfExist("blur");
19471    });
19472
19473    //For custom message on required
19474    this._bindEvents(valueBox, "invalid", evt => {
19475      evt.target.setCustomValidity("");
19476      if (!evt.target.validity.valid) {
19477        evt.target.setCustomValidity(this._settings.errorMessage);
19478      }
19479    });
19480    this._bindEvents(valueBox, "input", evt => {
19481      evt.target.setCustomValidity("");
19482    });
19483    let events = ["click", "dblclick", "mousemove", "mouseover", "mouseout", "mousedown", "mouseup"];
19484    for (let i = 0, len = events.length; i < len; i++) {
19485      let evtName = events[i];
19486      this._bindEvents(this._wrapper.holder, evtName, evt => {
19487        this._fireLocalEventIfExist(evtName);
19488        this._fireEventIfExist(evtName);
19489      });
19490    }
19491    return wrapper;
19492  }
19493
19494  /**
19495   * Create a row
19496   * @param obj
19497   * @return {any}
19498   */
19499  _createRow(obj) {
19500    let itemCss = obj.isOptGroup ? this._css.optgroup : this._css.item;
19501    let li = this._createEle("li", {
19502      className: itemCss
19503    });
19504    if (obj.isCheckbox && !obj.isOptGroup) {
19505      let checkbox = this._createEle("input", {
19506        tabIndex: -1,
19507        className: this._css.checkbox,
19508        type: "checkbox",
19509        disabled: obj.isDisabled,
19510        "checked": false,
19511        value: obj.value,
19512        name: this._wrapper.valueBox.name + this._settings.checkboxNameSuffix + "[]"
19513      });
19514      li.appendChild(checkbox);
19515      li._refCheckbox = checkbox;
19516    }
19517    let optTxtCss = obj.isOptGroup ? " " + this._css.itemSpanOpt : "";
19518    let itemSpan = this._createEle("span", {
19519      className: this._css.itemSpan + optTxtCss
19520    });
19521    let text = this._settings.showListCounter.toString() === "true" ? `<span class='${this._css.listCounter}'>${obj.counter}</span> ${obj.label.text}` : obj.label.text;
19522    let textSpan = this._createEle("span", {
19523      className: obj.label.css
19524    }, text);
19525    let itemInnerSpan = this._createEle("span", {
19526      className: obj.innerSpanCss
19527    });
19528    itemInnerSpan.appendChild(textSpan);
19529    if (obj.img.src !== null) {
19530      let img = this._createEle("img", {
19531        className: obj.img.css,
19532        src: obj.img.src
19533      });
19534      itemSpan.appendChild(img);
19535    }
19536    if (obj.img.src === null && obj.imageCss.replace(/\s/g, '') !== '') {
19537      let imgSpan = this._createEle("span", {
19538        className: obj.img.css + ' ' + obj.imageCss
19539      }, "&nbsp;");
19540      itemSpan.appendChild(imgSpan);
19541    }
19542    if (obj.desc.text !== null) {
19543      let spanDesc = this._createEle("span", {
19544        className: obj.desc.css
19545      }, obj.desc.text);
19546      itemInnerSpan.appendChild(spanDesc);
19547    }
19548    itemSpan.appendChild(itemInnerSpan);
19549    li.appendChild(itemSpan);
19550    if (obj.isDisabled) {
19551      li.classList.add(this._css.itemDisabled);
19552    } else if (!obj.isOptGroup) {
19553      li.classList.add(this._css.itemEnabled);
19554    }
19555    if (obj.title !== '') {
19556      li.title = obj.title;
19557    }
19558    return li;
19559  }
19560
19561  /**
19562   * Parse option
19563   * @param opt
19564   * @return {{image: *, description: *, index: *, className: *, disabled: *, text: *, imageCss: *, title: *, internalStyle: *, value: *, selected: *}}
19565   * @private
19566   */
19567  _parseOption(opt) {
19568    let image = null,
19569      title = '',
19570      description = '',
19571      value = '',
19572      text = '',
19573      className = '',
19574      imageCss = '',
19575      index = -1,
19576      selected,
19577      disabled,
19578      internalStyle;
19579    if (opt !== undefined) {
19580      let optionType = opt.nodeName;
19581      let dataSet = opt.dataset;
19582      if (optionType === "OPTGROUP") {
19583        text = opt.label;
19584      } else {
19585        text = opt.text;
19586        value = opt.value || text;
19587      }
19588      index = opt.index;
19589      selected = opt.selected;
19590      disabled = opt.disabled;
19591      className = opt.className || "";
19592      title = dataSet.title || '';
19593      description = dataSet.description || '';
19594      image = dataSet.image || image;
19595      imageCss = dataSet.imageCss || '';
19596      internalStyle = this._getInternalStyle(opt);
19597    }
19598    return {
19599      image,
19600      title,
19601      description,
19602      value,
19603      text,
19604      className,
19605      imageCss,
19606      index,
19607      selected,
19608      disabled,
19609      internalStyle
19610    };
19611  }
19612
19613  /**
19614   * remove old selected
19615   * @private
19616   */
19617  _removeOldSelected() {
19618    let oldSelected = this._getAllEle("ul li." + this._css.itemSelected, this._wrapper.holder);
19619
19620    //remove old selected
19621    for (let i = 0; i < oldSelected.length; i++) {
19622      oldSelected[i].classList.remove(this._css.itemSelected);
19623      if (this._isMultiple && this._enableCheckbox.toString() === "true") {
19624        oldSelected[i]._refCheckbox.checked = false;
19625        //this._getEle("input", oldSelected[i]).checked = false;
19626      }
19627    }
19628  }
19629
19630  /**
19631   * Select by index a to b
19632   * @param indexA
19633   * @param indexB
19634   * @private
19635   */
19636  _setSelectedByIndexFromTo(indexA, indexB) {
19637    let min = Math.min(indexA, indexB);
19638    let max = Math.max(indexA, indexB);
19639    let options = this.optionsUI;
19640    for (let i = min; i <= max; i++) {
19641      this._setSelectedByItem(options[i], false, false);
19642    }
19643  }
19644  /**
19645   * Toggle Select
19646   * @private
19647   * @param checkbox
19648   * @param li
19649   */
19650  _setSelectedByItemToggle(checkbox, li) {
19651    let isChecked = !checkbox.checked;
19652    let index = li.index;
19653    if (isChecked) {
19654      li.classList.add(this._css.itemSelected);
19655      this.ele.options[index].selected = true;
19656    } else {
19657      li.classList.remove(this._css.itemSelected);
19658      this.ele.options[index].selected = false;
19659    }
19660    this.updateUiAndValue();
19661  }
19662
19663  /**
19664   * Set selected by an item
19665   * @param ele
19666   * @param dontThink
19667   * @param resetOldSelected
19668   * @private
19669   */
19670  _setSelectedByItem(ele, dontThink = false, resetOldSelected = true) {
19671    if (dontThink && ele) {
19672      ele.classList.add(this._css.itemSelected);
19673    } else {
19674      let index = ele.index;
19675      if (resetOldSelected === true) {
19676        this._removeOldSelected();
19677        this.ele.selectedIndex = index;
19678        //this.selectedIndex = index;
19679      } else {
19680        //it could be multiple
19681        this.ele.options[index].selected = true;
19682      }
19683      ele?.classList?.add(this._css.itemSelected);
19684      this.updateUiAndValue();
19685    }
19686    if (this._enableCheckbox.toString() === "true") {
19687      if (ele?._refCheckbox) {
19688        ele._refCheckbox.checked = true;
19689      }
19690    }
19691    if (this._isFirstTime === false) {
19692      this._fireLocalEventIfExist("change");
19693      this._fireEventIfExist("change");
19694    }
19695    this._isFirstTime = false;
19696  }
19697
19698  /**
19699   * Set selected by an select option item
19700   * @param option
19701   * @param dontThink
19702   * @private
19703   */
19704  _setSelectedByOptionItem(option, dontThink = false) {
19705    let index = option.index;
19706    let dataAndUI = this._getDataAndUI(index);
19707    this._setSelectedByItem(dataAndUI.ui, dontThink);
19708  }
19709
19710  /**
19711   * Update header ui
19712   * @param byData
19713   * @param innerHTML
19714   * @private
19715   */
19716  _updateHeaderUI(byData = null, innerHTML = null) {
19717    let dataAndUI = byData === null ? this.uiData : byData;
19718    let text = this._isArray(dataAndUI.index) ? dataAndUI.ui[0].innerHTML : null;
19719    this._wrapper.headerContent.innerHTML = innerHTML !== null ? innerHTML : text || dataAndUI?.ui?.innerHTML || "&nbsp;";
19720    let contentHolder = this._getEle("." + this._css.itemLabel, this._wrapper.headerContent);
19721    if (this._settings.showPlusItemCounter.toString() === "true" && dataAndUI.ui.length > 1) {
19722      contentHolder.innerHTML = contentHolder.innerHTML + `<span class="${this._css.headerCounter}">&nbsp; (+${dataAndUI.ui.length - 1})</span>`;
19723    }
19724    if (this._settings.showIcon.toString() === "false") {
19725      let img = this._getEle("img", this._wrapper.headerContent);
19726      if (img) {
19727        this._hide(img);
19728      }
19729    }
19730    this._setTitleMinHeight(false);
19731  }
19732
19733  /**
19734   * Find index By index prop
19735   * @param index
19736   * @return {null|*}
19737   * @private
19738   */
19739  _findElementByIndexProp(index) {
19740    let options = this._getAllEle(`ul li.${this._css.item}`, this._wrapper.holder);
19741    let total = options.length;
19742    for (let i = 0; i < total; i++) {
19743      let current = options[i];
19744      if (current.index === index) {
19745        return options[i];
19746      }
19747    }
19748    return null;
19749  }
19750
19751  /**
19752   * Get data and value
19753   * @param byIndex
19754   * @return {{data: *, ui: *, index: *, option: *, multiple:boolean}}
19755   * @private
19756   */
19757  _getDataAndUI(byIndex = null) {
19758    let ele = this.ele;
19759    let data,
19760      ui,
19761      option = null,
19762      index = -1;
19763    let obj,
19764      $this = this;
19765    let isArray = false;
19766    let getByIndex = function (byIndex) {
19767      let option = ele.options[byIndex];
19768      let data = $this._parseOption(option);
19769      let index = byIndex;
19770      let ui = $this._findElementByIndexProp(index);
19771      return {
19772        option,
19773        data,
19774        index,
19775        ui
19776      };
19777    };
19778    if (byIndex !== null) {
19779      obj = getByIndex(byIndex);
19780      option = obj.option;
19781      data = obj.data;
19782      index = obj.index;
19783      ui = obj.ui;
19784    } else {
19785      ui = this._getAllEle("ul li." + this._css.itemSelected, this._wrapper.holder);
19786
19787      // if this is multiple
19788      if (ui.length > 1) {
19789        let data_a = [],
19790          opt_a = [],
19791          ind_a = [],
19792          ui_a = [];
19793        for (let i = 0; i < ui.length; i++) {
19794          obj = getByIndex(ui[i].index);
19795          data_a.push(obj.data);
19796          opt_a.push(obj.option);
19797          ind_a.push(obj.index);
19798          ui_a.push(obj.ui);
19799        }
19800        data = data_a;
19801        option = opt_a;
19802        index = ind_a;
19803        ui = ui_a;
19804        isArray = true;
19805      } else {
19806        obj = getByIndex(ui[0]?.index || this.selectedIndex);
19807        option = obj.option || null;
19808        data = obj.data || null;
19809        index = obj.index || -1;
19810        ui = obj.ui || null;
19811      }
19812    }
19813    return {
19814      data,
19815      ui,
19816      index,
19817      option,
19818      isArray
19819    };
19820  }
19821
19822  /**
19823   * Is Array
19824   * @param obj
19825   * @return {boolean}
19826   * @private
19827   */
19828  _isArray = function (obj) {
19829    return Object.prototype.toString.call(obj) === "[object Array]";
19830  };
19831
19832  /**
19833   * Update Header UI by data
19834   * @param byData
19835   *
19836   */
19837  updateUiAndValue(byData = null) {
19838    let dataAndUI = byData === null ? this.uiData : byData;
19839    this._updateHeaderUI(dataAndUI);
19840    let valueBox = this._wrapper.valueBox;
19841    valueBox.value = this.ele.value;
19842
19843    //this is multiple
19844    if (this._isMultiple && valueBox.name.substr(valueBox.name.length - 2, valueBox.name.length) === "[]") {
19845      this._wrapper.moreValueBox.innerHTML = "";
19846      for (let i = 1; i < dataAndUI.data.length; i++) {
19847        let valueBoxM = this._createEle("input", {
19848          type: "hidden",
19849          name: valueBox.name,
19850          value: dataAndUI.data[i].value
19851        });
19852        this._wrapper.moreValueBox.appendChild(valueBoxM);
19853      }
19854    }
19855  }
19856
19857  /**
19858   * Update Ui by index
19859   * @param index
19860   * @private
19861   */
19862  _updateUiAndValueByIndex(index) {
19863    let dataAndUI = this._getDataAndUI(index);
19864    //this._updateHeaderUI(dataAndUI);
19865    this.updateUiAndValue(dataAndUI);
19866  }
19867
19868  /****  Elements and Helpers ****/
19869  /**
19870   * Create an element
19871   * @param nm
19872   * @param attr
19873   * @param html
19874   * @return {any}
19875   * @private
19876   */
19877  _createEle(nm, attr, html) {
19878    let tag = document.createElement(nm);
19879    if (attr) {
19880      for (let i in attr) {
19881        if (i === "style") {
19882          tag.style.cssText = attr[i];
19883        } else {
19884          tag[i] = attr[i];
19885        }
19886      }
19887    }
19888    if (html) {
19889      tag.innerHTML = html;
19890    }
19891    return tag;
19892  }
19893
19894  /**
19895   * Get one element
19896   * @param ele
19897   * @param where
19898   * @return {*}
19899   * @private
19900   */
19901  _getEle(ele, where = null) {
19902    return where === null ? document.querySelector(ele) : where.querySelector(ele);
19903  }
19904
19905  /**
19906   * Get all elements
19907   * @param ele
19908   * @param where
19909   * @return {any}
19910   * @private
19911   */
19912  _getAllEle(ele, where = null) {
19913    return where === null ? document.querySelectorAll(ele) : where.querySelectorAll(ele);
19914  }
19915
19916  /**
19917   * Get internal style of an element
19918   * @param ele
19919   * @return {string|*}
19920   * @private
19921   */
19922  _getInternalStyle(ele) {
19923    return ele.style === undefined ? "" : ele.style.cssText;
19924  }
19925
19926  /**
19927   * Toggle show
19928   * @param ele
19929   * @private
19930   */
19931  _toggleShow(ele) {
19932    ele.style.display = ele.style.display === "none" || ele.style.display === "" ? "inherit" : "none";
19933  }
19934
19935  /**
19936   * Show an element
19937   * @param ele
19938   * @private
19939   */
19940  _show(ele, dispaly = "block") {
19941    ele.style.display = dispaly;
19942  }
19943
19944  /**
19945   * Hide an element
19946   * @param ele
19947   * @private
19948   */
19949  _hide(ele) {
19950    ele.style.display = "none";
19951  }
19952
19953  /**
19954   * Insert an element after an element
19955   * @param ele
19956   * @param targetEle
19957   * @return {*}
19958   * @private
19959   */
19960  _insertAfter(ele, targetEle) {
19961    return targetEle.parentNode.insertBefore(ele, targetEle.nextSibling);
19962  }
19963
19964  /**
19965   * Not using for now
19966   * Insert an element before a target element
19967   * @param ele
19968   * @param targetEle
19969   * @return {*}
19970   * @private
19971   */
19972  _insertBefore(ele, targetEle) {
19973    return targetEle.insertBefore(ele, targetEle);
19974  }
19975
19976  /**
19977   * get index of a li - not in used
19978   * @param li
19979   * @return {number}
19980   * @private
19981   */
19982  _getIndex(li) {
19983    let LIs = this._getAllEle("ul li", this._wrapper.holder);
19984    return [...LIs].indexOf(li);
19985  }
19986
19987  /**
19988   * Get properties or a property - not in used
19989   * @param ele
19990   * @param key
19991   * @return {null|*}
19992   * @private
19993   */
19994  _getProp(ele, key) {
19995    let obj = {};
19996    for (let i = 0; i < ele.attributes.length; i++) {
19997      let k = ele.attributes[i].nodeName;
19998      let v = ele.attributes[i].nodeValue;
19999      if (key === k) {
20000        return v;
20001      }
20002      obj[k] = v;
20003    }
20004    return typeof key === "undefined" ? obj : null;
20005  }
20006
20007  /**
20008   * Get dataset
20009   * @param ele
20010   * @param key
20011   * @return {*|null}
20012   * @private
20013   */
20014  _getDataSet(ele, key = null) {
20015    return key === null ? ele.dataset : ele.dataset[key] || null;
20016  }
20017
20018  /**
20019   * Bind an event
20020   * @param ele
20021   * @param type
20022   * @param cb
20023   * @private
20024   */
20025  _bindEvents(ele, type, cb) {
20026    ele.addEventListener(type, cb);
20027  }
20028
20029  /**
20030   * Remove events
20031   * @param ele
20032   * @param type
20033   * @param fn
20034   * @private
20035   */
20036  _unbindEvents(ele, type, fn) {
20037    ele.removeEventListener(type, fn);
20038  }
20039
20040  /**
20041   * Adjust child height
20042   * @param row
20043   * @private
20044   */
20045  _adjustChildHeight(row = null) {
20046    row = row === null ? parseInt(this._settings.visibleRows) : row;
20047    if (row !== null) {
20048      let li = this._getEle("li[data-ms-index='0']", this._wrapper.listOfItems);
20049      let size = this._settings.rowHeight !== null ? this._settings.rowHeight : li.clientHeight;
20050      this._wrapper.listOfItems.style.height = row * size + 'px';
20051    }
20052  }
20053
20054  /**
20055   * Set max height
20056   * @param autoHeightByMax
20057   * @private
20058   */
20059  _setTitleMinHeight(autoHeightByMax = true) {
20060    let max = 0;
20061    if (autoHeightByMax === true) {
20062      let lis = this._getAllEle("li", this._wrapper.listOfItems);
20063      let len = lis.length;
20064      for (let i = 0; i < len; i++) {
20065        let current = lis[i];
20066        max = current.clientHeight > max ? current.clientHeight : max;
20067      }
20068    } else {
20069      //this is after selection
20070      max = this._wrapper.headerA.clientHeight;
20071    }
20072    this._wrapper.header.style.minHeight = max + "px";
20073  }
20074
20075  /**
20076   * Make Ui as list
20077   * @param val
20078   * @param row
20079   * @private
20080   */
20081  _makeUiAsList(val, row) {
20082    if (val === true) {
20083      //make ui as list
20084      //update height
20085      this._hide(this._wrapper.header);
20086      this.open(null, true);
20087      this._adjustChildHeight(row);
20088      this._wrapper.listOfItems.style.position = "relative";
20089      this._wrapper.listOfItems.style.display = "inline-block";
20090      this._wrapper.listOfItems.style.zIndex = 0;
20091      this._wrapper.holder.style.zIndex = 0;
20092      this._isList = true;
20093    } else {
20094      //reset to dropdown
20095      this._show(this._wrapper.header);
20096      this._wrapper.listOfItems.style.height = null;
20097      this._wrapper.listOfItems.style.position = "absolute";
20098      this._wrapper.listOfItems.style.zIndex = this._settings.zIndex;
20099      this._wrapper.holder.style.zIndex = 0;
20100      this._isList = false;
20101      this.close(null);
20102    }
20103  }
20104
20105  /**
20106   * Bind document events
20107   * @param evt
20108   * @private
20109   */
20110  _bindDocumentEvents(evt, documentClick = true, documentKeyDown = true) {
20111    this._unbindDocumentEvents();
20112    this._onDocumentClick = evt => {
20113      //is outside?
20114      let box = this._wrapper.listOfItems.getBoundingClientRect();
20115      let headerBox = this._wrapper.header.getBoundingClientRect();
20116      let areaX = box.left + box.width;
20117      let areaY = headerBox.top + box.height + headerBox.height;
20118      if (evt.clientX < box.left || evt.clientX > areaX || evt.clientY < headerBox.y || evt.clientY > areaY) {
20119        this.close(evt);
20120      }
20121    };
20122    this._onDocumentKeyDown = evt => {
20123      switch (evt.keyCode) {
20124        case this._DOWN_ARROW:
20125        case this._RIGHT_ARROW:
20126          evt.preventDefault();
20127          evt.stopPropagation();
20128          this._show(this._wrapper.listOfItems);
20129          this._isOpen = true;
20130          this.next();
20131          break;
20132        case this._UP_ARROW:
20133        case this._LEFT_ARROW:
20134          evt.preventDefault();
20135          evt.stopPropagation();
20136          this.previous();
20137          break;
20138        case this._ESCAPE:
20139        case this._ENTER:
20140          evt.preventDefault();
20141          evt.stopPropagation();
20142          this.close(null);
20143          break;
20144        case this._SHIFT:
20145          this._shiftHolded = true;
20146          break;
20147        case this._CONTROL:
20148        case this._MAC_CONTROL:
20149          this._controlHolded = true;
20150          break;
20151        case this._SPACE:
20152          this._show(this._wrapper.listOfItems);
20153          this._isOpen = true;
20154          break;
20155        default:
20156          if (evt.keyCode >= this._ALPHABETS_START && this._isList === false && this._settings.enableAutoFilter.toString() === "true") {
20157            this._showHideFilterBox(true);
20158          }
20159          this._shiftHolded = false;
20160          this._controlHolded = false;
20161          break;
20162      }
20163    };
20164    this._onDocumentKeyUp = evt => {
20165      this._shiftHolded = false;
20166      this._controlHolded = false;
20167    };
20168    if (documentClick === true) {
20169      this._bindEvents(document, "mouseup", this._onDocumentClick);
20170    }
20171    if (documentKeyDown === true) {
20172      this._bindEvents(document, "keydown", this._onDocumentKeyDown);
20173      this._bindEvents(document, "keyup", this._onDocumentKeyUp);
20174    }
20175  }
20176
20177  /**
20178   * Unbind document events
20179   * @private
20180   */
20181  _unbindDocumentEvents() {
20182    //remove events
20183    if (this._onDocumentClick !== null) {
20184      this._unbindEvents(document, "mouseup", this._onDocumentClick);
20185    }
20186    if (this._onDocumentKeyDown !== null) {
20187      this._unbindEvents(document, "keydown", this._onDocumentKeyDown);
20188    }
20189    if (this._onDocumentKeyUp !== null) {
20190      this._unbindEvents(document, "keyup", this._onDocumentKeyUp);
20191    }
20192    this._onDocumentClick = null;
20193    this._onDocumentKeyDown = null;
20194    this._onDocumentKeyUp = null;
20195  }
20196
20197  /**
20198   * Scroll if needed
20199   * @param item
20200   * @param pos
20201   * @param goingWhere
20202   * @private
20203   */
20204  _scrollToIfNeeded(item = null, pos = null, goingWhere = "next") {
20205    let child = this._wrapper.listOfItems;
20206    let childBound = child.getBoundingClientRect();
20207    if (item === null && pos !== null) {
20208      child.scrollTop = pos;
20209    }
20210    //if scroll is needed
20211    item = item !== undefined ? item : this._getEle("li." + this._css.itemSelected);
20212    if (item) {
20213      let itemPos = item.offsetTop;
20214      let ch = child.clientHeight;
20215      let itemHeight = item.clientHeight; //for next
20216
20217      if (itemPos + itemHeight - child.scrollTop > ch && goingWhere === 'next') {
20218        child.scrollTop = itemPos + itemHeight - ch;
20219      } else if (itemPos - child.scrollTop < 0 && goingWhere === 'previous') {
20220        child.scrollTop = itemPos;
20221      }
20222    }
20223  }
20224
20225  /**
20226   * Fire event that is bind on settings
20227   * @param evt_n
20228   * @private
20229   */
20230  _fireLocalEventIfExist(evt_n, data = null) {
20231    if (typeof this._settings.on[evt_n] === "function") {
20232      let dataAndUI = data === null ? this._getDataAndUI() : data;
20233      let fn = this._settings.on[evt_n];
20234      try {
20235        fn(dataAndUI);
20236      } catch (e) {
20237        console.error(e.message);
20238      }
20239    }
20240  }
20241
20242  /**
20243   * Fire event if exist
20244   * @param evt_n
20245   * @return {boolean}
20246   * @private
20247   */
20248  _fireEventIfExist(evt_n) {
20249    //data event
20250    if (this.ele.dataset[evt_n]) {
20251      let fn = new Function(this.ele.dataset[evt_n]);
20252      try {
20253        fn();
20254      } catch (e) {
20255        console.error(e.message);
20256      }
20257    }
20258
20259    //check if original has some
20260    if (this._has_handler(evt_n).hasEvent) {
20261      if (this._has_handler(evt_n).byElement) {
20262        try {
20263          this.ele[evt_n]();
20264        } catch (e) {
20265          try {
20266            this.ele["on" + evt_n]();
20267          } catch (e2) {}
20268        }
20269      } else if (this._has_handler(evt_n).byJQuery) {
20270        switch (evt_n) {
20271          case "keydown":
20272          case "keyup":
20273            //key down/up will check later
20274            break;
20275          default:
20276            try {
20277              if (typeof jQuery !== "undefined") {
20278                jQuery(this.ele).triggerHandler(evt_n);
20279              }
20280            } catch (e) {
20281              //silence is bliss
20282            }
20283            break;
20284        }
20285      }
20286      return false;
20287    }
20288  }
20289
20290  /**
20291   * Has any event
20292   * @param name
20293   * @return {{byJQuery: boolean, hasEvent: boolean, byElement: boolean}}
20294   * @private
20295   */
20296  _has_handler(name) {
20297    //True if a handler has been added in the html.
20298    let evt = {
20299      byElement: false,
20300      local: false,
20301      byJQuery: false,
20302      hasEvent: false
20303    };
20304    if (this._settings.on[name] !== null) {
20305      evt.hasEvent = true;
20306      evt.local = true;
20307    }
20308
20309    //console.log(name)
20310    try {
20311      //console.log(obj.prop("on" + name) + " "+name);
20312      if (this._getProp(this.ele, "on" + name) !== null) {
20313        evt.hasEvent = true;
20314        evt.byElement = true;
20315      }
20316    } catch (e) {
20317      //console.log(e.message);
20318    }
20319    // True if a handler has been added using jQuery.
20320    if (typeof jQuery !== "undefined") {
20321      let obj = jQuery(this.ele);
20322      let evs;
20323      if (typeof jQuery?._data === "function") {
20324        //1.8
20325        evs = jQuery?._data(this.ele, "events");
20326      } else {
20327        evs = obj.data("events");
20328      }
20329      if (evs && evs[name]) {
20330        evt.hasEvent = true;
20331        evt.byJQuery = true;
20332      }
20333    }
20334    return evt;
20335  }
20336
20337  /*****************  Public methods and props *********** /
20338   /**
20339   * Add an item to select
20340   * Object can be pass as below
20341   * new Option("Label", "value") or
20342   * {text:"Label", value:"value"}
20343   * or Label as string
20344   * or full object ie {text:"", value:"", description:'', image:'', className:'' title:'', imageCss:''}
20345   * @param obj
20346   * @param index
20347   */
20348
20349  add(obj, index = null) {
20350    //
20351    let text, value, title, image, description, imageCss;
20352    let opt;
20353    if (obj instanceof HTMLOptionElement) {
20354      opt = obj;
20355    } else if (typeof obj === "string") {
20356      //passing as string
20357      text = value = obj;
20358      opt = new Option(text, value);
20359    } else if (obj instanceof Object) {
20360      text = obj.text || '';
20361      value = obj.value || text;
20362      title = obj.title || '';
20363      image = obj.image || '';
20364      imageCss = obj.imageCss || '';
20365      description = obj.description || '';
20366      opt = new Option(text, value);
20367      opt.setAttribute("data-description", description);
20368      opt.setAttribute("data-image", image);
20369      opt.setAttribute("data-title", title);
20370      opt.setAttribute("data-image-css", imageCss);
20371    }
20372    this.ele.add(opt, index);
20373    this._makeChildren();
20374    this._fireLocalEventIfExist("add");
20375  }
20376
20377  /**
20378   * Remove an item from select
20379   * @param index
20380   */
20381  remove(index) {
20382    let uiAndData = this._getDataAndUI(index);
20383    this.ele.remove(index);
20384    this._makeChildren();
20385    this._fireLocalEventIfExist("remove", uiAndData);
20386    return uiAndData;
20387  }
20388
20389  /**
20390   * Move to next index
20391   */
20392  next() {
20393    let $this = this;
20394    let allOptions = this.optionsUI;
20395    let totalOpt = allOptions.length;
20396    let counterStart;
20397    if (this._isFilterApplied) {
20398      counterStart = this._nexPrevCounter;
20399    } else {
20400      counterStart = this.selectedIndex;
20401    }
20402    let _getNextElem = function () {
20403      let i = counterStart;
20404      for (i; i < totalOpt; i++) {
20405        let next = i + 1;
20406        next = next >= totalOpt ? totalOpt - 1 : next;
20407        $this._nexPrevCounter++;
20408        if (!allOptions[next].classList.contains($this._css.itemDisabled)) {
20409          return allOptions[next];
20410        }
20411      }
20412      return null;
20413    };
20414    if (totalOpt > 0) {
20415      let nextEle = _getNextElem();
20416      if (nextEle) {
20417        this._setSelectedByItem(nextEle, false, true);
20418        this._scrollToIfNeeded(nextEle);
20419      }
20420    }
20421  }
20422
20423  /**
20424   * Move to previous index
20425   */
20426  previous() {
20427    let $this = this;
20428    let allOptions = this.optionsUI; //$this._getAllEle(`li.${$this._css.item}`, $this._wrapper.listOfItems);
20429    let totalOpt = allOptions.length;
20430    let counterStart;
20431    if (this._isFilterApplied) {
20432      counterStart = this._nexPrevCounter;
20433    } else {
20434      counterStart = this.selectedIndex;
20435    }
20436    let _getPreviousElem = function (ele) {
20437      let i = counterStart;
20438      for (i; i > 0; i--) {
20439        let next = i - 1;
20440        next = next >= 0 ? next : 0;
20441        $this._nexPrevCounter--;
20442        if (!allOptions[next].classList.contains($this._css.itemDisabled)) {
20443          return allOptions[next];
20444        }
20445      }
20446      return null;
20447    };
20448    if (allOptions.length > 0) {
20449      let prevEle = _getPreviousElem();
20450      if (prevEle) {
20451        this._setSelectedByItem(prevEle, false, true);
20452        this._scrollToIfNeeded(prevEle, null, "previous");
20453      }
20454    }
20455  }
20456
20457  /**
20458   * Open this dropdown
20459   */
20460  open(evt, justOpen = false) {
20461    if (this.disabled) {
20462      return;
20463    }
20464    if (!this._isOpen) {
20465      this._isOpen = true;
20466      this._show(this._wrapper.listOfItems);
20467
20468      //don't bind event if just opening - useful when making as list
20469      if (justOpen === false) {
20470        this._bindDocumentEvents(evt);
20471      }
20472      //Change arrow
20473      this._wrapper.arrow.classList.remove(this._css.arrowDown);
20474      this._wrapper.arrow.classList.add(this._css.arrowUp);
20475      this._adjustChildHeight();
20476      this._scrollToItem();
20477      this._fireLocalEventIfExist("open");
20478    } else {
20479      this.close(null);
20480    }
20481  }
20482
20483  /**
20484   * Close this dropdown
20485   * @param evt
20486   */
20487  close(evt) {
20488    let isList = this._isList;
20489    let isDisable = false; // clicking on disabled list - it can be true based on below statement
20490
20491    if (evt !== null) {
20492      evt.stopImmediatePropagation();
20493      let li = evt.target.closest('li');
20494      isDisable = li !== null ? li.classList.contains("disabled") : false;
20495    }
20496    if (this.disabled || isList || isDisable) {
20497      return;
20498    }
20499    this._scrollToIfNeeded(null, 0);
20500    this._hide(this._wrapper.listOfItems);
20501    this._wrapper.arrow.classList.add(this._css.arrowDown);
20502    this._wrapper.arrow.classList.remove(this._css.arrowUp);
20503
20504    //reset few things
20505    this._isOpen = false;
20506    this._isMouseDown = false;
20507    this._shiftHolded = false;
20508    this._controlHolded = false;
20509    this._isFilterApplied = false;
20510    this._wrapper.filterInput.value = "";
20511    this._wrapper.filterInput.blur();
20512    if (this._settings.showFilterAlways.toString() === "false") {
20513      this._showHideFilterBox(false);
20514    }
20515    this._applyFilters();
20516    this._unbindDocumentEvents();
20517    this._updateHeaderUI();
20518
20519    //reset list if required
20520    if (this.ele.length !== this._getAllEle(`li.${this._css.item}`, this._wrapper.listOfItems).length) {
20521      this._makeChildren();
20522      this.updateUiAndValue();
20523    }
20524    this._fireLocalEventIfExist("close");
20525  }
20526
20527  /**
20528   * Return named item element with data
20529   * @param name
20530   * @param withData
20531   */
20532  namedItem(name, withData = false) {
20533    let obj = null;
20534    let ele = this.ele.querySelector(`option[name='${name}']`);
20535    if (ele && withData) {
20536      obj = {};
20537      let data = this._parseOption(ele);
20538      obj.option = ele;
20539      obj.data = data;
20540    } else {
20541      obj = ele;
20542    }
20543    return obj;
20544  }
20545
20546  /**
20547   * Get data by index
20548   * @param index
20549   * @param withData
20550   */
20551  item(index, withData = false) {
20552    let obj = null;
20553    let ele = this.ele.options[index];
20554    if (ele && withData) {
20555      obj = {};
20556      let data = this._parseOption(ele);
20557      obj.option = ele;
20558      obj.data = data;
20559    } else {
20560      obj = ele;
20561    }
20562    return obj;
20563  }
20564
20565  /**
20566   * Show hide or get status of visibility
20567   * @param isShow
20568   * @return {boolean}
20569   */
20570  visible(isShow = null) {
20571    if (isShow === true) {
20572      this._show(this._wrapper.holder, "inline-block");
20573    } else if (isShow === false) {
20574      this._hide(this._wrapper.holder);
20575    }
20576    if (isShow === null) {
20577      return this._wrapper.holder.style.display !== "none";
20578    }
20579  }
20580
20581  /**
20582   * Calculate item height and set child height
20583   * @param numberOfRows
20584   */
20585  showRows(numberOfRows) {
20586    this._settings.visibleRows = numberOfRows > this.length ? this.length : numberOfRows;
20587    this._adjustChildHeight();
20588  }
20589
20590  /**
20591   * Alias of showRows - undecided
20592   * @param numberOfRows
20593   */
20594  visibleRows(numberOfRows) {
20595    this.showRows(numberOfRows);
20596  }
20597
20598  /**
20599   * Add event listener
20600   * @param type
20601   * @param fn
20602   */
20603  on(type, fn) {
20604    //this._bindEvents(this.ele, type, fn);
20605    this._settings.on[type] = fn;
20606  }
20607
20608  /**
20609   * Remove event listener
20610   * @param type
20611   * @param fn
20612   */
20613  off(type, fn) {
20614    //this._unbindEvents(this.ele, type, fn);
20615    this._settings.on[type] = null;
20616  }
20617  /**
20618   * Remake Everything
20619   */
20620  refresh() {
20621    this._makeChildren();
20622    this.updateUiAndValue();
20623  }
20624
20625  /**
20626   * Destroy UI
20627   */
20628  destroy() {
20629    //show original
20630    this._show(this.ele);
20631    this.ele.required = this._wrapper.valueBox.required;
20632    this.ele.name = this._wrapper.valueBox.name;
20633    this._wrapper.holder.parentNode.removeChild(this._wrapper.holder);
20634  }
20635
20636  /*** Props ***/
20637  /**
20638   * Get selected index
20639   * @return {*}
20640   */
20641  get selectedIndex() {
20642    return this.ele.selectedIndex;
20643  }
20644
20645  /**
20646   * Set Index
20647   * @param index
20648   */
20649  set selectedIndex(index) {
20650    let $this = this;
20651    let selectNow = function (ind) {
20652      $this.ele.selectedIndex = ind;
20653      if (ind === -1) {
20654        //blank
20655        $this._updateHeaderUI(null, "");
20656        $this._removeOldSelected();
20657      } else {
20658        $this._setSelectedByOptionItem($this.ele.options[ind]);
20659      }
20660    };
20661    if (index < this.length && !this._isArray(index)) {
20662      selectNow(index);
20663    } else {
20664      if (this._isMultiple && this._isArray(index)) {
20665        for (let i = 0, len = index.length; i < len; i++) {
20666          if (index[i] < this.length && index[i] !== -1) {
20667            this._setSelectedByOptionItem(this.ele.options[index[i]], i > 0);
20668          }
20669        }
20670        this._updateHeaderUI(null);
20671      } else {
20672        selectNow(index);
20673      }
20674    }
20675  }
20676
20677  /**
20678   * Get options
20679   * @return {*}
20680   */
20681  get options() {
20682    return this.ele.options;
20683  }
20684
20685  /**
20686   * Set options length
20687   * @param option
20688   */
20689  set options(option) {
20690    if (option instanceof HTMLOptionElement) {
20691      this.ele.add(option);
20692      this._makeChildren();
20693      this.updateUiAndValue();
20694    } else if (typeof option === "number") {
20695      this.ele.length = option;
20696      this._makeChildren();
20697      this.updateUiAndValue();
20698    }
20699  }
20700
20701  /**
20702   * get options UI
20703   * @return {any}
20704   */
20705  get optionsUI() {
20706    if (this._cacheEle["allItems"]) {
20707      //return this._cacheEle["allItems"];
20708    }
20709    return this._cacheEle["allItems"] = this._getAllEle(`li.${this._css.item}`, this._wrapper.listOfItems);
20710  }
20711
20712  /**
20713   * Get length
20714   * @return {*}
20715   */
20716  get length() {
20717    return this.ele.length;
20718  }
20719
20720  /**
20721   * Set length
20722   * @param size
20723   */
20724  set length(size) {
20725    this.ele.options.length = size;
20726    this._makeChildren();
20727    this.updateUiAndValue();
20728  }
20729
20730  /**
20731   * Get value
20732   * @return {*}
20733   */
20734  get value() {
20735    return this.ele.value;
20736  }
20737
20738  /**
20739   * Set value
20740   * @param val
20741   */
20742  set value(val) {
20743    this.ele.value = val;
20744    this.selectedIndex = this.ele.selectedIndex;
20745  }
20746
20747  /**
20748   * get selected text
20749   * @return {string}
20750   */
20751  get selectedText() {
20752    return this.selectedIndex >= 0 ? this.ele.options[this.selectedIndex].text : "";
20753  }
20754
20755  /**
20756   * Check if this is disabled
20757   * @return {boolean | * | Function}
20758   */
20759  get disabled() {
20760    return this.ele.hasAttribute('disabled');
20761  }
20762
20763  /**
20764   * Set disabled
20765   * @param val
20766   */
20767  set disabled(val) {
20768    if (val) {
20769      this.ele.setAttribute('disabled', '');
20770      this._wrapper.holder.classList.add(this._css.wrapperDisabled);
20771    } else {
20772      this.ele.removeAttribute('disabled');
20773      this._wrapper.holder.classList.remove(this._css.wrapperDisabled);
20774    }
20775  }
20776
20777  /**
20778   * Get form name if this is inside a form
20779   * @return {*}
20780   */
20781  get form() {
20782    return this.ele.form;
20783  }
20784
20785  /**
20786   * Get multiple
20787   * @return {*}
20788   */
20789  get multiple() {
20790    return this.ele.multiple;
20791  }
20792
20793  /**
20794   * Set multiple
20795   * @param val
20796   */
20797  set multiple(val) {
20798    if (val) {
20799      this.ele.setAttribute('multiple', '');
20800      this._enableCheckbox = this._settings.enableCheckbox;
20801    } else {
20802      this.ele.removeAttribute('multiple');
20803    }
20804    this._isMultiple = val;
20805    //reset if this is not multiple
20806    if (!val) {
20807      this.selectedIndex = this.ele.selectedIndex;
20808      this._enableCheckbox = false;
20809    }
20810    this._makeChildren();
20811  }
20812
20813  /**
20814   * Get the name
20815   * @return {*}
20816   */
20817  get name() {
20818    if (this._wrapper?.valueBox) {
20819      return this._wrapper.valueBox.name || "";
20820    }
20821    return this.ele.name;
20822  }
20823
20824  /**
20825   * Set the name
20826   * @param val
20827   */
20828  set name(val) {
20829    if (this._wrapper?.valueBox) {
20830      this._wrapper.valueBox.name = val;
20831    } else {
20832      this.ele.name = val;
20833    }
20834  }
20835
20836  /**
20837   * Get required
20838   * @return {*}
20839   */
20840  get required() {
20841    return this._wrapper.valueBox.required;
20842  }
20843
20844  /**
20845   * Set required
20846   * @param val
20847   */
20848  set required(val) {
20849    if (val) {
20850      this._wrapper.valueBox.setAttribute('required', true);
20851      //update now
20852    } else {
20853      this._wrapper.valueBox.removeAttribute('required');
20854    }
20855  }
20856
20857  /**
20858   * return the size/height of the dropdown
20859   * @return {*}
20860   */
20861  get size() {
20862    return this.ele.size;
20863  }
20864
20865  /**
20866   * Change the height of the element
20867   * @param val
20868   */
20869  set size(val) {
20870    this.ele.size = val;
20871    this._makeUiAsList(val > 1, val);
20872  }
20873
20874  /**
20875   * Get selected option
20876   * @return {null}
20877   */
20878  get selectedOptions() {
20879    let selectedOptions = null;
20880    if (this.selectedIndex >= 0) {
20881      selectedOptions = this.ele.options[this.selectedIndex];
20882      if (this.multiple) {
20883        selectedOptions = [];
20884        let options = this.options;
20885        let total = options.length;
20886        for (let i = 0; i < total; i++) {
20887          if (options[i].selected) {
20888            selectedOptions.push(options[i]);
20889          }
20890        }
20891        selectedOptions = selectedOptions.length === 1 ? selectedOptions[0] : selectedOptions;
20892      }
20893    }
20894    return selectedOptions;
20895  }
20896
20897  /**
20898   * Get element children
20899   * @return {*}
20900   */
20901  get children() {
20902    return this.ele.children;
20903  }
20904
20905  /**
20906   * Get selected ui data
20907   * @return {{data: *, ui: *, index: *, option: *}}
20908   */
20909  get uiData() {
20910    return this._getDataAndUI();
20911  }
20912
20913  /**
20914   * Get version
20915   * @return {string}
20916   */
20917  get version() {
20918    return "4.0.2";
20919  }
20920}
20921
20922/***/ }),
20923
20924/***/ "./resources/plugins/toastr/build/toastr.min.js":
20925/*!******************************************************!*\
20926  !*** ./resources/plugins/toastr/build/toastr.min.js ***!
20927  \******************************************************/
20928/***/ ((module, exports, __webpack_require__) => {
20929
20930var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!function (e) {
20931  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (e) {
20932    return function () {
20933      function t(e, t, n) {
20934        return g({
20935          type: O.error,
20936          iconClass: m().iconClasses.error,
20937          message: e,
20938          optionsOverride: n,
20939          title: t
20940        });
20941      }
20942      function n(t, n) {
20943        return t || (t = m()), v = e("#" + t.containerId), v.length ? v : (n && (v = d(t)), v);
20944      }
20945      function o(e, t, n) {
20946        return g({
20947          type: O.info,
20948          iconClass: m().iconClasses.info,
20949          message: e,
20950          optionsOverride: n,
20951          title: t
20952        });
20953      }
20954      function s(e) {
20955        C = e;
20956      }
20957      function i(e, t, n) {
20958        return g({
20959          type: O.success,
20960          iconClass: m().iconClasses.success,
20961          message: e,
20962          optionsOverride: n,
20963          title: t
20964        });
20965      }
20966      function a(e, t, n) {
20967        return g({
20968          type: O.warning,
20969          iconClass: m().iconClasses.warning,
20970          message: e,
20971          optionsOverride: n,
20972          title: t
20973        });
20974      }
20975      function r(e, t) {
20976        var o = m();
20977        v || n(o), u(e, o, t) || l(o);
20978      }
20979      function c(t) {
20980        var o = m();
20981        return v || n(o), t && 0 === e(":focus", t).length ? void h(t) : void (v.children().length && v.remove());
20982      }
20983      function l(t) {
20984        for (var n = v.children(), o = n.length - 1; o >= 0; o--) u(e(n[o]), t);
20985      }
20986      function u(t, n, o) {
20987        var s = !(!o || !o.force) && o.force;
20988        return !(!t || !s && 0 !== e(":focus", t).length) && (t[n.hideMethod]({
20989          duration: n.hideDuration,
20990          easing: n.hideEasing,
20991          complete: function () {
20992            h(t);
20993          }
20994        }), !0);
20995      }
20996      function d(t) {
20997        return v = e("<div/>").attr("id", t.containerId).addClass(t.positionClass), v.appendTo(e(t.target)), v;
20998      }
20999      function p() {
21000        return {
21001          tapToDismiss: !0,
21002          toastClass: "toastr",
21003          containerId: "toastr-container",
21004          debug: !1,
21005          showMethod: "fadeIn",
21006          showDuration: 300,
21007          showEasing: "swing",
21008          onShown: void 0,
21009          hideMethod: "fadeOut",
21010          hideDuration: 1e3,
21011          hideEasing: "swing",
21012          onHidden: void 0,
21013          closeMethod: !1,
21014          closeDuration: !1,
21015          closeEasing: !1,
21016          closeOnHover: !0,
21017          extendedTimeOut: 1e3,
21018          iconClasses: {
21019            error: "toastr-error",
21020            info: "toastr-info",
21021            success: "toastr-success",
21022            warning: "toastr-warning"
21023          },
21024          iconClass: "toastr-info",
21025          positionClass: "toastr-top-right",
21026          timeOut: 5e3,
21027          titleClass: "toastr-title",
21028          messageClass: "toastr-message",
21029          escapeHtml: !1,
21030          target: "body",
21031          closeHtml: '<button type="button">&times;</button>',
21032          closeClass: "toastr-close-button",
21033          newestOnTop: !0,
21034          preventDuplicates: !1,
21035          progressBar: !1,
21036          progressClass: "toastr-progress",
21037          rtl: !1
21038        };
21039      }
21040      function f(e) {
21041        C && C(e);
21042      }
21043      function g(t) {
21044        function o(e) {
21045          return null == e && (e = ""), e.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&#39;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
21046        }
21047        function s() {
21048          c(), u(), d(), p(), g(), C(), l(), i();
21049        }
21050        function i() {
21051          var e = "";
21052          switch (t.iconClass) {
21053            case "toastr-success":
21054            case "toastr-info":
21055              e = "polite";
21056              break;
21057            default:
21058              e = "assertive";
21059          }
21060          I.attr("aria-live", e);
21061        }
21062        function a() {
21063          E.closeOnHover && I.hover(H, D), !E.onclick && E.tapToDismiss && I.click(b), E.closeButton && j && j.click(function (e) {
21064            e.stopPropagation ? e.stopPropagation() : void 0 !== e.cancelBubble && e.cancelBubble !== !0 && (e.cancelBubble = !0), E.onCloseClick && E.onCloseClick(e), b(!0);
21065          }), E.onclick && I.click(function (e) {
21066            E.onclick(e), b();
21067          });
21068        }
21069        function r() {
21070          I.hide(), I[E.showMethod]({
21071            duration: E.showDuration,
21072            easing: E.showEasing,
21073            complete: E.onShown
21074          }), E.timeOut > 0 && (k = setTimeout(b, E.timeOut), F.maxHideTime = parseFloat(E.timeOut), F.hideEta = new Date().getTime() + F.maxHideTime, E.progressBar && (F.intervalId = setInterval(x, 10)));
21075        }
21076        function c() {
21077          t.iconClass && I.addClass(E.toastClass).addClass(y);
21078        }
21079        function l() {
21080          E.newestOnTop ? v.prepend(I) : v.append(I);
21081        }
21082        function u() {
21083          if (t.title) {
21084            var e = t.title;
21085            E.escapeHtml && (e = o(t.title)), M.append(e).addClass(E.titleClass), I.append(M);
21086          }
21087        }
21088        function d() {
21089          if (t.message) {
21090            var e = t.message;
21091            E.escapeHtml && (e = o(t.message)), B.append(e).addClass(E.messageClass), I.append(B);
21092          }
21093        }
21094        function p() {
21095          E.closeButton && (j.addClass(E.closeClass).attr("role", "button"), I.prepend(j));
21096        }
21097        function g() {
21098          E.progressBar && (q.addClass(E.progressClass), I.prepend(q));
21099        }
21100        function C() {
21101          E.rtl && I.addClass("rtl");
21102        }
21103        function O(e, t) {
21104          if (e.preventDuplicates) {
21105            if (t.message === w) return !0;
21106            w = t.message;
21107          }
21108          return !1;
21109        }
21110        function b(t) {
21111          var n = t && E.closeMethod !== !1 ? E.closeMethod : E.hideMethod,
21112            o = t && E.closeDuration !== !1 ? E.closeDuration : E.hideDuration,
21113            s = t && E.closeEasing !== !1 ? E.closeEasing : E.hideEasing;
21114          if (!e(":focus", I).length || t) return clearTimeout(F.intervalId), I[n]({
21115            duration: o,
21116            easing: s,
21117            complete: function () {
21118              h(I), clearTimeout(k), E.onHidden && "hidden" !== P.state && E.onHidden(), P.state = "hidden", P.endTime = new Date(), f(P);
21119            }
21120          });
21121        }
21122        function D() {
21123          (E.timeOut > 0 || E.extendedTimeOut > 0) && (k = setTimeout(b, E.extendedTimeOut), F.maxHideTime = parseFloat(E.extendedTimeOut), F.hideEta = new Date().getTime() + F.maxHideTime);
21124        }
21125        function H() {
21126          clearTimeout(k), F.hideEta = 0, I.stop(!0, !0)[E.showMethod]({
21127            duration: E.showDuration,
21128            easing: E.showEasing
21129          });
21130        }
21131        function x() {
21132          var e = (F.hideEta - new Date().getTime()) / F.maxHideTime * 100;
21133          q.width(e + "%");
21134        }
21135        var E = m(),
21136          y = t.iconClass || E.iconClass;
21137        if ("undefined" != typeof t.optionsOverride && (E = e.extend(E, t.optionsOverride), y = t.optionsOverride.iconClass || y), !O(E, t)) {
21138          T++, v = n(E, !0);
21139          var k = null,
21140            I = e("<div/>"),
21141            M = e("<div/>"),
21142            B = e("<div/>"),
21143            q = e("<div/>"),
21144            j = e(E.closeHtml),
21145            F = {
21146              intervalId: null,
21147              hideEta: null,
21148              maxHideTime: null
21149            },
21150            P = {
21151              toastId: T,
21152              state: "visible",
21153              startTime: new Date(),
21154              options: E,
21155              map: t
21156            };
21157          return s(), r(), a(), f(P), E.debug && console && console.log(P), I;
21158        }
21159      }
21160      function m() {
21161        return e.extend({}, p(), b.options);
21162      }
21163      function h(e) {
21164        v || (v = n()), e.is(":visible") || (e.remove(), e = null, 0 === v.children().length && (v.remove(), w = void 0));
21165      }
21166      var v,
21167        C,
21168        w,
21169        T = 0,
21170        O = {
21171          error: "error",
21172          info: "info",
21173          success: "success",
21174          warning: "warning"
21175        },
21176        b = {
21177          clear: r,
21178          remove: c,
21179          error: t,
21180          getContainer: n,
21181          info: o,
21182          options: {},
21183          subscribe: s,
21184          success: i,
21185          version: "2.1.4",
21186          warning: a
21187        };
21188      return b;
21189    }();
21190  }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
21191		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
21192}(__webpack_require__.amdD);
21193
21194/***/ }),
21195
vendor: 67,969 bytes, lines 21196-22771
21196/***/ "./node_modules/bootstrap-daterangepicker/daterangepicker.js":
21197/*!*******************************************************************!*\
21198  !*** ./node_modules/bootstrap-daterangepicker/daterangepicker.js ***!
21199  \*******************************************************************/
21200/***/ (function(module, exports, __webpack_require__) {
21201
21202var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
21203* @version: 3.1
21204* @author: Dan Grossman http://www.dangrossman.info/
21205* @copyright: Copyright (c) 2012-2019 Dan Grossman. All rights reserved.
21206* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
21207* @website: http://www.daterangepicker.com/
21208*/
21209// Following the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js
21210(function (root, factory) {
21211    if (true) {
21212        // AMD. Make globaly available as well
21213        !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! moment */ "./node_modules/moment/moment.js"), __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (moment, jquery) {
21214            if (!jquery.fn) jquery.fn = {}; // webpack server rendering
21215            if (typeof moment !== 'function' && moment.hasOwnProperty('default')) moment = moment['default']
21216            return factory(moment, jquery);
21217        }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
21218		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
21219    } else { var moment, jQuery; }
21220}(this, function(moment, $) {
21221    var DateRangePicker = function(element, options, cb) {
21222
21223        //default settings for options
21224        this.parentEl = 'body';
21225        this.element = $(element);
21226        this.startDate = moment().startOf('day');
21227        this.endDate = moment().endOf('day');
21228        this.minDate = false;
21229        this.maxDate = false;
21230        this.maxSpan = false;
21231        this.autoApply = false;
21232        this.singleDatePicker = false;
21233        this.showDropdowns = false;
21234        this.minYear = moment().subtract(100, 'year').format('YYYY');
21235        this.maxYear = moment().add(100, 'year').format('YYYY');
21236        this.showWeekNumbers = false;
21237        this.showISOWeekNumbers = false;
21238        this.showCustomRangeLabel = true;
21239        this.timePicker = false;
21240        this.timePicker24Hour = false;
21241        this.timePickerIncrement = 1;
21242        this.timePickerSeconds = false;
21243        this.linkedCalendars = true;
21244        this.autoUpdateInput = true;
21245        this.alwaysShowCalendars = false;
21246        this.ranges = {};
21247
21248        this.opens = 'right';
21249        if (this.element.hasClass('pull-right'))
21250            this.opens = 'left';
21251
21252        this.drops = 'down';
21253        if (this.element.hasClass('dropup'))
21254            this.drops = 'up';
21255
21256        this.buttonClasses = 'btn btn-sm';
21257        this.applyButtonClasses = 'btn-primary';
21258        this.cancelButtonClasses = 'btn-default';
21259
21260        this.locale = {
21261            direction: 'ltr',
21262            format: moment.localeData().longDateFormat('L'),
21263            separator: ' - ',
21264            applyLabel: 'Apply',
21265            cancelLabel: 'Cancel',
21266            weekLabel: 'W',
21267            customRangeLabel: 'Custom Range',
21268            daysOfWeek: moment.weekdaysMin(),
21269            monthNames: moment.monthsShort(),
21270            firstDay: moment.localeData().firstDayOfWeek()
21271        };
21272
21273        this.callback = function() { };
21274
21275        //some state information
21276        this.isShowing = false;
21277        this.leftCalendar = {};
21278        this.rightCalendar = {};
21279
21280        //custom options from user
21281        if (typeof options !== 'object' || options === null)
21282            options = {};
21283
21284        //allow setting options with data attributes
21285        //data-api options will be overwritten with custom javascript options
21286        options = $.extend(this.element.data(), options);
21287
21288        //html template for the picker UI
21289        if (typeof options.template !== 'string' && !(options.template instanceof $))
21290            options.template =
21291            '<div class="daterangepicker">' +
21292                '<div class="ranges"></div>' +
21293                '<div class="drp-calendar left">' +
21294                    '<div class="calendar-table"></div>' +
21295                    '<div class="calendar-time"></div>' +
21296                '</div>' +
21297                '<div class="drp-calendar right">' +
21298                    '<div class="calendar-table"></div>' +
21299                    '<div class="calendar-time"></div>' +
21300                '</div>' +
21301                '<div class="drp-buttons">' +
21302                    '<span class="drp-selected"></span>' +
21303                    '<button class="cancelBtn" type="button"></button>' +
21304                    '<button class="applyBtn" disabled="disabled" type="button"></button> ' +
21305                '</div>' +
21306            '</div>';
21307
21308        this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl);
21309        this.container = $(options.template).appendTo(this.parentEl);
21310
21311        //
21312        // handle all the possible options overriding defaults
21313        //
21314
21315        if (typeof options.locale === 'object') {
21316
21317            if (typeof options.locale.direction === 'string')
21318                this.locale.direction = options.locale.direction;
21319
21320            if (typeof options.locale.format === 'string')
21321                this.locale.format = options.locale.format;
21322
21323            if (typeof options.locale.separator === 'string')
21324                this.locale.separator = options.locale.separator;
21325
21326            if (typeof options.locale.daysOfWeek === 'object')
21327                this.locale.daysOfWeek = options.locale.daysOfWeek.slice();
21328
21329            if (typeof options.locale.monthNames === 'object')
21330              this.locale.monthNames = options.locale.monthNames.slice();
21331
21332            if (typeof options.locale.firstDay === 'number')
21333              this.locale.firstDay = options.locale.firstDay;
21334
21335            if (typeof options.locale.applyLabel === 'string')
21336              this.locale.applyLabel = options.locale.applyLabel;
21337
21338            if (typeof options.locale.cancelLabel === 'string')
21339              this.locale.cancelLabel = options.locale.cancelLabel;
21340
21341            if (typeof options.locale.weekLabel === 'string')
21342              this.locale.weekLabel = options.locale.weekLabel;
21343
21344            if (typeof options.locale.customRangeLabel === 'string'){
21345                //Support unicode chars in the custom range name.
21346                var elem = document.createElement('textarea');
21347                elem.innerHTML = options.locale.customRangeLabel;
21348                var rangeHtml = elem.value;
21349                this.locale.customRangeLabel = rangeHtml;
21350            }
21351        }
21352        this.container.addClass(this.locale.direction);
21353
21354        if (typeof options.startDate === 'string')
21355            this.startDate = moment(options.startDate, this.locale.format);
21356
21357        if (typeof options.endDate === 'string')
21358            this.endDate = moment(options.endDate, this.locale.format);
21359
21360        if (typeof options.minDate === 'string')
21361            this.minDate = moment(options.minDate, this.locale.format);
21362
21363        if (typeof options.maxDate === 'string')
21364            this.maxDate = moment(options.maxDate, this.locale.format);
21365
21366        if (typeof options.startDate === 'object')
21367            this.startDate = moment(options.startDate);
21368
21369        if (typeof options.endDate === 'object')
21370            this.endDate = moment(options.endDate);
21371
21372        if (typeof options.minDate === 'object')
21373            this.minDate = moment(options.minDate);
21374
21375        if (typeof options.maxDate === 'object')
21376            this.maxDate = moment(options.maxDate);
21377
21378        // sanity check for bad options
21379        if (this.minDate && this.startDate.isBefore(this.minDate))
21380            this.startDate = this.minDate.clone();
21381
21382        // sanity check for bad options
21383        if (this.maxDate && this.endDate.isAfter(this.maxDate))
21384            this.endDate = this.maxDate.clone();
21385
21386        if (typeof options.applyButtonClasses === 'string')
21387            this.applyButtonClasses = options.applyButtonClasses;
21388
21389        if (typeof options.applyClass === 'string') //backwards compat
21390            this.applyButtonClasses = options.applyClass;
21391
21392        if (typeof options.cancelButtonClasses === 'string')
21393            this.cancelButtonClasses = options.cancelButtonClasses;
21394
21395        if (typeof options.cancelClass === 'string') //backwards compat
21396            this.cancelButtonClasses = options.cancelClass;
21397
21398        if (typeof options.maxSpan === 'object')
21399            this.maxSpan = options.maxSpan;
21400
21401        if (typeof options.dateLimit === 'object') //backwards compat
21402            this.maxSpan = options.dateLimit;
21403
21404        if (typeof options.opens === 'string')
21405            this.opens = options.opens;
21406
21407        if (typeof options.drops === 'string')
21408            this.drops = options.drops;
21409
21410        if (typeof options.showWeekNumbers === 'boolean')
21411            this.showWeekNumbers = options.showWeekNumbers;
21412
21413        if (typeof options.showISOWeekNumbers === 'boolean')
21414            this.showISOWeekNumbers = options.showISOWeekNumbers;
21415
21416        if (typeof options.buttonClasses === 'string')
21417            this.buttonClasses = options.buttonClasses;
21418
21419        if (typeof options.buttonClasses === 'object')
21420            this.buttonClasses = options.buttonClasses.join(' ');
21421
21422        if (typeof options.showDropdowns === 'boolean')
21423            this.showDropdowns = options.showDropdowns;
21424
21425        if (typeof options.minYear === 'number')
21426            this.minYear = options.minYear;
21427
21428        if (typeof options.maxYear === 'number')
21429            this.maxYear = options.maxYear;
21430
21431        if (typeof options.showCustomRangeLabel === 'boolean')
21432            this.showCustomRangeLabel = options.showCustomRangeLabel;
21433
21434        if (typeof options.singleDatePicker === 'boolean') {
21435            this.singleDatePicker = options.singleDatePicker;
21436            if (this.singleDatePicker)
21437                this.endDate = this.startDate.clone();
21438        }
21439
21440        if (typeof options.timePicker === 'boolean')
21441            this.timePicker = options.timePicker;
21442
21443        if (typeof options.timePickerSeconds === 'boolean')
21444            this.timePickerSeconds = options.timePickerSeconds;
21445
21446        if (typeof options.timePickerIncrement === 'number')
21447            this.timePickerIncrement = options.timePickerIncrement;
21448
21449        if (typeof options.timePicker24Hour === 'boolean')
21450            this.timePicker24Hour = options.timePicker24Hour;
21451
21452        if (typeof options.autoApply === 'boolean')
21453            this.autoApply = options.autoApply;
21454
21455        if (typeof options.autoUpdateInput === 'boolean')
21456            this.autoUpdateInput = options.autoUpdateInput;
21457
21458        if (typeof options.linkedCalendars === 'boolean')
21459            this.linkedCalendars = options.linkedCalendars;
21460
21461        if (typeof options.isInvalidDate === 'function')
21462            this.isInvalidDate = options.isInvalidDate;
21463
21464        if (typeof options.isCustomDate === 'function')
21465            this.isCustomDate = options.isCustomDate;
21466
21467        if (typeof options.alwaysShowCalendars === 'boolean')
21468            this.alwaysShowCalendars = options.alwaysShowCalendars;
21469
21470        // update day names order to firstDay
21471        if (this.locale.firstDay != 0) {
21472            var iterator = this.locale.firstDay;
21473            while (iterator > 0) {
21474                this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());
21475                iterator--;
21476            }
21477        }
21478
21479        var start, end, range;
21480
21481        //if no start/end dates set, check if an input element contains initial values
21482        if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') {
21483            if ($(this.element).is(':text')) {
21484                var val = $(this.element).val(),
21485                    split = val.split(this.locale.separator);
21486
21487                start = end = null;
21488
21489                if (split.length == 2) {
21490                    start = moment(split[0], this.locale.format);
21491                    end = moment(split[1], this.locale.format);
21492                } else if (this.singleDatePicker && val !== "") {
21493                    start = moment(val, this.locale.format);
21494                    end = moment(val, this.locale.format);
21495                }
21496                if (start !== null && end !== null) {
21497                    this.setStartDate(start);
21498                    this.setEndDate(end);
21499                }
21500            }
21501        }
21502
21503        if (typeof options.ranges === 'object') {
21504            for (range in options.ranges) {
21505
21506                if (typeof options.ranges[range][0] === 'string')
21507                    start = moment(options.ranges[range][0], this.locale.format);
21508                else
21509                    start = moment(options.ranges[range][0]);
21510
21511                if (typeof options.ranges[range][1] === 'string')
21512                    end = moment(options.ranges[range][1], this.locale.format);
21513                else
21514                    end = moment(options.ranges[range][1]);
21515
21516                // If the start or end date exceed those allowed by the minDate or maxSpan
21517                // options, shorten the range to the allowable period.
21518                if (this.minDate && start.isBefore(this.minDate))
21519                    start = this.minDate.clone();
21520
21521                var maxDate = this.maxDate;
21522                if (this.maxSpan && maxDate && start.clone().add(this.maxSpan).isAfter(maxDate))
21523                    maxDate = start.clone().add(this.maxSpan);
21524                if (maxDate && end.isAfter(maxDate))
21525                    end = maxDate.clone();
21526
21527                // If the end of the range is before the minimum or the start of the range is
21528                // after the maximum, don't display this range option at all.
21529                if ((this.minDate && end.isBefore(this.minDate, this.timepicker ? 'minute' : 'day'))
21530                  || (maxDate && start.isAfter(maxDate, this.timepicker ? 'minute' : 'day')))
21531                    continue;
21532
21533                //Support unicode chars in the range names.
21534                var elem = document.createElement('textarea');
21535                elem.innerHTML = range;
21536                var rangeHtml = elem.value;
21537
21538                this.ranges[rangeHtml] = [start, end];
21539            }
21540
21541            var list = '<ul>';
21542            for (range in this.ranges) {
21543                list += '<li data-range-key="' + range + '">' + range + '</li>';
21544            }
21545            if (this.showCustomRangeLabel) {
21546                list += '<li data-range-key="' + this.locale.customRangeLabel + '">' + this.locale.customRangeLabel + '</li>';
21547            }
21548            list += '</ul>';
21549            this.container.find('.ranges').prepend(list);
21550        }
21551
21552        if (typeof cb === 'function') {
21553            this.callback = cb;
21554        }
21555
21556        if (!this.timePicker) {
21557            this.startDate = this.startDate.startOf('day');
21558            this.endDate = this.endDate.endOf('day');
21559            this.container.find('.calendar-time').hide();
21560        }
21561
21562        //can't be used together for now
21563        if (this.timePicker && this.autoApply)
21564            this.autoApply = false;
21565
21566        if (this.autoApply) {
21567            this.container.addClass('auto-apply');
21568        }
21569
21570        if (typeof options.ranges === 'object')
21571            this.container.addClass('show-ranges');
21572
21573        if (this.singleDatePicker) {
21574            this.container.addClass('single');
21575            this.container.find('.drp-calendar.left').addClass('single');
21576            this.container.find('.drp-calendar.left').show();
21577            this.container.find('.drp-calendar.right').hide();
21578            if (!this.timePicker && this.autoApply) {
21579                this.container.addClass('auto-apply');
21580            }
21581        }
21582
21583        if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) {
21584            this.container.addClass('show-calendar');
21585        }
21586
21587        this.container.addClass('opens' + this.opens);
21588
21589        //apply CSS classes and labels to buttons
21590        this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses);
21591        if (this.applyButtonClasses.length)
21592            this.container.find('.applyBtn').addClass(this.applyButtonClasses);
21593        if (this.cancelButtonClasses.length)
21594            this.container.find('.cancelBtn').addClass(this.cancelButtonClasses);
21595        this.container.find('.applyBtn').html(this.locale.applyLabel);
21596        this.container.find('.cancelBtn').html(this.locale.cancelLabel);
21597
21598        //
21599        // event listeners
21600        //
21601
21602        this.container.find('.drp-calendar')
21603            .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this))
21604            .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this))
21605            .on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this))
21606            .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this))
21607            .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this))
21608            .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this))
21609            .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this));
21610
21611        this.container.find('.ranges')
21612            .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this));
21613
21614        this.container.find('.drp-buttons')
21615            .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this))
21616            .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this));
21617
21618        if (this.element.is('input') || this.element.is('button')) {
21619            this.element.on({
21620                'click.daterangepicker': $.proxy(this.show, this),
21621                'focus.daterangepicker': $.proxy(this.show, this),
21622                'keyup.daterangepicker': $.proxy(this.elementChanged, this),
21623                'keydown.daterangepicker': $.proxy(this.keydown, this) //IE 11 compatibility
21624            });
21625        } else {
21626            this.element.on('click.daterangepicker', $.proxy(this.toggle, this));
21627            this.element.on('keydown.daterangepicker', $.proxy(this.toggle, this));
21628        }
21629
21630        //
21631        // if attached to a text input, set the initial value
21632        //
21633
21634        this.updateElement();
21635
21636    };
21637
21638    DateRangePicker.prototype = {
21639
21640        constructor: DateRangePicker,
21641
21642        setStartDate: function(startDate) {
21643            if (typeof startDate === 'string')
21644                this.startDate = moment(startDate, this.locale.format);
21645
21646            if (typeof startDate === 'object')
21647                this.startDate = moment(startDate);
21648
21649            if (!this.timePicker)
21650                this.startDate = this.startDate.startOf('day');
21651
21652            if (this.timePicker && this.timePickerIncrement)
21653                this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
21654
21655            if (this.minDate && this.startDate.isBefore(this.minDate)) {
21656                this.startDate = this.minDate.clone();
21657                if (this.timePicker && this.timePickerIncrement)
21658                    this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
21659            }
21660
21661            if (this.maxDate && this.startDate.isAfter(this.maxDate)) {
21662                this.startDate = this.maxDate.clone();
21663                if (this.timePicker && this.timePickerIncrement)
21664                    this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
21665            }
21666
21667            if (!this.isShowing)
21668                this.updateElement();
21669
21670            this.updateMonthsInView();
21671        },
21672
21673        setEndDate: function(endDate) {
21674            if (typeof endDate === 'string')
21675                this.endDate = moment(endDate, this.locale.format);
21676
21677            if (typeof endDate === 'object')
21678                this.endDate = moment(endDate);
21679
21680            if (!this.timePicker)
21681                this.endDate = this.endDate.endOf('day');
21682
21683            if (this.timePicker && this.timePickerIncrement)
21684                this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
21685
21686            if (this.endDate.isBefore(this.startDate))
21687                this.endDate = this.startDate.clone();
21688
21689            if (this.maxDate && this.endDate.isAfter(this.maxDate))
21690                this.endDate = this.maxDate.clone();
21691
21692            if (this.maxSpan && this.startDate.clone().add(this.maxSpan).isBefore(this.endDate))
21693                this.endDate = this.startDate.clone().add(this.maxSpan);
21694
21695            this.previousRightTime = this.endDate.clone();
21696
21697            this.container.find('.drp-selected').html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
21698
21699            if (!this.isShowing)
21700                this.updateElement();
21701
21702            this.updateMonthsInView();
21703        },
21704
21705        isInvalidDate: function() {
21706            return false;
21707        },
21708
21709        isCustomDate: function() {
21710            return false;
21711        },
21712
21713        updateView: function() {
21714            if (this.timePicker) {
21715                this.renderTimePicker('left');
21716                this.renderTimePicker('right');
21717                if (!this.endDate) {
21718                    this.container.find('.right .calendar-time select').prop('disabled', true).addClass('disabled');
21719                } else {
21720                    this.container.find('.right .calendar-time select').prop('disabled', false).removeClass('disabled');
21721                }
21722            }
21723            if (this.endDate)
21724                this.container.find('.drp-selected').html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
21725            this.updateMonthsInView();
21726            this.updateCalendars();
21727            this.updateFormInputs();
21728        },
21729
21730        updateMonthsInView: function() {
21731            if (this.endDate) {
21732
21733                //if both dates are visible already, do nothing
21734                if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month &&
21735                    (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))
21736                    &&
21737                    (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))
21738                    ) {
21739                    return;
21740                }
21741
21742                this.leftCalendar.month = this.startDate.clone().date(2);
21743                if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) {
21744                    this.rightCalendar.month = this.endDate.clone().date(2);
21745                } else {
21746                    this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');
21747                }
21748
21749            } else {
21750                if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) {
21751                    this.leftCalendar.month = this.startDate.clone().date(2);
21752                    this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');
21753                }
21754            }
21755            if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) {
21756              this.rightCalendar.month = this.maxDate.clone().date(2);
21757              this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month');
21758            }
21759        },
21760
21761        updateCalendars: function() {
21762
21763            if (this.timePicker) {
21764                var hour, minute, second;
21765                if (this.endDate) {
21766                    hour = parseInt(this.container.find('.left .hourselect').val(), 10);
21767                    minute = parseInt(this.container.find('.left .minuteselect').val(), 10);
21768                    if (isNaN(minute)) {
21769                        minute = parseInt(this.container.find('.left .minuteselect option:last').val(), 10);
21770                    }
21771                    second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;
21772                    if (!this.timePicker24Hour) {
21773                        var ampm = this.container.find('.left .ampmselect').val();
21774                        if (ampm === 'PM' && hour < 12)
21775                            hour += 12;
21776                        if (ampm === 'AM' && hour === 12)
21777                            hour = 0;
21778                    }
21779                } else {
21780                    hour = parseInt(this.container.find('.right .hourselect').val(), 10);
21781                    minute = parseInt(this.container.find('.right .minuteselect').val(), 10);
21782                    if (isNaN(minute)) {
21783                        minute = parseInt(this.container.find('.right .minuteselect option:last').val(), 10);
21784                    }
21785                    second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;
21786                    if (!this.timePicker24Hour) {
21787                        var ampm = this.container.find('.right .ampmselect').val();
21788                        if (ampm === 'PM' && hour < 12)
21789                            hour += 12;
21790                        if (ampm === 'AM' && hour === 12)
21791                            hour = 0;
21792                    }
21793                }
21794                this.leftCalendar.month.hour(hour).minute(minute).second(second);
21795                this.rightCalendar.month.hour(hour).minute(minute).second(second);
21796            }
21797
21798            this.renderCalendar('left');
21799            this.renderCalendar('right');
21800
21801            //highlight any predefined range matching the current start and end dates
21802            this.container.find('.ranges li').removeClass('active');
21803            if (this.endDate == null) return;
21804
21805            this.calculateChosenLabel();
21806        },
21807
21808        renderCalendar: function(side) {
21809
21810            //
21811            // Build the matrix of dates that will populate the calendar
21812            //
21813
21814            var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar;
21815            var month = calendar.month.month();
21816            var year = calendar.month.year();
21817            var hour = calendar.month.hour();
21818            var minute = calendar.month.minute();
21819            var second = calendar.month.second();
21820            var daysInMonth = moment([year, month]).daysInMonth();
21821            var firstDay = moment([year, month, 1]);
21822            var lastDay = moment([year, month, daysInMonth]);
21823            var lastMonth = moment(firstDay).subtract(1, 'month').month();
21824            var lastYear = moment(firstDay).subtract(1, 'month').year();
21825            var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth();
21826            var dayOfWeek = firstDay.day();
21827
21828            //initialize a 6 rows x 7 columns array for the calendar
21829            var calendar = [];
21830            calendar.firstDay = firstDay;
21831            calendar.lastDay = lastDay;
21832
21833            for (var i = 0; i < 6; i++) {
21834                calendar[i] = [];
21835            }
21836
21837            //populate the calendar with date objects
21838            var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;
21839            if (startDay > daysInLastMonth)
21840                startDay -= 7;
21841
21842            if (dayOfWeek == this.locale.firstDay)
21843                startDay = daysInLastMonth - 6;
21844
21845            var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]);
21846
21847            var col, row;
21848            for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) {
21849                if (i > 0 && col % 7 === 0) {
21850                    col = 0;
21851                    row++;
21852                }
21853                calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);
21854                curDate.hour(12);
21855
21856                if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') {
21857                    calendar[row][col] = this.minDate.clone();
21858                }
21859
21860                if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') {
21861                    calendar[row][col] = this.maxDate.clone();
21862                }
21863
21864            }
21865
21866            //make the calendar object available to hoverDate/clickDate
21867            if (side == 'left') {
21868                this.leftCalendar.calendar = calendar;
21869            } else {
21870                this.rightCalendar.calendar = calendar;
21871            }
21872
21873            //
21874            // Display the calendar
21875            //
21876
21877            var minDate = side == 'left' ? this.minDate : this.startDate;
21878            var maxDate = this.maxDate;
21879            var selected = side == 'left' ? this.startDate : this.endDate;
21880            var arrow = this.locale.direction == 'ltr' ? {left: 'chevron-left', right: 'chevron-right'} : {left: 'chevron-right', right: 'chevron-left'};
21881
21882            var html = '<table class="table-condensed">';
21883            html += '<thead>';
21884            html += '<tr>';
21885
21886            // add empty cell for week number
21887            if (this.showWeekNumbers || this.showISOWeekNumbers)
21888                html += '<th></th>';
21889
21890            if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) {
21891                html += '<th class="prev available"><span></span></th>';
21892            } else {
21893                html += '<th></th>';
21894            }
21895
21896            var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY");
21897
21898            if (this.showDropdowns) {
21899                var currentMonth = calendar[1][1].month();
21900                var currentYear = calendar[1][1].year();
21901                var maxYear = (maxDate && maxDate.year()) || (this.maxYear);
21902                var minYear = (minDate && minDate.year()) || (this.minYear);
21903                var inMinYear = currentYear == minYear;
21904                var inMaxYear = currentYear == maxYear;
21905
21906                var monthHtml = '<select class="monthselect">';
21907                for (var m = 0; m < 12; m++) {
21908                    if ((!inMinYear || (minDate && m >= minDate.month())) && (!inMaxYear || (maxDate && m <= maxDate.month()))) {
21909                        monthHtml += "<option value='" + m + "'" +
21910                            (m === currentMonth ? " selected='selected'" : "") +
21911                            ">" + this.locale.monthNames[m] + "</option>";
21912                    } else {
21913                        monthHtml += "<option value='" + m + "'" +
21914                            (m === currentMonth ? " selected='selected'" : "") +
21915                            " disabled='disabled'>" + this.locale.monthNames[m] + "</option>";
21916                    }
21917                }
21918                monthHtml += "</select>";
21919
21920                var yearHtml = '<select class="yearselect">';
21921                for (var y = minYear; y <= maxYear; y++) {
21922                    yearHtml += '<option value="' + y + '"' +
21923                        (y === currentYear ? ' selected="selected"' : '') +
21924                        '>' + y + '</option>';
21925                }
21926                yearHtml += '</select>';
21927
21928                dateHtml = monthHtml + yearHtml;
21929            }
21930
21931            html += '<th colspan="5" class="month">' + dateHtml + '</th>';
21932            if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) {
21933                html += '<th class="next available"><span></span></th>';
21934            } else {
21935                html += '<th></th>';
21936            }
21937
21938            html += '</tr>';
21939            html += '<tr>';
21940
21941            // add week number label
21942            if (this.showWeekNumbers || this.showISOWeekNumbers)
21943                html += '<th class="week">' + this.locale.weekLabel + '</th>';
21944
21945            $.each(this.locale.daysOfWeek, function(index, dayOfWeek) {
21946                html += '<th>' + dayOfWeek + '</th>';
21947            });
21948
21949            html += '</tr>';
21950            html += '</thead>';
21951            html += '<tbody>';
21952
21953            //adjust maxDate to reflect the maxSpan setting in order to
21954            //grey out end dates beyond the maxSpan
21955            if (this.endDate == null && this.maxSpan) {
21956                var maxLimit = this.startDate.clone().add(this.maxSpan).endOf('day');
21957                if (!maxDate || maxLimit.isBefore(maxDate)) {
21958                    maxDate = maxLimit;
21959                }
21960            }
21961
21962            for (var row = 0; row < 6; row++) {
21963                html += '<tr>';
21964
21965                // add week number
21966                if (this.showWeekNumbers)
21967                    html += '<td class="week">' + calendar[row][0].week() + '</td>';
21968                else if (this.showISOWeekNumbers)
21969                    html += '<td class="week">' + calendar[row][0].isoWeek() + '</td>';
21970
21971                for (var col = 0; col < 7; col++) {
21972
21973                    var classes = [];
21974
21975                    //highlight today's date
21976                    if (calendar[row][col].isSame(new Date(), "day"))
21977                        classes.push('today');
21978
21979                    //highlight weekends
21980                    if (calendar[row][col].isoWeekday() > 5)
21981                        classes.push('weekend');
21982
21983                    //grey out the dates in other months displayed at beginning and end of this calendar
21984                    if (calendar[row][col].month() != calendar[1][1].month())
21985                        classes.push('off', 'ends');
21986
21987                    //don't allow selection of dates before the minimum date
21988                    if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day'))
21989                        classes.push('off', 'disabled');
21990
21991                    //don't allow selection of dates after the maximum date
21992                    if (maxDate && calendar[row][col].isAfter(maxDate, 'day'))
21993                        classes.push('off', 'disabled');
21994
21995                    //don't allow selection of date if a custom function decides it's invalid
21996                    if (this.isInvalidDate(calendar[row][col]))
21997                        classes.push('off', 'disabled');
21998
21999                    //highlight the currently selected start date
22000                    if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD'))
22001                        classes.push('active', 'start-date');
22002
22003                    //highlight the currently selected end date
22004                    if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD'))
22005                        classes.push('active', 'end-date');
22006
22007                    //highlight dates in-between the selected dates
22008                    if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate)
22009                        classes.push('in-range');
22010
22011                    //apply custom classes for this date
22012                    var isCustom = this.isCustomDate(calendar[row][col]);
22013                    if (isCustom !== false) {
22014                        if (typeof isCustom === 'string')
22015                            classes.push(isCustom);
22016                        else
22017                            Array.prototype.push.apply(classes, isCustom);
22018                    }
22019
22020                    var cname = '', disabled = false;
22021                    for (var i = 0; i < classes.length; i++) {
22022                        cname += classes[i] + ' ';
22023                        if (classes[i] == 'disabled')
22024                            disabled = true;
22025                    }
22026                    if (!disabled)
22027                        cname += 'available';
22028
22029                    html += '<td class="' + cname.replace(/^\s+|\s+$/g, '') + '" data-title="' + 'r' + row + 'c' + col + '">' + calendar[row][col].date() + '</td>';
22030
22031                }
22032                html += '</tr>';
22033            }
22034
22035            html += '</tbody>';
22036            html += '</table>';
22037
22038            this.container.find('.drp-calendar.' + side + ' .calendar-table').html(html);
22039
22040        },
22041
22042        renderTimePicker: function(side) {
22043
22044            // Don't bother updating the time picker if it's currently disabled
22045            // because an end date hasn't been clicked yet
22046            if (side == 'right' && !this.endDate) return;
22047
22048            var html, selected, minDate, maxDate = this.maxDate;
22049
22050            if (this.maxSpan && (!this.maxDate || this.startDate.clone().add(this.maxSpan).isBefore(this.maxDate)))
22051                maxDate = this.startDate.clone().add(this.maxSpan);
22052
22053            if (side == 'left') {
22054                selected = this.startDate.clone();
22055                minDate = this.minDate;
22056            } else if (side == 'right') {
22057                selected = this.endDate.clone();
22058                minDate = this.startDate;
22059
22060                //Preserve the time already selected
22061                var timeSelector = this.container.find('.drp-calendar.right .calendar-time');
22062                if (timeSelector.html() != '') {
22063
22064                    selected.hour(!isNaN(selected.hour()) ? selected.hour() : timeSelector.find('.hourselect option:selected').val());
22065                    selected.minute(!isNaN(selected.minute()) ? selected.minute() : timeSelector.find('.minuteselect option:selected').val());
22066                    selected.second(!isNaN(selected.second()) ? selected.second() : timeSelector.find('.secondselect option:selected').val());
22067
22068                    if (!this.timePicker24Hour) {
22069                        var ampm = timeSelector.find('.ampmselect option:selected').val();
22070                        if (ampm === 'PM' && selected.hour() < 12)
22071                            selected.hour(selected.hour() + 12);
22072                        if (ampm === 'AM' && selected.hour() === 12)
22073                            selected.hour(0);
22074                    }
22075
22076                }
22077
22078                if (selected.isBefore(this.startDate))
22079                    selected = this.startDate.clone();
22080
22081                if (maxDate && selected.isAfter(maxDate))
22082                    selected = maxDate.clone();
22083
22084            }
22085
22086            //
22087            // hours
22088            //
22089
22090            html = '<select class="hourselect">';
22091
22092            var start = this.timePicker24Hour ? 0 : 1;
22093            var end = this.timePicker24Hour ? 23 : 12;
22094
22095            for (var i = start; i <= end; i++) {
22096                var i_in_24 = i;
22097                if (!this.timePicker24Hour)
22098                    i_in_24 = selected.hour() >= 12 ? (i == 12 ? 12 : i + 12) : (i == 12 ? 0 : i);
22099
22100                var time = selected.clone().hour(i_in_24);
22101                var disabled = false;
22102                if (minDate && time.minute(59).isBefore(minDate))
22103                    disabled = true;
22104                if (maxDate && time.minute(0).isAfter(maxDate))
22105                    disabled = true;
22106
22107                if (i_in_24 == selected.hour() && !disabled) {
22108                    html += '<option value="' + i + '" selected="selected">' + i + '</option>';
22109                } else if (disabled) {
22110                    html += '<option value="' + i + '" disabled="disabled" class="disabled">' + i + '</option>';
22111                } else {
22112                    html += '<option value="' + i + '">' + i + '</option>';
22113                }
22114            }
22115
22116            html += '</select> ';
22117
22118            //
22119            // minutes
22120            //
22121
22122            html += ': <select class="minuteselect">';
22123
22124            for (var i = 0; i < 60; i += this.timePickerIncrement) {
22125                var padded = i < 10 ? '0' + i : i;
22126                var time = selected.clone().minute(i);
22127
22128                var disabled = false;
22129                if (minDate && time.second(59).isBefore(minDate))
22130                    disabled = true;
22131                if (maxDate && time.second(0).isAfter(maxDate))
22132                    disabled = true;
22133
22134                if (selected.minute() == i && !disabled) {
22135                    html += '<option value="' + i + '" selected="selected">' + padded + '</option>';
22136                } else if (disabled) {
22137                    html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>';
22138                } else {
22139                    html += '<option value="' + i + '">' + padded + '</option>';
22140                }
22141            }
22142
22143            html += '</select> ';
22144
22145            //
22146            // seconds
22147            //
22148
22149            if (this.timePickerSeconds) {
22150                html += ': <select class="secondselect">';
22151
22152                for (var i = 0; i < 60; i++) {
22153                    var padded = i < 10 ? '0' + i : i;
22154                    var time = selected.clone().second(i);
22155
22156                    var disabled = false;
22157                    if (minDate && time.isBefore(minDate))
22158                        disabled = true;
22159                    if (maxDate && time.isAfter(maxDate))
22160                        disabled = true;
22161
22162                    if (selected.second() == i && !disabled) {
22163                        html += '<option value="' + i + '" selected="selected">' + padded + '</option>';
22164                    } else if (disabled) {
22165                        html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>';
22166                    } else {
22167                        html += '<option value="' + i + '">' + padded + '</option>';
22168                    }
22169                }
22170
22171                html += '</select> ';
22172            }
22173
22174            //
22175            // AM/PM
22176            //
22177
22178            if (!this.timePicker24Hour) {
22179                html += '<select class="ampmselect">';
22180
22181                var am_html = '';
22182                var pm_html = '';
22183
22184                if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate))
22185                    am_html = ' disabled="disabled" class="disabled"';
22186
22187                if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate))
22188                    pm_html = ' disabled="disabled" class="disabled"';
22189
22190                if (selected.hour() >= 12) {
22191                    html += '<option value="AM"' + am_html + '>AM</option><option value="PM" selected="selected"' + pm_html + '>PM</option>';
22192                } else {
22193                    html += '<option value="AM" selected="selected"' + am_html + '>AM</option><option value="PM"' + pm_html + '>PM</option>';
22194                }
22195
22196                html += '</select>';
22197            }
22198
22199            this.container.find('.drp-calendar.' + side + ' .calendar-time').html(html);
22200
22201        },
22202
22203        updateFormInputs: function() {
22204
22205            if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) {
22206                this.container.find('button.applyBtn').prop('disabled', false);
22207            } else {
22208                this.container.find('button.applyBtn').prop('disabled', true);
22209            }
22210
22211        },
22212
22213        move: function() {
22214            var parentOffset = { top: 0, left: 0 },
22215                containerTop,
22216                drops = this.drops;
22217
22218            var parentRightEdge = $(window).width();
22219            if (!this.parentEl.is('body')) {
22220                parentOffset = {
22221                    top: this.parentEl.offset().top - this.parentEl.scrollTop(),
22222                    left: this.parentEl.offset().left - this.parentEl.scrollLeft()
22223                };
22224                parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left;
22225            }
22226
22227            switch (drops) {
22228            case 'auto':
22229                containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;
22230                if (containerTop + this.container.outerHeight() >= this.parentEl[0].scrollHeight) {
22231                    containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;
22232                    drops = 'up';
22233                }
22234                break;
22235            case 'up':
22236                containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;
22237                break;
22238            default:
22239                containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;
22240                break;
22241            }
22242
22243            // Force the container to it's actual width
22244            this.container.css({
22245              top: 0,
22246              left: 0,
22247              right: 'auto'
22248            });
22249            var containerWidth = this.container.outerWidth();
22250
22251            this.container.toggleClass('drop-up', drops == 'up');
22252
22253            if (this.opens == 'left') {
22254                var containerRight = parentRightEdge - this.element.offset().left - this.element.outerWidth();
22255                if (containerWidth + containerRight > $(window).width()) {
22256                    this.container.css({
22257                        top: containerTop,
22258                        right: 'auto',
22259                        left: 9
22260                    });
22261                } else {
22262                    this.container.css({
22263                        top: containerTop,
22264                        right: containerRight,
22265                        left: 'auto'
22266                    });
22267                }
22268            } else if (this.opens == 'center') {
22269                var containerLeft = this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2
22270                                        - containerWidth / 2;
22271                if (containerLeft < 0) {
22272                    this.container.css({
22273                        top: containerTop,
22274                        right: 'auto',
22275                        left: 9
22276                    });
22277                } else if (containerLeft + containerWidth > $(window).width()) {
22278                    this.container.css({
22279                        top: containerTop,
22280                        left: 'auto',
22281                        right: 0
22282                    });
22283                } else {
22284                    this.container.css({
22285                        top: containerTop,
22286                        left: containerLeft,
22287                        right: 'auto'
22288                    });
22289                }
22290            } else {
22291                var containerLeft = this.element.offset().left - parentOffset.left;
22292                if (containerLeft + containerWidth > $(window).width()) {
22293                    this.container.css({
22294                        top: containerTop,
22295                        left: 'auto',
22296                        right: 0
22297                    });
22298                } else {
22299                    this.container.css({
22300                        top: containerTop,
22301                        left: containerLeft,
22302                        right: 'auto'
22303                    });
22304                }
22305            }
22306        },
22307
22308        show: function(e) {
22309            if (this.isShowing) return;
22310
22311            // Create a click proxy that is private to this instance of datepicker, for unbinding
22312            this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this);
22313
22314            // Bind global datepicker mousedown for hiding and
22315            $(document)
22316              .on('mousedown.daterangepicker', this._outsideClickProxy)
22317              // also support mobile devices
22318              .on('touchend.daterangepicker', this._outsideClickProxy)
22319              // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them
22320              .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy)
22321              // and also close when focus changes to outside the picker (eg. tabbing between controls)
22322              .on('focusin.daterangepicker', this._outsideClickProxy);
22323
22324            // Reposition the picker if the window is resized while it's open
22325            $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this));
22326
22327            this.oldStartDate = this.startDate.clone();
22328            this.oldEndDate = this.endDate.clone();
22329            this.previousRightTime = this.endDate.clone();
22330
22331            this.updateView();
22332            this.container.show();
22333            this.move();
22334            this.element.trigger('show.daterangepicker', this);
22335            this.isShowing = true;
22336        },
22337
22338        hide: function(e) {
22339            if (!this.isShowing) return;
22340
22341            //incomplete date selection, revert to last values
22342            if (!this.endDate) {
22343                this.startDate = this.oldStartDate.clone();
22344                this.endDate = this.oldEndDate.clone();
22345            }
22346
22347            //if a new date range was selected, invoke the user callback function
22348            if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))
22349                this.callback(this.startDate.clone(), this.endDate.clone(), this.chosenLabel);
22350
22351            //if picker is attached to a text input, update it
22352            this.updateElement();
22353
22354            $(document).off('.daterangepicker');
22355            $(window).off('.daterangepicker');
22356            this.container.hide();
22357            this.element.trigger('hide.daterangepicker', this);
22358            this.isShowing = false;
22359        },
22360
22361        toggle: function(e) {
22362            if (this.isShowing) {
22363                this.hide();
22364            } else {
22365                this.show();
22366            }
22367        },
22368
22369        outsideClick: function(e) {
22370            var target = $(e.target);
22371            // if the page is clicked anywhere except within the daterangerpicker/button
22372            // itself then call this.hide()
22373            if (
22374                // ie modal dialog fix
22375                e.type == "focusin" ||
22376                target.closest(this.element).length ||
22377                target.closest(this.container).length ||
22378                target.closest('.calendar-table').length
22379                ) return;
22380            this.hide();
22381            this.element.trigger('outsideClick.daterangepicker', this);
22382        },
22383
22384        showCalendars: function() {
22385            this.container.addClass('show-calendar');
22386            this.move();
22387            this.element.trigger('showCalendar.daterangepicker', this);
22388        },
22389
22390        hideCalendars: function() {
22391            this.container.removeClass('show-calendar');
22392            this.element.trigger('hideCalendar.daterangepicker', this);
22393        },
22394
22395        clickRange: function(e) {
22396            var label = e.target.getAttribute('data-range-key');
22397            this.chosenLabel = label;
22398            if (label == this.locale.customRangeLabel) {
22399                this.showCalendars();
22400            } else {
22401                var dates = this.ranges[label];
22402                this.startDate = dates[0];
22403                this.endDate = dates[1];
22404
22405                if (!this.timePicker) {
22406                    this.startDate.startOf('day');
22407                    this.endDate.endOf('day');
22408                }
22409
22410                if (!this.alwaysShowCalendars)
22411                    this.hideCalendars();
22412                this.clickApply();
22413            }
22414        },
22415
22416        clickPrev: function(e) {
22417            var cal = $(e.target).parents('.drp-calendar');
22418            if (cal.hasClass('left')) {
22419                this.leftCalendar.month.subtract(1, 'month');
22420                if (this.linkedCalendars)
22421                    this.rightCalendar.month.subtract(1, 'month');
22422            } else {
22423                this.rightCalendar.month.subtract(1, 'month');
22424            }
22425            this.updateCalendars();
22426        },
22427
22428        clickNext: function(e) {
22429            var cal = $(e.target).parents('.drp-calendar');
22430            if (cal.hasClass('left')) {
22431                this.leftCalendar.month.add(1, 'month');
22432            } else {
22433                this.rightCalendar.month.add(1, 'month');
22434                if (this.linkedCalendars)
22435                    this.leftCalendar.month.add(1, 'month');
22436            }
22437            this.updateCalendars();
22438        },
22439
22440        hoverDate: function(e) {
22441
22442            //ignore dates that can't be selected
22443            if (!$(e.target).hasClass('available')) return;
22444
22445            var title = $(e.target).attr('data-title');
22446            var row = title.substr(1, 1);
22447            var col = title.substr(3, 1);
22448            var cal = $(e.target).parents('.drp-calendar');
22449            var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];
22450
22451            //highlight the dates between the start date and the date being hovered as a potential end date
22452            var leftCalendar = this.leftCalendar;
22453            var rightCalendar = this.rightCalendar;
22454            var startDate = this.startDate;
22455            if (!this.endDate) {
22456                this.container.find('.drp-calendar tbody td').each(function(index, el) {
22457
22458                    //skip week numbers, only look at dates
22459                    if ($(el).hasClass('week')) return;
22460
22461                    var title = $(el).attr('data-title');
22462                    var row = title.substr(1, 1);
22463                    var col = title.substr(3, 1);
22464                    var cal = $(el).parents('.drp-calendar');
22465                    var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col];
22466
22467                    if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) {
22468                        $(el).addClass('in-range');
22469                    } else {
22470                        $(el).removeClass('in-range');
22471                    }
22472
22473                });
22474            }
22475
22476        },
22477
22478        clickDate: function(e) {
22479
22480            if (!$(e.target).hasClass('available')) return;
22481
22482            var title = $(e.target).attr('data-title');
22483            var row = title.substr(1, 1);
22484            var col = title.substr(3, 1);
22485            var cal = $(e.target).parents('.drp-calendar');
22486            var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];
22487
22488            //
22489            // this function needs to do a few things:
22490            // * alternate between selecting a start and end date for the range,
22491            // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date
22492            // * if autoapply is enabled, and an end date was chosen, apply the selection
22493            // * if single date picker mode, and time picker isn't enabled, apply the selection immediately
22494            // * if one of the inputs above the calendars was focused, cancel that manual input
22495            //
22496
22497            if (this.endDate || date.isBefore(this.startDate, 'day')) { //picking start
22498                if (this.timePicker) {
22499                    var hour = parseInt(this.container.find('.left .hourselect').val(), 10);
22500                    if (!this.timePicker24Hour) {
22501                        var ampm = this.container.find('.left .ampmselect').val();
22502                        if (ampm === 'PM' && hour < 12)
22503                            hour += 12;
22504                        if (ampm === 'AM' && hour === 12)
22505                            hour = 0;
22506                    }
22507                    var minute = parseInt(this.container.find('.left .minuteselect').val(), 10);
22508                    if (isNaN(minute)) {
22509                        minute = parseInt(this.container.find('.left .minuteselect option:last').val(), 10);
22510                    }
22511                    var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;
22512                    date = date.clone().hour(hour).minute(minute).second(second);
22513                }
22514                this.endDate = null;
22515                this.setStartDate(date.clone());
22516            } else if (!this.endDate && date.isBefore(this.startDate)) {
22517                //special case: clicking the same date for start/end,
22518                //but the time of the end date is before the start date
22519                this.setEndDate(this.startDate.clone());
22520            } else { // picking end
22521                if (this.timePicker) {
22522                    var hour = parseInt(this.container.find('.right .hourselect').val(), 10);
22523                    if (!this.timePicker24Hour) {
22524                        var ampm = this.container.find('.right .ampmselect').val();
22525                        if (ampm === 'PM' && hour < 12)
22526                            hour += 12;
22527                        if (ampm === 'AM' && hour === 12)
22528                            hour = 0;
22529                    }
22530                    var minute = parseInt(this.container.find('.right .minuteselect').val(), 10);
22531                    if (isNaN(minute)) {
22532                        minute = parseInt(this.container.find('.right .minuteselect option:last').val(), 10);
22533                    }
22534                    var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;
22535                    date = date.clone().hour(hour).minute(minute).second(second);
22536                }
22537                this.setEndDate(date.clone());
22538                if (this.autoApply) {
22539                  this.calculateChosenLabel();
22540                  this.clickApply();
22541                }
22542            }
22543
22544            if (this.singleDatePicker) {
22545                this.setEndDate(this.startDate);
22546                if (!this.timePicker && this.autoApply)
22547                    this.clickApply();
22548            }
22549
22550            this.updateView();
22551
22552            //This is to cancel the blur event handler if the mouse was in one of the inputs
22553            e.stopPropagation();
22554
22555        },
22556
22557        calculateChosenLabel: function () {
22558            var customRange = true;
22559            var i = 0;
22560            for (var range in this.ranges) {
22561              if (this.timePicker) {
22562                    var format = this.timePickerSeconds ? "YYYY-MM-DD HH:mm:ss" : "YYYY-MM-DD HH:mm";
22563                    //ignore times when comparing dates if time picker seconds is not enabled
22564                    if (this.startDate.format(format) == this.ranges[range][0].format(format) && this.endDate.format(format) == this.ranges[range][1].format(format)) {
22565                        customRange = false;
22566                        this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').attr('data-range-key');
22567                        break;
22568                    }
22569                } else {
22570                    //ignore times when comparing dates if time picker is not enabled
22571                    if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) {
22572                        customRange = false;
22573                        this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').attr('data-range-key');
22574                        break;
22575                    }
22576                }
22577                i++;
22578            }
22579            if (customRange) {
22580                if (this.showCustomRangeLabel) {
22581                    this.chosenLabel = this.container.find('.ranges li:last').addClass('active').attr('data-range-key');
22582                } else {
22583                    this.chosenLabel = null;
22584                }
22585                this.showCalendars();
22586            }
22587        },
22588
22589        clickApply: function(e) {
22590            this.hide();
22591            this.element.trigger('apply.daterangepicker', this);
22592        },
22593
22594        clickCancel: function(e) {
22595            this.startDate = this.oldStartDate;
22596            this.endDate = this.oldEndDate;
22597            this.hide();
22598            this.element.trigger('cancel.daterangepicker', this);
22599        },
22600
22601        monthOrYearChanged: function(e) {
22602            var isLeft = $(e.target).closest('.drp-calendar').hasClass('left'),
22603                leftOrRight = isLeft ? 'left' : 'right',
22604                cal = this.container.find('.drp-calendar.'+leftOrRight);
22605
22606            // Month must be Number for new moment versions
22607            var month = parseInt(cal.find('.monthselect').val(), 10);
22608            var year = cal.find('.yearselect').val();
22609
22610            if (!isLeft) {
22611                if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) {
22612                    month = this.startDate.month();
22613                    year = this.startDate.year();
22614                }
22615            }
22616
22617            if (this.minDate) {
22618                if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) {
22619                    month = this.minDate.month();
22620                    year = this.minDate.year();
22621                }
22622            }
22623
22624            if (this.maxDate) {
22625                if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) {
22626                    month = this.maxDate.month();
22627                    year = this.maxDate.year();
22628                }
22629            }
22630
22631            if (isLeft) {
22632                this.leftCalendar.month.month(month).year(year);
22633                if (this.linkedCalendars)
22634                    this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');
22635            } else {
22636                this.rightCalendar.month.month(month).year(year);
22637                if (this.linkedCalendars)
22638                    this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');
22639            }
22640            this.updateCalendars();
22641        },
22642
22643        timeChanged: function(e) {
22644
22645            var cal = $(e.target).closest('.drp-calendar'),
22646                isLeft = cal.hasClass('left');
22647
22648            var hour = parseInt(cal.find('.hourselect').val(), 10);
22649            var minute = parseInt(cal.find('.minuteselect').val(), 10);
22650            if (isNaN(minute)) {
22651                minute = parseInt(cal.find('.minuteselect option:last').val(), 10);
22652            }
22653            var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0;
22654
22655            if (!this.timePicker24Hour) {
22656                var ampm = cal.find('.ampmselect').val();
22657                if (ampm === 'PM' && hour < 12)
22658                    hour += 12;
22659                if (ampm === 'AM' && hour === 12)
22660                    hour = 0;
22661            }
22662
22663            if (isLeft) {
22664                var start = this.startDate.clone();
22665                start.hour(hour);
22666                start.minute(minute);
22667                start.second(second);
22668                this.setStartDate(start);
22669                if (this.singleDatePicker) {
22670                    this.endDate = this.startDate.clone();
22671                } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {
22672                    this.setEndDate(start.clone());
22673                }
22674            } else if (this.endDate) {
22675                var end = this.endDate.clone();
22676                end.hour(hour);
22677                end.minute(minute);
22678                end.second(second);
22679                this.setEndDate(end);
22680            }
22681
22682            //update the calendars so all clickable dates reflect the new time component
22683            this.updateCalendars();
22684
22685            //update the form inputs above the calendars with the new time
22686            this.updateFormInputs();
22687
22688            //re-render the time pickers because changing one selection can affect what's enabled in another
22689            this.renderTimePicker('left');
22690            this.renderTimePicker('right');
22691
22692        },
22693
22694        elementChanged: function() {
22695            if (!this.element.is('input')) return;
22696            if (!this.element.val().length) return;
22697
22698            var dateString = this.element.val().split(this.locale.separator),
22699                start = null,
22700                end = null;
22701
22702            if (dateString.length === 2) {
22703                start = moment(dateString[0], this.locale.format);
22704                end = moment(dateString[1], this.locale.format);
22705            }
22706
22707            if (this.singleDatePicker || start === null || end === null) {
22708                start = moment(this.element.val(), this.locale.format);
22709                end = start;
22710            }
22711
22712            if (!start.isValid() || !end.isValid()) return;
22713
22714            this.setStartDate(start);
22715            this.setEndDate(end);
22716            this.updateView();
22717        },
22718
22719        keydown: function(e) {
22720            //hide on tab or enter
22721            if ((e.keyCode === 9) || (e.keyCode === 13)) {
22722                this.hide();
22723            }
22724
22725            //hide on esc and prevent propagation
22726            if (e.keyCode === 27) {
22727                e.preventDefault();
22728                e.stopPropagation();
22729
22730                this.hide();
22731            }
22732        },
22733
22734        updateElement: function() {
22735            if (this.element.is('input') && this.autoUpdateInput) {
22736                var newValue = this.startDate.format(this.locale.format);
22737                if (!this.singleDatePicker) {
22738                    newValue += this.locale.separator + this.endDate.format(this.locale.format);
22739                }
22740                if (newValue !== this.element.val()) {
22741                    this.element.val(newValue).trigger('change');
22742                }
22743            }
22744        },
22745
22746        remove: function() {
22747            this.container.remove();
22748            this.element.off('.daterangepicker');
22749            this.element.removeData();
22750        }
22751
22752    };
22753
22754    $.fn.daterangepicker = function(options, callback) {
22755        var implementOptions = $.extend(true, {}, $.fn.daterangepicker.defaultOptions, options);
22756        this.each(function() {
22757            var el = $(this);
22758            if (el.data('daterangepicker'))
22759                el.data('daterangepicker').remove();
22760            el.data('daterangepicker', new DateRangePicker(el, implementOptions, callback));
22761        });
22762        return this;
22763    };
22764
22765    return DateRangePicker;
22766
22767}));
22768
22769
22770/***/ }),
22771
vendor: 20,084 bytes, lines 22772-23379
22772/***/ "./node_modules/bootstrap-maxlength/src/bootstrap-maxlength.js":
22773/*!*********************************************************************!*\
22774  !*** ./node_modules/bootstrap-maxlength/src/bootstrap-maxlength.js ***!
22775  \*********************************************************************/
22776/***/ (() => {
22777
22778/* ==========================================================
22779 * bootstrap-maxlength.js v1.10.0
22780 *
22781 * Copyright (c) 2013-2021 Maurizio Napoleoni;
22782 *
22783 * Licensed under the terms of the MIT license.
22784 * See: https://github.com/mimo84/bootstrap-maxlength/blob/master/LICENSE
22785 * ========================================================== */
22786/*global  jQuery*/
22787
22788(function ($) {
22789  'use strict';
22790  /**
22791   * We need an event when the elements are destroyed
22792   * because if an input is removed, we have to remove the
22793   * maxlength object associated (if any).
22794   * From:
22795   * http://stackoverflow.com/questions/2200494/jquery-trigger-event-when-an-element-is-removed-from-the-dom
22796   */
22797  if (!$.event.special.destroyed) {
22798    $.event.special.destroyed = {
22799      remove: function (o) {
22800        if (o.handler) {
22801          o.handler();
22802        }
22803      }
22804    };
22805  }
22806
22807
22808  $.fn.extend({
22809    maxlength: function (options, callback) {
22810      var documentBody = $('body'),
22811        defaults = {
22812          showOnReady: false, // true to always show when indicator is ready
22813          alwaysShow: true, // if true the indicator it's always shown.
22814          threshold: 0, // Represents how many chars left are needed to show up the counter
22815          warningClass: 'small form-text text-muted',
22816          limitReachedClass: 'small form-text text-danger',
22817          limitExceededClass: '',
22818          separator: ' / ',
22819          preText: '',
22820          postText: '',
22821          showMaxLength: true,
22822          placement: 'bottom-right-inside',
22823          message: null, // an alternative way to provide the message text
22824          showCharsTyped: true, // show the number of characters typed and not the number of characters remaining
22825          validate: false, // if the browser doesn't support the maxlength attribute, attempt to type more than the indicated chars, will be prevented.
22826          utf8: false, // counts using bytesize rather than length. eg: '£' is counted as 2 characters.
22827          appendToParent: false, // append the indicator to the input field's parent instead of body
22828          twoCharLinebreak: true, // count linebreak as 2 characters to match IE/Chrome textarea validation. As well as DB storage.
22829          customMaxAttribute: null, // null = use maxlength attribute and browser functionality, string = use specified attribute instead.
22830          customMaxClass: 'overmax', // Class to add to the input field when the maxlength is exceeded.
22831          allowOverMax: false, // Form submit validation is handled on your own.  when maxlength has been exceeded 'overmax' class added to element
22832          zIndex: 1099
22833        };
22834
22835      if ($.isFunction(options) && !callback) {
22836        callback = options;
22837        options = {};
22838      }
22839      options = $.extend(defaults, options);
22840
22841
22842      /**
22843       * Return the byte count of the specified character in UTF8 encoding.
22844       * Note: This won't cover UTF-8 characters that are 4 bytes long.
22845       *
22846       * @param input
22847       * @return {number}
22848       */
22849      function utf8CharByteCount(character) {
22850        var c = character.charCodeAt();
22851        // Not c then 0, else c < 128 then 1, else c < 2048 then 2, else 3
22852        return !c ? 0 : c < 128 ? 1 : c < 2048 ? 2 : 3;
22853      }
22854
22855      /**
22856       * Return the length of the specified input in UTF8 encoding.
22857       *
22858       * @param input
22859       * @return {number}
22860       */
22861      function utf8Length(string) {
22862        return string.split("")
22863          .map(utf8CharByteCount)
22864          // Prevent reduce from throwing an error if the string is empty.
22865          .concat(0)
22866          .reduce(function (sum, val) {
22867            return sum + val;
22868          });
22869      }
22870
22871      /**
22872       * Return the length of the specified input.
22873       *
22874       * @param input
22875       * @return {number}
22876       */
22877      function inputLength(input) {
22878        var text = input.val();
22879
22880        if (options.twoCharLinebreak) {
22881          // Count all line breaks as 2 characters
22882          text = text.replace(/\r(?!\n)|\n(?!\r)/g, '\r\n');
22883        } else {
22884          // Remove all double-character (\r\n) linebreaks, so they're counted only once.
22885          text = text.replace(/(?:\r\n|\r|\n)/g, '\n');
22886        }
22887
22888        var currentLength = 0;
22889
22890        if (options.utf8) {
22891          currentLength = utf8Length(text);
22892        } else {
22893          currentLength = text.length;
22894        }
22895
22896        // Remove "C:\fakepath\" from counter when using file input
22897        // Fix https://github.com/mimo84/bootstrap-maxlength/issues/146
22898        if (input.prop("type") === "file" && input.val() !== "") {
22899          currentLength -= 12;
22900        }
22901
22902        return currentLength;
22903      }
22904
22905      /**
22906       * Truncate the text of the specified input.
22907       *
22908       * @param input
22909       * @param limit
22910       */
22911      function truncateChars(input, maxlength) {
22912        var text = input.val();
22913
22914        if (options.twoCharLinebreak) {
22915          text = text.replace(/\r(?!\n)|\n(?!\r)/g, '\r\n');
22916
22917          if (text[text.length - 1] === '\n') {
22918            maxlength -= text.length % 2;
22919          }
22920        }
22921
22922        if (options.utf8) {
22923          var indexedSize = text.split("").map(utf8CharByteCount);
22924          for (
22925            var removedBytes = 0,
22926            bytesPastMax = utf8Length(text) - maxlength; removedBytes < bytesPastMax; removedBytes += indexedSize.pop()
22927          );
22928          maxlength -= (maxlength - indexedSize.length);
22929        }
22930
22931        input.val(text.substr(0, maxlength));
22932      }
22933
22934      /**
22935       * Return true if the indicator should be showing up.
22936       *
22937       * @param input
22938       * @param threshold
22939       * @param maxlength
22940       * @return {number}
22941       */
22942      function charsLeftThreshold(input, threshold, maxlength) {
22943        var output = true;
22944        if (!options.alwaysShow && (maxlength - inputLength(input) > threshold)) {
22945          output = false;
22946        }
22947        return output;
22948      }
22949
22950      /**
22951       * Returns how many chars are left to complete the fill up of the form.
22952       *
22953       * @param input
22954       * @param maxlength
22955       * @return {number}
22956       */
22957      function remainingChars(input, maxlength) {
22958        var length = maxlength - inputLength(input);
22959        return length;
22960      }
22961
22962      /**
22963       * When called displays the indicator.
22964       *
22965       * @param indicator
22966       */
22967      function showRemaining(currentInput, indicator) {
22968        indicator.css({
22969          display: 'block'
22970        });
22971        currentInput.trigger('maxlength.shown');
22972      }
22973
22974      /**
22975       * When called shows the indicator.
22976       *
22977       * @param indicator
22978       */
22979      function hideRemaining(currentInput, indicator) {
22980
22981        if (options.alwaysShow) {
22982          return;
22983        }
22984
22985        indicator.css({
22986          display: 'none'
22987        });
22988        currentInput.trigger('maxlength.hidden');
22989      }
22990
22991      /**
22992       * This function updates the value in the indicator
22993       *
22994       * @param maxLengthThisInput
22995       * @param typedChars
22996       * @return String
22997       */
22998      function updateMaxLengthHTML(currentInputText, maxLengthThisInput, typedChars) {
22999        var output = '';
23000        if (options.message) {
23001          if (typeof options.message === 'function') {
23002            output = options.message(currentInputText, maxLengthThisInput);
23003          } else {
23004            output = options.message.replace('%charsTyped%', typedChars)
23005              .replace('%charsRemaining%', maxLengthThisInput - typedChars)
23006              .replace('%charsTotal%', maxLengthThisInput);
23007          }
23008        } else {
23009          if (options.preText) {
23010            output += options.preText;
23011          }
23012          if (!options.showCharsTyped) {
23013            output += maxLengthThisInput - typedChars;
23014          } else {
23015            output += typedChars;
23016          }
23017          if (options.showMaxLength) {
23018            output += options.separator + maxLengthThisInput;
23019          }
23020          if (options.postText) {
23021            output += options.postText;
23022          }
23023        }
23024        return output;
23025      }
23026
23027      /**
23028       * This function updates the value of the counter in the indicator.
23029       * Wants as parameters: the number of remaining chars, the element currently managed,
23030       * the maxLength for the current input and the indicator generated for it.
23031       *
23032       * @param remaining
23033       * @param currentInput
23034       * @param maxLengthCurrentInput
23035       * @param maxLengthIndicator
23036       */
23037      function manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator) {
23038        if (maxLengthIndicator) {
23039          maxLengthIndicator.html(updateMaxLengthHTML(currentInput.val(), maxLengthCurrentInput, (maxLengthCurrentInput - remaining)));
23040
23041          if (remaining > 0) {
23042            if (charsLeftThreshold(currentInput, options.threshold, maxLengthCurrentInput)) {
23043              showRemaining(currentInput, maxLengthIndicator.removeClass(options.limitReachedClass + ' ' + options.limitExceededClass).addClass(options.warningClass));
23044            } else {
23045              hideRemaining(currentInput, maxLengthIndicator);
23046            }
23047          } else {
23048            if (!options.limitExceededClass) {
23049              showRemaining(currentInput, maxLengthIndicator.removeClass(options.warningClass).addClass(options.limitReachedClass));
23050            } else {
23051              if (remaining === 0) {
23052                showRemaining(currentInput, maxLengthIndicator.removeClass(options.warningClass + ' ' + options.limitExceededClass).addClass(options.limitReachedClass));
23053              } else {
23054                showRemaining(currentInput, maxLengthIndicator.removeClass(options.warningClass + ' ' + options.limitReachedClass).addClass(options.limitExceededClass));
23055              }
23056            }
23057          }
23058        }
23059
23060        if (options.customMaxAttribute) {
23061          // class to use for form validation on custom maxlength attribute
23062          if (remaining < 0) {
23063            currentInput.addClass(options.customMaxClass);
23064          } else {
23065            currentInput.removeClass(options.customMaxClass);
23066          }
23067        }
23068      }
23069
23070      /**
23071       * This function returns an object containing all the
23072       * informations about the position of the current input
23073       *
23074       * @param currentInput
23075       * @return object {bottom height left right top width}
23076       *
23077       */
23078      function getPosition(currentInput) {
23079        var el = currentInput[0];
23080        return $.extend({}, (typeof el.getBoundingClientRect === 'function') ? el.getBoundingClientRect() : {
23081          width: el.offsetWidth,
23082          height: el.offsetHeight
23083        }, currentInput.offset());
23084      }
23085
23086      /**
23087       * This function places the maxLengthIndicator based on placement config object.
23088       *
23089       * @param {object} placement
23090       * @param {$} maxLengthIndicator
23091       * @return null
23092       *
23093       */
23094      function placeWithCSS(placement, maxLengthIndicator) {
23095        if (!placement || !maxLengthIndicator) {
23096          return;
23097        }
23098
23099        var POSITION_KEYS = [
23100          'top',
23101          'bottom',
23102          'left',
23103          'right',
23104          'position'
23105        ];
23106
23107        var cssPos = {};
23108
23109        // filter css properties to position
23110        $.each(POSITION_KEYS, function (i, key) {
23111          var val = options.placement[key];
23112          if (typeof val !== 'undefined') {
23113            cssPos[key] = val;
23114          }
23115        });
23116
23117        maxLengthIndicator.css(cssPos);
23118
23119        return;
23120      }
23121
23122
23123      /**
23124       * This function places the maxLengthIndicator at the
23125       * top / bottom / left / right of the currentInput
23126       *
23127       * @param currentInput
23128       * @param maxLengthIndicator
23129       * @return null
23130       *
23131       */
23132      function place(currentInput, maxLengthIndicator) {
23133        var pos = getPosition(currentInput);
23134
23135        // Supports custom placement handler
23136        if ($.type(options.placement) === 'function') {
23137          options.placement(currentInput, maxLengthIndicator, pos);
23138          return;
23139        }
23140
23141        // Supports custom placement via css positional properties
23142        if ($.isPlainObject(options.placement)) {
23143          placeWithCSS(options.placement, maxLengthIndicator);
23144          return;
23145        }
23146
23147        var inputOuter = currentInput.outerWidth(),
23148          outerWidth = maxLengthIndicator.outerWidth(),
23149          actualWidth = maxLengthIndicator.width(),
23150          actualHeight = maxLengthIndicator.height();
23151
23152        // get the right position if the indicator is appended to the input's parent
23153        if (options.appendToParent) {
23154          pos.top -= currentInput.parent().offset().top;
23155          pos.left -= currentInput.parent().offset().left;
23156        }
23157
23158        switch (options.placement) {
23159          case 'bottom':
23160            maxLengthIndicator.css({
23161              top: pos.top + pos.height,
23162              left: pos.left + pos.width / 2 - actualWidth / 2
23163            });
23164            break;
23165          case 'top':
23166            maxLengthIndicator.css({
23167              top: pos.top - actualHeight,
23168              left: pos.left + pos.width / 2 - actualWidth / 2
23169            });
23170            break;
23171          case 'left':
23172            maxLengthIndicator.css({
23173              top: pos.top + pos.height / 2 - actualHeight / 2,
23174              left: pos.left - actualWidth
23175            });
23176            break;
23177          case 'right':
23178            maxLengthIndicator.css({
23179              top: pos.top + pos.height / 2 - actualHeight / 2,
23180              left: pos.left + pos.width
23181            });
23182            break;
23183          case 'bottom-right':
23184            maxLengthIndicator.css({
23185              top: pos.top + pos.height,
23186              left: pos.left + pos.width
23187            });
23188            break;
23189          case 'top-right':
23190            maxLengthIndicator.css({
23191              top: pos.top - actualHeight,
23192              left: pos.left + inputOuter
23193            });
23194            break;
23195          case 'top-left':
23196            maxLengthIndicator.css({
23197              top: pos.top - actualHeight,
23198              left: pos.left - outerWidth
23199            });
23200            break;
23201          case 'bottom-left':
23202            maxLengthIndicator.css({
23203              top: pos.top + currentInput.outerHeight(),
23204              left: pos.left - outerWidth
23205            });
23206            break;
23207          case 'centered-right':
23208            maxLengthIndicator.css({
23209              top: pos.top + (actualHeight / 2),
23210              left: pos.left + inputOuter - outerWidth - 3
23211            });
23212            break;
23213
23214          // Some more options for placements
23215          case 'bottom-right-inside':
23216            maxLengthIndicator.css({
23217              top: pos.top + pos.height,
23218              left: pos.left + pos.width - outerWidth
23219            });
23220            break;
23221          case 'top-right-inside':
23222            maxLengthIndicator.css({
23223              top: pos.top - actualHeight,
23224              left: pos.left + inputOuter - outerWidth
23225            });
23226            break;
23227          case 'top-left-inside':
23228            maxLengthIndicator.css({
23229              top: pos.top - actualHeight,
23230              left: pos.left
23231            });
23232            break;
23233          case 'bottom-left-inside':
23234            maxLengthIndicator.css({
23235              top: pos.top + currentInput.outerHeight(),
23236              left: pos.left
23237            });
23238            break;
23239        }
23240      }
23241
23242      /**
23243       * This function returns true if the indicator position needs to
23244       * be recalculated when the currentInput changes
23245       *
23246       * @return {boolean}
23247       *
23248       */
23249      function isPlacementMutable() {
23250        return options.placement === 'bottom-right-inside' || options.placement === 'top-right-inside' || typeof options.placement === 'function' || (options.message && typeof options.message === 'function');
23251      }
23252
23253      /**
23254       * This function retrieves the maximum length of currentInput
23255       *
23256       * @param currentInput
23257       * @return {number}
23258       *
23259       */
23260      function getMaxLength(currentInput) {
23261        var max = currentInput.attr('maxlength') || options.customMaxAttribute;
23262
23263        if (options.customMaxAttribute && !options.allowOverMax) {
23264          var custom = currentInput.attr(options.customMaxAttribute);
23265          if (!max || custom < max) {
23266            max = custom;
23267          }
23268        }
23269
23270        if (!max) {
23271          max = currentInput.attr('size');
23272        }
23273        return max;
23274      }
23275
23276      return this.each(function () {
23277
23278        var currentInput = $(this),
23279          maxLengthCurrentInput,
23280          maxLengthIndicator;
23281
23282        $(window).resize(function () {
23283          if (maxLengthIndicator) {
23284            place(currentInput, maxLengthIndicator);
23285          }
23286        });
23287
23288        function firstInit() {
23289          var maxlengthContent = updateMaxLengthHTML(currentInput.val(), maxLengthCurrentInput, '0');
23290          maxLengthCurrentInput = getMaxLength(currentInput);
23291
23292          if (!maxLengthIndicator) {
23293            maxLengthIndicator = $('<span class="bootstrap-maxlength"></span>').css({
23294              display: 'none',
23295              position: 'absolute',
23296              whiteSpace: 'nowrap',
23297              zIndex: options.zIndex
23298            }).html(maxlengthContent);
23299          }
23300
23301          // We need to detect resizes if we are dealing with a textarea:
23302          if (currentInput.is('textarea')) {
23303            currentInput.data('maxlenghtsizex', currentInput.outerWidth());
23304            currentInput.data('maxlenghtsizey', currentInput.outerHeight());
23305
23306            currentInput.mouseup(function () {
23307              if (currentInput.outerWidth() !== currentInput.data('maxlenghtsizex') || currentInput.outerHeight() !== currentInput.data('maxlenghtsizey')) {
23308                place(currentInput, maxLengthIndicator);
23309              }
23310
23311              currentInput.data('maxlenghtsizex', currentInput.outerWidth());
23312              currentInput.data('maxlenghtsizey', currentInput.outerHeight());
23313            });
23314          }
23315
23316          if (options.appendToParent) {
23317            currentInput.parent().append(maxLengthIndicator);
23318            currentInput.parent().css('position', 'relative');
23319          } else {
23320            documentBody.append(maxLengthIndicator);
23321          }
23322
23323          var remaining = remainingChars(currentInput, getMaxLength(currentInput));
23324          manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator);
23325          place(currentInput, maxLengthIndicator);
23326        }
23327
23328        if (options.showOnReady) {
23329          currentInput.ready(function () {
23330            firstInit();
23331          });
23332        } else {
23333          currentInput.focus(function () {
23334            firstInit();
23335          });
23336        }
23337
23338        currentInput.on('maxlength.reposition', function () {
23339          place(currentInput, maxLengthIndicator);
23340        });
23341
23342
23343        currentInput.on('destroyed', function () {
23344          if (maxLengthIndicator) {
23345            maxLengthIndicator.remove();
23346          }
23347        });
23348
23349        currentInput.on('blur', function () {
23350          if (maxLengthIndicator && !options.showOnReady) {
23351            maxLengthIndicator.remove();
23352          }
23353        });
23354
23355        currentInput.on('input', function () {
23356          var maxlength = getMaxLength(currentInput),
23357            remaining = remainingChars(currentInput, maxlength),
23358            output = true;
23359
23360          if (options.validate && remaining < 0) {
23361            truncateChars(currentInput, maxlength);
23362            output = false;
23363          } else {
23364            manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator);
23365          }
23366
23367          // if (isPlacementMutable()) {
23368          //   place(currentInput, maxLengthIndicator);
23369          // }
23370
23371          return output;
23372        });
23373      });
23374    }
23375  });
23376}(jQuery));
23377
23378/***/ }),
23379
vendor: 6,242 bytes, lines 23380-23389
23380/***/ "./node_modules/bootstrap-multiselectsplitter/bootstrap-multiselectsplitter.min.js":
23381/*!*****************************************************************************************!*\
23382  !*** ./node_modules/bootstrap-multiselectsplitter/bootstrap-multiselectsplitter.min.js ***!
23383  \*****************************************************************************************/
23384/***/ (() => {
23385
23386+function(a){"use strict";function c(c){return this.each(function(){var d=a(this),e=d.data("multiselectsplitter"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("multiselectsplitter",e=new b(this,f)),"string"==typeof c&&e[c]())})}var b=function(a,b){this.init("multiselectsplitter",a,b)};b.DEFAULTS={selectSize:null,maxSelectSize:null,clearOnFirstChange:!1,onlySameGroup:!1,groupCounter:!1,maximumSelected:null,afterInitialize:null,maximumAlert:function(a){alert("Only "+a+" values can be selected")},createFirstSelect:function(a,b){return"<option>"+a+"</option>"},createSecondSelect:function(a,b){return"<option>"+a+"</option>"},template:'<div class="row" data-multiselectsplitter-wrapper-selector><div class="col-xs-6 col-sm-6"><select class="form-control" data-multiselectsplitter-firstselect-selector></select></div> <!-- Add the extra clearfix for only the required viewport --><div class="col-xs-6 col-sm-6"><select class="form-control" data-multiselectsplitter-secondselect-selector></select></div></div>'},b.prototype.init=function(c,d,e){var f=this;f.type=c,f.last$ElementSelected=[],f.initialized=!1,f.$element=a(d),f.$element.hide(),f.options=a.extend({},b.DEFAULTS,e),f.$element.after(f.options.template),f.$wrapper=f.$element.next("div[data-multiselectsplitter-wrapper-selector]"),f.$firstSelect=a("select[data-multiselectsplitter-firstselect-selector]",f.$wrapper),f.$secondSelect=a("select[data-multiselectsplitter-secondselect-selector]",f.$wrapper);var g=0,h=0;if(0!=f.$element.find("optgroup").length){f.$element.find("optgroup").each(function(){var b=a(this).attr("label"),c=a(f.options.createFirstSelect(b,f.$element));c.val(b),c.attr("data-current-label",c.text()),f.$firstSelect.append(c);var d=a(this).find("option").length;d>h&&(h=d),g++});var i=Math.max(g,h);i=Math.min(i,10),f.options.selectSize?i=f.options.selectSize:f.options.maxSelectSize&&(i=Math.min(i,f.options.maxSelectSize)),f.$firstSelect.attr("size",i),f.$secondSelect.attr("size",i),f.$element.attr("multiple")&&f.$secondSelect.attr("multiple","multiple"),f.$element.is(":disabled")&&f.disable(),f.$firstSelect.on("change",a.proxy(f.updateParentCategory,f)),f.$secondSelect.on("click change",a.proxy(f.updateChildCategory,f)),f.update=function(){if(!(f.$element.find("option").length<1)){var b,a=f.$element.find("option:selected:first");b=a.length?a.parent().attr("label"):f.$element.find("option:first").parent().attr("label"),f.$firstSelect.find('option[value="'+b+'"]').prop("selected",!0),f.$firstSelect.trigger("change")}},f.update(),f.initialized=!0,f.options.afterInitialize&&f.options.afterInitialize(f.$firstSelect,f.$secondSelect)}},b.prototype.disable=function(){this.$secondSelect.prop("disabled",!0),this.$firstSelect.prop("disabled",!0)},b.prototype.enable=function(){this.$secondSelect.prop("disabled",!1),this.$firstSelect.prop("disabled",!1)},b.prototype.createSecondSelect=function(){var b=this;b.$secondSelect.empty(),a.each(b.$element.find('optgroup[label="'+b.$firstSelect.val()+'"] option'),function(c,d){var e=a(this).val(),f=a(this).text(),g=a(b.options.createSecondSelect(f,b.$firstSelect));g.val(e),a.each(b.$element.find("option:selected"),function(b,c){a(c).val()==e&&g.prop("selected",!0)}),b.$secondSelect.append(g)})},b.prototype.updateParentCategory=function(){var a=this;a.last$ElementSelected=a.$element.find("option:selected"),a.options.clearOnFirstChange&&a.initialized&&a.$element.find("option:selected").prop("selected",!1),a.createSecondSelect(),a.checkSelected(),a.updateCounter()},b.prototype.updateCounter=function(){var b=this;b.$element.attr("multiple")&&b.options.groupCounter&&a.each(b.$firstSelect.find("option"),function(c,d){var e=a(d).val(),f=a(d).data("currentLabel"),g=b.$element.find('optgroup[label="'+e+'"] option:selected').length;g>0&&(f+=" ("+g+")"),a(d).html(f)})},b.prototype.checkSelected=function(){var b=this;if(b.$element.attr("multiple")&&b.options.maximumSelected){var c=0;if(c="function"==typeof b.options.maximumSelected?b.options.maximumSelected(b.$firstSelect,b.$secondSelect):b.options.maximumSelected,!(c<1)){var d=b.$element.find("option:selected");if(d.length>c){b.$firstSelect.find("option:selected").prop("selected",!1),b.$secondSelect.find("option:selected").prop("selected",!1),b.initialized?(b.$element.find("option:selected").prop("selected",!1),b.last$ElementSelected.prop("selected",!0)):a.each(b.$element.find("option:selected"),function(b,d){b>c-1&&a(d).prop("selected",!1)});var e=b.last$ElementSelected.first().parent().attr("label");b.$firstSelect.find('option[value="'+e+'"]').prop("selected",!0),b.createSecondSelect(),b.options.maximumAlert(c)}}}},b.prototype.basicUpdateChildCategory=function(b,c){var d=this;d.last$ElementSelected=d.$element.find("option:selected");var e=d.$secondSelect.val();a.isArray(e)||(e=[e]);var f=d.$firstSelect.val(),g=!1;d.$element.attr("multiple")?d.options.onlySameGroup?a.each(d.$element.find("option:selected"),function(b,c){if(a(c).parent().attr("label")!=f)return g=!0,!1}):c||(g=!0):g=!0,g?d.$element.find("option:selected").prop("selected",!1):a.each(d.$element.find("option:selected"),function(b,c){f==a(c).parent().attr("label")&&a.inArray(a(c).val(),e)==-1&&a(c).prop("selected",!1)}),a.each(e,function(a,b){d.$element.find('option[value="'+b+'"]').prop("selected",!0)}),d.checkSelected(),d.updateCounter(),d.$element.trigger("change")},b.prototype.updateChildCategory=function(b){"change"==b.type?this.timeOut=setTimeout(a.proxy(function(){this.basicUpdateChildCategory(b,b.ctrlKey)},this),10):"click"==b.type&&(clearTimeout(this.timeOut),this.basicUpdateChildCategory(b,b.ctrlKey))},b.prototype.destroy=function(){this.$wrapper.remove(),this.$element.removeData(this.type),this.$element.show()},a.fn.multiselectsplitter=c,a.fn.multiselectsplitter.Constructor=b,a.fn.multiselectsplitter.VERSION="1.0.1"}(jQuery);
23387
23388/***/ }),
23389
vendor: 137,404 bytes, lines 23390-27864
23390/***/ "./node_modules/bootstrap/dist/js/bootstrap.esm.js":
23391/*!*********************************************************!*\
23392  !*** ./node_modules/bootstrap/dist/js/bootstrap.esm.js ***!
23393  \*********************************************************/
23394/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
23395
23396"use strict";
23397__webpack_require__.r(__webpack_exports__);
23398/* harmony export */ __webpack_require__.d(__webpack_exports__, {
23399/* harmony export */   "Alert": () => (/* binding */ Alert),
23400/* harmony export */   "Button": () => (/* binding */ Button),
23401/* harmony export */   "Carousel": () => (/* binding */ Carousel),
23402/* harmony export */   "Collapse": () => (/* binding */ Collapse),
23403/* harmony export */   "Dropdown": () => (/* binding */ Dropdown),
23404/* harmony export */   "Modal": () => (/* binding */ Modal),
23405/* harmony export */   "Offcanvas": () => (/* binding */ Offcanvas),
23406/* harmony export */   "Popover": () => (/* binding */ Popover),
23407/* harmony export */   "ScrollSpy": () => (/* binding */ ScrollSpy),
23408/* harmony export */   "Tab": () => (/* binding */ Tab),
23409/* harmony export */   "Toast": () => (/* binding */ Toast),
23410/* harmony export */   "Tooltip": () => (/* binding */ Tooltip)
23411/* harmony export */ });
23412/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @popperjs/core */ "./node_modules/@popperjs/core/lib/index.js");
23413/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @popperjs/core */ "./node_modules/@popperjs/core/lib/popper.js");
23414/*!
23415  * Bootstrap v5.3.3 (https://getbootstrap.com/)
23416  * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
23417  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
23418  */
23419
23420
23421/**
23422 * --------------------------------------------------------------------------
23423 * Bootstrap dom/data.js
23424 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
23425 * --------------------------------------------------------------------------
23426 */
23427
23428/**
23429 * Constants
23430 */
23431
23432const elementMap = new Map();
23433const Data = {
23434  set(element, key, instance) {
23435    if (!elementMap.has(element)) {
23436      elementMap.set(element, new Map());
23437    }
23438    const instanceMap = elementMap.get(element);
23439
23440    // make it clear we only want one instance per element
23441    // can be removed later when multiple key/instances are fine to be used
23442    if (!instanceMap.has(key) && instanceMap.size !== 0) {
23443      // eslint-disable-next-line no-console
23444      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
23445      return;
23446    }
23447    instanceMap.set(key, instance);
23448  },
23449  get(element, key) {
23450    if (elementMap.has(element)) {
23451      return elementMap.get(element).get(key) || null;
23452    }
23453    return null;
23454  },
23455  remove(element, key) {
23456    if (!elementMap.has(element)) {
23457      return;
23458    }
23459    const instanceMap = elementMap.get(element);
23460    instanceMap.delete(key);
23461
23462    // free up element references if there are no instances left for an element
23463    if (instanceMap.size === 0) {
23464      elementMap.delete(element);
23465    }
23466  }
23467};
23468
23469/**
23470 * --------------------------------------------------------------------------
23471 * Bootstrap util/index.js
23472 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
23473 * --------------------------------------------------------------------------
23474 */
23475
23476const MAX_UID = 1000000;
23477const MILLISECONDS_MULTIPLIER = 1000;
23478const TRANSITION_END = 'transitionend';
23479
23480/**
23481 * Properly escape IDs selectors to handle weird IDs
23482 * @param {string} selector
23483 * @returns {string}
23484 */
23485const parseSelector = selector => {
23486  if (selector && window.CSS && window.CSS.escape) {
23487    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /
23488    selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`);
23489  }
23490  return selector;
23491};
23492
23493// Shout-out Angus Croll (https://goo.gl/pxwQGp)
23494const toType = object => {
23495  if (object === null || object === undefined) {
23496    return `${object}`;
23497  }
23498  return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
23499};
23500
23501/**
23502 * Public Util API
23503 */
23504
23505const getUID = prefix => {
23506  do {
23507    prefix += Math.floor(Math.random() * MAX_UID);
23508  } while (document.getElementById(prefix));
23509  return prefix;
23510};
23511const getTransitionDurationFromElement = element => {
23512  if (!element) {
23513    return 0;
23514  }
23515
23516  // Get transition-duration of the element
23517  let {
23518    transitionDuration,
23519    transitionDelay
23520  } = window.getComputedStyle(element);
23521  const floatTransitionDuration = Number.parseFloat(transitionDuration);
23522  const floatTransitionDelay = Number.parseFloat(transitionDelay);
23523
23524  // Return 0 if element or transition duration is not found
23525  if (!floatTransitionDuration && !floatTransitionDelay) {
23526    return 0;
23527  }
23528
23529  // If multiple durations are defined, take the first
23530  transitionDuration = transitionDuration.split(',')[0];
23531  transitionDelay = transitionDelay.split(',')[0];
23532  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
23533};
23534const triggerTransitionEnd = element => {
23535  element.dispatchEvent(new Event(TRANSITION_END));
23536};
23537const isElement = object => {
23538  if (!object || typeof object !== 'object') {
23539    return false;
23540  }
23541  if (typeof object.jquery !== 'undefined') {
23542    object = object[0];
23543  }
23544  return typeof object.nodeType !== 'undefined';
23545};
23546const getElement = object => {
23547  // it's a jQuery object or a node element
23548  if (isElement(object)) {
23549    return object.jquery ? object[0] : object;
23550  }
23551  if (typeof object === 'string' && object.length > 0) {
23552    return document.querySelector(parseSelector(object));
23553  }
23554  return null;
23555};
23556const isVisible = element => {
23557  if (!isElement(element) || element.getClientRects().length === 0) {
23558    return false;
23559  }
23560  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';
23561  // Handle `details` element as its content may falsie appear visible when it is closed
23562  const closedDetails = element.closest('details:not([open])');
23563  if (!closedDetails) {
23564    return elementIsVisible;
23565  }
23566  if (closedDetails !== element) {
23567    const summary = element.closest('summary');
23568    if (summary && summary.parentNode !== closedDetails) {
23569      return false;
23570    }
23571    if (summary === null) {
23572      return false;
23573    }
23574  }
23575  return elementIsVisible;
23576};
23577const isDisabled = element => {
23578  if (!element || element.nodeType !== Node.ELEMENT_NODE) {
23579    return true;
23580  }
23581  if (element.classList.contains('disabled')) {
23582    return true;
23583  }
23584  if (typeof element.disabled !== 'undefined') {
23585    return element.disabled;
23586  }
23587  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
23588};
23589const findShadowRoot = element => {
23590  if (!document.documentElement.attachShadow) {
23591    return null;
23592  }
23593
23594  // Can find the shadow root otherwise it'll return the document
23595  if (typeof element.getRootNode === 'function') {
23596    const root = element.getRootNode();
23597    return root instanceof ShadowRoot ? root : null;
23598  }
23599  if (element instanceof ShadowRoot) {
23600    return element;
23601  }
23602
23603  // when we don't find a shadow root
23604  if (!element.parentNode) {
23605    return null;
23606  }
23607  return findShadowRoot(element.parentNode);
23608};
23609const noop = () => {};
23610
23611/**
23612 * Trick to restart an element's animation
23613 *
23614 * @param {HTMLElement} element
23615 * @return void
23616 *
23617 * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
23618 */
23619const reflow = element => {
23620  element.offsetHeight; // eslint-disable-line no-unused-expressions
23621};
23622const getjQuery = () => {
23623  if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
23624    return window.jQuery;
23625  }
23626  return null;
23627};
23628const DOMContentLoadedCallbacks = [];
23629const onDOMContentLoaded = callback => {
23630  if (document.readyState === 'loading') {
23631    // add listener on the first call when the document is in loading state
23632    if (!DOMContentLoadedCallbacks.length) {
23633      document.addEventListener('DOMContentLoaded', () => {
23634        for (const callback of DOMContentLoadedCallbacks) {
23635          callback();
23636        }
23637      });
23638    }
23639    DOMContentLoadedCallbacks.push(callback);
23640  } else {
23641    callback();
23642  }
23643};
23644const isRTL = () => document.documentElement.dir === 'rtl';
23645const defineJQueryPlugin = plugin => {
23646  onDOMContentLoaded(() => {
23647    const $ = getjQuery();
23648    /* istanbul ignore if */
23649    if ($) {
23650      const name = plugin.NAME;
23651      const JQUERY_NO_CONFLICT = $.fn[name];
23652      $.fn[name] = plugin.jQueryInterface;
23653      $.fn[name].Constructor = plugin;
23654      $.fn[name].noConflict = () => {
23655        $.fn[name] = JQUERY_NO_CONFLICT;
23656        return plugin.jQueryInterface;
23657      };
23658    }
23659  });
23660};
23661const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {
23662  return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;
23663};
23664const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
23665  if (!waitForTransition) {
23666    execute(callback);
23667    return;
23668  }
23669  const durationPadding = 5;
23670  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
23671  let called = false;
23672  const handler = ({
23673    target
23674  }) => {
23675    if (target !== transitionElement) {
23676      return;
23677    }
23678    called = true;
23679    transitionElement.removeEventListener(TRANSITION_END, handler);
23680    execute(callback);
23681  };
23682  transitionElement.addEventListener(TRANSITION_END, handler);
23683  setTimeout(() => {
23684    if (!called) {
23685      triggerTransitionEnd(transitionElement);
23686    }
23687  }, emulatedDuration);
23688};
23689
23690/**
23691 * Return the previous/next element of a list.
23692 *
23693 * @param {array} list    The list of elements
23694 * @param activeElement   The active element
23695 * @param shouldGetNext   Choose to get next or previous element
23696 * @param isCycleAllowed
23697 * @return {Element|elem} The proper element
23698 */
23699const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
23700  const listLength = list.length;
23701  let index = list.indexOf(activeElement);
23702
23703  // if the element does not exist in the list return an element
23704  // depending on the direction and if cycle is allowed
23705  if (index === -1) {
23706    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
23707  }
23708  index += shouldGetNext ? 1 : -1;
23709  if (isCycleAllowed) {
23710    index = (index + listLength) % listLength;
23711  }
23712  return list[Math.max(0, Math.min(index, listLength - 1))];
23713};
23714
23715/**
23716 * --------------------------------------------------------------------------
23717 * Bootstrap dom/event-handler.js
23718 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
23719 * --------------------------------------------------------------------------
23720 */
23721
23722
23723/**
23724 * Constants
23725 */
23726
23727const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
23728const stripNameRegex = /\..*/;
23729const stripUidRegex = /::\d+$/;
23730const eventRegistry = {}; // Events storage
23731let uidEvent = 1;
23732const customEvents = {
23733  mouseenter: 'mouseover',
23734  mouseleave: 'mouseout'
23735};
23736const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
23737
23738/**
23739 * Private methods
23740 */
23741
23742function makeEventUid(element, uid) {
23743  return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
23744}
23745function getElementEvents(element) {
23746  const uid = makeEventUid(element);
23747  element.uidEvent = uid;
23748  eventRegistry[uid] = eventRegistry[uid] || {};
23749  return eventRegistry[uid];
23750}
23751function bootstrapHandler(element, fn) {
23752  return function handler(event) {
23753    hydrateObj(event, {
23754      delegateTarget: element
23755    });
23756    if (handler.oneOff) {
23757      EventHandler.off(element, event.type, fn);
23758    }
23759    return fn.apply(element, [event]);
23760  };
23761}
23762function bootstrapDelegationHandler(element, selector, fn) {
23763  return function handler(event) {
23764    const domElements = element.querySelectorAll(selector);
23765    for (let {
23766      target
23767    } = event; target && target !== this; target = target.parentNode) {
23768      for (const domElement of domElements) {
23769        if (domElement !== target) {
23770          continue;
23771        }
23772        hydrateObj(event, {
23773          delegateTarget: target
23774        });
23775        if (handler.oneOff) {
23776          EventHandler.off(element, event.type, selector, fn);
23777        }
23778        return fn.apply(target, [event]);
23779      }
23780    }
23781  };
23782}
23783function findHandler(events, callable, delegationSelector = null) {
23784  return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);
23785}
23786function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
23787  const isDelegated = typeof handler === 'string';
23788  // TODO: tooltip passes `false` instead of selector, so we need to check
23789  const callable = isDelegated ? delegationFunction : handler || delegationFunction;
23790  let typeEvent = getTypeEvent(originalTypeEvent);
23791  if (!nativeEvents.has(typeEvent)) {
23792    typeEvent = originalTypeEvent;
23793  }
23794  return [isDelegated, callable, typeEvent];
23795}
23796function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
23797  if (typeof originalTypeEvent !== 'string' || !element) {
23798    return;
23799  }
23800  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
23801
23802  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
23803  // this prevents the handler from being dispatched the same way as mouseover or mouseout does
23804  if (originalTypeEvent in customEvents) {
23805    const wrapFunction = fn => {
23806      return function (event) {
23807        if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
23808          return fn.call(this, event);
23809        }
23810      };
23811    };
23812    callable = wrapFunction(callable);
23813  }
23814  const events = getElementEvents(element);
23815  const handlers = events[typeEvent] || (events[typeEvent] = {});
23816  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
23817  if (previousFunction) {
23818    previousFunction.oneOff = previousFunction.oneOff && oneOff;
23819    return;
23820  }
23821  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));
23822  const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
23823  fn.delegationSelector = isDelegated ? handler : null;
23824  fn.callable = callable;
23825  fn.oneOff = oneOff;
23826  fn.uidEvent = uid;
23827  handlers[uid] = fn;
23828  element.addEventListener(typeEvent, fn, isDelegated);
23829}
23830function removeHandler(element, events, typeEvent, handler, delegationSelector) {
23831  const fn = findHandler(events[typeEvent], handler, delegationSelector);
23832  if (!fn) {
23833    return;
23834  }
23835  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
23836  delete events[typeEvent][fn.uidEvent];
23837}
23838function removeNamespacedHandlers(element, events, typeEvent, namespace) {
23839  const storeElementEvent = events[typeEvent] || {};
23840  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {
23841    if (handlerKey.includes(namespace)) {
23842      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
23843    }
23844  }
23845}
23846function getTypeEvent(event) {
23847  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
23848  event = event.replace(stripNameRegex, '');
23849  return customEvents[event] || event;
23850}
23851const EventHandler = {
23852  on(element, event, handler, delegationFunction) {
23853    addHandler(element, event, handler, delegationFunction, false);
23854  },
23855  one(element, event, handler, delegationFunction) {
23856    addHandler(element, event, handler, delegationFunction, true);
23857  },
23858  off(element, originalTypeEvent, handler, delegationFunction) {
23859    if (typeof originalTypeEvent !== 'string' || !element) {
23860      return;
23861    }
23862    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
23863    const inNamespace = typeEvent !== originalTypeEvent;
23864    const events = getElementEvents(element);
23865    const storeElementEvent = events[typeEvent] || {};
23866    const isNamespace = originalTypeEvent.startsWith('.');
23867    if (typeof callable !== 'undefined') {
23868      // Simplest case: handler is passed, remove that listener ONLY.
23869      if (!Object.keys(storeElementEvent).length) {
23870        return;
23871      }
23872      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
23873      return;
23874    }
23875    if (isNamespace) {
23876      for (const elementEvent of Object.keys(events)) {
23877        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
23878      }
23879    }
23880    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {
23881      const handlerKey = keyHandlers.replace(stripUidRegex, '');
23882      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
23883        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
23884      }
23885    }
23886  },
23887  trigger(element, event, args) {
23888    if (typeof event !== 'string' || !element) {
23889      return null;
23890    }
23891    const $ = getjQuery();
23892    const typeEvent = getTypeEvent(event);
23893    const inNamespace = event !== typeEvent;
23894    let jQueryEvent = null;
23895    let bubbles = true;
23896    let nativeDispatch = true;
23897    let defaultPrevented = false;
23898    if (inNamespace && $) {
23899      jQueryEvent = $.Event(event, args);
23900      $(element).trigger(jQueryEvent);
23901      bubbles = !jQueryEvent.isPropagationStopped();
23902      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
23903      defaultPrevented = jQueryEvent.isDefaultPrevented();
23904    }
23905    const evt = hydrateObj(new Event(event, {
23906      bubbles,
23907      cancelable: true
23908    }), args);
23909    if (defaultPrevented) {
23910      evt.preventDefault();
23911    }
23912    if (nativeDispatch) {
23913      element.dispatchEvent(evt);
23914    }
23915    if (evt.defaultPrevented && jQueryEvent) {
23916      jQueryEvent.preventDefault();
23917    }
23918    return evt;
23919  }
23920};
23921function hydrateObj(obj, meta = {}) {
23922  for (const [key, value] of Object.entries(meta)) {
23923    try {
23924      obj[key] = value;
23925    } catch (_unused) {
23926      Object.defineProperty(obj, key, {
23927        configurable: true,
23928        get() {
23929          return value;
23930        }
23931      });
23932    }
23933  }
23934  return obj;
23935}
23936
23937/**
23938 * --------------------------------------------------------------------------
23939 * Bootstrap dom/manipulator.js
23940 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
23941 * --------------------------------------------------------------------------
23942 */
23943
23944function normalizeData(value) {
23945  if (value === 'true') {
23946    return true;
23947  }
23948  if (value === 'false') {
23949    return false;
23950  }
23951  if (value === Number(value).toString()) {
23952    return Number(value);
23953  }
23954  if (value === '' || value === 'null') {
23955    return null;
23956  }
23957  if (typeof value !== 'string') {
23958    return value;
23959  }
23960  try {
23961    return JSON.parse(decodeURIComponent(value));
23962  } catch (_unused) {
23963    return value;
23964  }
23965}
23966function normalizeDataKey(key) {
23967  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
23968}
23969const Manipulator = {
23970  setDataAttribute(element, key, value) {
23971    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
23972  },
23973  removeDataAttribute(element, key) {
23974    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
23975  },
23976  getDataAttributes(element) {
23977    if (!element) {
23978      return {};
23979    }
23980    const attributes = {};
23981    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));
23982    for (const key of bsKeys) {
23983      let pureKey = key.replace(/^bs/, '');
23984      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
23985      attributes[pureKey] = normalizeData(element.dataset[key]);
23986    }
23987    return attributes;
23988  },
23989  getDataAttribute(element, key) {
23990    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
23991  }
23992};
23993
23994/**
23995 * --------------------------------------------------------------------------
23996 * Bootstrap util/config.js
23997 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
23998 * --------------------------------------------------------------------------
23999 */
24000
24001
24002/**
24003 * Class definition
24004 */
24005
24006class Config {
24007  // Getters
24008  static get Default() {
24009    return {};
24010  }
24011  static get DefaultType() {
24012    return {};
24013  }
24014  static get NAME() {
24015    throw new Error('You have to implement the static method "NAME", for each component!');
24016  }
24017  _getConfig(config) {
24018    config = this._mergeConfigObj(config);
24019    config = this._configAfterMerge(config);
24020    this._typeCheckConfig(config);
24021    return config;
24022  }
24023  _configAfterMerge(config) {
24024    return config;
24025  }
24026  _mergeConfigObj(config, element) {
24027    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse
24028
24029    return {
24030      ...this.constructor.Default,
24031      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),
24032      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),
24033      ...(typeof config === 'object' ? config : {})
24034    };
24035  }
24036  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
24037    for (const [property, expectedTypes] of Object.entries(configTypes)) {
24038      const value = config[property];
24039      const valueType = isElement(value) ? 'element' : toType(value);
24040      if (!new RegExp(expectedTypes).test(valueType)) {
24041        throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
24042      }
24043    }
24044  }
24045}
24046
24047/**
24048 * --------------------------------------------------------------------------
24049 * Bootstrap base-component.js
24050 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
24051 * --------------------------------------------------------------------------
24052 */
24053
24054
24055/**
24056 * Constants
24057 */
24058
24059const VERSION = '5.3.3';
24060
24061/**
24062 * Class definition
24063 */
24064
24065class BaseComponent extends Config {
24066  constructor(element, config) {
24067    super();
24068    element = getElement(element);
24069    if (!element) {
24070      return;
24071    }
24072    this._element = element;
24073    this._config = this._getConfig(config);
24074    Data.set(this._element, this.constructor.DATA_KEY, this);
24075  }
24076
24077  // Public
24078  dispose() {
24079    Data.remove(this._element, this.constructor.DATA_KEY);
24080    EventHandler.off(this._element, this.constructor.EVENT_KEY);
24081    for (const propertyName of Object.getOwnPropertyNames(this)) {
24082      this[propertyName] = null;
24083    }
24084  }
24085  _queueCallback(callback, element, isAnimated = true) {
24086    executeAfterTransition(callback, element, isAnimated);
24087  }
24088  _getConfig(config) {
24089    config = this._mergeConfigObj(config, this._element);
24090    config = this._configAfterMerge(config);
24091    this._typeCheckConfig(config);
24092    return config;
24093  }
24094
24095  // Static
24096  static getInstance(element) {
24097    return Data.get(getElement(element), this.DATA_KEY);
24098  }
24099  static getOrCreateInstance(element, config = {}) {
24100    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
24101  }
24102  static get VERSION() {
24103    return VERSION;
24104  }
24105  static get DATA_KEY() {
24106    return `bs.${this.NAME}`;
24107  }
24108  static get EVENT_KEY() {
24109    return `.${this.DATA_KEY}`;
24110  }
24111  static eventName(name) {
24112    return `${name}${this.EVENT_KEY}`;
24113  }
24114}
24115
24116/**
24117 * --------------------------------------------------------------------------
24118 * Bootstrap dom/selector-engine.js
24119 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
24120 * --------------------------------------------------------------------------
24121 */
24122
24123const getSelector = element => {
24124  let selector = element.getAttribute('data-bs-target');
24125  if (!selector || selector === '#') {
24126    let hrefAttribute = element.getAttribute('href');
24127
24128    // The only valid content that could double as a selector are IDs or classes,
24129    // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
24130    // `document.querySelector` will rightfully complain it is invalid.
24131    // See https://github.com/twbs/bootstrap/issues/32273
24132    if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {
24133      return null;
24134    }
24135
24136    // Just in case some CMS puts out a full URL with the anchor appended
24137    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {
24138      hrefAttribute = `#${hrefAttribute.split('#')[1]}`;
24139    }
24140    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;
24141  }
24142  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null;
24143};
24144const SelectorEngine = {
24145  find(selector, element = document.documentElement) {
24146    return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
24147  },
24148  findOne(selector, element = document.documentElement) {
24149    return Element.prototype.querySelector.call(element, selector);
24150  },
24151  children(element, selector) {
24152    return [].concat(...element.children).filter(child => child.matches(selector));
24153  },
24154  parents(element, selector) {
24155    const parents = [];
24156    let ancestor = element.parentNode.closest(selector);
24157    while (ancestor) {
24158      parents.push(ancestor);
24159      ancestor = ancestor.parentNode.closest(selector);
24160    }
24161    return parents;
24162  },
24163  prev(element, selector) {
24164    let previous = element.previousElementSibling;
24165    while (previous) {
24166      if (previous.matches(selector)) {
24167        return [previous];
24168      }
24169      previous = previous.previousElementSibling;
24170    }
24171    return [];
24172  },
24173  // TODO: this is now unused; remove later along with prev()
24174  next(element, selector) {
24175    let next = element.nextElementSibling;
24176    while (next) {
24177      if (next.matches(selector)) {
24178        return [next];
24179      }
24180      next = next.nextElementSibling;
24181    }
24182    return [];
24183  },
24184  focusableChildren(element) {
24185    const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(',');
24186    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));
24187  },
24188  getSelectorFromElement(element) {
24189    const selector = getSelector(element);
24190    if (selector) {
24191      return SelectorEngine.findOne(selector) ? selector : null;
24192    }
24193    return null;
24194  },
24195  getElementFromSelector(element) {
24196    const selector = getSelector(element);
24197    return selector ? SelectorEngine.findOne(selector) : null;
24198  },
24199  getMultipleElementsFromSelector(element) {
24200    const selector = getSelector(element);
24201    return selector ? SelectorEngine.find(selector) : [];
24202  }
24203};
24204
24205/**
24206 * --------------------------------------------------------------------------
24207 * Bootstrap util/component-functions.js
24208 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
24209 * --------------------------------------------------------------------------
24210 */
24211
24212const enableDismissTrigger = (component, method = 'hide') => {
24213  const clickEvent = `click.dismiss${component.EVENT_KEY}`;
24214  const name = component.NAME;
24215  EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
24216    if (['A', 'AREA'].includes(this.tagName)) {
24217      event.preventDefault();
24218    }
24219    if (isDisabled(this)) {
24220      return;
24221    }
24222    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);
24223    const instance = component.getOrCreateInstance(target);
24224
24225    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
24226    instance[method]();
24227  });
24228};
24229
24230/**
24231 * --------------------------------------------------------------------------
24232 * Bootstrap alert.js
24233 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
24234 * --------------------------------------------------------------------------
24235 */
24236
24237
24238/**
24239 * Constants
24240 */
24241
24242const NAME$f = 'alert';
24243const DATA_KEY$a = 'bs.alert';
24244const EVENT_KEY$b = `.${DATA_KEY$a}`;
24245const EVENT_CLOSE = `close${EVENT_KEY$b}`;
24246const EVENT_CLOSED = `closed${EVENT_KEY$b}`;
24247const CLASS_NAME_FADE$5 = 'fade';
24248const CLASS_NAME_SHOW$8 = 'show';
24249
24250/**
24251 * Class definition
24252 */
24253
24254class Alert extends BaseComponent {
24255  // Getters
24256  static get NAME() {
24257    return NAME$f;
24258  }
24259
24260  // Public
24261  close() {
24262    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
24263    if (closeEvent.defaultPrevented) {
24264      return;
24265    }
24266    this._element.classList.remove(CLASS_NAME_SHOW$8);
24267    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
24268    this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
24269  }
24270
24271  // Private
24272  _destroyElement() {
24273    this._element.remove();
24274    EventHandler.trigger(this._element, EVENT_CLOSED);
24275    this.dispose();
24276  }
24277
24278  // Static
24279  static jQueryInterface(config) {
24280    return this.each(function () {
24281      const data = Alert.getOrCreateInstance(this);
24282      if (typeof config !== 'string') {
24283        return;
24284      }
24285      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
24286        throw new TypeError(`No method named "${config}"`);
24287      }
24288      data[config](this);
24289    });
24290  }
24291}
24292
24293/**
24294 * Data API implementation
24295 */
24296
24297enableDismissTrigger(Alert, 'close');
24298
24299/**
24300 * jQuery
24301 */
24302
24303defineJQueryPlugin(Alert);
24304
24305/**
24306 * --------------------------------------------------------------------------
24307 * Bootstrap button.js
24308 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
24309 * --------------------------------------------------------------------------
24310 */
24311
24312
24313/**
24314 * Constants
24315 */
24316
24317const NAME$e = 'button';
24318const DATA_KEY$9 = 'bs.button';
24319const EVENT_KEY$a = `.${DATA_KEY$9}`;
24320const DATA_API_KEY$6 = '.data-api';
24321const CLASS_NAME_ACTIVE$3 = 'active';
24322const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
24323const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
24324
24325/**
24326 * Class definition
24327 */
24328
24329class Button extends BaseComponent {
24330  // Getters
24331  static get NAME() {
24332    return NAME$e;
24333  }
24334
24335  // Public
24336  toggle() {
24337    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
24338    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
24339  }
24340
24341  // Static
24342  static jQueryInterface(config) {
24343    return this.each(function () {
24344      const data = Button.getOrCreateInstance(this);
24345      if (config === 'toggle') {
24346        data[config]();
24347      }
24348    });
24349  }
24350}
24351
24352/**
24353 * Data API implementation
24354 */
24355
24356EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {
24357  event.preventDefault();
24358  const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
24359  const data = Button.getOrCreateInstance(button);
24360  data.toggle();
24361});
24362
24363/**
24364 * jQuery
24365 */
24366
24367defineJQueryPlugin(Button);
24368
24369/**
24370 * --------------------------------------------------------------------------
24371 * Bootstrap util/swipe.js
24372 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
24373 * --------------------------------------------------------------------------
24374 */
24375
24376
24377/**
24378 * Constants
24379 */
24380
24381const NAME$d = 'swipe';
24382const EVENT_KEY$9 = '.bs.swipe';
24383const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
24384const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
24385const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
24386const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
24387const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
24388const POINTER_TYPE_TOUCH = 'touch';
24389const POINTER_TYPE_PEN = 'pen';
24390const CLASS_NAME_POINTER_EVENT = 'pointer-event';
24391const SWIPE_THRESHOLD = 40;
24392const Default$c = {
24393  endCallback: null,
24394  leftCallback: null,
24395  rightCallback: null
24396};
24397const DefaultType$c = {
24398  endCallback: '(function|null)',
24399  leftCallback: '(function|null)',
24400  rightCallback: '(function|null)'
24401};
24402
24403/**
24404 * Class definition
24405 */
24406
24407class Swipe extends Config {
24408  constructor(element, config) {
24409    super();
24410    this._element = element;
24411    if (!element || !Swipe.isSupported()) {
24412      return;
24413    }
24414    this._config = this._getConfig(config);
24415    this._deltaX = 0;
24416    this._supportPointerEvents = Boolean(window.PointerEvent);
24417    this._initEvents();
24418  }
24419
24420  // Getters
24421  static get Default() {
24422    return Default$c;
24423  }
24424  static get DefaultType() {
24425    return DefaultType$c;
24426  }
24427  static get NAME() {
24428    return NAME$d;
24429  }
24430
24431  // Public
24432  dispose() {
24433    EventHandler.off(this._element, EVENT_KEY$9);
24434  }
24435
24436  // Private
24437  _start(event) {
24438    if (!this._supportPointerEvents) {
24439      this._deltaX = event.touches[0].clientX;
24440      return;
24441    }
24442    if (this._eventIsPointerPenTouch(event)) {
24443      this._deltaX = event.clientX;
24444    }
24445  }
24446  _end(event) {
24447    if (this._eventIsPointerPenTouch(event)) {
24448      this._deltaX = event.clientX - this._deltaX;
24449    }
24450    this._handleSwipe();
24451    execute(this._config.endCallback);
24452  }
24453  _move(event) {
24454    this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;
24455  }
24456  _handleSwipe() {
24457    const absDeltaX = Math.abs(this._deltaX);
24458    if (absDeltaX <= SWIPE_THRESHOLD) {
24459      return;
24460    }
24461    const direction = absDeltaX / this._deltaX;
24462    this._deltaX = 0;
24463    if (!direction) {
24464      return;
24465    }
24466    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);
24467  }
24468  _initEvents() {
24469    if (this._supportPointerEvents) {
24470      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));
24471      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));
24472      this._element.classList.add(CLASS_NAME_POINTER_EVENT);
24473    } else {
24474      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));
24475      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));
24476      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));
24477    }
24478  }
24479  _eventIsPointerPenTouch(event) {
24480    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
24481  }
24482
24483  // Static
24484  static isSupported() {
24485    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
24486  }
24487}
24488
24489/**
24490 * --------------------------------------------------------------------------
24491 * Bootstrap carousel.js
24492 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
24493 * --------------------------------------------------------------------------
24494 */
24495
24496
24497/**
24498 * Constants
24499 */
24500
24501const NAME$c = 'carousel';
24502const DATA_KEY$8 = 'bs.carousel';
24503const EVENT_KEY$8 = `.${DATA_KEY$8}`;
24504const DATA_API_KEY$5 = '.data-api';
24505const ARROW_LEFT_KEY$1 = 'ArrowLeft';
24506const ARROW_RIGHT_KEY$1 = 'ArrowRight';
24507const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
24508
24509const ORDER_NEXT = 'next';
24510const ORDER_PREV = 'prev';
24511const DIRECTION_LEFT = 'left';
24512const DIRECTION_RIGHT = 'right';
24513const EVENT_SLIDE = `slide${EVENT_KEY$8}`;
24514const EVENT_SLID = `slid${EVENT_KEY$8}`;
24515const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;
24516const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;
24517const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;
24518const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;
24519const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;
24520const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;
24521const CLASS_NAME_CAROUSEL = 'carousel';
24522const CLASS_NAME_ACTIVE$2 = 'active';
24523const CLASS_NAME_SLIDE = 'slide';
24524const CLASS_NAME_END = 'carousel-item-end';
24525const CLASS_NAME_START = 'carousel-item-start';
24526const CLASS_NAME_NEXT = 'carousel-item-next';
24527const CLASS_NAME_PREV = 'carousel-item-prev';
24528const SELECTOR_ACTIVE = '.active';
24529const SELECTOR_ITEM = '.carousel-item';
24530const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
24531const SELECTOR_ITEM_IMG = '.carousel-item img';
24532const SELECTOR_INDICATORS = '.carousel-indicators';
24533const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
24534const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
24535const KEY_TO_DIRECTION = {
24536  [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,
24537  [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT
24538};
24539const Default$b = {
24540  interval: 5000,
24541  keyboard: true,
24542  pause: 'hover',
24543  ride: false,
24544  touch: true,
24545  wrap: true
24546};
24547const DefaultType$b = {
24548  interval: '(number|boolean)',
24549  // TODO:v6 remove boolean support
24550  keyboard: 'boolean',
24551  pause: '(string|boolean)',
24552  ride: '(boolean|string)',
24553  touch: 'boolean',
24554  wrap: 'boolean'
24555};
24556
24557/**
24558 * Class definition
24559 */
24560
24561class Carousel extends BaseComponent {
24562  constructor(element, config) {
24563    super(element, config);
24564    this._interval = null;
24565    this._activeElement = null;
24566    this._isSliding = false;
24567    this.touchTimeout = null;
24568    this._swipeHelper = null;
24569    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
24570    this._addEventListeners();
24571    if (this._config.ride === CLASS_NAME_CAROUSEL) {
24572      this.cycle();
24573    }
24574  }
24575
24576  // Getters
24577  static get Default() {
24578    return Default$b;
24579  }
24580  static get DefaultType() {
24581    return DefaultType$b;
24582  }
24583  static get NAME() {
24584    return NAME$c;
24585  }
24586
24587  // Public
24588  next() {
24589    this._slide(ORDER_NEXT);
24590  }
24591  nextWhenVisible() {
24592    // FIXME TODO use `document.visibilityState`
24593    // Don't call next when the page isn't visible
24594    // or the carousel or its parent isn't visible
24595    if (!document.hidden && isVisible(this._element)) {
24596      this.next();
24597    }
24598  }
24599  prev() {
24600    this._slide(ORDER_PREV);
24601  }
24602  pause() {
24603    if (this._isSliding) {
24604      triggerTransitionEnd(this._element);
24605    }
24606    this._clearInterval();
24607  }
24608  cycle() {
24609    this._clearInterval();
24610    this._updateInterval();
24611    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
24612  }
24613  _maybeEnableCycle() {
24614    if (!this._config.ride) {
24615      return;
24616    }
24617    if (this._isSliding) {
24618      EventHandler.one(this._element, EVENT_SLID, () => this.cycle());
24619      return;
24620    }
24621    this.cycle();
24622  }
24623  to(index) {
24624    const items = this._getItems();
24625    if (index > items.length - 1 || index < 0) {
24626      return;
24627    }
24628    if (this._isSliding) {
24629      EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
24630      return;
24631    }
24632    const activeIndex = this._getItemIndex(this._getActive());
24633    if (activeIndex === index) {
24634      return;
24635    }
24636    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
24637    this._slide(order, items[index]);
24638  }
24639  dispose() {
24640    if (this._swipeHelper) {
24641      this._swipeHelper.dispose();
24642    }
24643    super.dispose();
24644  }
24645
24646  // Private
24647  _configAfterMerge(config) {
24648    config.defaultInterval = config.interval;
24649    return config;
24650  }
24651  _addEventListeners() {
24652    if (this._config.keyboard) {
24653      EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));
24654    }
24655    if (this._config.pause === 'hover') {
24656      EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());
24657      EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());
24658    }
24659    if (this._config.touch && Swipe.isSupported()) {
24660      this._addTouchEventListeners();
24661    }
24662  }
24663  _addTouchEventListeners() {
24664    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {
24665      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());
24666    }
24667    const endCallBack = () => {
24668      if (this._config.pause !== 'hover') {
24669        return;
24670      }
24671
24672      // If it's a touch-enabled device, mouseenter/leave are fired as
24673      // part of the mouse compatibility events on first tap - the carousel
24674      // would stop cycling until user tapped out of it;
24675      // here, we listen for touchend, explicitly pause the carousel
24676      // (as if it's the second time we tap on it, mouseenter compat event
24677      // is NOT fired) and after a timeout (to allow for mouse compatibility
24678      // events to fire) we explicitly restart cycling
24679
24680      this.pause();
24681      if (this.touchTimeout) {
24682        clearTimeout(this.touchTimeout);
24683      }
24684      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
24685    };
24686    const swipeConfig = {
24687      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
24688      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
24689      endCallback: endCallBack
24690    };
24691    this._swipeHelper = new Swipe(this._element, swipeConfig);
24692  }
24693  _keydown(event) {
24694    if (/input|textarea/i.test(event.target.tagName)) {
24695      return;
24696    }
24697    const direction = KEY_TO_DIRECTION[event.key];
24698    if (direction) {
24699      event.preventDefault();
24700      this._slide(this._directionToOrder(direction));
24701    }
24702  }
24703  _getItemIndex(element) {
24704    return this._getItems().indexOf(element);
24705  }
24706  _setActiveIndicatorElement(index) {
24707    if (!this._indicatorsElement) {
24708      return;
24709    }
24710    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
24711    activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
24712    activeIndicator.removeAttribute('aria-current');
24713    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement);
24714    if (newActiveIndicator) {
24715      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);
24716      newActiveIndicator.setAttribute('aria-current', 'true');
24717    }
24718  }
24719  _updateInterval() {
24720    const element = this._activeElement || this._getActive();
24721    if (!element) {
24722      return;
24723    }
24724    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
24725    this._config.interval = elementInterval || this._config.defaultInterval;
24726  }
24727  _slide(order, element = null) {
24728    if (this._isSliding) {
24729      return;
24730    }
24731    const activeElement = this._getActive();
24732    const isNext = order === ORDER_NEXT;
24733    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
24734    if (nextElement === activeElement) {
24735      return;
24736    }
24737    const nextElementIndex = this._getItemIndex(nextElement);
24738    const triggerEvent = eventName => {
24739      return EventHandler.trigger(this._element, eventName, {
24740        relatedTarget: nextElement,
24741        direction: this._orderToDirection(order),
24742        from: this._getItemIndex(activeElement),
24743        to: nextElementIndex
24744      });
24745    };
24746    const slideEvent = triggerEvent(EVENT_SLIDE);
24747    if (slideEvent.defaultPrevented) {
24748      return;
24749    }
24750    if (!activeElement || !nextElement) {
24751      // Some weirdness is happening, so we bail
24752      // TODO: change tests that use empty divs to avoid this check
24753      return;
24754    }
24755    const isCycling = Boolean(this._interval);
24756    this.pause();
24757    this._isSliding = true;
24758    this._setActiveIndicatorElement(nextElementIndex);
24759    this._activeElement = nextElement;
24760    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
24761    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
24762    nextElement.classList.add(orderClassName);
24763    reflow(nextElement);
24764    activeElement.classList.add(directionalClassName);
24765    nextElement.classList.add(directionalClassName);
24766    const completeCallBack = () => {
24767      nextElement.classList.remove(directionalClassName, orderClassName);
24768      nextElement.classList.add(CLASS_NAME_ACTIVE$2);
24769      activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
24770      this._isSliding = false;
24771      triggerEvent(EVENT_SLID);
24772    };
24773    this._queueCallback(completeCallBack, activeElement, this._isAnimated());
24774    if (isCycling) {
24775      this.cycle();
24776    }
24777  }
24778  _isAnimated() {
24779    return this._element.classList.contains(CLASS_NAME_SLIDE);
24780  }
24781  _getActive() {
24782    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
24783  }
24784  _getItems() {
24785    return SelectorEngine.find(SELECTOR_ITEM, this._element);
24786  }
24787  _clearInterval() {
24788    if (this._interval) {
24789      clearInterval(this._interval);
24790      this._interval = null;
24791    }
24792  }
24793  _directionToOrder(direction) {
24794    if (isRTL()) {
24795      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
24796    }
24797    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
24798  }
24799  _orderToDirection(order) {
24800    if (isRTL()) {
24801      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
24802    }
24803    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
24804  }
24805
24806  // Static
24807  static jQueryInterface(config) {
24808    return this.each(function () {
24809      const data = Carousel.getOrCreateInstance(this, config);
24810      if (typeof config === 'number') {
24811        data.to(config);
24812        return;
24813      }
24814      if (typeof config === 'string') {
24815        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
24816          throw new TypeError(`No method named "${config}"`);
24817        }
24818        data[config]();
24819      }
24820    });
24821  }
24822}
24823
24824/**
24825 * Data API implementation
24826 */
24827
24828EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {
24829  const target = SelectorEngine.getElementFromSelector(this);
24830  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
24831    return;
24832  }
24833  event.preventDefault();
24834  const carousel = Carousel.getOrCreateInstance(target);
24835  const slideIndex = this.getAttribute('data-bs-slide-to');
24836  if (slideIndex) {
24837    carousel.to(slideIndex);
24838    carousel._maybeEnableCycle();
24839    return;
24840  }
24841  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {
24842    carousel.next();
24843    carousel._maybeEnableCycle();
24844    return;
24845  }
24846  carousel.prev();
24847  carousel._maybeEnableCycle();
24848});
24849EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
24850  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
24851  for (const carousel of carousels) {
24852    Carousel.getOrCreateInstance(carousel);
24853  }
24854});
24855
24856/**
24857 * jQuery
24858 */
24859
24860defineJQueryPlugin(Carousel);
24861
24862/**
24863 * --------------------------------------------------------------------------
24864 * Bootstrap collapse.js
24865 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
24866 * --------------------------------------------------------------------------
24867 */
24868
24869
24870/**
24871 * Constants
24872 */
24873
24874const NAME$b = 'collapse';
24875const DATA_KEY$7 = 'bs.collapse';
24876const EVENT_KEY$7 = `.${DATA_KEY$7}`;
24877const DATA_API_KEY$4 = '.data-api';
24878const EVENT_SHOW$6 = `show${EVENT_KEY$7}`;
24879const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;
24880const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;
24881const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;
24882const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;
24883const CLASS_NAME_SHOW$7 = 'show';
24884const CLASS_NAME_COLLAPSE = 'collapse';
24885const CLASS_NAME_COLLAPSING = 'collapsing';
24886const CLASS_NAME_COLLAPSED = 'collapsed';
24887const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
24888const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
24889const WIDTH = 'width';
24890const HEIGHT = 'height';
24891const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
24892const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
24893const Default$a = {
24894  parent: null,
24895  toggle: true
24896};
24897const DefaultType$a = {
24898  parent: '(null|element)',
24899  toggle: 'boolean'
24900};
24901
24902/**
24903 * Class definition
24904 */
24905
24906class Collapse extends BaseComponent {
24907  constructor(element, config) {
24908    super(element, config);
24909    this._isTransitioning = false;
24910    this._triggerArray = [];
24911    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
24912    for (const elem of toggleList) {
24913      const selector = SelectorEngine.getSelectorFromElement(elem);
24914      const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);
24915      if (selector !== null && filterElement.length) {
24916        this._triggerArray.push(elem);
24917      }
24918    }
24919    this._initializeChildren();
24920    if (!this._config.parent) {
24921      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
24922    }
24923    if (this._config.toggle) {
24924      this.toggle();
24925    }
24926  }
24927
24928  // Getters
24929  static get Default() {
24930    return Default$a;
24931  }
24932  static get DefaultType() {
24933    return DefaultType$a;
24934  }
24935  static get NAME() {
24936    return NAME$b;
24937  }
24938
24939  // Public
24940  toggle() {
24941    if (this._isShown()) {
24942      this.hide();
24943    } else {
24944      this.show();
24945    }
24946  }
24947  show() {
24948    if (this._isTransitioning || this._isShown()) {
24949      return;
24950    }
24951    let activeChildren = [];
24952
24953    // find active children
24954    if (this._config.parent) {
24955      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {
24956        toggle: false
24957      }));
24958    }
24959    if (activeChildren.length && activeChildren[0]._isTransitioning) {
24960      return;
24961    }
24962    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);
24963    if (startEvent.defaultPrevented) {
24964      return;
24965    }
24966    for (const activeInstance of activeChildren) {
24967      activeInstance.hide();
24968    }
24969    const dimension = this._getDimension();
24970    this._element.classList.remove(CLASS_NAME_COLLAPSE);
24971    this._element.classList.add(CLASS_NAME_COLLAPSING);
24972    this._element.style[dimension] = 0;
24973    this._addAriaAndCollapsedClass(this._triggerArray, true);
24974    this._isTransitioning = true;
24975    const complete = () => {
24976      this._isTransitioning = false;
24977      this._element.classList.remove(CLASS_NAME_COLLAPSING);
24978      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
24979      this._element.style[dimension] = '';
24980      EventHandler.trigger(this._element, EVENT_SHOWN$6);
24981    };
24982    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
24983    const scrollSize = `scroll${capitalizedDimension}`;
24984    this._queueCallback(complete, this._element, true);
24985    this._element.style[dimension] = `${this._element[scrollSize]}px`;
24986  }
24987  hide() {
24988    if (this._isTransitioning || !this._isShown()) {
24989      return;
24990    }
24991    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);
24992    if (startEvent.defaultPrevented) {
24993      return;
24994    }
24995    const dimension = this._getDimension();
24996    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
24997    reflow(this._element);
24998    this._element.classList.add(CLASS_NAME_COLLAPSING);
24999    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
25000    for (const trigger of this._triggerArray) {
25001      const element = SelectorEngine.getElementFromSelector(trigger);
25002      if (element && !this._isShown(element)) {
25003        this._addAriaAndCollapsedClass([trigger], false);
25004      }
25005    }
25006    this._isTransitioning = true;
25007    const complete = () => {
25008      this._isTransitioning = false;
25009      this._element.classList.remove(CLASS_NAME_COLLAPSING);
25010      this._element.classList.add(CLASS_NAME_COLLAPSE);
25011      EventHandler.trigger(this._element, EVENT_HIDDEN$6);
25012    };
25013    this._element.style[dimension] = '';
25014    this._queueCallback(complete, this._element, true);
25015  }
25016  _isShown(element = this._element) {
25017    return element.classList.contains(CLASS_NAME_SHOW$7);
25018  }
25019
25020  // Private
25021  _configAfterMerge(config) {
25022    config.toggle = Boolean(config.toggle); // Coerce string values
25023    config.parent = getElement(config.parent);
25024    return config;
25025  }
25026  _getDimension() {
25027    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
25028  }
25029  _initializeChildren() {
25030    if (!this._config.parent) {
25031      return;
25032    }
25033    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);
25034    for (const element of children) {
25035      const selected = SelectorEngine.getElementFromSelector(element);
25036      if (selected) {
25037        this._addAriaAndCollapsedClass([element], this._isShown(selected));
25038      }
25039    }
25040  }
25041  _getFirstLevelChildren(selector) {
25042    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
25043    // remove children if greater depth
25044    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));
25045  }
25046  _addAriaAndCollapsedClass(triggerArray, isOpen) {
25047    if (!triggerArray.length) {
25048      return;
25049    }
25050    for (const element of triggerArray) {
25051      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
25052      element.setAttribute('aria-expanded', isOpen);
25053    }
25054  }
25055
25056  // Static
25057  static jQueryInterface(config) {
25058    const _config = {};
25059    if (typeof config === 'string' && /show|hide/.test(config)) {
25060      _config.toggle = false;
25061    }
25062    return this.each(function () {
25063      const data = Collapse.getOrCreateInstance(this, _config);
25064      if (typeof config === 'string') {
25065        if (typeof data[config] === 'undefined') {
25066          throw new TypeError(`No method named "${config}"`);
25067        }
25068        data[config]();
25069      }
25070    });
25071  }
25072}
25073
25074/**
25075 * Data API implementation
25076 */
25077
25078EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {
25079  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
25080  if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
25081    event.preventDefault();
25082  }
25083  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {
25084    Collapse.getOrCreateInstance(element, {
25085      toggle: false
25086    }).toggle();
25087  }
25088});
25089
25090/**
25091 * jQuery
25092 */
25093
25094defineJQueryPlugin(Collapse);
25095
25096/**
25097 * --------------------------------------------------------------------------
25098 * Bootstrap dropdown.js
25099 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
25100 * --------------------------------------------------------------------------
25101 */
25102
25103
25104/**
25105 * Constants
25106 */
25107
25108const NAME$a = 'dropdown';
25109const DATA_KEY$6 = 'bs.dropdown';
25110const EVENT_KEY$6 = `.${DATA_KEY$6}`;
25111const DATA_API_KEY$3 = '.data-api';
25112const ESCAPE_KEY$2 = 'Escape';
25113const TAB_KEY$1 = 'Tab';
25114const ARROW_UP_KEY$1 = 'ArrowUp';
25115const ARROW_DOWN_KEY$1 = 'ArrowDown';
25116const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
25117
25118const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;
25119const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;
25120const EVENT_SHOW$5 = `show${EVENT_KEY$6}`;
25121const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;
25122const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
25123const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;
25124const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;
25125const CLASS_NAME_SHOW$6 = 'show';
25126const CLASS_NAME_DROPUP = 'dropup';
25127const CLASS_NAME_DROPEND = 'dropend';
25128const CLASS_NAME_DROPSTART = 'dropstart';
25129const CLASS_NAME_DROPUP_CENTER = 'dropup-center';
25130const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';
25131const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
25132const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;
25133const SELECTOR_MENU = '.dropdown-menu';
25134const SELECTOR_NAVBAR = '.navbar';
25135const SELECTOR_NAVBAR_NAV = '.navbar-nav';
25136const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
25137const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
25138const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
25139const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
25140const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
25141const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
25142const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
25143const PLACEMENT_TOPCENTER = 'top';
25144const PLACEMENT_BOTTOMCENTER = 'bottom';
25145const Default$9 = {
25146  autoClose: true,
25147  boundary: 'clippingParents',
25148  display: 'dynamic',
25149  offset: [0, 2],
25150  popperConfig: null,
25151  reference: 'toggle'
25152};
25153const DefaultType$9 = {
25154  autoClose: '(boolean|string)',
25155  boundary: '(string|element)',
25156  display: 'string',
25157  offset: '(array|string|function)',
25158  popperConfig: '(null|object|function)',
25159  reference: '(string|element|object)'
25160};
25161
25162/**
25163 * Class definition
25164 */
25165
25166class Dropdown extends BaseComponent {
25167  constructor(element, config) {
25168    super(element, config);
25169    this._popper = null;
25170    this._parent = this._element.parentNode; // dropdown wrapper
25171    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
25172    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
25173    this._inNavbar = this._detectNavbar();
25174  }
25175
25176  // Getters
25177  static get Default() {
25178    return Default$9;
25179  }
25180  static get DefaultType() {
25181    return DefaultType$9;
25182  }
25183  static get NAME() {
25184    return NAME$a;
25185  }
25186
25187  // Public
25188  toggle() {
25189    return this._isShown() ? this.hide() : this.show();
25190  }
25191  show() {
25192    if (isDisabled(this._element) || this._isShown()) {
25193      return;
25194    }
25195    const relatedTarget = {
25196      relatedTarget: this._element
25197    };
25198    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);
25199    if (showEvent.defaultPrevented) {
25200      return;
25201    }
25202    this._createPopper();
25203
25204    // If this is a touch-enabled device we add extra
25205    // empty mouseover listeners to the body's immediate children;
25206    // only needed because of broken event delegation on iOS
25207    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
25208    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
25209      for (const element of [].concat(...document.body.children)) {
25210        EventHandler.on(element, 'mouseover', noop);
25211      }
25212    }
25213    this._element.focus();
25214    this._element.setAttribute('aria-expanded', true);
25215    this._menu.classList.add(CLASS_NAME_SHOW$6);
25216    this._element.classList.add(CLASS_NAME_SHOW$6);
25217    EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);
25218  }
25219  hide() {
25220    if (isDisabled(this._element) || !this._isShown()) {
25221      return;
25222    }
25223    const relatedTarget = {
25224      relatedTarget: this._element
25225    };
25226    this._completeHide(relatedTarget);
25227  }
25228  dispose() {
25229    if (this._popper) {
25230      this._popper.destroy();
25231    }
25232    super.dispose();
25233  }
25234  update() {
25235    this._inNavbar = this._detectNavbar();
25236    if (this._popper) {
25237      this._popper.update();
25238    }
25239  }
25240
25241  // Private
25242  _completeHide(relatedTarget) {
25243    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);
25244    if (hideEvent.defaultPrevented) {
25245      return;
25246    }
25247
25248    // If this is a touch-enabled device we remove the extra
25249    // empty mouseover listeners we added for iOS support
25250    if ('ontouchstart' in document.documentElement) {
25251      for (const element of [].concat(...document.body.children)) {
25252        EventHandler.off(element, 'mouseover', noop);
25253      }
25254    }
25255    if (this._popper) {
25256      this._popper.destroy();
25257    }
25258    this._menu.classList.remove(CLASS_NAME_SHOW$6);
25259    this._element.classList.remove(CLASS_NAME_SHOW$6);
25260    this._element.setAttribute('aria-expanded', 'false');
25261    Manipulator.removeDataAttribute(this._menu, 'popper');
25262    EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
25263  }
25264  _getConfig(config) {
25265    config = super._getConfig(config);
25266    if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
25267      // Popper virtual elements require a getBoundingClientRect method
25268      throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
25269    }
25270    return config;
25271  }
25272  _createPopper() {
25273    if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') {
25274      throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
25275    }
25276    let referenceElement = this._element;
25277    if (this._config.reference === 'parent') {
25278      referenceElement = this._parent;
25279    } else if (isElement(this._config.reference)) {
25280      referenceElement = getElement(this._config.reference);
25281    } else if (typeof this._config.reference === 'object') {
25282      referenceElement = this._config.reference;
25283    }
25284    const popperConfig = this._getPopperConfig();
25285    this._popper = _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(referenceElement, this._menu, popperConfig);
25286  }
25287  _isShown() {
25288    return this._menu.classList.contains(CLASS_NAME_SHOW$6);
25289  }
25290  _getPlacement() {
25291    const parentDropdown = this._parent;
25292    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
25293      return PLACEMENT_RIGHT;
25294    }
25295    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
25296      return PLACEMENT_LEFT;
25297    }
25298    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
25299      return PLACEMENT_TOPCENTER;
25300    }
25301    if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {
25302      return PLACEMENT_BOTTOMCENTER;
25303    }
25304
25305    // We need to trim the value because custom properties can also include spaces
25306    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
25307    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
25308      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
25309    }
25310    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
25311  }
25312  _detectNavbar() {
25313    return this._element.closest(SELECTOR_NAVBAR) !== null;
25314  }
25315  _getOffset() {
25316    const {
25317      offset
25318    } = this._config;
25319    if (typeof offset === 'string') {
25320      return offset.split(',').map(value => Number.parseInt(value, 10));
25321    }
25322    if (typeof offset === 'function') {
25323      return popperData => offset(popperData, this._element);
25324    }
25325    return offset;
25326  }
25327  _getPopperConfig() {
25328    const defaultBsPopperConfig = {
25329      placement: this._getPlacement(),
25330      modifiers: [{
25331        name: 'preventOverflow',
25332        options: {
25333          boundary: this._config.boundary
25334        }
25335      }, {
25336        name: 'offset',
25337        options: {
25338          offset: this._getOffset()
25339        }
25340      }]
25341    };
25342
25343    // Disable Popper if we have a static display or Dropdown is in Navbar
25344    if (this._inNavbar || this._config.display === 'static') {
25345      Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove
25346      defaultBsPopperConfig.modifiers = [{
25347        name: 'applyStyles',
25348        enabled: false
25349      }];
25350    }
25351    return {
25352      ...defaultBsPopperConfig,
25353      ...execute(this._config.popperConfig, [defaultBsPopperConfig])
25354    };
25355  }
25356  _selectMenuItem({
25357    key,
25358    target
25359  }) {
25360    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));
25361    if (!items.length) {
25362      return;
25363    }
25364
25365    // if target isn't included in items (e.g. when expanding the dropdown)
25366    // allow cycling to get the last item in case key equals ARROW_UP_KEY
25367    getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
25368  }
25369
25370  // Static
25371  static jQueryInterface(config) {
25372    return this.each(function () {
25373      const data = Dropdown.getOrCreateInstance(this, config);
25374      if (typeof config !== 'string') {
25375        return;
25376      }
25377      if (typeof data[config] === 'undefined') {
25378        throw new TypeError(`No method named "${config}"`);
25379      }
25380      data[config]();
25381    });
25382  }
25383  static clearMenus(event) {
25384    if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {
25385      return;
25386    }
25387    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
25388    for (const toggle of openToggles) {
25389      const context = Dropdown.getInstance(toggle);
25390      if (!context || context._config.autoClose === false) {
25391        continue;
25392      }
25393      const composedPath = event.composedPath();
25394      const isMenuTarget = composedPath.includes(context._menu);
25395      if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
25396        continue;
25397      }
25398
25399      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
25400      if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
25401        continue;
25402      }
25403      const relatedTarget = {
25404        relatedTarget: context._element
25405      };
25406      if (event.type === 'click') {
25407        relatedTarget.clickEvent = event;
25408      }
25409      context._completeHide(relatedTarget);
25410    }
25411  }
25412  static dataApiKeydownHandler(event) {
25413    // If not an UP | DOWN | ESCAPE key => not a dropdown command
25414    // If input/textarea && if key is other than ESCAPE => not a dropdown command
25415
25416    const isInput = /input|textarea/i.test(event.target.tagName);
25417    const isEscapeEvent = event.key === ESCAPE_KEY$2;
25418    const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
25419    if (!isUpOrDownEvent && !isEscapeEvent) {
25420      return;
25421    }
25422    if (isInput && !isEscapeEvent) {
25423      return;
25424    }
25425    event.preventDefault();
25426
25427    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
25428    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);
25429    const instance = Dropdown.getOrCreateInstance(getToggleButton);
25430    if (isUpOrDownEvent) {
25431      event.stopPropagation();
25432      instance.show();
25433      instance._selectMenuItem(event);
25434      return;
25435    }
25436    if (instance._isShown()) {
25437      // else is escape and we check if it is shown
25438      event.stopPropagation();
25439      instance.hide();
25440      getToggleButton.focus();
25441    }
25442  }
25443}
25444
25445/**
25446 * Data API implementation
25447 */
25448
25449EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
25450EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
25451EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
25452EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
25453EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
25454  event.preventDefault();
25455  Dropdown.getOrCreateInstance(this).toggle();
25456});
25457
25458/**
25459 * jQuery
25460 */
25461
25462defineJQueryPlugin(Dropdown);
25463
25464/**
25465 * --------------------------------------------------------------------------
25466 * Bootstrap util/backdrop.js
25467 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
25468 * --------------------------------------------------------------------------
25469 */
25470
25471
25472/**
25473 * Constants
25474 */
25475
25476const NAME$9 = 'backdrop';
25477const CLASS_NAME_FADE$4 = 'fade';
25478const CLASS_NAME_SHOW$5 = 'show';
25479const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;
25480const Default$8 = {
25481  className: 'modal-backdrop',
25482  clickCallback: null,
25483  isAnimated: false,
25484  isVisible: true,
25485  // if false, we use the backdrop helper without adding any element to the dom
25486  rootElement: 'body' // give the choice to place backdrop under different elements
25487};
25488const DefaultType$8 = {
25489  className: 'string',
25490  clickCallback: '(function|null)',
25491  isAnimated: 'boolean',
25492  isVisible: 'boolean',
25493  rootElement: '(element|string)'
25494};
25495
25496/**
25497 * Class definition
25498 */
25499
25500class Backdrop extends Config {
25501  constructor(config) {
25502    super();
25503    this._config = this._getConfig(config);
25504    this._isAppended = false;
25505    this._element = null;
25506  }
25507
25508  // Getters
25509  static get Default() {
25510    return Default$8;
25511  }
25512  static get DefaultType() {
25513    return DefaultType$8;
25514  }
25515  static get NAME() {
25516    return NAME$9;
25517  }
25518
25519  // Public
25520  show(callback) {
25521    if (!this._config.isVisible) {
25522      execute(callback);
25523      return;
25524    }
25525    this._append();
25526    const element = this._getElement();
25527    if (this._config.isAnimated) {
25528      reflow(element);
25529    }
25530    element.classList.add(CLASS_NAME_SHOW$5);
25531    this._emulateAnimation(() => {
25532      execute(callback);
25533    });
25534  }
25535  hide(callback) {
25536    if (!this._config.isVisible) {
25537      execute(callback);
25538      return;
25539    }
25540    this._getElement().classList.remove(CLASS_NAME_SHOW$5);
25541    this._emulateAnimation(() => {
25542      this.dispose();
25543      execute(callback);
25544    });
25545  }
25546  dispose() {
25547    if (!this._isAppended) {
25548      return;
25549    }
25550    EventHandler.off(this._element, EVENT_MOUSEDOWN);
25551    this._element.remove();
25552    this._isAppended = false;
25553  }
25554
25555  // Private
25556  _getElement() {
25557    if (!this._element) {
25558      const backdrop = document.createElement('div');
25559      backdrop.className = this._config.className;
25560      if (this._config.isAnimated) {
25561        backdrop.classList.add(CLASS_NAME_FADE$4);
25562      }
25563      this._element = backdrop;
25564    }
25565    return this._element;
25566  }
25567  _configAfterMerge(config) {
25568    // use getElement() with the default "body" to get a fresh Element on each instantiation
25569    config.rootElement = getElement(config.rootElement);
25570    return config;
25571  }
25572  _append() {
25573    if (this._isAppended) {
25574      return;
25575    }
25576    const element = this._getElement();
25577    this._config.rootElement.append(element);
25578    EventHandler.on(element, EVENT_MOUSEDOWN, () => {
25579      execute(this._config.clickCallback);
25580    });
25581    this._isAppended = true;
25582  }
25583  _emulateAnimation(callback) {
25584    executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
25585  }
25586}
25587
25588/**
25589 * --------------------------------------------------------------------------
25590 * Bootstrap util/focustrap.js
25591 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
25592 * --------------------------------------------------------------------------
25593 */
25594
25595
25596/**
25597 * Constants
25598 */
25599
25600const NAME$8 = 'focustrap';
25601const DATA_KEY$5 = 'bs.focustrap';
25602const EVENT_KEY$5 = `.${DATA_KEY$5}`;
25603const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;
25604const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;
25605const TAB_KEY = 'Tab';
25606const TAB_NAV_FORWARD = 'forward';
25607const TAB_NAV_BACKWARD = 'backward';
25608const Default$7 = {
25609  autofocus: true,
25610  trapElement: null // The element to trap focus inside of
25611};
25612const DefaultType$7 = {
25613  autofocus: 'boolean',
25614  trapElement: 'element'
25615};
25616
25617/**
25618 * Class definition
25619 */
25620
25621class FocusTrap extends Config {
25622  constructor(config) {
25623    super();
25624    this._config = this._getConfig(config);
25625    this._isActive = false;
25626    this._lastTabNavDirection = null;
25627  }
25628
25629  // Getters
25630  static get Default() {
25631    return Default$7;
25632  }
25633  static get DefaultType() {
25634    return DefaultType$7;
25635  }
25636  static get NAME() {
25637    return NAME$8;
25638  }
25639
25640  // Public
25641  activate() {
25642    if (this._isActive) {
25643      return;
25644    }
25645    if (this._config.autofocus) {
25646      this._config.trapElement.focus();
25647    }
25648    EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop
25649    EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));
25650    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
25651    this._isActive = true;
25652  }
25653  deactivate() {
25654    if (!this._isActive) {
25655      return;
25656    }
25657    this._isActive = false;
25658    EventHandler.off(document, EVENT_KEY$5);
25659  }
25660
25661  // Private
25662  _handleFocusin(event) {
25663    const {
25664      trapElement
25665    } = this._config;
25666    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {
25667      return;
25668    }
25669    const elements = SelectorEngine.focusableChildren(trapElement);
25670    if (elements.length === 0) {
25671      trapElement.focus();
25672    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
25673      elements[elements.length - 1].focus();
25674    } else {
25675      elements[0].focus();
25676    }
25677  }
25678  _handleKeydown(event) {
25679    if (event.key !== TAB_KEY) {
25680      return;
25681    }
25682    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
25683  }
25684}
25685
25686/**
25687 * --------------------------------------------------------------------------
25688 * Bootstrap util/scrollBar.js
25689 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
25690 * --------------------------------------------------------------------------
25691 */
25692
25693
25694/**
25695 * Constants
25696 */
25697
25698const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
25699const SELECTOR_STICKY_CONTENT = '.sticky-top';
25700const PROPERTY_PADDING = 'padding-right';
25701const PROPERTY_MARGIN = 'margin-right';
25702
25703/**
25704 * Class definition
25705 */
25706
25707class ScrollBarHelper {
25708  constructor() {
25709    this._element = document.body;
25710  }
25711
25712  // Public
25713  getWidth() {
25714    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
25715    const documentWidth = document.documentElement.clientWidth;
25716    return Math.abs(window.innerWidth - documentWidth);
25717  }
25718  hide() {
25719    const width = this.getWidth();
25720    this._disableOverFlow();
25721    // give padding to element to balance the hidden scrollbar width
25722    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);
25723    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
25724    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);
25725    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);
25726  }
25727  reset() {
25728    this._resetElementAttributes(this._element, 'overflow');
25729    this._resetElementAttributes(this._element, PROPERTY_PADDING);
25730    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
25731    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
25732  }
25733  isOverflowing() {
25734    return this.getWidth() > 0;
25735  }
25736
25737  // Private
25738  _disableOverFlow() {
25739    this._saveInitialAttribute(this._element, 'overflow');
25740    this._element.style.overflow = 'hidden';
25741  }
25742  _setElementAttributes(selector, styleProperty, callback) {
25743    const scrollbarWidth = this.getWidth();
25744    const manipulationCallBack = element => {
25745      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
25746        return;
25747      }
25748      this._saveInitialAttribute(element, styleProperty);
25749      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
25750      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);
25751    };
25752    this._applyManipulationCallback(selector, manipulationCallBack);
25753  }
25754  _saveInitialAttribute(element, styleProperty) {
25755    const actualValue = element.style.getPropertyValue(styleProperty);
25756    if (actualValue) {
25757      Manipulator.setDataAttribute(element, styleProperty, actualValue);
25758    }
25759  }
25760  _resetElementAttributes(selector, styleProperty) {
25761    const manipulationCallBack = element => {
25762      const value = Manipulator.getDataAttribute(element, styleProperty);
25763      // We only want to remove the property if the value is `null`; the value can also be zero
25764      if (value === null) {
25765        element.style.removeProperty(styleProperty);
25766        return;
25767      }
25768      Manipulator.removeDataAttribute(element, styleProperty);
25769      element.style.setProperty(styleProperty, value);
25770    };
25771    this._applyManipulationCallback(selector, manipulationCallBack);
25772  }
25773  _applyManipulationCallback(selector, callBack) {
25774    if (isElement(selector)) {
25775      callBack(selector);
25776      return;
25777    }
25778    for (const sel of SelectorEngine.find(selector, this._element)) {
25779      callBack(sel);
25780    }
25781  }
25782}
25783
25784/**
25785 * --------------------------------------------------------------------------
25786 * Bootstrap modal.js
25787 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
25788 * --------------------------------------------------------------------------
25789 */
25790
25791
25792/**
25793 * Constants
25794 */
25795
25796const NAME$7 = 'modal';
25797const DATA_KEY$4 = 'bs.modal';
25798const EVENT_KEY$4 = `.${DATA_KEY$4}`;
25799const DATA_API_KEY$2 = '.data-api';
25800const ESCAPE_KEY$1 = 'Escape';
25801const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;
25802const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;
25803const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;
25804const EVENT_SHOW$4 = `show${EVENT_KEY$4}`;
25805const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;
25806const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;
25807const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;
25808const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;
25809const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;
25810const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;
25811const CLASS_NAME_OPEN = 'modal-open';
25812const CLASS_NAME_FADE$3 = 'fade';
25813const CLASS_NAME_SHOW$4 = 'show';
25814const CLASS_NAME_STATIC = 'modal-static';
25815const OPEN_SELECTOR$1 = '.modal.show';
25816const SELECTOR_DIALOG = '.modal-dialog';
25817const SELECTOR_MODAL_BODY = '.modal-body';
25818const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
25819const Default$6 = {
25820  backdrop: true,
25821  focus: true,
25822  keyboard: true
25823};
25824const DefaultType$6 = {
25825  backdrop: '(boolean|string)',
25826  focus: 'boolean',
25827  keyboard: 'boolean'
25828};
25829
25830/**
25831 * Class definition
25832 */
25833
25834class Modal extends BaseComponent {
25835  constructor(element, config) {
25836    super(element, config);
25837    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
25838    this._backdrop = this._initializeBackDrop();
25839    this._focustrap = this._initializeFocusTrap();
25840    this._isShown = false;
25841    this._isTransitioning = false;
25842    this._scrollBar = new ScrollBarHelper();
25843    this._addEventListeners();
25844  }
25845
25846  // Getters
25847  static get Default() {
25848    return Default$6;
25849  }
25850  static get DefaultType() {
25851    return DefaultType$6;
25852  }
25853  static get NAME() {
25854    return NAME$7;
25855  }
25856
25857  // Public
25858  toggle(relatedTarget) {
25859    return this._isShown ? this.hide() : this.show(relatedTarget);
25860  }
25861  show(relatedTarget) {
25862    if (this._isShown || this._isTransitioning) {
25863      return;
25864    }
25865    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {
25866      relatedTarget
25867    });
25868    if (showEvent.defaultPrevented) {
25869      return;
25870    }
25871    this._isShown = true;
25872    this._isTransitioning = true;
25873    this._scrollBar.hide();
25874    document.body.classList.add(CLASS_NAME_OPEN);
25875    this._adjustDialog();
25876    this._backdrop.show(() => this._showElement(relatedTarget));
25877  }
25878  hide() {
25879    if (!this._isShown || this._isTransitioning) {
25880      return;
25881    }
25882    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
25883    if (hideEvent.defaultPrevented) {
25884      return;
25885    }
25886    this._isShown = false;
25887    this._isTransitioning = true;
25888    this._focustrap.deactivate();
25889    this._element.classList.remove(CLASS_NAME_SHOW$4);
25890    this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
25891  }
25892  dispose() {
25893    EventHandler.off(window, EVENT_KEY$4);
25894    EventHandler.off(this._dialog, EVENT_KEY$4);
25895    this._backdrop.dispose();
25896    this._focustrap.deactivate();
25897    super.dispose();
25898  }
25899  handleUpdate() {
25900    this._adjustDialog();
25901  }
25902
25903  // Private
25904  _initializeBackDrop() {
25905    return new Backdrop({
25906      isVisible: Boolean(this._config.backdrop),
25907      // 'static' option will be translated to true, and booleans will keep their value,
25908      isAnimated: this._isAnimated()
25909    });
25910  }
25911  _initializeFocusTrap() {
25912    return new FocusTrap({
25913      trapElement: this._element
25914    });
25915  }
25916  _showElement(relatedTarget) {
25917    // try to append dynamic modal
25918    if (!document.body.contains(this._element)) {
25919      document.body.append(this._element);
25920    }
25921    this._element.style.display = 'block';
25922    this._element.removeAttribute('aria-hidden');
25923    this._element.setAttribute('aria-modal', true);
25924    this._element.setAttribute('role', 'dialog');
25925    this._element.scrollTop = 0;
25926    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
25927    if (modalBody) {
25928      modalBody.scrollTop = 0;
25929    }
25930    reflow(this._element);
25931    this._element.classList.add(CLASS_NAME_SHOW$4);
25932    const transitionComplete = () => {
25933      if (this._config.focus) {
25934        this._focustrap.activate();
25935      }
25936      this._isTransitioning = false;
25937      EventHandler.trigger(this._element, EVENT_SHOWN$4, {
25938        relatedTarget
25939      });
25940    };
25941    this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
25942  }
25943  _addEventListeners() {
25944    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {
25945      if (event.key !== ESCAPE_KEY$1) {
25946        return;
25947      }
25948      if (this._config.keyboard) {
25949        this.hide();
25950        return;
25951      }
25952      this._triggerBackdropTransition();
25953    });
25954    EventHandler.on(window, EVENT_RESIZE$1, () => {
25955      if (this._isShown && !this._isTransitioning) {
25956        this._adjustDialog();
25957      }
25958    });
25959    EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {
25960      // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks
25961      EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {
25962        if (this._element !== event.target || this._element !== event2.target) {
25963          return;
25964        }
25965        if (this._config.backdrop === 'static') {
25966          this._triggerBackdropTransition();
25967          return;
25968        }
25969        if (this._config.backdrop) {
25970          this.hide();
25971        }
25972      });
25973    });
25974  }
25975  _hideModal() {
25976    this._element.style.display = 'none';
25977    this._element.setAttribute('aria-hidden', true);
25978    this._element.removeAttribute('aria-modal');
25979    this._element.removeAttribute('role');
25980    this._isTransitioning = false;
25981    this._backdrop.hide(() => {
25982      document.body.classList.remove(CLASS_NAME_OPEN);
25983      this._resetAdjustments();
25984      this._scrollBar.reset();
25985      EventHandler.trigger(this._element, EVENT_HIDDEN$4);
25986    });
25987  }
25988  _isAnimated() {
25989    return this._element.classList.contains(CLASS_NAME_FADE$3);
25990  }
25991  _triggerBackdropTransition() {
25992    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
25993    if (hideEvent.defaultPrevented) {
25994      return;
25995    }
25996    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
25997    const initialOverflowY = this._element.style.overflowY;
25998    // return if the following background transition hasn't yet completed
25999    if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {
26000      return;
26001    }
26002    if (!isModalOverflowing) {
26003      this._element.style.overflowY = 'hidden';
26004    }
26005    this._element.classList.add(CLASS_NAME_STATIC);
26006    this._queueCallback(() => {
26007      this._element.classList.remove(CLASS_NAME_STATIC);
26008      this._queueCallback(() => {
26009        this._element.style.overflowY = initialOverflowY;
26010      }, this._dialog);
26011    }, this._dialog);
26012    this._element.focus();
26013  }
26014
26015  /**
26016   * The following methods are used to handle overflowing modals
26017   */
26018
26019  _adjustDialog() {
26020    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
26021    const scrollbarWidth = this._scrollBar.getWidth();
26022    const isBodyOverflowing = scrollbarWidth > 0;
26023    if (isBodyOverflowing && !isModalOverflowing) {
26024      const property = isRTL() ? 'paddingLeft' : 'paddingRight';
26025      this._element.style[property] = `${scrollbarWidth}px`;
26026    }
26027    if (!isBodyOverflowing && isModalOverflowing) {
26028      const property = isRTL() ? 'paddingRight' : 'paddingLeft';
26029      this._element.style[property] = `${scrollbarWidth}px`;
26030    }
26031  }
26032  _resetAdjustments() {
26033    this._element.style.paddingLeft = '';
26034    this._element.style.paddingRight = '';
26035  }
26036
26037  // Static
26038  static jQueryInterface(config, relatedTarget) {
26039    return this.each(function () {
26040      const data = Modal.getOrCreateInstance(this, config);
26041      if (typeof config !== 'string') {
26042        return;
26043      }
26044      if (typeof data[config] === 'undefined') {
26045        throw new TypeError(`No method named "${config}"`);
26046      }
26047      data[config](relatedTarget);
26048    });
26049  }
26050}
26051
26052/**
26053 * Data API implementation
26054 */
26055
26056EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
26057  const target = SelectorEngine.getElementFromSelector(this);
26058  if (['A', 'AREA'].includes(this.tagName)) {
26059    event.preventDefault();
26060  }
26061  EventHandler.one(target, EVENT_SHOW$4, showEvent => {
26062    if (showEvent.defaultPrevented) {
26063      // only register focus restorer if modal will actually get shown
26064      return;
26065    }
26066    EventHandler.one(target, EVENT_HIDDEN$4, () => {
26067      if (isVisible(this)) {
26068        this.focus();
26069      }
26070    });
26071  });
26072
26073  // avoid conflict when clicking modal toggler while another one is open
26074  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);
26075  if (alreadyOpen) {
26076    Modal.getInstance(alreadyOpen).hide();
26077  }
26078  const data = Modal.getOrCreateInstance(target);
26079  data.toggle(this);
26080});
26081enableDismissTrigger(Modal);
26082
26083/**
26084 * jQuery
26085 */
26086
26087defineJQueryPlugin(Modal);
26088
26089/**
26090 * --------------------------------------------------------------------------
26091 * Bootstrap offcanvas.js
26092 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
26093 * --------------------------------------------------------------------------
26094 */
26095
26096
26097/**
26098 * Constants
26099 */
26100
26101const NAME$6 = 'offcanvas';
26102const DATA_KEY$3 = 'bs.offcanvas';
26103const EVENT_KEY$3 = `.${DATA_KEY$3}`;
26104const DATA_API_KEY$1 = '.data-api';
26105const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;
26106const ESCAPE_KEY = 'Escape';
26107const CLASS_NAME_SHOW$3 = 'show';
26108const CLASS_NAME_SHOWING$1 = 'showing';
26109const CLASS_NAME_HIDING = 'hiding';
26110const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
26111const OPEN_SELECTOR = '.offcanvas.show';
26112const EVENT_SHOW$3 = `show${EVENT_KEY$3}`;
26113const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;
26114const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;
26115const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;
26116const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;
26117const EVENT_RESIZE = `resize${EVENT_KEY$3}`;
26118const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;
26119const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;
26120const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
26121const Default$5 = {
26122  backdrop: true,
26123  keyboard: true,
26124  scroll: false
26125};
26126const DefaultType$5 = {
26127  backdrop: '(boolean|string)',
26128  keyboard: 'boolean',
26129  scroll: 'boolean'
26130};
26131
26132/**
26133 * Class definition
26134 */
26135
26136class Offcanvas extends BaseComponent {
26137  constructor(element, config) {
26138    super(element, config);
26139    this._isShown = false;
26140    this._backdrop = this._initializeBackDrop();
26141    this._focustrap = this._initializeFocusTrap();
26142    this._addEventListeners();
26143  }
26144
26145  // Getters
26146  static get Default() {
26147    return Default$5;
26148  }
26149  static get DefaultType() {
26150    return DefaultType$5;
26151  }
26152  static get NAME() {
26153    return NAME$6;
26154  }
26155
26156  // Public
26157  toggle(relatedTarget) {
26158    return this._isShown ? this.hide() : this.show(relatedTarget);
26159  }
26160  show(relatedTarget) {
26161    if (this._isShown) {
26162      return;
26163    }
26164    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
26165      relatedTarget
26166    });
26167    if (showEvent.defaultPrevented) {
26168      return;
26169    }
26170    this._isShown = true;
26171    this._backdrop.show();
26172    if (!this._config.scroll) {
26173      new ScrollBarHelper().hide();
26174    }
26175    this._element.setAttribute('aria-modal', true);
26176    this._element.setAttribute('role', 'dialog');
26177    this._element.classList.add(CLASS_NAME_SHOWING$1);
26178    const completeCallBack = () => {
26179      if (!this._config.scroll || this._config.backdrop) {
26180        this._focustrap.activate();
26181      }
26182      this._element.classList.add(CLASS_NAME_SHOW$3);
26183      this._element.classList.remove(CLASS_NAME_SHOWING$1);
26184      EventHandler.trigger(this._element, EVENT_SHOWN$3, {
26185        relatedTarget
26186      });
26187    };
26188    this._queueCallback(completeCallBack, this._element, true);
26189  }
26190  hide() {
26191    if (!this._isShown) {
26192      return;
26193    }
26194    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
26195    if (hideEvent.defaultPrevented) {
26196      return;
26197    }
26198    this._focustrap.deactivate();
26199    this._element.blur();
26200    this._isShown = false;
26201    this._element.classList.add(CLASS_NAME_HIDING);
26202    this._backdrop.hide();
26203    const completeCallback = () => {
26204      this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);
26205      this._element.removeAttribute('aria-modal');
26206      this._element.removeAttribute('role');
26207      if (!this._config.scroll) {
26208        new ScrollBarHelper().reset();
26209      }
26210      EventHandler.trigger(this._element, EVENT_HIDDEN$3);
26211    };
26212    this._queueCallback(completeCallback, this._element, true);
26213  }
26214  dispose() {
26215    this._backdrop.dispose();
26216    this._focustrap.deactivate();
26217    super.dispose();
26218  }
26219
26220  // Private
26221  _initializeBackDrop() {
26222    const clickCallback = () => {
26223      if (this._config.backdrop === 'static') {
26224        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
26225        return;
26226      }
26227      this.hide();
26228    };
26229
26230    // 'static' option will be translated to true, and booleans will keep their value
26231    const isVisible = Boolean(this._config.backdrop);
26232    return new Backdrop({
26233      className: CLASS_NAME_BACKDROP,
26234      isVisible,
26235      isAnimated: true,
26236      rootElement: this._element.parentNode,
26237      clickCallback: isVisible ? clickCallback : null
26238    });
26239  }
26240  _initializeFocusTrap() {
26241    return new FocusTrap({
26242      trapElement: this._element
26243    });
26244  }
26245  _addEventListeners() {
26246    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
26247      if (event.key !== ESCAPE_KEY) {
26248        return;
26249      }
26250      if (this._config.keyboard) {
26251        this.hide();
26252        return;
26253      }
26254      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
26255    });
26256  }
26257
26258  // Static
26259  static jQueryInterface(config) {
26260    return this.each(function () {
26261      const data = Offcanvas.getOrCreateInstance(this, config);
26262      if (typeof config !== 'string') {
26263        return;
26264      }
26265      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
26266        throw new TypeError(`No method named "${config}"`);
26267      }
26268      data[config](this);
26269    });
26270  }
26271}
26272
26273/**
26274 * Data API implementation
26275 */
26276
26277EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
26278  const target = SelectorEngine.getElementFromSelector(this);
26279  if (['A', 'AREA'].includes(this.tagName)) {
26280    event.preventDefault();
26281  }
26282  if (isDisabled(this)) {
26283    return;
26284  }
26285  EventHandler.one(target, EVENT_HIDDEN$3, () => {
26286    // focus on trigger when it is closed
26287    if (isVisible(this)) {
26288      this.focus();
26289    }
26290  });
26291
26292  // avoid conflict when clicking a toggler of an offcanvas, while another is open
26293  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
26294  if (alreadyOpen && alreadyOpen !== target) {
26295    Offcanvas.getInstance(alreadyOpen).hide();
26296  }
26297  const data = Offcanvas.getOrCreateInstance(target);
26298  data.toggle(this);
26299});
26300EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
26301  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {
26302    Offcanvas.getOrCreateInstance(selector).show();
26303  }
26304});
26305EventHandler.on(window, EVENT_RESIZE, () => {
26306  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {
26307    if (getComputedStyle(element).position !== 'fixed') {
26308      Offcanvas.getOrCreateInstance(element).hide();
26309    }
26310  }
26311});
26312enableDismissTrigger(Offcanvas);
26313
26314/**
26315 * jQuery
26316 */
26317
26318defineJQueryPlugin(Offcanvas);
26319
26320/**
26321 * --------------------------------------------------------------------------
26322 * Bootstrap util/sanitizer.js
26323 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
26324 * --------------------------------------------------------------------------
26325 */
26326
26327// js-docs-start allow-list
26328const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
26329const DefaultAllowlist = {
26330  // Global attributes allowed on any supplied element below.
26331  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
26332  a: ['target', 'href', 'title', 'rel'],
26333  area: [],
26334  b: [],
26335  br: [],
26336  col: [],
26337  code: [],
26338  dd: [],
26339  div: [],
26340  dl: [],
26341  dt: [],
26342  em: [],
26343  hr: [],
26344  h1: [],
26345  h2: [],
26346  h3: [],
26347  h4: [],
26348  h5: [],
26349  h6: [],
26350  i: [],
26351  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
26352  li: [],
26353  ol: [],
26354  p: [],
26355  pre: [],
26356  s: [],
26357  small: [],
26358  span: [],
26359  sub: [],
26360  sup: [],
26361  strong: [],
26362  u: [],
26363  ul: []
26364};
26365// js-docs-end allow-list
26366
26367const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
26368
26369/**
26370 * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation
26371 * contexts.
26372 *
26373 * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38
26374 */
26375// eslint-disable-next-line unicorn/better-regex
26376const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
26377const allowedAttribute = (attribute, allowedAttributeList) => {
26378  const attributeName = attribute.nodeName.toLowerCase();
26379  if (allowedAttributeList.includes(attributeName)) {
26380    if (uriAttributes.has(attributeName)) {
26381      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));
26382    }
26383    return true;
26384  }
26385
26386  // Check if a regular expression validates the attribute.
26387  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));
26388};
26389function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
26390  if (!unsafeHtml.length) {
26391    return unsafeHtml;
26392  }
26393  if (sanitizeFunction && typeof sanitizeFunction === 'function') {
26394    return sanitizeFunction(unsafeHtml);
26395  }
26396  const domParser = new window.DOMParser();
26397  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
26398  const elements = [].concat(...createdDocument.body.querySelectorAll('*'));
26399  for (const element of elements) {
26400    const elementName = element.nodeName.toLowerCase();
26401    if (!Object.keys(allowList).includes(elementName)) {
26402      element.remove();
26403      continue;
26404    }
26405    const attributeList = [].concat(...element.attributes);
26406    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);
26407    for (const attribute of attributeList) {
26408      if (!allowedAttribute(attribute, allowedAttributes)) {
26409        element.removeAttribute(attribute.nodeName);
26410      }
26411    }
26412  }
26413  return createdDocument.body.innerHTML;
26414}
26415
26416/**
26417 * --------------------------------------------------------------------------
26418 * Bootstrap util/template-factory.js
26419 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
26420 * --------------------------------------------------------------------------
26421 */
26422
26423
26424/**
26425 * Constants
26426 */
26427
26428const NAME$5 = 'TemplateFactory';
26429const Default$4 = {
26430  allowList: DefaultAllowlist,
26431  content: {},
26432  // { selector : text ,  selector2 : text2 , }
26433  extraClass: '',
26434  html: false,
26435  sanitize: true,
26436  sanitizeFn: null,
26437  template: '<div></div>'
26438};
26439const DefaultType$4 = {
26440  allowList: 'object',
26441  content: 'object',
26442  extraClass: '(string|function)',
26443  html: 'boolean',
26444  sanitize: 'boolean',
26445  sanitizeFn: '(null|function)',
26446  template: 'string'
26447};
26448const DefaultContentType = {
26449  entry: '(string|element|function|null)',
26450  selector: '(string|element)'
26451};
26452
26453/**
26454 * Class definition
26455 */
26456
26457class TemplateFactory extends Config {
26458  constructor(config) {
26459    super();
26460    this._config = this._getConfig(config);
26461  }
26462
26463  // Getters
26464  static get Default() {
26465    return Default$4;
26466  }
26467  static get DefaultType() {
26468    return DefaultType$4;
26469  }
26470  static get NAME() {
26471    return NAME$5;
26472  }
26473
26474  // Public
26475  getContent() {
26476    return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);
26477  }
26478  hasContent() {
26479    return this.getContent().length > 0;
26480  }
26481  changeContent(content) {
26482    this._checkContent(content);
26483    this._config.content = {
26484      ...this._config.content,
26485      ...content
26486    };
26487    return this;
26488  }
26489  toHtml() {
26490    const templateWrapper = document.createElement('div');
26491    templateWrapper.innerHTML = this._maybeSanitize(this._config.template);
26492    for (const [selector, text] of Object.entries(this._config.content)) {
26493      this._setContent(templateWrapper, text, selector);
26494    }
26495    const template = templateWrapper.children[0];
26496    const extraClass = this._resolvePossibleFunction(this._config.extraClass);
26497    if (extraClass) {
26498      template.classList.add(...extraClass.split(' '));
26499    }
26500    return template;
26501  }
26502
26503  // Private
26504  _typeCheckConfig(config) {
26505    super._typeCheckConfig(config);
26506    this._checkContent(config.content);
26507  }
26508  _checkContent(arg) {
26509    for (const [selector, content] of Object.entries(arg)) {
26510      super._typeCheckConfig({
26511        selector,
26512        entry: content
26513      }, DefaultContentType);
26514    }
26515  }
26516  _setContent(template, content, selector) {
26517    const templateElement = SelectorEngine.findOne(selector, template);
26518    if (!templateElement) {
26519      return;
26520    }
26521    content = this._resolvePossibleFunction(content);
26522    if (!content) {
26523      templateElement.remove();
26524      return;
26525    }
26526    if (isElement(content)) {
26527      this._putElementInTemplate(getElement(content), templateElement);
26528      return;
26529    }
26530    if (this._config.html) {
26531      templateElement.innerHTML = this._maybeSanitize(content);
26532      return;
26533    }
26534    templateElement.textContent = content;
26535  }
26536  _maybeSanitize(arg) {
26537    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
26538  }
26539  _resolvePossibleFunction(arg) {
26540    return execute(arg, [this]);
26541  }
26542  _putElementInTemplate(element, templateElement) {
26543    if (this._config.html) {
26544      templateElement.innerHTML = '';
26545      templateElement.append(element);
26546      return;
26547    }
26548    templateElement.textContent = element.textContent;
26549  }
26550}
26551
26552/**
26553 * --------------------------------------------------------------------------
26554 * Bootstrap tooltip.js
26555 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
26556 * --------------------------------------------------------------------------
26557 */
26558
26559
26560/**
26561 * Constants
26562 */
26563
26564const NAME$4 = 'tooltip';
26565const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
26566const CLASS_NAME_FADE$2 = 'fade';
26567const CLASS_NAME_MODAL = 'modal';
26568const CLASS_NAME_SHOW$2 = 'show';
26569const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
26570const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
26571const EVENT_MODAL_HIDE = 'hide.bs.modal';
26572const TRIGGER_HOVER = 'hover';
26573const TRIGGER_FOCUS = 'focus';
26574const TRIGGER_CLICK = 'click';
26575const TRIGGER_MANUAL = 'manual';
26576const EVENT_HIDE$2 = 'hide';
26577const EVENT_HIDDEN$2 = 'hidden';
26578const EVENT_SHOW$2 = 'show';
26579const EVENT_SHOWN$2 = 'shown';
26580const EVENT_INSERTED = 'inserted';
26581const EVENT_CLICK$1 = 'click';
26582const EVENT_FOCUSIN$1 = 'focusin';
26583const EVENT_FOCUSOUT$1 = 'focusout';
26584const EVENT_MOUSEENTER = 'mouseenter';
26585const EVENT_MOUSELEAVE = 'mouseleave';
26586const AttachmentMap = {
26587  AUTO: 'auto',
26588  TOP: 'top',
26589  RIGHT: isRTL() ? 'left' : 'right',
26590  BOTTOM: 'bottom',
26591  LEFT: isRTL() ? 'right' : 'left'
26592};
26593const Default$3 = {
26594  allowList: DefaultAllowlist,
26595  animation: true,
26596  boundary: 'clippingParents',
26597  container: false,
26598  customClass: '',
26599  delay: 0,
26600  fallbackPlacements: ['top', 'right', 'bottom', 'left'],
26601  html: false,
26602  offset: [0, 6],
26603  placement: 'top',
26604  popperConfig: null,
26605  sanitize: true,
26606  sanitizeFn: null,
26607  selector: false,
26608  template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
26609  title: '',
26610  trigger: 'hover focus'
26611};
26612const DefaultType$3 = {
26613  allowList: 'object',
26614  animation: 'boolean',
26615  boundary: '(string|element)',
26616  container: '(string|element|boolean)',
26617  customClass: '(string|function)',
26618  delay: '(number|object)',
26619  fallbackPlacements: 'array',
26620  html: 'boolean',
26621  offset: '(array|string|function)',
26622  placement: '(string|function)',
26623  popperConfig: '(null|object|function)',
26624  sanitize: 'boolean',
26625  sanitizeFn: '(null|function)',
26626  selector: '(string|boolean)',
26627  template: 'string',
26628  title: '(string|element|function)',
26629  trigger: 'string'
26630};
26631
26632/**
26633 * Class definition
26634 */
26635
26636class Tooltip extends BaseComponent {
26637  constructor(element, config) {
26638    if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') {
26639      throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
26640    }
26641    super(element, config);
26642
26643    // Private
26644    this._isEnabled = true;
26645    this._timeout = 0;
26646    this._isHovered = null;
26647    this._activeTrigger = {};
26648    this._popper = null;
26649    this._templateFactory = null;
26650    this._newContent = null;
26651
26652    // Protected
26653    this.tip = null;
26654    this._setListeners();
26655    if (!this._config.selector) {
26656      this._fixTitle();
26657    }
26658  }
26659
26660  // Getters
26661  static get Default() {
26662    return Default$3;
26663  }
26664  static get DefaultType() {
26665    return DefaultType$3;
26666  }
26667  static get NAME() {
26668    return NAME$4;
26669  }
26670
26671  // Public
26672  enable() {
26673    this._isEnabled = true;
26674  }
26675  disable() {
26676    this._isEnabled = false;
26677  }
26678  toggleEnabled() {
26679    this._isEnabled = !this._isEnabled;
26680  }
26681  toggle() {
26682    if (!this._isEnabled) {
26683      return;
26684    }
26685    this._activeTrigger.click = !this._activeTrigger.click;
26686    if (this._isShown()) {
26687      this._leave();
26688      return;
26689    }
26690    this._enter();
26691  }
26692  dispose() {
26693    clearTimeout(this._timeout);
26694    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
26695    if (this._element.getAttribute('data-bs-original-title')) {
26696      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));
26697    }
26698    this._disposePopper();
26699    super.dispose();
26700  }
26701  show() {
26702    if (this._element.style.display === 'none') {
26703      throw new Error('Please use show on visible elements');
26704    }
26705    if (!(this._isWithContent() && this._isEnabled)) {
26706      return;
26707    }
26708    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));
26709    const shadowRoot = findShadowRoot(this._element);
26710    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);
26711    if (showEvent.defaultPrevented || !isInTheDom) {
26712      return;
26713    }
26714
26715    // TODO: v6 remove this or make it optional
26716    this._disposePopper();
26717    const tip = this._getTipElement();
26718    this._element.setAttribute('aria-describedby', tip.getAttribute('id'));
26719    const {
26720      container
26721    } = this._config;
26722    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
26723      container.append(tip);
26724      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
26725    }
26726    this._popper = this._createPopper(tip);
26727    tip.classList.add(CLASS_NAME_SHOW$2);
26728
26729    // If this is a touch-enabled device we add extra
26730    // empty mouseover listeners to the body's immediate children;
26731    // only needed because of broken event delegation on iOS
26732    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
26733    if ('ontouchstart' in document.documentElement) {
26734      for (const element of [].concat(...document.body.children)) {
26735        EventHandler.on(element, 'mouseover', noop);
26736      }
26737    }
26738    const complete = () => {
26739      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));
26740      if (this._isHovered === false) {
26741        this._leave();
26742      }
26743      this._isHovered = false;
26744    };
26745    this._queueCallback(complete, this.tip, this._isAnimated());
26746  }
26747  hide() {
26748    if (!this._isShown()) {
26749      return;
26750    }
26751    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));
26752    if (hideEvent.defaultPrevented) {
26753      return;
26754    }
26755    const tip = this._getTipElement();
26756    tip.classList.remove(CLASS_NAME_SHOW$2);
26757
26758    // If this is a touch-enabled device we remove the extra
26759    // empty mouseover listeners we added for iOS support
26760    if ('ontouchstart' in document.documentElement) {
26761      for (const element of [].concat(...document.body.children)) {
26762        EventHandler.off(element, 'mouseover', noop);
26763      }
26764    }
26765    this._activeTrigger[TRIGGER_CLICK] = false;
26766    this._activeTrigger[TRIGGER_FOCUS] = false;
26767    this._activeTrigger[TRIGGER_HOVER] = false;
26768    this._isHovered = null; // it is a trick to support manual triggering
26769
26770    const complete = () => {
26771      if (this._isWithActiveTrigger()) {
26772        return;
26773      }
26774      if (!this._isHovered) {
26775        this._disposePopper();
26776      }
26777      this._element.removeAttribute('aria-describedby');
26778      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));
26779    };
26780    this._queueCallback(complete, this.tip, this._isAnimated());
26781  }
26782  update() {
26783    if (this._popper) {
26784      this._popper.update();
26785    }
26786  }
26787
26788  // Protected
26789  _isWithContent() {
26790    return Boolean(this._getTitle());
26791  }
26792  _getTipElement() {
26793    if (!this.tip) {
26794      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
26795    }
26796    return this.tip;
26797  }
26798  _createTipElement(content) {
26799    const tip = this._getTemplateFactory(content).toHtml();
26800
26801    // TODO: remove this check in v6
26802    if (!tip) {
26803      return null;
26804    }
26805    tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
26806    // TODO: v6 the following can be achieved with CSS only
26807    tip.classList.add(`bs-${this.constructor.NAME}-auto`);
26808    const tipId = getUID(this.constructor.NAME).toString();
26809    tip.setAttribute('id', tipId);
26810    if (this._isAnimated()) {
26811      tip.classList.add(CLASS_NAME_FADE$2);
26812    }
26813    return tip;
26814  }
26815  setContent(content) {
26816    this._newContent = content;
26817    if (this._isShown()) {
26818      this._disposePopper();
26819      this.show();
26820    }
26821  }
26822  _getTemplateFactory(content) {
26823    if (this._templateFactory) {
26824      this._templateFactory.changeContent(content);
26825    } else {
26826      this._templateFactory = new TemplateFactory({
26827        ...this._config,
26828        // the `content` var has to be after `this._config`
26829        // to override config.content in case of popover
26830        content,
26831        extraClass: this._resolvePossibleFunction(this._config.customClass)
26832      });
26833    }
26834    return this._templateFactory;
26835  }
26836  _getContentForTemplate() {
26837    return {
26838      [SELECTOR_TOOLTIP_INNER]: this._getTitle()
26839    };
26840  }
26841  _getTitle() {
26842    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');
26843  }
26844
26845  // Private
26846  _initializeOnDelegatedTarget(event) {
26847    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
26848  }
26849  _isAnimated() {
26850    return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);
26851  }
26852  _isShown() {
26853    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);
26854  }
26855  _createPopper(tip) {
26856    const placement = execute(this._config.placement, [this, tip, this._element]);
26857    const attachment = AttachmentMap[placement.toUpperCase()];
26858    return _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(this._element, tip, this._getPopperConfig(attachment));
26859  }
26860  _getOffset() {
26861    const {
26862      offset
26863    } = this._config;
26864    if (typeof offset === 'string') {
26865      return offset.split(',').map(value => Number.parseInt(value, 10));
26866    }
26867    if (typeof offset === 'function') {
26868      return popperData => offset(popperData, this._element);
26869    }
26870    return offset;
26871  }
26872  _resolvePossibleFunction(arg) {
26873    return execute(arg, [this._element]);
26874  }
26875  _getPopperConfig(attachment) {
26876    const defaultBsPopperConfig = {
26877      placement: attachment,
26878      modifiers: [{
26879        name: 'flip',
26880        options: {
26881          fallbackPlacements: this._config.fallbackPlacements
26882        }
26883      }, {
26884        name: 'offset',
26885        options: {
26886          offset: this._getOffset()
26887        }
26888      }, {
26889        name: 'preventOverflow',
26890        options: {
26891          boundary: this._config.boundary
26892        }
26893      }, {
26894        name: 'arrow',
26895        options: {
26896          element: `.${this.constructor.NAME}-arrow`
26897        }
26898      }, {
26899        name: 'preSetPlacement',
26900        enabled: true,
26901        phase: 'beforeMain',
26902        fn: data => {
26903          // Pre-set Popper's placement attribute in order to read the arrow sizes properly.
26904          // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement
26905          this._getTipElement().setAttribute('data-popper-placement', data.state.placement);
26906        }
26907      }]
26908    };
26909    return {
26910      ...defaultBsPopperConfig,
26911      ...execute(this._config.popperConfig, [defaultBsPopperConfig])
26912    };
26913  }
26914  _setListeners() {
26915    const triggers = this._config.trigger.split(' ');
26916    for (const trigger of triggers) {
26917      if (trigger === 'click') {
26918        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {
26919          const context = this._initializeOnDelegatedTarget(event);
26920          context.toggle();
26921        });
26922      } else if (trigger !== TRIGGER_MANUAL) {
26923        const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);
26924        const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);
26925        EventHandler.on(this._element, eventIn, this._config.selector, event => {
26926          const context = this._initializeOnDelegatedTarget(event);
26927          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
26928          context._enter();
26929        });
26930        EventHandler.on(this._element, eventOut, this._config.selector, event => {
26931          const context = this._initializeOnDelegatedTarget(event);
26932          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
26933          context._leave();
26934        });
26935      }
26936    }
26937    this._hideModalHandler = () => {
26938      if (this._element) {
26939        this.hide();
26940      }
26941    };
26942    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
26943  }
26944  _fixTitle() {
26945    const title = this._element.getAttribute('title');
26946    if (!title) {
26947      return;
26948    }
26949    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {
26950      this._element.setAttribute('aria-label', title);
26951    }
26952    this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility
26953    this._element.removeAttribute('title');
26954  }
26955  _enter() {
26956    if (this._isShown() || this._isHovered) {
26957      this._isHovered = true;
26958      return;
26959    }
26960    this._isHovered = true;
26961    this._setTimeout(() => {
26962      if (this._isHovered) {
26963        this.show();
26964      }
26965    }, this._config.delay.show);
26966  }
26967  _leave() {
26968    if (this._isWithActiveTrigger()) {
26969      return;
26970    }
26971    this._isHovered = false;
26972    this._setTimeout(() => {
26973      if (!this._isHovered) {
26974        this.hide();
26975      }
26976    }, this._config.delay.hide);
26977  }
26978  _setTimeout(handler, timeout) {
26979    clearTimeout(this._timeout);
26980    this._timeout = setTimeout(handler, timeout);
26981  }
26982  _isWithActiveTrigger() {
26983    return Object.values(this._activeTrigger).includes(true);
26984  }
26985  _getConfig(config) {
26986    const dataAttributes = Manipulator.getDataAttributes(this._element);
26987    for (const dataAttribute of Object.keys(dataAttributes)) {
26988      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {
26989        delete dataAttributes[dataAttribute];
26990      }
26991    }
26992    config = {
26993      ...dataAttributes,
26994      ...(typeof config === 'object' && config ? config : {})
26995    };
26996    config = this._mergeConfigObj(config);
26997    config = this._configAfterMerge(config);
26998    this._typeCheckConfig(config);
26999    return config;
27000  }
27001  _configAfterMerge(config) {
27002    config.container = config.container === false ? document.body : getElement(config.container);
27003    if (typeof config.delay === 'number') {
27004      config.delay = {
27005        show: config.delay,
27006        hide: config.delay
27007      };
27008    }
27009    if (typeof config.title === 'number') {
27010      config.title = config.title.toString();
27011    }
27012    if (typeof config.content === 'number') {
27013      config.content = config.content.toString();
27014    }
27015    return config;
27016  }
27017  _getDelegateConfig() {
27018    const config = {};
27019    for (const [key, value] of Object.entries(this._config)) {
27020      if (this.constructor.Default[key] !== value) {
27021        config[key] = value;
27022      }
27023    }
27024    config.selector = false;
27025    config.trigger = 'manual';
27026
27027    // In the future can be replaced with:
27028    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
27029    // `Object.fromEntries(keysWithDifferentValues)`
27030    return config;
27031  }
27032  _disposePopper() {
27033    if (this._popper) {
27034      this._popper.destroy();
27035      this._popper = null;
27036    }
27037    if (this.tip) {
27038      this.tip.remove();
27039      this.tip = null;
27040    }
27041  }
27042
27043  // Static
27044  static jQueryInterface(config) {
27045    return this.each(function () {
27046      const data = Tooltip.getOrCreateInstance(this, config);
27047      if (typeof config !== 'string') {
27048        return;
27049      }
27050      if (typeof data[config] === 'undefined') {
27051        throw new TypeError(`No method named "${config}"`);
27052      }
27053      data[config]();
27054    });
27055  }
27056}
27057
27058/**
27059 * jQuery
27060 */
27061
27062defineJQueryPlugin(Tooltip);
27063
27064/**
27065 * --------------------------------------------------------------------------
27066 * Bootstrap popover.js
27067 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
27068 * --------------------------------------------------------------------------
27069 */
27070
27071
27072/**
27073 * Constants
27074 */
27075
27076const NAME$3 = 'popover';
27077const SELECTOR_TITLE = '.popover-header';
27078const SELECTOR_CONTENT = '.popover-body';
27079const Default$2 = {
27080  ...Tooltip.Default,
27081  content: '',
27082  offset: [0, 8],
27083  placement: 'right',
27084  template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>',
27085  trigger: 'click'
27086};
27087const DefaultType$2 = {
27088  ...Tooltip.DefaultType,
27089  content: '(null|string|element|function)'
27090};
27091
27092/**
27093 * Class definition
27094 */
27095
27096class Popover extends Tooltip {
27097  // Getters
27098  static get Default() {
27099    return Default$2;
27100  }
27101  static get DefaultType() {
27102    return DefaultType$2;
27103  }
27104  static get NAME() {
27105    return NAME$3;
27106  }
27107
27108  // Overrides
27109  _isWithContent() {
27110    return this._getTitle() || this._getContent();
27111  }
27112
27113  // Private
27114  _getContentForTemplate() {
27115    return {
27116      [SELECTOR_TITLE]: this._getTitle(),
27117      [SELECTOR_CONTENT]: this._getContent()
27118    };
27119  }
27120  _getContent() {
27121    return this._resolvePossibleFunction(this._config.content);
27122  }
27123
27124  // Static
27125  static jQueryInterface(config) {
27126    return this.each(function () {
27127      const data = Popover.getOrCreateInstance(this, config);
27128      if (typeof config !== 'string') {
27129        return;
27130      }
27131      if (typeof data[config] === 'undefined') {
27132        throw new TypeError(`No method named "${config}"`);
27133      }
27134      data[config]();
27135    });
27136  }
27137}
27138
27139/**
27140 * jQuery
27141 */
27142
27143defineJQueryPlugin(Popover);
27144
27145/**
27146 * --------------------------------------------------------------------------
27147 * Bootstrap scrollspy.js
27148 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
27149 * --------------------------------------------------------------------------
27150 */
27151
27152
27153/**
27154 * Constants
27155 */
27156
27157const NAME$2 = 'scrollspy';
27158const DATA_KEY$2 = 'bs.scrollspy';
27159const EVENT_KEY$2 = `.${DATA_KEY$2}`;
27160const DATA_API_KEY = '.data-api';
27161const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
27162const EVENT_CLICK = `click${EVENT_KEY$2}`;
27163const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;
27164const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
27165const CLASS_NAME_ACTIVE$1 = 'active';
27166const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
27167const SELECTOR_TARGET_LINKS = '[href]';
27168const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
27169const SELECTOR_NAV_LINKS = '.nav-link';
27170const SELECTOR_NAV_ITEMS = '.nav-item';
27171const SELECTOR_LIST_ITEMS = '.list-group-item';
27172const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;
27173const SELECTOR_DROPDOWN = '.dropdown';
27174const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
27175const Default$1 = {
27176  offset: null,
27177  // TODO: v6 @deprecated, keep it for backwards compatibility reasons
27178  rootMargin: '0px 0px -25%',
27179  smoothScroll: false,
27180  target: null,
27181  threshold: [0.1, 0.5, 1]
27182};
27183const DefaultType$1 = {
27184  offset: '(number|null)',
27185  // TODO v6 @deprecated, keep it for backwards compatibility reasons
27186  rootMargin: 'string',
27187  smoothScroll: 'boolean',
27188  target: 'element',
27189  threshold: 'array'
27190};
27191
27192/**
27193 * Class definition
27194 */
27195
27196class ScrollSpy extends BaseComponent {
27197  constructor(element, config) {
27198    super(element, config);
27199
27200    // this._element is the observablesContainer and config.target the menu links wrapper
27201    this._targetLinks = new Map();
27202    this._observableSections = new Map();
27203    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;
27204    this._activeTarget = null;
27205    this._observer = null;
27206    this._previousScrollData = {
27207      visibleEntryTop: 0,
27208      parentScrollTop: 0
27209    };
27210    this.refresh(); // initialize
27211  }
27212
27213  // Getters
27214  static get Default() {
27215    return Default$1;
27216  }
27217  static get DefaultType() {
27218    return DefaultType$1;
27219  }
27220  static get NAME() {
27221    return NAME$2;
27222  }
27223
27224  // Public
27225  refresh() {
27226    this._initializeTargetsAndObservables();
27227    this._maybeEnableSmoothScroll();
27228    if (this._observer) {
27229      this._observer.disconnect();
27230    } else {
27231      this._observer = this._getNewObserver();
27232    }
27233    for (const section of this._observableSections.values()) {
27234      this._observer.observe(section);
27235    }
27236  }
27237  dispose() {
27238    this._observer.disconnect();
27239    super.dispose();
27240  }
27241
27242  // Private
27243  _configAfterMerge(config) {
27244    // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case
27245    config.target = getElement(config.target) || document.body;
27246
27247    // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only
27248    config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;
27249    if (typeof config.threshold === 'string') {
27250      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));
27251    }
27252    return config;
27253  }
27254  _maybeEnableSmoothScroll() {
27255    if (!this._config.smoothScroll) {
27256      return;
27257    }
27258
27259    // unregister any previous listeners
27260    EventHandler.off(this._config.target, EVENT_CLICK);
27261    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {
27262      const observableSection = this._observableSections.get(event.target.hash);
27263      if (observableSection) {
27264        event.preventDefault();
27265        const root = this._rootElement || window;
27266        const height = observableSection.offsetTop - this._element.offsetTop;
27267        if (root.scrollTo) {
27268          root.scrollTo({
27269            top: height,
27270            behavior: 'smooth'
27271          });
27272          return;
27273        }
27274
27275        // Chrome 60 doesn't support `scrollTo`
27276        root.scrollTop = height;
27277      }
27278    });
27279  }
27280  _getNewObserver() {
27281    const options = {
27282      root: this._rootElement,
27283      threshold: this._config.threshold,
27284      rootMargin: this._config.rootMargin
27285    };
27286    return new IntersectionObserver(entries => this._observerCallback(entries), options);
27287  }
27288
27289  // The logic of selection
27290  _observerCallback(entries) {
27291    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);
27292    const activate = entry => {
27293      this._previousScrollData.visibleEntryTop = entry.target.offsetTop;
27294      this._process(targetElement(entry));
27295    };
27296    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;
27297    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
27298    this._previousScrollData.parentScrollTop = parentScrollTop;
27299    for (const entry of entries) {
27300      if (!entry.isIntersecting) {
27301        this._activeTarget = null;
27302        this._clearActiveClass(targetElement(entry));
27303        continue;
27304      }
27305      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;
27306      // if we are scrolling down, pick the bigger offsetTop
27307      if (userScrollsDown && entryIsLowerThanPrevious) {
27308        activate(entry);
27309        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration
27310        if (!parentScrollTop) {
27311          return;
27312        }
27313        continue;
27314      }
27315
27316      // if we are scrolling up, pick the smallest offsetTop
27317      if (!userScrollsDown && !entryIsLowerThanPrevious) {
27318        activate(entry);
27319      }
27320    }
27321  }
27322  _initializeTargetsAndObservables() {
27323    this._targetLinks = new Map();
27324    this._observableSections = new Map();
27325    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);
27326    for (const anchor of targetLinks) {
27327      // ensure that the anchor has an id and is not disabled
27328      if (!anchor.hash || isDisabled(anchor)) {
27329        continue;
27330      }
27331      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);
27332
27333      // ensure that the observableSection exists & is visible
27334      if (isVisible(observableSection)) {
27335        this._targetLinks.set(decodeURI(anchor.hash), anchor);
27336        this._observableSections.set(anchor.hash, observableSection);
27337      }
27338    }
27339  }
27340  _process(target) {
27341    if (this._activeTarget === target) {
27342      return;
27343    }
27344    this._clearActiveClass(this._config.target);
27345    this._activeTarget = target;
27346    target.classList.add(CLASS_NAME_ACTIVE$1);
27347    this._activateParents(target);
27348    EventHandler.trigger(this._element, EVENT_ACTIVATE, {
27349      relatedTarget: target
27350    });
27351  }
27352  _activateParents(target) {
27353    // Activate dropdown parents
27354    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
27355      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);
27356      return;
27357    }
27358    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {
27359      // Set triggered links parents as active
27360      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
27361      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {
27362        item.classList.add(CLASS_NAME_ACTIVE$1);
27363      }
27364    }
27365  }
27366  _clearActiveClass(parent) {
27367    parent.classList.remove(CLASS_NAME_ACTIVE$1);
27368    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);
27369    for (const node of activeNodes) {
27370      node.classList.remove(CLASS_NAME_ACTIVE$1);
27371    }
27372  }
27373
27374  // Static
27375  static jQueryInterface(config) {
27376    return this.each(function () {
27377      const data = ScrollSpy.getOrCreateInstance(this, config);
27378      if (typeof config !== 'string') {
27379        return;
27380      }
27381      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
27382        throw new TypeError(`No method named "${config}"`);
27383      }
27384      data[config]();
27385    });
27386  }
27387}
27388
27389/**
27390 * Data API implementation
27391 */
27392
27393EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {
27394  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {
27395    ScrollSpy.getOrCreateInstance(spy);
27396  }
27397});
27398
27399/**
27400 * jQuery
27401 */
27402
27403defineJQueryPlugin(ScrollSpy);
27404
27405/**
27406 * --------------------------------------------------------------------------
27407 * Bootstrap tab.js
27408 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
27409 * --------------------------------------------------------------------------
27410 */
27411
27412
27413/**
27414 * Constants
27415 */
27416
27417const NAME$1 = 'tab';
27418const DATA_KEY$1 = 'bs.tab';
27419const EVENT_KEY$1 = `.${DATA_KEY$1}`;
27420const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
27421const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
27422const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
27423const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
27424const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;
27425const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;
27426const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;
27427const ARROW_LEFT_KEY = 'ArrowLeft';
27428const ARROW_RIGHT_KEY = 'ArrowRight';
27429const ARROW_UP_KEY = 'ArrowUp';
27430const ARROW_DOWN_KEY = 'ArrowDown';
27431const HOME_KEY = 'Home';
27432const END_KEY = 'End';
27433const CLASS_NAME_ACTIVE = 'active';
27434const CLASS_NAME_FADE$1 = 'fade';
27435const CLASS_NAME_SHOW$1 = 'show';
27436const CLASS_DROPDOWN = 'dropdown';
27437const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
27438const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
27439const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
27440const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
27441const SELECTOR_OUTER = '.nav-item, .list-group-item';
27442const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
27443const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6
27444const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
27445const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;
27446
27447/**
27448 * Class definition
27449 */
27450
27451class Tab extends BaseComponent {
27452  constructor(element) {
27453    super(element);
27454    this._parent = this._element.closest(SELECTOR_TAB_PANEL);
27455    if (!this._parent) {
27456      return;
27457      // TODO: should throw exception in v6
27458      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)
27459    }
27460
27461    // Set up initial aria attributes
27462    this._setInitialAttributes(this._parent, this._getChildren());
27463    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
27464  }
27465
27466  // Getters
27467  static get NAME() {
27468    return NAME$1;
27469  }
27470
27471  // Public
27472  show() {
27473    // Shows this elem and deactivate the active sibling if exists
27474    const innerElem = this._element;
27475    if (this._elemIsActive(innerElem)) {
27476      return;
27477    }
27478
27479    // Search for active tab on same parent to deactivate it
27480    const active = this._getActiveElem();
27481    const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {
27482      relatedTarget: innerElem
27483    }) : null;
27484    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {
27485      relatedTarget: active
27486    });
27487    if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {
27488      return;
27489    }
27490    this._deactivate(active, innerElem);
27491    this._activate(innerElem, active);
27492  }
27493
27494  // Private
27495  _activate(element, relatedElem) {
27496    if (!element) {
27497      return;
27498    }
27499    element.classList.add(CLASS_NAME_ACTIVE);
27500    this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section
27501
27502    const complete = () => {
27503      if (element.getAttribute('role') !== 'tab') {
27504        element.classList.add(CLASS_NAME_SHOW$1);
27505        return;
27506      }
27507      element.removeAttribute('tabindex');
27508      element.setAttribute('aria-selected', true);
27509      this._toggleDropDown(element, true);
27510      EventHandler.trigger(element, EVENT_SHOWN$1, {
27511        relatedTarget: relatedElem
27512      });
27513    };
27514    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
27515  }
27516  _deactivate(element, relatedElem) {
27517    if (!element) {
27518      return;
27519    }
27520    element.classList.remove(CLASS_NAME_ACTIVE);
27521    element.blur();
27522    this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too
27523
27524    const complete = () => {
27525      if (element.getAttribute('role') !== 'tab') {
27526        element.classList.remove(CLASS_NAME_SHOW$1);
27527        return;
27528      }
27529      element.setAttribute('aria-selected', false);
27530      element.setAttribute('tabindex', '-1');
27531      this._toggleDropDown(element, false);
27532      EventHandler.trigger(element, EVENT_HIDDEN$1, {
27533        relatedTarget: relatedElem
27534      });
27535    };
27536    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
27537  }
27538  _keydown(event) {
27539    if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {
27540      return;
27541    }
27542    event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page
27543    event.preventDefault();
27544    const children = this._getChildren().filter(element => !isDisabled(element));
27545    let nextActiveElement;
27546    if ([HOME_KEY, END_KEY].includes(event.key)) {
27547      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];
27548    } else {
27549      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
27550      nextActiveElement = getNextActiveElement(children, event.target, isNext, true);
27551    }
27552    if (nextActiveElement) {
27553      nextActiveElement.focus({
27554        preventScroll: true
27555      });
27556      Tab.getOrCreateInstance(nextActiveElement).show();
27557    }
27558  }
27559  _getChildren() {
27560    // collection of inner elements
27561    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);
27562  }
27563  _getActiveElem() {
27564    return this._getChildren().find(child => this._elemIsActive(child)) || null;
27565  }
27566  _setInitialAttributes(parent, children) {
27567    this._setAttributeIfNotExists(parent, 'role', 'tablist');
27568    for (const child of children) {
27569      this._setInitialAttributesOnChild(child);
27570    }
27571  }
27572  _setInitialAttributesOnChild(child) {
27573    child = this._getInnerElement(child);
27574    const isActive = this._elemIsActive(child);
27575    const outerElem = this._getOuterElement(child);
27576    child.setAttribute('aria-selected', isActive);
27577    if (outerElem !== child) {
27578      this._setAttributeIfNotExists(outerElem, 'role', 'presentation');
27579    }
27580    if (!isActive) {
27581      child.setAttribute('tabindex', '-1');
27582    }
27583    this._setAttributeIfNotExists(child, 'role', 'tab');
27584
27585    // set attributes to the related panel too
27586    this._setInitialAttributesOnTargetPanel(child);
27587  }
27588  _setInitialAttributesOnTargetPanel(child) {
27589    const target = SelectorEngine.getElementFromSelector(child);
27590    if (!target) {
27591      return;
27592    }
27593    this._setAttributeIfNotExists(target, 'role', 'tabpanel');
27594    if (child.id) {
27595      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);
27596    }
27597  }
27598  _toggleDropDown(element, open) {
27599    const outerElem = this._getOuterElement(element);
27600    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
27601      return;
27602    }
27603    const toggle = (selector, className) => {
27604      const element = SelectorEngine.findOne(selector, outerElem);
27605      if (element) {
27606        element.classList.toggle(className, open);
27607      }
27608    };
27609    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
27610    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);
27611    outerElem.setAttribute('aria-expanded', open);
27612  }
27613  _setAttributeIfNotExists(element, attribute, value) {
27614    if (!element.hasAttribute(attribute)) {
27615      element.setAttribute(attribute, value);
27616    }
27617  }
27618  _elemIsActive(elem) {
27619    return elem.classList.contains(CLASS_NAME_ACTIVE);
27620  }
27621
27622  // Try to get the inner element (usually the .nav-link)
27623  _getInnerElement(elem) {
27624    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);
27625  }
27626
27627  // Try to get the outer element (usually the .nav-item)
27628  _getOuterElement(elem) {
27629    return elem.closest(SELECTOR_OUTER) || elem;
27630  }
27631
27632  // Static
27633  static jQueryInterface(config) {
27634    return this.each(function () {
27635      const data = Tab.getOrCreateInstance(this);
27636      if (typeof config !== 'string') {
27637        return;
27638      }
27639      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
27640        throw new TypeError(`No method named "${config}"`);
27641      }
27642      data[config]();
27643    });
27644  }
27645}
27646
27647/**
27648 * Data API implementation
27649 */
27650
27651EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
27652  if (['A', 'AREA'].includes(this.tagName)) {
27653    event.preventDefault();
27654  }
27655  if (isDisabled(this)) {
27656    return;
27657  }
27658  Tab.getOrCreateInstance(this).show();
27659});
27660
27661/**
27662 * Initialize on focus
27663 */
27664EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
27665  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
27666    Tab.getOrCreateInstance(element);
27667  }
27668});
27669/**
27670 * jQuery
27671 */
27672
27673defineJQueryPlugin(Tab);
27674
27675/**
27676 * --------------------------------------------------------------------------
27677 * Bootstrap toast.js
27678 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
27679 * --------------------------------------------------------------------------
27680 */
27681
27682
27683/**
27684 * Constants
27685 */
27686
27687const NAME = 'toast';
27688const DATA_KEY = 'bs.toast';
27689const EVENT_KEY = `.${DATA_KEY}`;
27690const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
27691const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
27692const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
27693const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
27694const EVENT_HIDE = `hide${EVENT_KEY}`;
27695const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
27696const EVENT_SHOW = `show${EVENT_KEY}`;
27697const EVENT_SHOWN = `shown${EVENT_KEY}`;
27698const CLASS_NAME_FADE = 'fade';
27699const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
27700const CLASS_NAME_SHOW = 'show';
27701const CLASS_NAME_SHOWING = 'showing';
27702const DefaultType = {
27703  animation: 'boolean',
27704  autohide: 'boolean',
27705  delay: 'number'
27706};
27707const Default = {
27708  animation: true,
27709  autohide: true,
27710  delay: 5000
27711};
27712
27713/**
27714 * Class definition
27715 */
27716
27717class Toast extends BaseComponent {
27718  constructor(element, config) {
27719    super(element, config);
27720    this._timeout = null;
27721    this._hasMouseInteraction = false;
27722    this._hasKeyboardInteraction = false;
27723    this._setListeners();
27724  }
27725
27726  // Getters
27727  static get Default() {
27728    return Default;
27729  }
27730  static get DefaultType() {
27731    return DefaultType;
27732  }
27733  static get NAME() {
27734    return NAME;
27735  }
27736
27737  // Public
27738  show() {
27739    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
27740    if (showEvent.defaultPrevented) {
27741      return;
27742    }
27743    this._clearTimeout();
27744    if (this._config.animation) {
27745      this._element.classList.add(CLASS_NAME_FADE);
27746    }
27747    const complete = () => {
27748      this._element.classList.remove(CLASS_NAME_SHOWING);
27749      EventHandler.trigger(this._element, EVENT_SHOWN);
27750      this._maybeScheduleHide();
27751    };
27752    this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
27753    reflow(this._element);
27754    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
27755    this._queueCallback(complete, this._element, this._config.animation);
27756  }
27757  hide() {
27758    if (!this.isShown()) {
27759      return;
27760    }
27761    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
27762    if (hideEvent.defaultPrevented) {
27763      return;
27764    }
27765    const complete = () => {
27766      this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
27767      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
27768      EventHandler.trigger(this._element, EVENT_HIDDEN);
27769    };
27770    this._element.classList.add(CLASS_NAME_SHOWING);
27771    this._queueCallback(complete, this._element, this._config.animation);
27772  }
27773  dispose() {
27774    this._clearTimeout();
27775    if (this.isShown()) {
27776      this._element.classList.remove(CLASS_NAME_SHOW);
27777    }
27778    super.dispose();
27779  }
27780  isShown() {
27781    return this._element.classList.contains(CLASS_NAME_SHOW);
27782  }
27783
27784  // Private
27785
27786  _maybeScheduleHide() {
27787    if (!this._config.autohide) {
27788      return;
27789    }
27790    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
27791      return;
27792    }
27793    this._timeout = setTimeout(() => {
27794      this.hide();
27795    }, this._config.delay);
27796  }
27797  _onInteraction(event, isInteracting) {
27798    switch (event.type) {
27799      case 'mouseover':
27800      case 'mouseout':
27801        {
27802          this._hasMouseInteraction = isInteracting;
27803          break;
27804        }
27805      case 'focusin':
27806      case 'focusout':
27807        {
27808          this._hasKeyboardInteraction = isInteracting;
27809          break;
27810        }
27811    }
27812    if (isInteracting) {
27813      this._clearTimeout();
27814      return;
27815    }
27816    const nextElement = event.relatedTarget;
27817    if (this._element === nextElement || this._element.contains(nextElement)) {
27818      return;
27819    }
27820    this._maybeScheduleHide();
27821  }
27822  _setListeners() {
27823    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
27824    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
27825    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
27826    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
27827  }
27828  _clearTimeout() {
27829    clearTimeout(this._timeout);
27830    this._timeout = null;
27831  }
27832
27833  // Static
27834  static jQueryInterface(config) {
27835    return this.each(function () {
27836      const data = Toast.getOrCreateInstance(this, config);
27837      if (typeof config === 'string') {
27838        if (typeof data[config] === 'undefined') {
27839          throw new TypeError(`No method named "${config}"`);
27840        }
27841        data[config](this);
27842      }
27843    });
27844  }
27845}
27846
27847/**
27848 * Data API implementation
27849 */
27850
27851enableDismissTrigger(Toast);
27852
27853/**
27854 * jQuery
27855 */
27856
27857defineJQueryPlugin(Toast);
27858
27859
27860//# sourceMappingURL=bootstrap.esm.js.map
27861
27862
27863/***/ }),
27864
vendor: 9,275 bytes, lines 27865-27880
27865/***/ "./node_modules/clipboard/dist/clipboard.min.js":
27866/*!******************************************************!*\
27867  !*** ./node_modules/clipboard/dist/clipboard.min.js ***!
27868  \******************************************************/
27869/***/ (function(module) {
27870
27871/*!
27872 * clipboard.js v2.0.11
27873 * https://clipboardjs.com/
27874 *
27875 * Licensed MIT © Zeno Rocha
27876 */
27877!function(t,e){ true?module.exports=e():0}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{container:document.body},n="";return"string"==typeof t?n=o(t,e):t instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(null==t?void 0:t.type)?n=o(t.value,e):(n=r()(t),c("copy")),n};function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var s=function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=t.action,n=void 0===e?"copy":e,o=t.container,e=t.target,t=t.text;if("copy"!==n&&"cut"!==n)throw new Error('Invalid "action" value, use either "copy" or "cut"');if(void 0!==e){if(!e||"object"!==l(e)||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===n&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===n&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes')}return t?f(t,{container:o}):e?"cut"===n?a(e):f(e,{container:o}):void 0};function p(t){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function y(t,e){return(y=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function h(n){var o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=v(n);return t=o?(t=v(this).constructor,Reflect.construct(e,arguments,t)):e.apply(this,arguments),e=this,!(t=t)||"object"!==p(t)&&"function"!=typeof t?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(e):t}}function v(t){return(v=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t,e){t="data-clipboard-".concat(t);if(e.hasAttribute(t))return e.getAttribute(t)}var b=function(){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&y(t,e)}(r,i());var t,e,n,o=h(r);function r(t,e){var n;return function(t){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this),(n=o.call(this)).resolveOptions(e),n.listenClick(t),n}return t=r,n=[{key:"copy",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{container:document.body};return f(t,e)}},{key:"cut",value:function(t){return a(t)}},{key:"isSupported",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],t="string"==typeof t?[t]:t,e=!!document.queryCommandSupported;return t.forEach(function(t){e=e&&!!document.queryCommandSupported(t)}),e}}],(e=[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===p(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=u()(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget,n=this.action(e)||"copy",t=s({action:n,container:this.container,target:this.target(e),text:this.text(e)});this.emit(t?"success":"error",{action:n,text:t,trigger:e,clearSelection:function(){e&&e.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(t){return m("action",t)}},{key:"defaultTarget",value:function(t){t=m("target",t);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(t){return m("text",t)}},{key:"destroy",value:function(){this.listener.destroy()}}])&&d(t.prototype,e),n&&d(t,n),r}()},828:function(t){var e;"undefined"==typeof Element||Element.prototype.matches||((e=Element.prototype).matches=e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector),t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},438:function(t,e,n){var u=n(828);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=u(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},879:function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},370:function(t,e,n){var f=n(879),l=n(438);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!f.string(e))throw new TypeError("Second argument must be a String");if(!f.fn(n))throw new TypeError("Third argument must be a Function");if(f.node(t))return c=e,a=n,(u=t).addEventListener(c,a),{destroy:function(){u.removeEventListener(c,a)}};if(f.nodeList(t))return o=t,r=e,i=n,Array.prototype.forEach.call(o,function(t){t.addEventListener(r,i)}),{destroy:function(){Array.prototype.forEach.call(o,function(t){t.removeEventListener(r,i)})}};if(f.string(t))return t=t,e=e,n=n,l(document.body,t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var o,r,i,u,c,a}},817:function(t){t.exports=function(t){var e,n="SELECT"===t.nodeName?(t.focus(),t.value):"INPUT"===t.nodeName||"TEXTAREA"===t.nodeName?((e=t.hasAttribute("readonly"))||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),e||t.removeAttribute("readonly"),t.value):(t.hasAttribute("contenteditable")&&t.focus(),n=window.getSelection(),(e=document.createRange()).selectNodeContents(t),n.removeAllRanges(),n.addRange(e),n.toString());return n}},279:function(t){function e(){}e.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,u=o.length;i<u;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=e,t.exports.TinyEmitter=e}},r={},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,{a:e}),e},o.d=function(t,e){for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o(686).default;function o(t){if(r[t])return r[t].exports;var e=r[t]={exports:{}};return n[t](e,e.exports,o),e.exports}var n,r});
27878
27879/***/ }),
27880
vendor: 3,374 bytes, lines 27881-27896
27881/***/ "./node_modules/es6-promise-polyfill/promise.min.js":
27882/*!**********************************************************!*\
27883  !*** ./node_modules/es6-promise-polyfill/promise.min.js ***!
27884  \**********************************************************/
27885/***/ (function(module, exports, __webpack_require__) {
27886
27887var __WEBPACK_AMD_DEFINE_RESULT__;(function(t){function z(){for(var a=0;a<g.length;a++)g[a][0](g[a][1]);g=[];m=!1}function n(a,b){g.push([a,b]);m||(m=!0,A(z,0))}function B(a,b){function c(a){p(b,a)}function h(a){k(b,a)}try{a(c,h)}catch(d){h(d)}}function u(a){var b=a.owner,c=b.state_,b=b.data_,h=a[c];a=a.then;if("function"===typeof h){c=l;try{b=h(b)}catch(d){k(a,d)}}v(a,b)||(c===l&&p(a,b),c===q&&k(a,b))}function v(a,b){var c;try{if(a===b)throw new TypeError("A promises callback cannot return that same promise.");if(b&&("function"===
27888typeof b||"object"===typeof b)){var h=b.then;if("function"===typeof h)return h.call(b,function(d){c||(c=!0,b!==d?p(a,d):w(a,d))},function(b){c||(c=!0,k(a,b))}),!0}}catch(d){return c||k(a,d),!0}return!1}function p(a,b){a!==b&&v(a,b)||w(a,b)}function w(a,b){a.state_===r&&(a.state_=x,a.data_=b,n(C,a))}function k(a,b){a.state_===r&&(a.state_=x,a.data_=b,n(D,a))}function y(a){var b=a.then_;a.then_=void 0;for(a=0;a<b.length;a++)u(b[a])}function C(a){a.state_=l;y(a)}function D(a){a.state_=q;y(a)}function e(a){if("function"!==
27889typeof a)throw new TypeError("Promise constructor takes a function argument");if(!1===this instanceof e)throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");this.then_=[];B(a,this)}var f=t.Promise,s=f&&"resolve"in f&&"reject"in f&&"all"in f&&"race"in f&&function(){var a;new f(function(b){a=b});return"function"===typeof a}(); true&&exports?(exports.Promise=s?f:e,exports.Polyfill=e): true?!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(){return s?f:e}).call(exports, __webpack_require__, exports, module),
27890		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):0;var r="pending",x="sealed",l="fulfilled",q="rejected",E=function(){},A="undefined"!==typeof setImmediate?setImmediate:setTimeout,g=[],m;e.prototype={constructor:e,state_:r,then_:null,data_:void 0,then:function(a,b){var c={owner:this,then:new this.constructor(E),fulfilled:a,rejected:b};this.state_===l||this.state_===q?n(u,c):this.then_.push(c);return c.then},"catch":function(a){return this.then(null,a)}};e.all=function(a){if("[object Array]"!==
27891Object.prototype.toString.call(a))throw new TypeError("You must pass an array to Promise.all().");return new this(function(b,c){function h(a){e++;return function(c){d[a]=c;--e||b(d)}}for(var d=[],e=0,f=0,g;f<a.length;f++)(g=a[f])&&"function"===typeof g.then?g.then(h(f),c):d[f]=g;e||b(d)})};e.race=function(a){if("[object Array]"!==Object.prototype.toString.call(a))throw new TypeError("You must pass an array to Promise.race().");return new this(function(b,c){for(var e=0,d;e<a.length;e++)(d=a[e])&&"function"===
27892typeof d.then?d.then(b,c):b(d)})};e.resolve=function(a){return a&&"object"===typeof a&&a.constructor===this?a:new this(function(b){b(a)})};e.reject=function(a){return new this(function(b,c){c(a)})}})("undefined"!=typeof window?window:"undefined"!=typeof __webpack_require__.g?__webpack_require__.g:"undefined"!=typeof self?self:this);
27893
27894
27895/***/ }),
27896
vendor: 58,444 bytes, lines 27897-27923
27897/***/ "./node_modules/es6-shim/es6-shim.min.js":
27898/*!***********************************************!*\
27899  !*** ./node_modules/es6-shim/es6-shim.min.js ***!
27900  \***********************************************/
27901/***/ (function(module, exports, __webpack_require__) {
27902
27903/* provided dependency */ var process = __webpack_require__(/*! process/browser.js */ "./node_modules/process/browser.js");
27904var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
27905 * https://github.com/paulmillr/es6-shim
27906 * @license es6-shim Copyright 2013-2016 by Paul Miller (http://paulmillr.com)
27907 *   and contributors,  MIT License
27908 * es6-shim: v0.35.4
27909 * see https://github.com/paulmillr/es6-shim/blob/0.35.3/LICENSE
27910 * Details and documentation:
27911 * https://github.com/paulmillr/es6-shim/
27912 */
27913(function(e,t){if(true){!(__WEBPACK_AMD_DEFINE_FACTORY__ = (t),
27914		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
27915		(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
27916		__WEBPACK_AMD_DEFINE_FACTORY__),
27917		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))}else {}})(this,function(){"use strict";var e=Function.call.bind(Function.apply);var t=Function.call.bind(Function.call);var r=Array.isArray;var n=Object.keys;var o=function notThunker(t){return function notThunk(){return!e(t,this,arguments)}};var i=function(e){try{e();return false}catch(t){return true}};var a=function valueOrFalseIfThrows(e){try{return e()}catch(t){return false}};var u=o(i);var f=function(){return!i(function(){return Object.defineProperty({},"x",{get:function(){}})})};var s=!!Object.defineProperty&&f();var c=function foo(){}.name==="foo";var l=Function.call.bind(Array.prototype.forEach);var p=Function.call.bind(Array.prototype.reduce);var v=Function.call.bind(Array.prototype.filter);var y=Function.call.bind(Array.prototype.some);var h=function(e,t,r,n){if(!n&&t in e){return}if(s){Object.defineProperty(e,t,{configurable:true,enumerable:false,writable:true,value:r})}else{e[t]=r}};var b=function(e,t,r){l(n(t),function(n){var o=t[n];h(e,n,o,!!r)})};var g=Function.call.bind(Object.prototype.toString);var d= false?0:function IsCallableFast(e){return typeof e==="function"};var m={getter:function(e,t,r){if(!s){throw new TypeError("getters require true ES5 support")}Object.defineProperty(e,t,{configurable:true,enumerable:false,get:r})},proxy:function(e,t,r){if(!s){throw new TypeError("getters require true ES5 support")}var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,{configurable:n.configurable,enumerable:n.enumerable,get:function getKey(){return e[t]},set:function setKey(r){e[t]=r}})},redefine:function(e,t,r){if(s){var n=Object.getOwnPropertyDescriptor(e,t);n.value=r;Object.defineProperty(e,t,n)}else{e[t]=r}},defineByDescriptor:function(e,t,r){if(s){Object.defineProperty(e,t,r)}else if("value"in r){e[t]=r.value}},preserveToString:function(e,t){if(t&&d(t.toString)){h(e,"toString",t.toString.bind(t),true)}}};var O=Object.create||function(e,t){var r=function Prototype(){};r.prototype=e;var o=new r;if(typeof t!=="undefined"){n(t).forEach(function(e){m.defineByDescriptor(o,e,t[e])})}return o};var w=function(e,t){if(!Object.setPrototypeOf){return false}return a(function(){var r=function Subclass(t){var r=new e(t);Object.setPrototypeOf(r,Subclass.prototype);return r};Object.setPrototypeOf(r,e);r.prototype=O(e.prototype,{constructor:{value:r}});return t(r)})};var j=function(){if(typeof self!=="undefined"){return self}if(typeof window!=="undefined"){return window}if(typeof __webpack_require__.g!=="undefined"){return __webpack_require__.g}throw new Error("unable to locate global object")};var S=j();var T=S.isFinite;var I=Function.call.bind(String.prototype.indexOf);var E=Function.apply.bind(Array.prototype.indexOf);var P=Function.call.bind(Array.prototype.concat);var C=Function.call.bind(String.prototype.slice);var M=Function.call.bind(Array.prototype.push);var x=Function.apply.bind(Array.prototype.push);var N=Function.call.bind(Array.prototype.join);var A=Function.call.bind(Array.prototype.shift);var _=Math.max;var R=Math.min;var k=Math.floor;var L=Math.abs;var F=Math.exp;var D=Math.log;var z=Math.sqrt;var q=Function.call.bind(Object.prototype.hasOwnProperty);var W;var G=function(){};var H=S.Map;var V=H&&H.prototype["delete"];var B=H&&H.prototype.get;var U=H&&H.prototype.has;var $=H&&H.prototype.set;var J=S.Symbol||{};var X=J.species||"@@species";var K=Number.isNaN||function isNaN(e){return e!==e};var Z=Number.isFinite||function isFinite(e){return typeof e==="number"&&T(e)};var Y=d(Math.sign)?Math.sign:function sign(e){var t=Number(e);if(t===0){return t}if(K(t)){return t}return t<0?-1:1};var Q=function log1p(e){var t=Number(e);if(t<-1||K(t)){return NaN}if(t===0||t===Infinity){return t}if(t===-1){return-Infinity}return 1+t-1===0?t:t*(D(1+t)/(1+t-1))};var ee=function isArguments(e){return g(e)==="[object Arguments]"};var te=function isArguments(e){return e!==null&&typeof e==="object"&&typeof e.length==="number"&&e.length>=0&&g(e)!=="[object Array]"&&g(e.callee)==="[object Function]"};var re=ee(arguments)?ee:te;var ne={primitive:function(e){return e===null||typeof e!=="function"&&typeof e!=="object"},string:function(e){return g(e)==="[object String]"},regex:function(e){return g(e)==="[object RegExp]"},symbol:function(e){return typeof S.Symbol==="function"&&typeof e==="symbol"}};var oe=function overrideNative(e,t,r){var n=e[t];h(e,t,r,true);m.preserveToString(e[t],n)};var ie=typeof J==="function"&&typeof J["for"]==="function"&&ne.symbol(J());var ae=ne.symbol(J.iterator)?J.iterator:"_es6-shim iterator_";if(S.Set&&typeof(new S.Set)["@@iterator"]==="function"){ae="@@iterator"}if(!S.Reflect){h(S,"Reflect",{},true)}var ue=S.Reflect;var fe=String;var se=typeof document==="undefined"||!document?null:document.all;var ce=se==null?function isNullOrUndefined(e){return e==null}:function isNullOrUndefinedAndNotDocumentAll(e){return e==null&&e!==se};var le={Call:function Call(t,r){var n=arguments.length>2?arguments[2]:[];if(!le.IsCallable(t)){throw new TypeError(t+" is not a function")}return e(t,r,n)},RequireObjectCoercible:function(e,t){if(ce(e)){throw new TypeError(t||"Cannot call method on "+e)}return e},TypeIsObject:function(e){if(e===void 0||e===null||e===true||e===false){return false}return typeof e==="function"||typeof e==="object"||e===se},ToObject:function(e,t){return Object(le.RequireObjectCoercible(e,t))},IsCallable:d,IsConstructor:function(e){return le.IsCallable(e)},ToInt32:function(e){return le.ToNumber(e)>>0},ToUint32:function(e){return le.ToNumber(e)>>>0},ToNumber:function(e){if(ie&&g(e)==="[object Symbol]"){throw new TypeError("Cannot convert a Symbol value to a number")}return+e},ToInteger:function(e){var t=le.ToNumber(e);if(K(t)){return 0}if(t===0||!Z(t)){return t}return(t>0?1:-1)*k(L(t))},ToLength:function(e){var t=le.ToInteger(e);if(t<=0){return 0}if(t>Number.MAX_SAFE_INTEGER){return Number.MAX_SAFE_INTEGER}return t},SameValue:function(e,t){if(e===t){if(e===0){return 1/e===1/t}return true}return K(e)&&K(t)},SameValueZero:function(e,t){return e===t||K(e)&&K(t)},GetIterator:function(e){if(re(e)){return new W(e,"value")}var t=le.GetMethod(e,ae);if(!le.IsCallable(t)){throw new TypeError("value is not an iterable")}var r=le.Call(t,e);if(!le.TypeIsObject(r)){throw new TypeError("bad iterator")}return r},GetMethod:function(e,t){var r=le.ToObject(e)[t];if(ce(r)){return void 0}if(!le.IsCallable(r)){throw new TypeError("Method not callable: "+t)}return r},IteratorComplete:function(e){return!!e.done},IteratorClose:function(e,t){var r=le.GetMethod(e,"return");if(r===void 0){return}var n,o;try{n=le.Call(r,e)}catch(i){o=i}if(t){return}if(o){throw o}if(!le.TypeIsObject(n)){throw new TypeError("Iterator's return method returned a non-object.")}},IteratorNext:function(e){var t=arguments.length>1?e.next(arguments[1]):e.next();if(!le.TypeIsObject(t)){throw new TypeError("bad iterator")}return t},IteratorStep:function(e){var t=le.IteratorNext(e);var r=le.IteratorComplete(t);return r?false:t},Construct:function(e,t,r,n){var o=typeof r==="undefined"?e:r;if(!n&&ue.construct){return ue.construct(e,t,o)}var i=o.prototype;if(!le.TypeIsObject(i)){i=Object.prototype}var a=O(i);var u=le.Call(e,a,t);return le.TypeIsObject(u)?u:a},SpeciesConstructor:function(e,t){var r=e.constructor;if(r===void 0){return t}if(!le.TypeIsObject(r)){throw new TypeError("Bad constructor")}var n=r[X];if(ce(n)){return t}if(!le.IsConstructor(n)){throw new TypeError("Bad @@species")}return n},CreateHTML:function(e,t,r,n){var o=le.ToString(e);var i="<"+t;if(r!==""){var a=le.ToString(n);var u=a.replace(/"/g,"&quot;");i+=" "+r+'="'+u+'"'}var f=i+">";var s=f+o;return s+"</"+t+">"},IsRegExp:function IsRegExp(e){if(!le.TypeIsObject(e)){return false}var t=e[J.match];if(typeof t!=="undefined"){return!!t}return ne.regex(e)},ToString:function ToString(e){if(ie&&g(e)==="[object Symbol]"){throw new TypeError("Cannot convert a Symbol value to a number")}return fe(e)}};if(s&&ie){var pe=function defineWellKnownSymbol(e){if(ne.symbol(J[e])){return J[e]}var t=J["for"]("Symbol."+e);Object.defineProperty(J,e,{configurable:false,enumerable:false,writable:false,value:t});return t};if(!ne.symbol(J.search)){var ve=pe("search");var ye=String.prototype.search;h(RegExp.prototype,ve,function search(e){return le.Call(ye,e,[this])});var he=function search(e){var t=le.RequireObjectCoercible(this);if(!ce(e)){var r=le.GetMethod(e,ve);if(typeof r!=="undefined"){return le.Call(r,e,[t])}}return le.Call(ye,t,[le.ToString(e)])};oe(String.prototype,"search",he)}if(!ne.symbol(J.replace)){var be=pe("replace");var ge=String.prototype.replace;h(RegExp.prototype,be,function replace(e,t){return le.Call(ge,e,[this,t])});var de=function replace(e,t){var r=le.RequireObjectCoercible(this);if(!ce(e)){var n=le.GetMethod(e,be);if(typeof n!=="undefined"){return le.Call(n,e,[r,t])}}return le.Call(ge,r,[le.ToString(e),t])};oe(String.prototype,"replace",de)}if(!ne.symbol(J.split)){var me=pe("split");var Oe=String.prototype.split;h(RegExp.prototype,me,function split(e,t){return le.Call(Oe,e,[this,t])});var we=function split(e,t){var r=le.RequireObjectCoercible(this);if(!ce(e)){var n=le.GetMethod(e,me);if(typeof n!=="undefined"){return le.Call(n,e,[r,t])}}return le.Call(Oe,r,[le.ToString(e),t])};oe(String.prototype,"split",we)}var je=ne.symbol(J.match);var Se=je&&function(){var e={};e[J.match]=function(){return 42};return"a".match(e)!==42}();if(!je||Se){var Te=pe("match");var Ie=String.prototype.match;h(RegExp.prototype,Te,function match(e){return le.Call(Ie,e,[this])});var Ee=function match(e){var t=le.RequireObjectCoercible(this);if(!ce(e)){var r=le.GetMethod(e,Te);if(typeof r!=="undefined"){return le.Call(r,e,[t])}}return le.Call(Ie,t,[le.ToString(e)])};oe(String.prototype,"match",Ee)}}var Pe=function wrapConstructor(e,t,r){m.preserveToString(t,e);if(Object.setPrototypeOf){Object.setPrototypeOf(e,t)}if(s){l(Object.getOwnPropertyNames(e),function(n){if(n in G||r[n]){return}m.proxy(e,n,t)})}else{l(Object.keys(e),function(n){if(n in G||r[n]){return}t[n]=e[n]})}t.prototype=e.prototype;m.redefine(e.prototype,"constructor",t)};var Ce=function(){return this};var Me=function(e){if(s&&!q(e,X)){m.getter(e,X,Ce)}};var xe=function(e,t){var r=t||function iterator(){return this};h(e,ae,r);if(!e[ae]&&ne.symbol(ae)){e[ae]=r}};var Ne=function createDataProperty(e,t,r){if(s){Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:r})}else{e[t]=r}};var Ae=function createDataPropertyOrThrow(e,t,r){Ne(e,t,r);if(!le.SameValue(e[t],r)){throw new TypeError("property is nonconfigurable")}};var _e=function(e,t,r,n){if(!le.TypeIsObject(e)){throw new TypeError("Constructor requires `new`: "+t.name)}var o=t.prototype;if(!le.TypeIsObject(o)){o=r}var i=O(o);for(var a in n){if(q(n,a)){var u=n[a];h(i,a,u,true)}}return i};if(String.fromCodePoint&&String.fromCodePoint.length!==1){var Re=String.fromCodePoint;oe(String,"fromCodePoint",function fromCodePoint(e){return le.Call(Re,this,arguments)})}var ke={fromCodePoint:function fromCodePoint(e){var t=[];var r;for(var n=0,o=arguments.length;n<o;n++){r=Number(arguments[n]);if(!le.SameValue(r,le.ToInteger(r))||r<0||r>1114111){throw new RangeError("Invalid code point "+r)}if(r<65536){M(t,String.fromCharCode(r))}else{r-=65536;M(t,String.fromCharCode((r>>10)+55296));M(t,String.fromCharCode(r%1024+56320))}}return N(t,"")},raw:function raw(e){var t=arguments.length-1;var r=le.ToObject(e,"bad template");var raw=le.ToObject(r.raw,"bad raw value");var n=raw.length;var o=le.ToLength(n);if(o<=0){return""}var i=[];var a=0;var u,f,s,c;while(a<o){u=le.ToString(a);s=le.ToString(raw[u]);M(i,s);if(a+1>=o){break}f=a+1<arguments.length?arguments[a+1]:"";c=le.ToString(f);M(i,c);a+=1}return N(i,"")}};if(String.raw&&String.raw({raw:{0:"x",1:"y",length:2}})!=="xy"){oe(String,"raw",ke.raw)}b(String,ke);var Le=function repeat(e,t){if(t<1){return""}if(t%2){return repeat(e,t-1)+e}var r=repeat(e,t/2);return r+r};var Fe=Infinity;var De={repeat:function repeat(e){var t=le.ToString(le.RequireObjectCoercible(this));var r=le.ToInteger(e);if(r<0||r>=Fe){throw new RangeError("repeat count must be less than infinity and not overflow maximum string size")}return Le(t,r)},startsWith:function startsWith(e){var t=le.ToString(le.RequireObjectCoercible(this));if(le.IsRegExp(e)){throw new TypeError('Cannot call method "startsWith" with a regex')}var r=le.ToString(e);var n;if(arguments.length>1){n=arguments[1]}var o=_(le.ToInteger(n),0);return C(t,o,o+r.length)===r},endsWith:function endsWith(e){var t=le.ToString(le.RequireObjectCoercible(this));if(le.IsRegExp(e)){throw new TypeError('Cannot call method "endsWith" with a regex')}var r=le.ToString(e);var n=t.length;var o;if(arguments.length>1){o=arguments[1]}var i=typeof o==="undefined"?n:le.ToInteger(o);var a=R(_(i,0),n);return C(t,a-r.length,a)===r},includes:function includes(e){if(le.IsRegExp(e)){throw new TypeError('"includes" does not accept a RegExp')}var t=le.ToString(e);var r;if(arguments.length>1){r=arguments[1]}return I(this,t,r)!==-1},codePointAt:function codePointAt(e){var t=le.ToString(le.RequireObjectCoercible(this));var r=le.ToInteger(e);var n=t.length;if(r>=0&&r<n){var o=t.charCodeAt(r);var i=r+1===n;if(o<55296||o>56319||i){return o}var a=t.charCodeAt(r+1);if(a<56320||a>57343){return o}return(o-55296)*1024+(a-56320)+65536}}};if(String.prototype.includes&&"a".includes("a",Infinity)!==false){oe(String.prototype,"includes",De.includes)}if(String.prototype.startsWith&&String.prototype.endsWith){var ze=i(function(){return"/a/".startsWith(/a/)});var qe=a(function(){return"abc".startsWith("a",Infinity)===false});if(!ze||!qe){oe(String.prototype,"startsWith",De.startsWith);oe(String.prototype,"endsWith",De.endsWith)}}if(ie){var We=a(function(){var e=/a/;e[J.match]=false;return"/a/".startsWith(e)});if(!We){oe(String.prototype,"startsWith",De.startsWith)}var Ge=a(function(){var e=/a/;e[J.match]=false;return"/a/".endsWith(e)});if(!Ge){oe(String.prototype,"endsWith",De.endsWith)}var He=a(function(){var e=/a/;e[J.match]=false;return"/a/".includes(e)});if(!He){oe(String.prototype,"includes",De.includes)}}b(String.prototype,De);var Ve=["\t\n\x0B\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003","\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028","\u2029\ufeff"].join("");var Be=new RegExp("(^["+Ve+"]+)|(["+Ve+"]+$)","g");var Ue=function trim(){return le.ToString(le.RequireObjectCoercible(this)).replace(Be,"")};var $e=["\x85","\u200b","\ufffe"].join("");var Je=new RegExp("["+$e+"]","g");var Xe=/^[-+]0x[0-9a-f]+$/i;var Ke=$e.trim().length!==$e.length;h(String.prototype,"trim",Ue,Ke);var Ze=function(e){return{value:e,done:arguments.length===0}};var Ye=function(e){le.RequireObjectCoercible(e);h(this,"_s",le.ToString(e));h(this,"_i",0)};Ye.prototype.next=function(){var e=this._s;var t=this._i;if(typeof e==="undefined"||t>=e.length){this._s=void 0;return Ze()}var r=e.charCodeAt(t);var n,o;if(r<55296||r>56319||t+1===e.length){o=1}else{n=e.charCodeAt(t+1);o=n<56320||n>57343?1:2}this._i=t+o;return Ze(e.substr(t,o))};xe(Ye.prototype);xe(String.prototype,function(){return new Ye(this)});var Qe={from:function from(e){var r=this;var n;if(arguments.length>1){n=arguments[1]}var o,i;if(typeof n==="undefined"){o=false}else{if(!le.IsCallable(n)){throw new TypeError("Array.from: when provided, the second argument must be a function")}if(arguments.length>2){i=arguments[2]}o=true}var a=typeof(re(e)||le.GetMethod(e,ae))!=="undefined";var u,f,s;if(a){f=le.IsConstructor(r)?Object(new r):[];var c=le.GetIterator(e);var l,p;s=0;while(true){l=le.IteratorStep(c);if(l===false){break}p=l.value;try{if(o){p=typeof i==="undefined"?n(p,s):t(n,i,p,s)}f[s]=p}catch(v){le.IteratorClose(c,true);throw v}s+=1}u=s}else{var y=le.ToObject(e);u=le.ToLength(y.length);f=le.IsConstructor(r)?Object(new r(u)):new Array(u);var h;for(s=0;s<u;++s){h=y[s];if(o){h=typeof i==="undefined"?n(h,s):t(n,i,h,s)}Ae(f,s,h)}}f.length=u;return f},of:function of(){var e=arguments.length;var t=this;var n=r(t)||!le.IsCallable(t)?new Array(e):le.Construct(t,[e]);for(var o=0;o<e;++o){Ae(n,o,arguments[o])}n.length=e;return n}};b(Array,Qe);Me(Array);W=function(e,t){h(this,"i",0);h(this,"array",e);h(this,"kind",t)};b(W.prototype,{next:function(){var e=this.i;var t=this.array;if(!(this instanceof W)){throw new TypeError("Not an ArrayIterator")}if(typeof t!=="undefined"){var r=le.ToLength(t.length);if(e<r){var n=this.kind;var o;if(n==="key"){o=e}else if(n==="value"){o=t[e]}else if(n==="entry"){o=[e,t[e]]}this.i=e+1;return Ze(o)}}this.array=void 0;return Ze()}});xe(W.prototype);var et=Array.of===Qe.of||function(){var e=function Foo(e){this.length=e};e.prototype=[];var t=Array.of.apply(e,[1,2]);return t instanceof e&&t.length===2}();if(!et){oe(Array,"of",Qe.of)}var tt={copyWithin:function copyWithin(e,t){var r=le.ToObject(this);var n=le.ToLength(r.length);var o=le.ToInteger(e);var i=le.ToInteger(t);var a=o<0?_(n+o,0):R(o,n);var u=i<0?_(n+i,0):R(i,n);var f;if(arguments.length>2){f=arguments[2]}var s=typeof f==="undefined"?n:le.ToInteger(f);var c=s<0?_(n+s,0):R(s,n);var l=R(c-u,n-a);var p=1;if(u<a&&a<u+l){p=-1;u+=l-1;a+=l-1}while(l>0){if(u in r){r[a]=r[u]}else{delete r[a]}u+=p;a+=p;l-=1}return r},fill:function fill(e){var t;if(arguments.length>1){t=arguments[1]}var r;if(arguments.length>2){r=arguments[2]}var n=le.ToObject(this);var o=le.ToLength(n.length);t=le.ToInteger(typeof t==="undefined"?0:t);r=le.ToInteger(typeof r==="undefined"?o:r);var i=t<0?_(o+t,0):R(t,o);var a=r<0?o+r:r;for(var u=i;u<o&&u<a;++u){n[u]=e}return n},find:function find(e){var r=le.ToObject(this);var n=le.ToLength(r.length);if(!le.IsCallable(e)){throw new TypeError("Array#find: predicate must be a function")}var o=arguments.length>1?arguments[1]:null;for(var i=0,a;i<n;i++){a=r[i];if(o){if(t(e,o,a,i,r)){return a}}else if(e(a,i,r)){return a}}},findIndex:function findIndex(e){var r=le.ToObject(this);var n=le.ToLength(r.length);if(!le.IsCallable(e)){throw new TypeError("Array#findIndex: predicate must be a function")}var o=arguments.length>1?arguments[1]:null;for(var i=0;i<n;i++){if(o){if(t(e,o,r[i],i,r)){return i}}else if(e(r[i],i,r)){return i}}return-1},keys:function keys(){return new W(this,"key")},values:function values(){return new W(this,"value")},entries:function entries(){return new W(this,"entry")}};if(Array.prototype.keys&&!le.IsCallable([1].keys().next)){delete Array.prototype.keys}if(Array.prototype.entries&&!le.IsCallable([1].entries().next)){delete Array.prototype.entries}if(Array.prototype.keys&&Array.prototype.entries&&!Array.prototype.values&&Array.prototype[ae]){b(Array.prototype,{values:Array.prototype[ae]});if(ne.symbol(J.unscopables)){Array.prototype[J.unscopables].values=true}}if(c&&Array.prototype.values&&Array.prototype.values.name!=="values"){var rt=Array.prototype.values;oe(Array.prototype,"values",function values(){return le.Call(rt,this,arguments)});h(Array.prototype,ae,Array.prototype.values,true)}b(Array.prototype,tt);if(1/[true].indexOf(true,-0)<0){h(Array.prototype,"indexOf",function indexOf(e){var t=E(this,arguments);if(t===0&&1/t<0){return 0}return t},true)}xe(Array.prototype,function(){return this.values()});if(Object.getPrototypeOf){var nt=Object.getPrototypeOf([].values());if(nt){xe(nt)}}var ot=function(){return a(function(){return Array.from({length:-1}).length===0})}();var it=function(){var e=Array.from([0].entries());return e.length===1&&r(e[0])&&e[0][0]===0&&e[0][1]===0}();if(!ot||!it){oe(Array,"from",Qe.from)}var at=function(){return a(function(){return Array.from([0],void 0)})}();if(!at){var ut=Array.from;oe(Array,"from",function from(e){if(arguments.length>1&&typeof arguments[1]!=="undefined"){return le.Call(ut,this,arguments)}return t(ut,this,e)})}var ft=-(Math.pow(2,32)-1);var st=function(e,r){var n={length:ft};n[r?(n.length>>>0)-1:0]=true;return a(function(){t(e,n,function(){throw new RangeError("should not reach here")},[]);return true})};if(!st(Array.prototype.forEach)){var ct=Array.prototype.forEach;oe(Array.prototype,"forEach",function forEach(e){return le.Call(ct,this.length>=0?this:[],arguments)})}if(!st(Array.prototype.map)){var lt=Array.prototype.map;oe(Array.prototype,"map",function map(e){return le.Call(lt,this.length>=0?this:[],arguments)})}if(!st(Array.prototype.filter)){var pt=Array.prototype.filter;oe(Array.prototype,"filter",function filter(e){return le.Call(pt,this.length>=0?this:[],arguments)})}if(!st(Array.prototype.some)){var vt=Array.prototype.some;oe(Array.prototype,"some",function some(e){return le.Call(vt,this.length>=0?this:[],arguments)})}if(!st(Array.prototype.every)){var yt=Array.prototype.every;oe(Array.prototype,"every",function every(e){return le.Call(yt,this.length>=0?this:[],arguments)})}if(!st(Array.prototype.reduce)){var ht=Array.prototype.reduce;oe(Array.prototype,"reduce",function reduce(e){return le.Call(ht,this.length>=0?this:[],arguments)})}if(!st(Array.prototype.reduceRight,true)){var bt=Array.prototype.reduceRight;oe(Array.prototype,"reduceRight",function reduceRight(e){return le.Call(bt,this.length>=0?this:[],arguments)})}var gt=Number("0o10")!==8;var dt=Number("0b10")!==2;var mt=y($e,function(e){return Number(e+0+e)===0});if(gt||dt||mt){var Ot=Number;var wt=/^0b[01]+$/i;var jt=/^0o[0-7]+$/i;var St=wt.test.bind(wt);var Tt=jt.test.bind(jt);var It=function(e,t){var r;if(typeof e.valueOf==="function"){r=e.valueOf();if(ne.primitive(r)){return r}}if(typeof e.toString==="function"){r=e.toString();if(ne.primitive(r)){return r}}throw new TypeError("No default value")};var Et=Je.test.bind(Je);var Pt=Xe.test.bind(Xe);var Ct=function(){var e=function Number(t){var r;if(arguments.length>0){r=ne.primitive(t)?t:It(t,"number")}else{r=0}if(typeof r==="string"){r=le.Call(Ue,r);if(St(r)){r=parseInt(C(r,2),2)}else if(Tt(r)){r=parseInt(C(r,2),8)}else if(Et(r)||Pt(r)){r=NaN}}var n=this;var o=a(function(){Ot.prototype.valueOf.call(n);return true});if(n instanceof e&&!o){return new Ot(r)}return Ot(r)};return e}();Pe(Ot,Ct,{});b(Ct,{NaN:Ot.NaN,MAX_VALUE:Ot.MAX_VALUE,MIN_VALUE:Ot.MIN_VALUE,NEGATIVE_INFINITY:Ot.NEGATIVE_INFINITY,POSITIVE_INFINITY:Ot.POSITIVE_INFINITY});Number=Ct;m.redefine(S,"Number",Ct)}var Mt=Math.pow(2,53)-1;b(Number,{MAX_SAFE_INTEGER:Mt,MIN_SAFE_INTEGER:-Mt,EPSILON:2.220446049250313e-16,parseInt:S.parseInt,parseFloat:S.parseFloat,isFinite:Z,isInteger:function isInteger(e){return Z(e)&&le.ToInteger(e)===e},isSafeInteger:function isSafeInteger(e){return Number.isInteger(e)&&L(e)<=Number.MAX_SAFE_INTEGER},isNaN:K});h(Number,"parseInt",S.parseInt,Number.parseInt!==S.parseInt);if([,1].find(function(){return true})===1){oe(Array.prototype,"find",tt.find)}if([,1].findIndex(function(){return true})!==0){oe(Array.prototype,"findIndex",tt.findIndex)}var xt=Function.bind.call(Function.bind,Object.prototype.propertyIsEnumerable);var Nt=function ensureEnumerable(e,t){if(s&&xt(e,t)){Object.defineProperty(e,t,{enumerable:false})}};var At=function sliceArgs(){var e=Number(this);var t=arguments.length;var r=t-e;var n=new Array(r<0?0:r);for(var o=e;o<t;++o){n[o-e]=arguments[o]}return n};var _t=function assignTo(e){return function assignToSource(t,r){t[r]=e[r];return t}};var Rt=function(e,t){var r=n(Object(t));var o;if(le.IsCallable(Object.getOwnPropertySymbols)){o=v(Object.getOwnPropertySymbols(Object(t)),xt(t))}return p(P(r,o||[]),_t(t),e)};var kt={assign:function(e,t){var r=le.ToObject(e,"Cannot convert undefined or null to object");return p(le.Call(At,1,arguments),Rt,r)},is:function is(e,t){return le.SameValue(e,t)}};var Lt=Object.assign&&Object.preventExtensions&&function(){var e=Object.preventExtensions({1:2});try{Object.assign(e,"xy")}catch(t){return e[1]==="y"}}();if(Lt){oe(Object,"assign",kt.assign)}b(Object,kt);if(s){var Ft={setPrototypeOf:function(e){var r;var n=function(e,t){if(!le.TypeIsObject(e)){throw new TypeError("cannot set prototype on a non-object")}if(!(t===null||le.TypeIsObject(t))){throw new TypeError("can only set prototype to an object or null"+t)}};var o=function(e,o){n(e,o);t(r,e,o);return e};try{r=e.getOwnPropertyDescriptor(e.prototype,"__proto__").set;t(r,{},null)}catch(i){if(e.prototype!=={}.__proto__){return}r=function(e){this.__proto__=e};o.polyfill=o(o({},null),e.prototype)instanceof e}return o}(Object)};b(Object,Ft)}if(Object.setPrototypeOf&&Object.getPrototypeOf&&Object.getPrototypeOf(Object.setPrototypeOf({},null))!==null&&Object.getPrototypeOf(Object.create(null))===null){(function(){var e=Object.create(null);var t=Object.getPrototypeOf;var r=Object.setPrototypeOf;Object.getPrototypeOf=function(r){var n=t(r);return n===e?null:n};Object.setPrototypeOf=function(t,n){var o=n===null?e:n;return r(t,o)};Object.setPrototypeOf.polyfill=false})()}var Dt=!i(function(){return Object.keys("foo")});if(!Dt){var zt=Object.keys;oe(Object,"keys",function keys(e){return zt(le.ToObject(e))});n=Object.keys}var qt=i(function(){return Object.keys(/a/g)});if(qt){var Wt=Object.keys;oe(Object,"keys",function keys(e){if(ne.regex(e)){var t=[];for(var r in e){if(q(e,r)){M(t,r)}}return t}return Wt(e)});n=Object.keys}if(Object.getOwnPropertyNames){var Gt=!i(function(){return Object.getOwnPropertyNames("foo")});if(!Gt){var Ht=typeof window==="object"?Object.getOwnPropertyNames(window):[];var Vt=Object.getOwnPropertyNames;oe(Object,"getOwnPropertyNames",function getOwnPropertyNames(e){var t=le.ToObject(e);if(g(t)==="[object Window]"){try{return Vt(t)}catch(r){return P([],Ht)}}return Vt(t)})}}if(Object.getOwnPropertyDescriptor){var Bt=!i(function(){return Object.getOwnPropertyDescriptor("foo","bar")});if(!Bt){var Ut=Object.getOwnPropertyDescriptor;oe(Object,"getOwnPropertyDescriptor",function getOwnPropertyDescriptor(e,t){return Ut(le.ToObject(e),t)})}}if(Object.seal){var $t=!i(function(){return Object.seal("foo")});if(!$t){var Jt=Object.seal;oe(Object,"seal",function seal(e){if(!le.TypeIsObject(e)){return e}return Jt(e)})}}if(Object.isSealed){var Xt=!i(function(){return Object.isSealed("foo")});if(!Xt){var Kt=Object.isSealed;oe(Object,"isSealed",function isSealed(e){if(!le.TypeIsObject(e)){return true}return Kt(e)})}}if(Object.freeze){var Zt=!i(function(){return Object.freeze("foo")});if(!Zt){var Yt=Object.freeze;oe(Object,"freeze",function freeze(e){if(!le.TypeIsObject(e)){return e}return Yt(e)})}}if(Object.isFrozen){var Qt=!i(function(){return Object.isFrozen("foo")});if(!Qt){var er=Object.isFrozen;oe(Object,"isFrozen",function isFrozen(e){if(!le.TypeIsObject(e)){return true}return er(e)})}}if(Object.preventExtensions){var tr=!i(function(){return Object.preventExtensions("foo")});if(!tr){var rr=Object.preventExtensions;oe(Object,"preventExtensions",function preventExtensions(e){if(!le.TypeIsObject(e)){return e}return rr(e)})}}if(Object.isExtensible){var nr=!i(function(){return Object.isExtensible("foo")});if(!nr){var or=Object.isExtensible;oe(Object,"isExtensible",function isExtensible(e){if(!le.TypeIsObject(e)){return false}return or(e)})}}if(Object.getPrototypeOf){var ir=!i(function(){return Object.getPrototypeOf("foo")});if(!ir){var ar=Object.getPrototypeOf;oe(Object,"getPrototypeOf",function getPrototypeOf(e){return ar(le.ToObject(e))})}}var ur=s&&function(){var e=Object.getOwnPropertyDescriptor(RegExp.prototype,"flags");return e&&le.IsCallable(e.get)}();if(s&&!ur){var fr=function flags(){if(!le.TypeIsObject(this)){throw new TypeError("Method called on incompatible type: must be an object.")}var e="";if(this.global){e+="g"}if(this.ignoreCase){e+="i"}if(this.multiline){e+="m"}if(this.unicode){e+="u"}if(this.sticky){e+="y"}return e};m.getter(RegExp.prototype,"flags",fr)}var sr=s&&a(function(){return String(new RegExp(/a/g,"i"))==="/a/i"});var cr=ie&&s&&function(){var e=/./;e[J.match]=false;return RegExp(e)===e}();var lr=a(function(){return RegExp.prototype.toString.call({source:"abc"})==="/abc/"});var pr=lr&&a(function(){return RegExp.prototype.toString.call({source:"a",flags:"b"})==="/a/b"});if(!lr||!pr){var vr=RegExp.prototype.toString;h(RegExp.prototype,"toString",function toString(){var e=le.RequireObjectCoercible(this);if(ne.regex(e)){return t(vr,e)}var r=fe(e.source);var n=fe(e.flags);return"/"+r+"/"+n},true);m.preserveToString(RegExp.prototype.toString,vr);RegExp.prototype.toString.prototype=void 0}if(s&&(!sr||cr)){var yr=Object.getOwnPropertyDescriptor(RegExp.prototype,"flags").get;var hr=Object.getOwnPropertyDescriptor(RegExp.prototype,"source")||{};var br=function(){return this.source};var gr=le.IsCallable(hr.get)?hr.get:br;var dr=RegExp;var mr=function(){return function RegExp(e,t){var r=le.IsRegExp(e);var n=this instanceof RegExp;if(!n&&r&&typeof t==="undefined"&&e.constructor===RegExp){return e}var o=e;var i=t;if(ne.regex(e)){o=le.Call(gr,e);i=typeof t==="undefined"?le.Call(yr,e):t;return new RegExp(o,i)}else if(r){o=e.source;i=typeof t==="undefined"?e.flags:t}return new dr(e,t)}}();Pe(dr,mr,{$input:true});RegExp=mr;m.redefine(S,"RegExp",mr)}if(s){var Or={input:"$_",lastMatch:"$&",lastParen:"$+",leftContext:"$`",rightContext:"$'"};l(n(Or),function(e){if(e in RegExp&&!(Or[e]in RegExp)){m.getter(RegExp,Or[e],function get(){return RegExp[e]})}})}Me(RegExp);var wr=1/Number.EPSILON;var jr=function roundTiesToEven(e){return e+wr-wr};var Sr=Math.pow(2,-23);var Tr=Math.pow(2,127)*(2-Sr);var Ir=Math.pow(2,-126);var Er=Math.E;var Pr=Math.LOG2E;var Cr=Math.LOG10E;var Mr=Number.prototype.clz;delete Number.prototype.clz;var xr={acosh:function acosh(e){var t=Number(e);if(K(t)||e<1){return NaN}if(t===1){return 0}if(t===Infinity){return t}var r=1/(t*t);if(t<2){return Q(t-1+z(1-r)*t)}var n=t/2;return Q(n+z(1-r)*n-1)+1/Pr},asinh:function asinh(e){var t=Number(e);if(t===0||!T(t)){return t}var r=L(t);var n=r*r;var o=Y(t);if(r<1){return o*Q(r+n/(z(n+1)+1))}return o*(Q(r/2+z(1+1/n)*r/2-1)+1/Pr)},atanh:function atanh(e){var t=Number(e);if(t===0){return t}if(t===-1){return-Infinity}if(t===1){return Infinity}if(K(t)||t<-1||t>1){return NaN}var r=L(t);return Y(t)*Q(2*r/(1-r))/2},cbrt:function cbrt(e){var t=Number(e);if(t===0){return t}var r=t<0;var n;if(r){t=-t}if(t===Infinity){n=Infinity}else{n=F(D(t)/3);n=(t/(n*n)+2*n)/3}return r?-n:n},clz32:function clz32(e){var t=Number(e);var r=le.ToUint32(t);if(r===0){return 32}return Mr?le.Call(Mr,r):31-k(D(r+.5)*Pr)},cosh:function cosh(e){var t=Number(e);if(t===0){return 1}if(K(t)){return NaN}if(!T(t)){return Infinity}var r=F(L(t)-1);return(r+1/(r*Er*Er))*(Er/2)},expm1:function expm1(e){var t=Number(e);if(t===-Infinity){return-1}if(!T(t)||t===0){return t}if(L(t)>.5){return F(t)-1}var r=t;var n=0;var o=1;while(n+r!==n){n+=r;o+=1;r*=t/o}return n},hypot:function hypot(e,t){var r=0;var n=0;for(var o=0;o<arguments.length;++o){var i=L(Number(arguments[o]));if(n<i){r*=n/i*(n/i);r+=1;n=i}else{r+=i>0?i/n*(i/n):i}}return n===Infinity?Infinity:n*z(r)},log2:function log2(e){return D(e)*Pr},log10:function log10(e){return D(e)*Cr},log1p:Q,sign:Y,sinh:function sinh(e){var t=Number(e);if(!T(t)||t===0){return t}var r=L(t);if(r<1){var n=Math.expm1(r);return Y(t)*n*(1+1/(n+1))/2}var o=F(r-1);return Y(t)*(o-1/(o*Er*Er))*(Er/2)},tanh:function tanh(e){var t=Number(e);if(K(t)||t===0){return t}if(t>=20){return 1}if(t<=-20){return-1}return(Math.expm1(t)-Math.expm1(-t))/(F(t)+F(-t))},trunc:function trunc(e){var t=Number(e);return t<0?-k(-t):k(t)},imul:function imul(e,t){var r=le.ToUint32(e);var n=le.ToUint32(t);var o=r>>>16&65535;var i=r&65535;var a=n>>>16&65535;var u=n&65535;return i*u+(o*u+i*a<<16>>>0)|0},fround:function fround(e){var t=Number(e);if(t===0||t===Infinity||t===-Infinity||K(t)){return t}var r=Y(t);var n=L(t);if(n<Ir){return r*jr(n/Ir/Sr)*Ir*Sr}var o=(1+Sr/Number.EPSILON)*n;var i=o-(o-n);if(i>Tr||K(i)){return r*Infinity}return r*i}};var Nr=function withinULPDistance(e,t,r){return L(1-e/t)/Number.EPSILON<(r||8)};b(Math,xr);h(Math,"sinh",xr.sinh,Math.sinh(710)===Infinity);h(Math,"cosh",xr.cosh,Math.cosh(710)===Infinity);h(Math,"log1p",xr.log1p,Math.log1p(-1e-17)!==-1e-17);h(Math,"asinh",xr.asinh,Math.asinh(-1e7)!==-Math.asinh(1e7));
27918h(Math,"asinh",xr.asinh,Math.asinh(1e300)===Infinity);h(Math,"atanh",xr.atanh,Math.atanh(1e-300)===0);h(Math,"tanh",xr.tanh,Math.tanh(-2e-17)!==-2e-17);h(Math,"acosh",xr.acosh,Math.acosh(Number.MAX_VALUE)===Infinity);h(Math,"acosh",xr.acosh,!Nr(Math.acosh(1+Number.EPSILON),Math.sqrt(2*Number.EPSILON)));h(Math,"cbrt",xr.cbrt,!Nr(Math.cbrt(1e-300),1e-100));h(Math,"sinh",xr.sinh,Math.sinh(-2e-17)!==-2e-17);var Ar=Math.expm1(10);h(Math,"expm1",xr.expm1,Ar>22025.465794806718||Ar<22025.465794806718);h(Math,"hypot",xr.hypot,Math.hypot(Infinity,NaN)!==Infinity);var _r=Math.round;var Rr=Math.round(.5-Number.EPSILON/4)===0&&Math.round(-.5+Number.EPSILON/3.99)===1;var kr=wr+1;var Lr=2*wr-1;var Fr=[kr,Lr].every(function(e){return Math.round(e)===e});h(Math,"round",function round(e){var t=k(e);var r=t===-1?-0:t+1;return e-t<.5?t:r},!Rr||!Fr);m.preserveToString(Math.round,_r);var Dr=Math.imul;if(Math.imul(4294967295,5)!==-5){Math.imul=xr.imul;m.preserveToString(Math.imul,Dr)}if(Math.imul.length!==2){oe(Math,"imul",function imul(e,t){return le.Call(Dr,Math,arguments)})}var zr=function(){var e=S.setTimeout;if(typeof e!=="function"&&typeof e!=="object"){return}le.IsPromise=function(e){if(!le.TypeIsObject(e)){return false}if(typeof e._promise==="undefined"){return false}return true};var r=function(e){if(!le.IsConstructor(e)){throw new TypeError("Bad promise constructor")}var t=this;var r=function(e,r){if(t.resolve!==void 0||t.reject!==void 0){throw new TypeError("Bad Promise implementation!")}t.resolve=e;t.reject=r};t.resolve=void 0;t.reject=void 0;t.promise=new e(r);if(!(le.IsCallable(t.resolve)&&le.IsCallable(t.reject))){throw new TypeError("Bad promise constructor")}};var n;if(typeof window!=="undefined"&&le.IsCallable(window.postMessage)){n=function(){var e=[];var t="zero-timeout-message";var r=function(r){M(e,r);window.postMessage(t,"*")};var n=function(r){if(r.source===window&&r.data===t){r.stopPropagation();if(e.length===0){return}var n=A(e);n()}};window.addEventListener("message",n,true);return r}}var o=function(){var e=S.Promise;var t=e&&e.resolve&&e.resolve();return t&&function(e){return t.then(e)}};var i=le.IsCallable(S.setImmediate)?S.setImmediate:typeof process==="object"&&process.nextTick?process.nextTick:o()||(le.IsCallable(n)?n():function(t){e(t,0)});var a=function(e){return e};var u=function(e){throw e};var f=0;var s=1;var c=2;var l=0;var p=1;var v=2;var y={};var h=function(e,t,r){i(function(){g(e,t,r)})};var g=function(e,t,r){var n,o;if(t===y){return e(r)}try{n=e(r);o=t.resolve}catch(i){n=i;o=t.reject}o(n)};var d=function(e,t){var r=e._promise;var n=r.reactionLength;if(n>0){h(r.fulfillReactionHandler0,r.reactionCapability0,t);r.fulfillReactionHandler0=void 0;r.rejectReactions0=void 0;r.reactionCapability0=void 0;if(n>1){for(var o=1,i=0;o<n;o++,i+=3){h(r[i+l],r[i+v],t);e[i+l]=void 0;e[i+p]=void 0;e[i+v]=void 0}}}r.result=t;r.state=s;r.reactionLength=0};var m=function(e,t){var r=e._promise;var n=r.reactionLength;if(n>0){h(r.rejectReactionHandler0,r.reactionCapability0,t);r.fulfillReactionHandler0=void 0;r.rejectReactions0=void 0;r.reactionCapability0=void 0;if(n>1){for(var o=1,i=0;o<n;o++,i+=3){h(r[i+p],r[i+v],t);e[i+l]=void 0;e[i+p]=void 0;e[i+v]=void 0}}}r.result=t;r.state=c;r.reactionLength=0};var O=function(e){var t=false;var r=function(r){var n;if(t){return}t=true;if(r===e){return m(e,new TypeError("Self resolution"))}if(!le.TypeIsObject(r)){return d(e,r)}try{n=r.then}catch(o){return m(e,o)}if(!le.IsCallable(n)){return d(e,r)}i(function(){j(e,r,n)})};var n=function(r){if(t){return}t=true;return m(e,r)};return{resolve:r,reject:n}};var w=function(e,r,n,o){if(e===I){t(e,r,n,o,y)}else{t(e,r,n,o)}};var j=function(e,t,r){var n=O(e);var o=n.resolve;var i=n.reject;try{w(r,t,o,i)}catch(a){i(a)}};var T,I;var E=function(){var e=function Promise(t){if(!(this instanceof e)){throw new TypeError('Constructor Promise requires "new"')}if(this&&this._promise){throw new TypeError("Bad construction")}if(!le.IsCallable(t)){throw new TypeError("not a valid resolver")}var r=_e(this,e,T,{_promise:{result:void 0,state:f,reactionLength:0,fulfillReactionHandler0:void 0,rejectReactionHandler0:void 0,reactionCapability0:void 0}});var n=O(r);var o=n.reject;try{t(n.resolve,o)}catch(i){o(i)}return r};return e}();T=E.prototype;var P=function(e,t,r,n){var o=false;return function(i){if(o){return}o=true;t[e]=i;if(--n.count===0){var a=r.resolve;a(t)}}};var C=function(e,t,r){var n=e.iterator;var o=[];var i={count:1};var a,u;var f=0;while(true){try{a=le.IteratorStep(n);if(a===false){e.done=true;break}u=a.value}catch(s){e.done=true;throw s}o[f]=void 0;var c=t.resolve(u);var l=P(f,o,r,i);i.count+=1;w(c.then,c,l,r.reject);f+=1}if(--i.count===0){var p=r.resolve;p(o)}return r.promise};var x=function(e,t,r){var n=e.iterator;var o,i,a;while(true){try{o=le.IteratorStep(n);if(o===false){e.done=true;break}i=o.value}catch(u){e.done=true;throw u}a=t.resolve(i);w(a.then,a,r.resolve,r.reject)}return r.promise};b(E,{all:function all(e){var t=this;if(!le.TypeIsObject(t)){throw new TypeError("Promise is not object")}var n=new r(t);var o,i;try{o=le.GetIterator(e);i={iterator:o,done:false};return C(i,t,n)}catch(a){var u=a;if(i&&!i.done){try{le.IteratorClose(o,true)}catch(f){u=f}}var s=n.reject;s(u);return n.promise}},race:function race(e){var t=this;if(!le.TypeIsObject(t)){throw new TypeError("Promise is not object")}var n=new r(t);var o,i;try{o=le.GetIterator(e);i={iterator:o,done:false};return x(i,t,n)}catch(a){var u=a;if(i&&!i.done){try{le.IteratorClose(o,true)}catch(f){u=f}}var s=n.reject;s(u);return n.promise}},reject:function reject(e){var t=this;if(!le.TypeIsObject(t)){throw new TypeError("Bad promise constructor")}var n=new r(t);var o=n.reject;o(e);return n.promise},resolve:function resolve(e){var t=this;if(!le.TypeIsObject(t)){throw new TypeError("Bad promise constructor")}if(le.IsPromise(e)){var n=e.constructor;if(n===t){return e}}var o=new r(t);var i=o.resolve;i(e);return o.promise}});b(T,{"catch":function(e){return this.then(null,e)},then:function then(e,t){var n=this;if(!le.IsPromise(n)){throw new TypeError("not a promise")}var o=le.SpeciesConstructor(n,E);var i;var b=arguments.length>2&&arguments[2]===y;if(b&&o===E){i=y}else{i=new r(o)}var g=le.IsCallable(e)?e:a;var d=le.IsCallable(t)?t:u;var m=n._promise;var O;if(m.state===f){if(m.reactionLength===0){m.fulfillReactionHandler0=g;m.rejectReactionHandler0=d;m.reactionCapability0=i}else{var w=3*(m.reactionLength-1);m[w+l]=g;m[w+p]=d;m[w+v]=i}m.reactionLength+=1}else if(m.state===s){O=m.result;h(g,i,O)}else if(m.state===c){O=m.result;h(d,i,O)}else{throw new TypeError("unexpected Promise state")}return i.promise}});y=new r(E);I=T.then;return E}();if(S.Promise){delete S.Promise.accept;delete S.Promise.defer;delete S.Promise.prototype.chain}if(typeof zr==="function"){b(S,{Promise:zr});var qr=w(S.Promise,function(e){return e.resolve(42).then(function(){})instanceof e});var Wr=!i(function(){return S.Promise.reject(42).then(null,5).then(null,G)});var Gr=i(function(){return S.Promise.call(3,G)});var Hr=function(e){var t=e.resolve(5);t.constructor={};var r=e.resolve(t);try{r.then(null,G).then(null,G)}catch(n){return true}return t===r}(S.Promise);var Vr=s&&function(){var e=0;var t=Object.defineProperty({},"then",{get:function(){e+=1}});Promise.resolve(t);return e===1}();var Br=function BadResolverPromise(e){var t=new Promise(e);e(3,function(){});this.then=t.then;this.constructor=BadResolverPromise};Br.prototype=Promise.prototype;Br.all=Promise.all;var Ur=a(function(){return!!Br.all([1,2])});if(!qr||!Wr||!Gr||Hr||!Vr||Ur){Promise=zr;oe(S,"Promise",zr)}if(Promise.all.length!==1){var $r=Promise.all;oe(Promise,"all",function all(e){return le.Call($r,this,arguments)})}if(Promise.race.length!==1){var Jr=Promise.race;oe(Promise,"race",function race(e){return le.Call(Jr,this,arguments)})}if(Promise.resolve.length!==1){var Xr=Promise.resolve;oe(Promise,"resolve",function resolve(e){return le.Call(Xr,this,arguments)})}if(Promise.reject.length!==1){var Kr=Promise.reject;oe(Promise,"reject",function reject(e){return le.Call(Kr,this,arguments)})}Nt(Promise,"all");Nt(Promise,"race");Nt(Promise,"resolve");Nt(Promise,"reject");Me(Promise)}var Zr=function(e){var t=n(p(e,function(e,t){e[t]=true;return e},{}));return e.join(":")===t.join(":")};var Yr=Zr(["z","a","bb"]);var Qr=Zr(["z",1,"a","3",2]);if(s){var en=function fastkey(e,t){if(!t&&!Yr){return null}if(ce(e)){return"^"+le.ToString(e)}else if(typeof e==="string"){return"$"+e}else if(typeof e==="number"){if(!Qr){return"n"+e}return e}else if(typeof e==="boolean"){return"b"+e}return null};var tn=function emptyObject(){return Object.create?Object.create(null):{}};var rn=function addIterableToMap(e,n,o){if(r(o)||ne.string(o)){l(o,function(e){if(!le.TypeIsObject(e)){throw new TypeError("Iterator value "+e+" is not an entry object")}n.set(e[0],e[1])})}else if(o instanceof e){t(e.prototype.forEach,o,function(e,t){n.set(t,e)})}else{var i,a;if(!ce(o)){a=n.set;if(!le.IsCallable(a)){throw new TypeError("bad map")}i=le.GetIterator(o)}if(typeof i!=="undefined"){while(true){var u=le.IteratorStep(i);if(u===false){break}var f=u.value;try{if(!le.TypeIsObject(f)){throw new TypeError("Iterator value "+f+" is not an entry object")}t(a,n,f[0],f[1])}catch(s){le.IteratorClose(i,true);throw s}}}}};var nn=function addIterableToSet(e,n,o){if(r(o)||ne.string(o)){l(o,function(e){n.add(e)})}else if(o instanceof e){t(e.prototype.forEach,o,function(e){n.add(e)})}else{var i,a;if(!ce(o)){a=n.add;if(!le.IsCallable(a)){throw new TypeError("bad set")}i=le.GetIterator(o)}if(typeof i!=="undefined"){while(true){var u=le.IteratorStep(i);if(u===false){break}var f=u.value;try{t(a,n,f)}catch(s){le.IteratorClose(i,true);throw s}}}}};var on={Map:function(){var e={};var r=function MapEntry(e,t){this.key=e;this.value=t;this.next=null;this.prev=null};r.prototype.isRemoved=function isRemoved(){return this.key===e};var n=function isMap(e){return!!e._es6map};var o=function requireMapSlot(e,t){if(!le.TypeIsObject(e)||!n(e)){throw new TypeError("Method Map.prototype."+t+" called on incompatible receiver "+le.ToString(e))}};var i=function MapIterator(e,t){o(e,"[[MapIterator]]");h(this,"head",e._head);h(this,"i",this.head);h(this,"kind",t)};i.prototype={isMapIterator:true,next:function next(){if(!this.isMapIterator){throw new TypeError("Not a MapIterator")}var e=this.i;var t=this.kind;var r=this.head;if(typeof this.i==="undefined"){return Ze()}while(e.isRemoved()&&e!==r){e=e.prev}var n;while(e.next!==r){e=e.next;if(!e.isRemoved()){if(t==="key"){n=e.key}else if(t==="value"){n=e.value}else{n=[e.key,e.value]}this.i=e;return Ze(n)}}this.i=void 0;return Ze()}};xe(i.prototype);var a;var u=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}if(this&&this._es6map){throw new TypeError("Bad construction")}var e=_e(this,Map,a,{_es6map:true,_head:null,_map:H?new H:null,_size:0,_storage:tn()});var t=new r(null,null);t.next=t.prev=t;e._head=t;if(arguments.length>0){rn(Map,e,arguments[0])}return e};a=u.prototype;m.getter(a,"size",function(){if(typeof this._size==="undefined"){throw new TypeError("size method called on incompatible Map")}return this._size});b(a,{get:function get(e){o(this,"get");var t;var r=en(e,true);if(r!==null){t=this._storage[r];if(t){return t.value}return}if(this._map){t=B.call(this._map,e);if(t){return t.value}return}var n=this._head;var i=n;while((i=i.next)!==n){if(le.SameValueZero(i.key,e)){return i.value}}},has:function has(e){o(this,"has");var t=en(e,true);if(t!==null){return typeof this._storage[t]!=="undefined"}if(this._map){return U.call(this._map,e)}var r=this._head;var n=r;while((n=n.next)!==r){if(le.SameValueZero(n.key,e)){return true}}return false},set:function set(e,t){o(this,"set");var n=this._head;var i=n;var a;var u=en(e,true);if(u!==null){if(typeof this._storage[u]!=="undefined"){this._storage[u].value=t;return this}a=this._storage[u]=new r(e,t);i=n.prev}else if(this._map){if(U.call(this._map,e)){B.call(this._map,e).value=t}else{a=new r(e,t);$.call(this._map,e,a);i=n.prev}}while((i=i.next)!==n){if(le.SameValueZero(i.key,e)){i.value=t;return this}}a=a||new r(e,t);if(le.SameValue(-0,e)){a.key=+0}a.next=this._head;a.prev=this._head.prev;a.prev.next=a;a.next.prev=a;this._size+=1;return this},"delete":function(t){o(this,"delete");var r=this._head;var n=r;var i=en(t,true);if(i!==null){if(typeof this._storage[i]==="undefined"){return false}n=this._storage[i].prev;delete this._storage[i]}else if(this._map){if(!U.call(this._map,t)){return false}n=B.call(this._map,t).prev;V.call(this._map,t)}while((n=n.next)!==r){if(le.SameValueZero(n.key,t)){n.key=e;n.value=e;n.prev.next=n.next;n.next.prev=n.prev;this._size-=1;return true}}return false},clear:function clear(){o(this,"clear");this._map=H?new H:null;this._size=0;this._storage=tn();var t=this._head;var r=t;var n=r.next;while((r=n)!==t){r.key=e;r.value=e;n=r.next;r.next=r.prev=t}t.next=t.prev=t},keys:function keys(){o(this,"keys");return new i(this,"key")},values:function values(){o(this,"values");return new i(this,"value")},entries:function entries(){o(this,"entries");return new i(this,"key+value")},forEach:function forEach(e){o(this,"forEach");var r=arguments.length>1?arguments[1]:null;var n=this.entries();for(var i=n.next();!i.done;i=n.next()){if(r){t(e,r,i.value[1],i.value[0],this)}else{e(i.value[1],i.value[0],this)}}}});xe(a,a.entries);return u}(),Set:function(){var e=function isSet(e){return e._es6set&&typeof e._storage!=="undefined"};var r=function requireSetSlot(t,r){if(!le.TypeIsObject(t)||!e(t)){throw new TypeError("Set.prototype."+r+" called on incompatible receiver "+le.ToString(t))}};var o;var i=function Set(){if(!(this instanceof Set)){throw new TypeError('Constructor Set requires "new"')}if(this&&this._es6set){throw new TypeError("Bad construction")}var e=_e(this,Set,o,{_es6set:true,"[[SetData]]":null,_storage:tn()});if(!e._es6set){throw new TypeError("bad set")}if(arguments.length>0){nn(Set,e,arguments[0])}return e};o=i.prototype;var a=function(e){var t=e;if(t==="^null"){return null}else if(t==="^undefined"){return void 0}var r=t.charAt(0);if(r==="$"){return C(t,1)}else if(r==="n"){return+C(t,1)}else if(r==="b"){return t==="btrue"}return+t};var u=function ensureMap(e){if(!e["[[SetData]]"]){var t=new on.Map;e["[[SetData]]"]=t;l(n(e._storage),function(e){var r=a(e);t.set(r,r)});e["[[SetData]]"]=t}e._storage=null};m.getter(i.prototype,"size",function(){r(this,"size");if(this._storage){return n(this._storage).length}u(this);return this["[[SetData]]"].size});b(i.prototype,{has:function has(e){r(this,"has");var t;if(this._storage&&(t=en(e))!==null){return!!this._storage[t]}u(this);return this["[[SetData]]"].has(e)},add:function add(e){r(this,"add");var t;if(this._storage&&(t=en(e))!==null){this._storage[t]=true;return this}u(this);this["[[SetData]]"].set(e,e);return this},"delete":function(e){r(this,"delete");var t;if(this._storage&&(t=en(e))!==null){var n=q(this._storage,t);return delete this._storage[t]&&n}u(this);return this["[[SetData]]"]["delete"](e)},clear:function clear(){r(this,"clear");if(this._storage){this._storage=tn()}if(this["[[SetData]]"]){this["[[SetData]]"].clear()}},values:function values(){r(this,"values");u(this);return new f(this["[[SetData]]"].values())},entries:function entries(){r(this,"entries");u(this);return new f(this["[[SetData]]"].entries())},forEach:function forEach(e){r(this,"forEach");var n=arguments.length>1?arguments[1]:null;var o=this;u(o);this["[[SetData]]"].forEach(function(r,i){if(n){t(e,n,i,i,o)}else{e(i,i,o)}})}});h(i.prototype,"keys",i.prototype.values,true);xe(i.prototype,i.prototype.values);var f=function SetIterator(e){h(this,"it",e)};f.prototype={isSetIterator:true,next:function next(){if(!this.isSetIterator){throw new TypeError("Not a SetIterator")}return this.it.next()}};xe(f.prototype);return i}()};var an=S.Set&&!Set.prototype["delete"]&&Set.prototype.remove&&Set.prototype.items&&Set.prototype.map&&Array.isArray((new Set).keys);if(an){S.Set=on.Set}if(S.Map||S.Set){var un=a(function(){return new Map([[1,2]]).get(1)===2});if(!un){S.Map=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}var e=new H;if(arguments.length>0){rn(Map,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,S.Map.prototype);return e};S.Map.prototype=O(H.prototype);h(S.Map.prototype,"constructor",S.Map,true);m.preserveToString(S.Map,H)}var fn=new Map;var sn=function(){var e=new Map([[1,0],[2,0],[3,0],[4,0]]);e.set(-0,e);return e.get(0)===e&&e.get(-0)===e&&e.has(0)&&e.has(-0)}();var cn=fn.set(1,2)===fn;if(!sn||!cn){oe(Map.prototype,"set",function set(e,r){t($,this,e===0?0:e,r);return this})}if(!sn){b(Map.prototype,{get:function get(e){return t(B,this,e===0?0:e)},has:function has(e){return t(U,this,e===0?0:e)}},true);m.preserveToString(Map.prototype.get,B);m.preserveToString(Map.prototype.has,U)}var ln=new Set;var pn=Set.prototype["delete"]&&Set.prototype.add&&Set.prototype.has&&function(e){e["delete"](0);e.add(-0);return!e.has(0)}(ln);var vn=ln.add(1)===ln;if(!pn||!vn){var yn=Set.prototype.add;Set.prototype.add=function add(e){t(yn,this,e===0?0:e);return this};m.preserveToString(Set.prototype.add,yn)}if(!pn){var hn=Set.prototype.has;Set.prototype.has=function has(e){return t(hn,this,e===0?0:e)};m.preserveToString(Set.prototype.has,hn);var bn=Set.prototype["delete"];Set.prototype["delete"]=function SetDelete(e){return t(bn,this,e===0?0:e)};m.preserveToString(Set.prototype["delete"],bn)}var gn=w(S.Map,function(e){var t=new e([]);t.set(42,42);return t instanceof e});var dn=Object.setPrototypeOf&&!gn;var mn=function(){try{return!(S.Map()instanceof S.Map)}catch(e){return e instanceof TypeError}}();if(S.Map.length!==0||dn||!mn){S.Map=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}var e=new H;if(arguments.length>0){rn(Map,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,Map.prototype);return e};S.Map.prototype=H.prototype;h(S.Map.prototype,"constructor",S.Map,true);m.preserveToString(S.Map,H)}var On=w(S.Set,function(e){var t=new e([]);t.add(42,42);return t instanceof e});var wn=Object.setPrototypeOf&&!On;var jn=function(){try{return!(S.Set()instanceof S.Set)}catch(e){return e instanceof TypeError}}();if(S.Set.length!==0||wn||!jn){var Sn=S.Set;S.Set=function Set(){if(!(this instanceof Set)){throw new TypeError('Constructor Set requires "new"')}var e=new Sn;if(arguments.length>0){nn(Set,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,Set.prototype);return e};S.Set.prototype=Sn.prototype;h(S.Set.prototype,"constructor",S.Set,true);m.preserveToString(S.Set,Sn)}var Tn=new S.Map;var In=!a(function(){return Tn.keys().next().done});if(typeof S.Map.prototype.clear!=="function"||(new S.Set).size!==0||Tn.size!==0||typeof S.Map.prototype.keys!=="function"||typeof S.Set.prototype.keys!=="function"||typeof S.Map.prototype.forEach!=="function"||typeof S.Set.prototype.forEach!=="function"||u(S.Map)||u(S.Set)||typeof Tn.keys().next!=="function"||In||!gn){b(S,{Map:on.Map,Set:on.Set},true)}if(S.Set.prototype.keys!==S.Set.prototype.values){h(S.Set.prototype,"keys",S.Set.prototype.values,true)}xe(Object.getPrototypeOf((new S.Map).keys()));xe(Object.getPrototypeOf((new S.Set).keys()));if(c&&S.Set.prototype.has.name!=="has"){var En=S.Set.prototype.has;oe(S.Set.prototype,"has",function has(e){return t(En,this,e)})}}b(S,on);Me(S.Map);Me(S.Set)}var Pn=function throwUnlessTargetIsObject(e){if(!le.TypeIsObject(e)){throw new TypeError("target must be an object")}};var Cn={apply:function apply(){return le.Call(le.Call,null,arguments)},construct:function construct(e,t){if(!le.IsConstructor(e)){throw new TypeError("First argument must be a constructor.")}var r=arguments.length>2?arguments[2]:e;if(!le.IsConstructor(r)){throw new TypeError("new.target must be a constructor.")}return le.Construct(e,t,r,"internal")},deleteProperty:function deleteProperty(e,t){Pn(e);if(s){var r=Object.getOwnPropertyDescriptor(e,t);if(r&&!r.configurable){return false}}return delete e[t]},has:function has(e,t){Pn(e);return t in e}};if(Object.getOwnPropertyNames){Object.assign(Cn,{ownKeys:function ownKeys(e){Pn(e);var t=Object.getOwnPropertyNames(e);if(le.IsCallable(Object.getOwnPropertySymbols)){x(t,Object.getOwnPropertySymbols(e))}return t}})}var Mn=function ConvertExceptionToBoolean(e){return!i(e)};if(Object.preventExtensions){Object.assign(Cn,{isExtensible:function isExtensible(e){Pn(e);return Object.isExtensible(e)},preventExtensions:function preventExtensions(e){Pn(e);return Mn(function(){return Object.preventExtensions(e)})}})}if(s){var xn=function get(e,t,r){var n=Object.getOwnPropertyDescriptor(e,t);if(!n){var o=Object.getPrototypeOf(e);if(o===null){return void 0}return xn(o,t,r)}if("value"in n){return n.value}if(n.get){return le.Call(n.get,r)}return void 0};var Nn=function set(e,r,n,o){var i=Object.getOwnPropertyDescriptor(e,r);if(!i){var a=Object.getPrototypeOf(e);if(a!==null){return Nn(a,r,n,o)}i={value:void 0,writable:true,enumerable:true,configurable:true}}if("value"in i){if(!i.writable){return false}if(!le.TypeIsObject(o)){return false}var u=Object.getOwnPropertyDescriptor(o,r);if(u){return ue.defineProperty(o,r,{value:n})}return ue.defineProperty(o,r,{value:n,writable:true,enumerable:true,configurable:true})}if(i.set){t(i.set,o,n);return true}return false};Object.assign(Cn,{defineProperty:function defineProperty(e,t,r){Pn(e);return Mn(function(){return Object.defineProperty(e,t,r)})},getOwnPropertyDescriptor:function getOwnPropertyDescriptor(e,t){Pn(e);return Object.getOwnPropertyDescriptor(e,t)},get:function get(e,t){Pn(e);var r=arguments.length>2?arguments[2]:e;return xn(e,t,r)},set:function set(e,t,r){Pn(e);var n=arguments.length>3?arguments[3]:e;return Nn(e,t,r,n)}})}if(Object.getPrototypeOf){var An=Object.getPrototypeOf;Cn.getPrototypeOf=function getPrototypeOf(e){Pn(e);return An(e)}}if(Object.setPrototypeOf&&Cn.getPrototypeOf){var _n=function(e,t){var r=t;while(r){if(e===r){return true}r=Cn.getPrototypeOf(r)}return false};Object.assign(Cn,{setPrototypeOf:function setPrototypeOf(e,t){Pn(e);if(t!==null&&!le.TypeIsObject(t)){throw new TypeError("proto must be an object or null")}if(t===ue.getPrototypeOf(e)){return true}if(ue.isExtensible&&!ue.isExtensible(e)){return false}if(_n(e,t)){return false}Object.setPrototypeOf(e,t);return true}})}var Rn=function(e,t){if(!le.IsCallable(S.Reflect[e])){h(S.Reflect,e,t)}else{var r=a(function(){S.Reflect[e](1);S.Reflect[e](NaN);S.Reflect[e](true);return true});if(r){oe(S.Reflect,e,t)}}};Object.keys(Cn).forEach(function(e){Rn(e,Cn[e])});var kn=S.Reflect.getPrototypeOf;if(c&&kn&&kn.name!=="getPrototypeOf"){oe(S.Reflect,"getPrototypeOf",function getPrototypeOf(e){return t(kn,S.Reflect,e)})}if(S.Reflect.setPrototypeOf){if(a(function(){S.Reflect.setPrototypeOf(1,{});return true})){oe(S.Reflect,"setPrototypeOf",Cn.setPrototypeOf)}}if(S.Reflect.defineProperty){if(!a(function(){var e=!S.Reflect.defineProperty(1,"test",{value:1});var t=typeof Object.preventExtensions!=="function"||!S.Reflect.defineProperty(Object.preventExtensions({}),"test",{});return e&&t})){oe(S.Reflect,"defineProperty",Cn.defineProperty)}}if(S.Reflect.construct){if(!a(function(){var e=function F(){};return S.Reflect.construct(function(){},[],e)instanceof e})){oe(S.Reflect,"construct",Cn.construct)}}if(String(new Date(NaN))!=="Invalid Date"){var Ln=Date.prototype.toString;var Fn=function toString(){var e=+this;if(e!==e){return"Invalid Date"}return le.Call(Ln,this)};oe(Date.prototype,"toString",Fn)}var Dn={anchor:function anchor(e){return le.CreateHTML(this,"a","name",e)},big:function big(){return le.CreateHTML(this,"big","","")},blink:function blink(){return le.CreateHTML(this,"blink","","")},bold:function bold(){return le.CreateHTML(this,"b","","")},fixed:function fixed(){return le.CreateHTML(this,"tt","","")},fontcolor:function fontcolor(e){return le.CreateHTML(this,"font","color",e)},fontsize:function fontsize(e){return le.CreateHTML(this,"font","size",e)},italics:function italics(){return le.CreateHTML(this,"i","","")},link:function link(e){return le.CreateHTML(this,"a","href",e)},small:function small(){return le.CreateHTML(this,"small","","")},strike:function strike(){return le.CreateHTML(this,"strike","","")},sub:function sub(){return le.CreateHTML(this,"sub","","")},sup:function sub(){return le.CreateHTML(this,"sup","","")}};l(Object.keys(Dn),function(e){var r=String.prototype[e];var n=false;if(le.IsCallable(r)){var o=t(r,"",' " ');var i=P([],o.match(/"/g)).length;n=o!==o.toLowerCase()||i>2}else{n=true}if(n){oe(String.prototype,e,Dn[e])}});var zn=function(){if(!ie){return false}var e=typeof JSON==="object"&&typeof JSON.stringify==="function"?JSON.stringify:null;if(!e){return false}if(typeof e(J())!=="undefined"){return true}if(e([J()])!=="[null]"){return true}var t={a:J()};t[J()]=true;if(e(t)!=="{}"){return true}return false}();var qn=a(function(){if(!ie){return true}return JSON.stringify(Object(J()))==="{}"&&JSON.stringify([Object(J())])==="[{}]"});if(zn||!qn){var Wn=JSON.stringify;oe(JSON,"stringify",function stringify(e){if(typeof e==="symbol"){return}var n;if(arguments.length>1){n=arguments[1]}var o=[e];if(!r(n)){var i=le.IsCallable(n)?n:null;var a=function(e,r){var n=i?t(i,this,e,r):r;if(typeof n!=="symbol"){if(ne.symbol(n)){return _t({})(n)}return n}};o.push(a)}else{o.push(n)}if(arguments.length>2){o.push(arguments[2])}return Wn.apply(this,o)})}return S});
27919//# sourceMappingURL=es6-shim.map
27920
27921
27922/***/ }),
27923
vendor: 50,793 bytes, lines 27924-27934
27924/***/ "./node_modules/flatpickr/dist/flatpickr.min.js":
27925/*!******************************************************!*\
27926  !*** ./node_modules/flatpickr/dist/flatpickr.min.js ***!
27927  \******************************************************/
27928/***/ (function(module) {
27929
27930/* flatpickr v4.6.13,, @license MIT */
27931!function(e,n){ true?module.exports=n():0}(this,(function(){"use strict";var e=function(){return(e=Object.assign||function(e){for(var n,t=1,a=arguments.length;t<a;t++)for(var i in n=arguments[t])Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i]);return e}).apply(this,arguments)};function n(){for(var e=0,n=0,t=arguments.length;n<t;n++)e+=arguments[n].length;var a=Array(e),i=0;for(n=0;n<t;n++)for(var o=arguments[n],r=0,l=o.length;r<l;r++,i++)a[i]=o[r];return a}var t=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition"],a={_disable:[],allowInput:!1,allowInvalidPreload:!1,altFormat:"F j, Y",altInput:!1,altInputClass:"form-control input",animate:"object"==typeof window&&-1===window.navigator.userAgent.indexOf("MSIE"),ariaDateFormat:"F j, Y",autoFillDefaultTime:!0,clickOpens:!0,closeOnSelect:!0,conjunction:", ",dateFormat:"Y-m-d",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enableSeconds:!1,enableTime:!1,errorHandler:function(e){return"undefined"!=typeof console&&console.warn(e)},getWeek:function(e){var n=new Date(e.getTime());n.setHours(0,0,0,0),n.setDate(n.getDate()+3-(n.getDay()+6)%7);var t=new Date(n.getFullYear(),0,4);return 1+Math.round(((n.getTime()-t.getTime())/864e5-3+(t.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},i={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var n=e%100;if(n>3&&n<21)return"th";switch(n%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},o=function(e,n){return void 0===n&&(n=2),("000"+e).slice(-1*n)},r=function(e){return!0===e?1:0};function l(e,n){var t;return function(){var a=this,i=arguments;clearTimeout(t),t=setTimeout((function(){return e.apply(a,i)}),n)}}var c=function(e){return e instanceof Array?e:[e]};function s(e,n,t){if(!0===t)return e.classList.add(n);e.classList.remove(n)}function d(e,n,t){var a=window.document.createElement(e);return n=n||"",t=t||"",a.className=n,void 0!==t&&(a.textContent=t),a}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function f(e,n){return n(e)?e:e.parentNode?f(e.parentNode,n):void 0}function m(e,n){var t=d("div","numInputWrapper"),a=d("input","numInput "+e),i=d("span","arrowUp"),o=d("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?a.type="number":(a.type="text",a.pattern="\\d*"),void 0!==n)for(var r in n)a.setAttribute(r,n[r]);return t.appendChild(a),t.appendChild(i),t.appendChild(o),t}function g(e){try{return"function"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(n){return e.target}}var p=function(){},h=function(e,n,t){return t.months[n?"shorthand":"longhand"][e]},v={D:p,F:function(e,n,t){e.setMonth(t.months.longhand.indexOf(n))},G:function(e,n){e.setHours((e.getHours()>=12?12:0)+parseFloat(n))},H:function(e,n){e.setHours(parseFloat(n))},J:function(e,n){e.setDate(parseFloat(n))},K:function(e,n,t){e.setHours(e.getHours()%12+12*r(new RegExp(t.amPM[1],"i").test(n)))},M:function(e,n,t){e.setMonth(t.months.shorthand.indexOf(n))},S:function(e,n){e.setSeconds(parseFloat(n))},U:function(e,n){return new Date(1e3*parseFloat(n))},W:function(e,n,t){var a=parseInt(n),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+t.firstDayOfWeek),i},Y:function(e,n){e.setFullYear(parseFloat(n))},Z:function(e,n){return new Date(n)},d:function(e,n){e.setDate(parseFloat(n))},h:function(e,n){e.setHours((e.getHours()>=12?12:0)+parseFloat(n))},i:function(e,n){e.setMinutes(parseFloat(n))},j:function(e,n){e.setDate(parseFloat(n))},l:p,m:function(e,n){e.setMonth(parseFloat(n)-1)},n:function(e,n){e.setMonth(parseFloat(n)-1)},s:function(e,n){e.setSeconds(parseFloat(n))},u:function(e,n){return new Date(parseFloat(n))},w:p,y:function(e,n){e.setFullYear(2e3+parseFloat(n))}},D={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},w={Z:function(e){return e.toISOString()},D:function(e,n,t){return n.weekdays.shorthand[w.w(e,n,t)]},F:function(e,n,t){return h(w.n(e,n,t)-1,!1,n)},G:function(e,n,t){return o(w.h(e,n,t))},H:function(e){return o(e.getHours())},J:function(e,n){return void 0!==n.ordinal?e.getDate()+n.ordinal(e.getDate()):e.getDate()},K:function(e,n){return n.amPM[r(e.getHours()>11)]},M:function(e,n){return h(e.getMonth(),!0,n)},S:function(e){return o(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,n,t){return t.getWeek(e)},Y:function(e){return o(e.getFullYear(),4)},d:function(e){return o(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return o(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,n){return n.weekdays.longhand[e.getDay()]},m:function(e){return o(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},b=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o,l=e.isMobile,c=void 0!==l&&l;return function(e,n,a){var i=a||r;return void 0===t.formatDate||c?n.split("").map((function(n,a,o){return w[n]&&"\\"!==o[a-1]?w[n](e,i,t):"\\"!==n?n:""})).join(""):t.formatDate(e,n,i)}},C=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o;return function(e,n,i,o){if(0===e||e){var l,c=o||r,s=e;if(e instanceof Date)l=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if("string"==typeof e){var d=n||(t||a).dateFormat,u=String(e).trim();if("today"===u)l=new Date,i=!0;else if(t&&t.parseDate)l=t.parseDate(e,d);else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else{for(var f=void 0,m=[],g=0,p=0,h="";g<d.length;g++){var w=d[g],b="\\"===w,C="\\"===d[g-1]||b;if(D[w]&&!C){h+=D[w];var M=new RegExp(h).exec(e);M&&(f=!0)&&m["Y"!==w?"push":"unshift"]({fn:v[w],val:M[++p]})}else b||(h+=".")}l=t&&t.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0),m.forEach((function(e){var n=e.fn,t=e.val;return l=n(l,t,c)||l})),l=f?l:void 0}}if(l instanceof Date&&!isNaN(l.getTime()))return!0===i&&l.setHours(0,0,0,0),l;t.errorHandler(new Error("Invalid date provided: "+s))}}};function M(e,n,t){return void 0===t&&(t=!0),!1!==t?new Date(e.getTime()).setHours(0,0,0,0)-new Date(n.getTime()).setHours(0,0,0,0):e.getTime()-n.getTime()}var y=function(e,n,t){return 3600*e+60*n+t},x=864e5;function E(e){var n=e.defaultHour,t=e.defaultMinute,a=e.defaultSeconds;if(void 0!==e.minDate){var i=e.minDate.getHours(),o=e.minDate.getMinutes(),r=e.minDate.getSeconds();n<i&&(n=i),n===i&&t<o&&(t=o),n===i&&t===o&&a<r&&(a=e.minDate.getSeconds())}if(void 0!==e.maxDate){var l=e.maxDate.getHours(),c=e.maxDate.getMinutes();(n=Math.min(n,l))===l&&(t=Math.min(c,t)),n===l&&t===c&&(a=e.maxDate.getSeconds())}return{hours:n,minutes:t,seconds:a}}"function"!=typeof Object.assign&&(Object.assign=function(e){for(var n=[],t=1;t<arguments.length;t++)n[t-1]=arguments[t];if(!e)throw TypeError("Cannot convert undefined or null to object");for(var a=function(n){n&&Object.keys(n).forEach((function(t){return e[t]=n[t]}))},i=0,o=n;i<o.length;i++){var r=o[i];a(r)}return e});function k(p,v){var w={config:e(e({},a),I.defaultConfig),l10n:i};function k(){var e;return(null===(e=w.calendarContainer)||void 0===e?void 0:e.getRootNode()).activeElement||document.activeElement}function T(e){return e.bind(w)}function S(){var e=w.config;!1===e.weekNumbers&&1===e.showMonths||!0!==e.noCalendar&&window.requestAnimationFrame((function(){if(void 0!==w.calendarContainer&&(w.calendarContainer.style.visibility="hidden",w.calendarContainer.style.display="block"),void 0!==w.daysContainer){var n=(w.days.offsetWidth+1)*e.showMonths;w.daysContainer.style.width=n+"px",w.calendarContainer.style.width=n+(void 0!==w.weekWrapper?w.weekWrapper.offsetWidth:0)+"px",w.calendarContainer.style.removeProperty("visibility"),w.calendarContainer.style.removeProperty("display")}}))}function _(e){if(0===w.selectedDates.length){var n=void 0===w.config.minDate||M(new Date,w.config.minDate)>=0?new Date:new Date(w.config.minDate.getTime()),t=E(w.config);n.setHours(t.hours,t.minutes,t.seconds,n.getMilliseconds()),w.selectedDates=[n],w.latestSelectedDateObj=n}void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();var n="keydown"===e.type,t=g(e),a=t;void 0!==w.amPM&&t===w.amPM&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]);var i=parseFloat(a.getAttribute("min")),l=parseFloat(a.getAttribute("max")),c=parseFloat(a.getAttribute("step")),s=parseInt(a.value,10),d=e.delta||(n?38===e.which?1:-1:0),u=s+c*d;if(void 0!==a.value&&2===a.value.length){var f=a===w.hourElement,m=a===w.minuteElement;u<i?(u=l+u+r(!f)+(r(f)&&r(!w.amPM)),m&&L(void 0,-1,w.hourElement)):u>l&&(u=a===w.hourElement?u-l-r(!w.amPM):i,m&&L(void 0,1,w.hourElement)),w.amPM&&f&&(1===c?u+s===23:Math.abs(u-s)>c)&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]),a.value=o(u)}}(e);var a=w._input.value;O(),ye(),w._input.value!==a&&w._debouncedChange()}function O(){if(void 0!==w.hourElement&&void 0!==w.minuteElement){var e,n,t=(parseInt(w.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(w.minuteElement.value,10)||0)%60,i=void 0!==w.secondElement?(parseInt(w.secondElement.value,10)||0)%60:0;void 0!==w.amPM&&(e=t,n=w.amPM.textContent,t=e%12+12*r(n===w.l10n.amPM[1]));var o=void 0!==w.config.minTime||w.config.minDate&&w.minDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.minDate,!0),l=void 0!==w.config.maxTime||w.config.maxDate&&w.maxDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.maxDate,!0);if(void 0!==w.config.maxTime&&void 0!==w.config.minTime&&w.config.minTime>w.config.maxTime){var c=y(w.config.minTime.getHours(),w.config.minTime.getMinutes(),w.config.minTime.getSeconds()),s=y(w.config.maxTime.getHours(),w.config.maxTime.getMinutes(),w.config.maxTime.getSeconds()),d=y(t,a,i);if(d>s&&d<c){var u=function(e){var n=Math.floor(e/3600),t=(e-3600*n)/60;return[n,t,e-3600*n-60*t]}(c);t=u[0],a=u[1],i=u[2]}}else{if(l){var f=void 0!==w.config.maxTime?w.config.maxTime:w.config.maxDate;(t=Math.min(t,f.getHours()))===f.getHours()&&(a=Math.min(a,f.getMinutes())),a===f.getMinutes()&&(i=Math.min(i,f.getSeconds()))}if(o){var m=void 0!==w.config.minTime?w.config.minTime:w.config.minDate;(t=Math.max(t,m.getHours()))===m.getHours()&&a<m.getMinutes()&&(a=m.getMinutes()),a===m.getMinutes()&&(i=Math.max(i,m.getSeconds()))}}A(t,a,i)}}function F(e){var n=e||w.latestSelectedDateObj;n&&n instanceof Date&&A(n.getHours(),n.getMinutes(),n.getSeconds())}function A(e,n,t){void 0!==w.latestSelectedDateObj&&w.latestSelectedDateObj.setHours(e%24,n,t||0,0),w.hourElement&&w.minuteElement&&!w.isMobile&&(w.hourElement.value=o(w.config.time_24hr?e:(12+e)%12+12*r(e%12==0)),w.minuteElement.value=o(n),void 0!==w.amPM&&(w.amPM.textContent=w.l10n.amPM[r(e>=12)]),void 0!==w.secondElement&&(w.secondElement.value=o(t)))}function N(e){var n=g(e),t=parseInt(n.value)+(e.delta||0);(t/1e3>1||"Enter"===e.key&&!/[^\d]/.test(t.toString()))&&ee(t)}function P(e,n,t,a){return n instanceof Array?n.forEach((function(n){return P(e,n,t,a)})):e instanceof Array?e.forEach((function(e){return P(e,n,t,a)})):(e.addEventListener(n,t,a),void w._handlers.push({remove:function(){return e.removeEventListener(n,t,a)}}))}function Y(){De("onChange")}function j(e,n){var t=void 0!==e?w.parseDate(e):w.latestSelectedDateObj||(w.config.minDate&&w.config.minDate>w.now?w.config.minDate:w.config.maxDate&&w.config.maxDate<w.now?w.config.maxDate:w.now),a=w.currentYear,i=w.currentMonth;try{void 0!==t&&(w.currentYear=t.getFullYear(),w.currentMonth=t.getMonth())}catch(e){e.message="Invalid date supplied: "+t,w.config.errorHandler(e)}n&&w.currentYear!==a&&(De("onYearChange"),q()),!n||w.currentYear===a&&w.currentMonth===i||De("onMonthChange"),w.redraw()}function H(e){var n=g(e);~n.className.indexOf("arrow")&&L(e,n.classList.contains("arrowUp")?1:-1)}function L(e,n,t){var a=e&&g(e),i=t||a&&a.parentNode&&a.parentNode.firstChild,o=we("increment");o.delta=n,i&&i.dispatchEvent(o)}function R(e,n,t,a){var i=ne(n,!0),o=d("span",e,n.getDate().toString());return o.dateObj=n,o.$i=a,o.setAttribute("aria-label",w.formatDate(n,w.config.ariaDateFormat)),-1===e.indexOf("hidden")&&0===M(n,w.now)&&(w.todayDateElem=o,o.classList.add("today"),o.setAttribute("aria-current","date")),i?(o.tabIndex=-1,be(n)&&(o.classList.add("selected"),w.selectedDateElem=o,"range"===w.config.mode&&(s(o,"startRange",w.selectedDates[0]&&0===M(n,w.selectedDates[0],!0)),s(o,"endRange",w.selectedDates[1]&&0===M(n,w.selectedDates[1],!0)),"nextMonthDay"===e&&o.classList.add("inRange")))):o.classList.add("flatpickr-disabled"),"range"===w.config.mode&&function(e){return!("range"!==w.config.mode||w.selectedDates.length<2)&&(M(e,w.selectedDates[0])>=0&&M(e,w.selectedDates[1])<=0)}(n)&&!be(n)&&o.classList.add("inRange"),w.weekNumbers&&1===w.config.showMonths&&"prevMonthDay"!==e&&a%7==6&&w.weekNumbers.insertAdjacentHTML("beforeend","<span class='flatpickr-day'>"+w.config.getWeek(n)+"</span>"),De("onDayCreate",o),o}function W(e){e.focus(),"range"===w.config.mode&&oe(e)}function B(e){for(var n=e>0?0:w.config.showMonths-1,t=e>0?w.config.showMonths:-1,a=n;a!=t;a+=e)for(var i=w.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf("hidden")&&ne(c.dateObj))return c}}function J(e,n){var t=k(),a=te(t||document.body),i=void 0!==e?e:a?t:void 0!==w.selectedDateElem&&te(w.selectedDateElem)?w.selectedDateElem:void 0!==w.todayDateElem&&te(w.todayDateElem)?w.todayDateElem:B(n>0?1:-1);void 0===i?w._input.focus():a?function(e,n){for(var t=-1===e.className.indexOf("Month")?e.dateObj.getMonth():w.currentMonth,a=n>0?w.config.showMonths:-1,i=n>0?1:-1,o=t-w.currentMonth;o!=a;o+=i)for(var r=w.daysContainer.children[o],l=t-w.currentMonth===o?e.$i+n:n<0?r.children.length-1:0,c=r.children.length,s=l;s>=0&&s<c&&s!=(n>0?c:-1);s+=i){var d=r.children[s];if(-1===d.className.indexOf("hidden")&&ne(d.dateObj)&&Math.abs(e.$i-s)>=Math.abs(n))return W(d)}w.changeMonth(i),J(B(i),0)}(i,n):W(i)}function K(e,n){for(var t=(new Date(e,n,1).getDay()-w.l10n.firstDayOfWeek+7)%7,a=w.utils.getDaysInMonth((n-1+12)%12,e),i=w.utils.getDaysInMonth(n,e),o=window.document.createDocumentFragment(),r=w.config.showMonths>1,l=r?"prevMonthDay hidden":"prevMonthDay",c=r?"nextMonthDay hidden":"nextMonthDay",s=a+1-t,u=0;s<=a;s++,u++)o.appendChild(R("flatpickr-day "+l,new Date(e,n-1,s),0,u));for(s=1;s<=i;s++,u++)o.appendChild(R("flatpickr-day",new Date(e,n,s),0,u));for(var f=i+1;f<=42-t&&(1===w.config.showMonths||u%7!=0);f++,u++)o.appendChild(R("flatpickr-day "+c,new Date(e,n+1,f%i),0,u));var m=d("div","dayContainer");return m.appendChild(o),m}function U(){if(void 0!==w.daysContainer){u(w.daysContainer),w.weekNumbers&&u(w.weekNumbers);for(var e=document.createDocumentFragment(),n=0;n<w.config.showMonths;n++){var t=new Date(w.currentYear,w.currentMonth,1);t.setMonth(w.currentMonth+n),e.appendChild(K(t.getFullYear(),t.getMonth()))}w.daysContainer.appendChild(e),w.days=w.daysContainer.firstChild,"range"===w.config.mode&&1===w.selectedDates.length&&oe()}}function q(){if(!(w.config.showMonths>1||"dropdown"!==w.config.monthSelectorType)){var e=function(e){return!(void 0!==w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&e<w.config.minDate.getMonth())&&!(void 0!==w.config.maxDate&&w.currentYear===w.config.maxDate.getFullYear()&&e>w.config.maxDate.getMonth())};w.monthsDropdownContainer.tabIndex=-1,w.monthsDropdownContainer.innerHTML="";for(var n=0;n<12;n++)if(e(n)){var t=d("option","flatpickr-monthDropdown-month");t.value=new Date(w.currentYear,n).getMonth().toString(),t.textContent=h(n,w.config.shorthandCurrentMonth,w.l10n),t.tabIndex=-1,w.currentMonth===n&&(t.selected=!0),w.monthsDropdownContainer.appendChild(t)}}}function $(){var e,n=d("div","flatpickr-month"),t=window.document.createDocumentFragment();w.config.showMonths>1||"static"===w.config.monthSelectorType?e=d("span","cur-month"):(w.monthsDropdownContainer=d("select","flatpickr-monthDropdown-months"),w.monthsDropdownContainer.setAttribute("aria-label",w.l10n.monthAriaLabel),P(w.monthsDropdownContainer,"change",(function(e){var n=g(e),t=parseInt(n.value,10);w.changeMonth(t-w.currentMonth),De("onMonthChange")})),q(),e=w.monthsDropdownContainer);var a=m("cur-year",{tabindex:"-1"}),i=a.getElementsByTagName("input")[0];i.setAttribute("aria-label",w.l10n.yearAriaLabel),w.config.minDate&&i.setAttribute("min",w.config.minDate.getFullYear().toString()),w.config.maxDate&&(i.setAttribute("max",w.config.maxDate.getFullYear().toString()),i.disabled=!!w.config.minDate&&w.config.minDate.getFullYear()===w.config.maxDate.getFullYear());var o=d("div","flatpickr-current-month");return o.appendChild(e),o.appendChild(a),t.appendChild(o),n.appendChild(t),{container:n,yearElement:i,monthElement:e}}function V(){u(w.monthNav),w.monthNav.appendChild(w.prevMonthNav),w.config.showMonths&&(w.yearElements=[],w.monthElements=[]);for(var e=w.config.showMonths;e--;){var n=$();w.yearElements.push(n.yearElement),w.monthElements.push(n.monthElement),w.monthNav.appendChild(n.container)}w.monthNav.appendChild(w.nextMonthNav)}function z(){w.weekdayContainer?u(w.weekdayContainer):w.weekdayContainer=d("div","flatpickr-weekdays");for(var e=w.config.showMonths;e--;){var n=d("div","flatpickr-weekdaycontainer");w.weekdayContainer.appendChild(n)}return G(),w.weekdayContainer}function G(){if(w.weekdayContainer){var e=w.l10n.firstDayOfWeek,t=n(w.l10n.weekdays.shorthand);e>0&&e<t.length&&(t=n(t.splice(e,t.length),t.splice(0,e)));for(var a=w.config.showMonths;a--;)w.weekdayContainer.children[a].innerHTML="\n      <span class='flatpickr-weekday'>\n        "+t.join("</span><span class='flatpickr-weekday'>")+"\n      </span>\n      "}}function Z(e,n){void 0===n&&(n=!0);var t=n?e:e-w.currentMonth;t<0&&!0===w._hidePrevMonthArrow||t>0&&!0===w._hideNextMonthArrow||(w.currentMonth+=t,(w.currentMonth<0||w.currentMonth>11)&&(w.currentYear+=w.currentMonth>11?1:-1,w.currentMonth=(w.currentMonth+12)%12,De("onYearChange"),q()),U(),De("onMonthChange"),Ce())}function Q(e){return w.calendarContainer.contains(e)}function X(e){if(w.isOpen&&!w.config.inline){var n=g(e),t=Q(n),a=!(n===w.input||n===w.altInput||w.element.contains(n)||e.path&&e.path.indexOf&&(~e.path.indexOf(w.input)||~e.path.indexOf(w.altInput)))&&!t&&!Q(e.relatedTarget),i=!w.config.ignoredFocusElements.some((function(e){return e.contains(n)}));a&&i&&(w.config.allowInput&&w.setDate(w._input.value,!1,w.config.altInput?w.config.altFormat:w.config.dateFormat),void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement&&""!==w.input.value&&void 0!==w.input.value&&_(),w.close(),w.config&&"range"===w.config.mode&&1===w.selectedDates.length&&w.clear(!1))}}function ee(e){if(!(!e||w.config.minDate&&e<w.config.minDate.getFullYear()||w.config.maxDate&&e>w.config.maxDate.getFullYear())){var n=e,t=w.currentYear!==n;w.currentYear=n||w.currentYear,w.config.maxDate&&w.currentYear===w.config.maxDate.getFullYear()?w.currentMonth=Math.min(w.config.maxDate.getMonth(),w.currentMonth):w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&(w.currentMonth=Math.max(w.config.minDate.getMonth(),w.currentMonth)),t&&(w.redraw(),De("onYearChange"),q())}}function ne(e,n){var t;void 0===n&&(n=!0);var a=w.parseDate(e,void 0,n);if(w.config.minDate&&a&&M(a,w.config.minDate,void 0!==n?n:!w.minDateHasTime)<0||w.config.maxDate&&a&&M(a,w.config.maxDate,void 0!==n?n:!w.maxDateHasTime)>0)return!1;if(!w.config.enable&&0===w.config.disable.length)return!0;if(void 0===a)return!1;for(var i=!!w.config.enable,o=null!==(t=w.config.enable)&&void 0!==t?t:w.config.disable,r=0,l=void 0;r<o.length;r++){if("function"==typeof(l=o[r])&&l(a))return i;if(l instanceof Date&&void 0!==a&&l.getTime()===a.getTime())return i;if("string"==typeof l){var c=w.parseDate(l,void 0,!0);return c&&c.getTime()===a.getTime()?i:!i}if("object"==typeof l&&void 0!==a&&l.from&&l.to&&a.getTime()>=l.from.getTime()&&a.getTime()<=l.to.getTime())return i}return!i}function te(e){return void 0!==w.daysContainer&&(-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&w.daysContainer.contains(e))}function ae(e){var n=e.target===w._input,t=w._input.value.trimEnd()!==Me();!n||!t||e.relatedTarget&&Q(e.relatedTarget)||w.setDate(w._input.value,!0,e.target===w.altInput?w.config.altFormat:w.config.dateFormat)}function ie(e){var n=g(e),t=w.config.wrap?p.contains(n):n===w._input,a=w.config.allowInput,i=w.isOpen&&(!a||!t),o=w.config.inline&&t&&!a;if(13===e.keyCode&&t){if(a)return w.setDate(w._input.value,!0,n===w.altInput?w.config.altFormat:w.config.dateFormat),w.close(),n.blur();w.open()}else if(Q(n)||i||o){var r=!!w.timeContainer&&w.timeContainer.contains(n);switch(e.keyCode){case 13:r?(e.preventDefault(),_(),fe()):me(e);break;case 27:e.preventDefault(),fe();break;case 8:case 46:t&&!w.config.allowInput&&(e.preventDefault(),w.clear());break;case 37:case 39:if(r||t)w.hourElement&&w.hourElement.focus();else{e.preventDefault();var l=k();if(void 0!==w.daysContainer&&(!1===a||l&&te(l))){var c=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),Z(c),J(B(1),0)):J(void 0,c)}}break;case 38:case 40:e.preventDefault();var s=40===e.keyCode?1:-1;w.daysContainer&&void 0!==n.$i||n===w.input||n===w.altInput?e.ctrlKey?(e.stopPropagation(),ee(w.currentYear-s),J(B(1),0)):r||J(void 0,7*s):n===w.currentYearElement?ee(w.currentYear-s):w.config.enableTime&&(!r&&w.hourElement&&w.hourElement.focus(),_(e),w._debouncedChange());break;case 9:if(r){var d=[w.hourElement,w.minuteElement,w.secondElement,w.amPM].concat(w.pluginElements).filter((function(e){return e})),u=d.indexOf(n);if(-1!==u){var f=d[u+(e.shiftKey?-1:1)];e.preventDefault(),(f||w._input).focus()}}else!w.config.noCalendar&&w.daysContainer&&w.daysContainer.contains(n)&&e.shiftKey&&(e.preventDefault(),w._input.focus())}}if(void 0!==w.amPM&&n===w.amPM)switch(e.key){case w.l10n.amPM[0].charAt(0):case w.l10n.amPM[0].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[0],O(),ye();break;case w.l10n.amPM[1].charAt(0):case w.l10n.amPM[1].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[1],O(),ye()}(t||Q(n))&&De("onKeyDown",e)}function oe(e,n){if(void 0===n&&(n="flatpickr-day"),1===w.selectedDates.length&&(!e||e.classList.contains(n)&&!e.classList.contains("flatpickr-disabled"))){for(var t=e?e.dateObj.getTime():w.days.firstElementChild.dateObj.getTime(),a=w.parseDate(w.selectedDates[0],void 0,!0).getTime(),i=Math.min(t,w.selectedDates[0].getTime()),o=Math.max(t,w.selectedDates[0].getTime()),r=!1,l=0,c=0,s=i;s<o;s+=x)ne(new Date(s),!0)||(r=r||s>i&&s<o,s<a&&(!l||s>l)?l=s:s>a&&(!c||s<c)&&(c=s));Array.from(w.rContainer.querySelectorAll("*:nth-child(-n+"+w.config.showMonths+") > ."+n)).forEach((function(n){var i,o,s,d=n.dateObj.getTime(),u=l>0&&d<l||c>0&&d>c;if(u)return n.classList.add("notAllowed"),void["inRange","startRange","endRange"].forEach((function(e){n.classList.remove(e)}));r&&!u||(["startRange","inRange","endRange","notAllowed"].forEach((function(e){n.classList.remove(e)})),void 0!==e&&(e.classList.add(t<=w.selectedDates[0].getTime()?"startRange":"endRange"),a<t&&d===a?n.classList.add("startRange"):a>t&&d===a&&n.classList.add("endRange"),d>=l&&(0===c||d<=c)&&(o=a,s=t,(i=d)>Math.min(o,s)&&i<Math.max(o,s))&&n.classList.add("inRange")))}))}}function re(){!w.isOpen||w.config.static||w.config.inline||de()}function le(e){return function(n){var t=w.config["_"+e+"Date"]=w.parseDate(n,w.config.dateFormat),a=w.config["_"+("min"===e?"max":"min")+"Date"];void 0!==t&&(w["min"===e?"minDateHasTime":"maxDateHasTime"]=t.getHours()>0||t.getMinutes()>0||t.getSeconds()>0),w.selectedDates&&(w.selectedDates=w.selectedDates.filter((function(e){return ne(e)})),w.selectedDates.length||"min"!==e||F(t),ye()),w.daysContainer&&(ue(),void 0!==t?w.currentYearElement[e]=t.getFullYear().toString():w.currentYearElement.removeAttribute(e),w.currentYearElement.disabled=!!a&&void 0!==t&&a.getFullYear()===t.getFullYear())}}function ce(){return w.config.wrap?p.querySelector("[data-input]"):p}function se(){"object"!=typeof w.config.locale&&void 0===I.l10ns[w.config.locale]&&w.config.errorHandler(new Error("flatpickr: invalid locale "+w.config.locale)),w.l10n=e(e({},I.l10ns.default),"object"==typeof w.config.locale?w.config.locale:"default"!==w.config.locale?I.l10ns[w.config.locale]:void 0),D.D="("+w.l10n.weekdays.shorthand.join("|")+")",D.l="("+w.l10n.weekdays.longhand.join("|")+")",D.M="("+w.l10n.months.shorthand.join("|")+")",D.F="("+w.l10n.months.longhand.join("|")+")",D.K="("+w.l10n.amPM[0]+"|"+w.l10n.amPM[1]+"|"+w.l10n.amPM[0].toLowerCase()+"|"+w.l10n.amPM[1].toLowerCase()+")",void 0===e(e({},v),JSON.parse(JSON.stringify(p.dataset||{}))).time_24hr&&void 0===I.defaultConfig.time_24hr&&(w.config.time_24hr=w.l10n.time_24hr),w.formatDate=b(w),w.parseDate=C({config:w.config,l10n:w.l10n})}function de(e){if("function"!=typeof w.config.position){if(void 0!==w.calendarContainer){De("onPreCalendarPosition");var n=e||w._positionElement,t=Array.prototype.reduce.call(w.calendarContainer.children,(function(e,n){return e+n.offsetHeight}),0),a=w.calendarContainer.offsetWidth,i=w.config.position.split(" "),o=i[0],r=i.length>1?i[1]:null,l=n.getBoundingClientRect(),c=window.innerHeight-l.bottom,d="above"===o||"below"!==o&&c<t&&l.top>t,u=window.pageYOffset+l.top+(d?-t-2:n.offsetHeight+2);if(s(w.calendarContainer,"arrowTop",!d),s(w.calendarContainer,"arrowBottom",d),!w.config.inline){var f=window.pageXOffset+l.left,m=!1,g=!1;"center"===r?(f-=(a-l.width)/2,m=!0):"right"===r&&(f-=a-l.width,g=!0),s(w.calendarContainer,"arrowLeft",!m&&!g),s(w.calendarContainer,"arrowCenter",m),s(w.calendarContainer,"arrowRight",g);var p=window.document.body.offsetWidth-(window.pageXOffset+l.right),h=f+a>window.document.body.offsetWidth,v=p+a>window.document.body.offsetWidth;if(s(w.calendarContainer,"rightMost",h),!w.config.static)if(w.calendarContainer.style.top=u+"px",h)if(v){var D=function(){for(var e=null,n=0;n<document.styleSheets.length;n++){var t=document.styleSheets[n];if(t.cssRules){try{t.cssRules}catch(e){continue}e=t;break}}return null!=e?e:(a=document.createElement("style"),document.head.appendChild(a),a.sheet);var a}();if(void 0===D)return;var b=window.document.body.offsetWidth,C=Math.max(0,b/2-a/2),M=D.cssRules.length,y="{left:"+l.left+"px;right:auto;}";s(w.calendarContainer,"rightMost",!1),s(w.calendarContainer,"centerMost",!0),D.insertRule(".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after"+y,M),w.calendarContainer.style.left=C+"px",w.calendarContainer.style.right="auto"}else w.calendarContainer.style.left="auto",w.calendarContainer.style.right=p+"px";else w.calendarContainer.style.left=f+"px",w.calendarContainer.style.right="auto"}}}else w.config.position(w,e)}function ue(){w.config.noCalendar||w.isMobile||(q(),Ce(),U())}function fe(){w._input.focus(),-1!==window.navigator.userAgent.indexOf("MSIE")||void 0!==navigator.msMaxTouchPoints?setTimeout(w.close,0):w.close()}function me(e){e.preventDefault(),e.stopPropagation();var n=f(g(e),(function(e){return e.classList&&e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled")&&!e.classList.contains("notAllowed")}));if(void 0!==n){var t=n,a=w.latestSelectedDateObj=new Date(t.dateObj.getTime()),i=(a.getMonth()<w.currentMonth||a.getMonth()>w.currentMonth+w.config.showMonths-1)&&"range"!==w.config.mode;if(w.selectedDateElem=t,"single"===w.config.mode)w.selectedDates=[a];else if("multiple"===w.config.mode){var o=be(a);o?w.selectedDates.splice(parseInt(o),1):w.selectedDates.push(a)}else"range"===w.config.mode&&(2===w.selectedDates.length&&w.clear(!1,!1),w.latestSelectedDateObj=a,w.selectedDates.push(a),0!==M(a,w.selectedDates[0],!0)&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()})));if(O(),i){var r=w.currentYear!==a.getFullYear();w.currentYear=a.getFullYear(),w.currentMonth=a.getMonth(),r&&(De("onYearChange"),q()),De("onMonthChange")}if(Ce(),U(),ye(),i||"range"===w.config.mode||1!==w.config.showMonths?void 0!==w.selectedDateElem&&void 0===w.hourElement&&w.selectedDateElem&&w.selectedDateElem.focus():W(t),void 0!==w.hourElement&&void 0!==w.hourElement&&w.hourElement.focus(),w.config.closeOnSelect){var l="single"===w.config.mode&&!w.config.enableTime,c="range"===w.config.mode&&2===w.selectedDates.length&&!w.config.enableTime;(l||c)&&fe()}Y()}}w.parseDate=C({config:w.config,l10n:w.l10n}),w._handlers=[],w.pluginElements=[],w.loadedPlugins=[],w._bind=P,w._setHoursFromDate=F,w._positionCalendar=de,w.changeMonth=Z,w.changeYear=ee,w.clear=function(e,n){void 0===e&&(e=!0);void 0===n&&(n=!0);w.input.value="",void 0!==w.altInput&&(w.altInput.value="");void 0!==w.mobileInput&&(w.mobileInput.value="");w.selectedDates=[],w.latestSelectedDateObj=void 0,!0===n&&(w.currentYear=w._initialDate.getFullYear(),w.currentMonth=w._initialDate.getMonth());if(!0===w.config.enableTime){var t=E(w.config),a=t.hours,i=t.minutes,o=t.seconds;A(a,i,o)}w.redraw(),e&&De("onChange")},w.close=function(){w.isOpen=!1,w.isMobile||(void 0!==w.calendarContainer&&w.calendarContainer.classList.remove("open"),void 0!==w._input&&w._input.classList.remove("active"));De("onClose")},w.onMouseOver=oe,w._createElement=d,w.createDay=R,w.destroy=function(){void 0!==w.config&&De("onDestroy");for(var e=w._handlers.length;e--;)w._handlers[e].remove();if(w._handlers=[],w.mobileInput)w.mobileInput.parentNode&&w.mobileInput.parentNode.removeChild(w.mobileInput),w.mobileInput=void 0;else if(w.calendarContainer&&w.calendarContainer.parentNode)if(w.config.static&&w.calendarContainer.parentNode){var n=w.calendarContainer.parentNode;if(n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else w.calendarContainer.parentNode.removeChild(w.calendarContainer);w.altInput&&(w.input.type="text",w.altInput.parentNode&&w.altInput.parentNode.removeChild(w.altInput),delete w.altInput);w.input&&(w.input.type=w.input._type,w.input.classList.remove("flatpickr-input"),w.input.removeAttribute("readonly"));["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach((function(e){try{delete w[e]}catch(e){}}))},w.isEnabled=ne,w.jumpToDate=j,w.updateValue=ye,w.open=function(e,n){void 0===n&&(n=w._positionElement);if(!0===w.isMobile){if(e){e.preventDefault();var t=g(e);t&&t.blur()}return void 0!==w.mobileInput&&(w.mobileInput.focus(),w.mobileInput.click()),void De("onOpen")}if(w._input.disabled||w.config.inline)return;var a=w.isOpen;w.isOpen=!0,a||(w.calendarContainer.classList.add("open"),w._input.classList.add("active"),De("onOpen"),de(n));!0===w.config.enableTime&&!0===w.config.noCalendar&&(!1!==w.config.allowInput||void 0!==e&&w.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return w.hourElement.select()}),50))},w.redraw=ue,w.set=function(e,n){if(null!==e&&"object"==typeof e)for(var a in Object.assign(w.config,e),e)void 0!==ge[a]&&ge[a].forEach((function(e){return e()}));else w.config[e]=n,void 0!==ge[e]?ge[e].forEach((function(e){return e()})):t.indexOf(e)>-1&&(w.config[e]=c(n));w.redraw(),ye(!0)},w.setDate=function(e,n,t){void 0===n&&(n=!1);void 0===t&&(t=w.config.dateFormat);if(0!==e&&!e||e instanceof Array&&0===e.length)return w.clear(n);pe(e,t),w.latestSelectedDateObj=w.selectedDates[w.selectedDates.length-1],w.redraw(),j(void 0,n),F(),0===w.selectedDates.length&&w.clear(!1);ye(n),n&&De("onChange")},w.toggle=function(e){if(!0===w.isOpen)return w.close();w.open(e)};var ge={locale:[se,G],showMonths:[V,S,z],minDate:[j],maxDate:[j],positionElement:[ve],clickOpens:[function(){!0===w.config.clickOpens?(P(w._input,"focus",w.open),P(w._input,"click",w.open)):(w._input.removeEventListener("focus",w.open),w._input.removeEventListener("click",w.open))}]};function pe(e,n){var t=[];if(e instanceof Array)t=e.map((function(e){return w.parseDate(e,n)}));else if(e instanceof Date||"number"==typeof e)t=[w.parseDate(e,n)];else if("string"==typeof e)switch(w.config.mode){case"single":case"time":t=[w.parseDate(e,n)];break;case"multiple":t=e.split(w.config.conjunction).map((function(e){return w.parseDate(e,n)}));break;case"range":t=e.split(w.l10n.rangeSeparator).map((function(e){return w.parseDate(e,n)}))}else w.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));w.selectedDates=w.config.allowInvalidPreload?t:t.filter((function(e){return e instanceof Date&&ne(e,!1)})),"range"===w.config.mode&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()}))}function he(e){return e.slice().map((function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?w.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:w.parseDate(e.from,void 0),to:w.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function ve(){w._positionElement=w.config.positionElement||w._input}function De(e,n){if(void 0!==w.config){var t=w.config[e];if(void 0!==t&&t.length>0)for(var a=0;t[a]&&a<t.length;a++)t[a](w.selectedDates,w.input.value,w,n);"onChange"===e&&(w.input.dispatchEvent(we("change")),w.input.dispatchEvent(we("input")))}}function we(e){var n=document.createEvent("Event");return n.initEvent(e,!0,!0),n}function be(e){for(var n=0;n<w.selectedDates.length;n++){var t=w.selectedDates[n];if(t instanceof Date&&0===M(t,e))return""+n}return!1}function Ce(){w.config.noCalendar||w.isMobile||!w.monthNav||(w.yearElements.forEach((function(e,n){var t=new Date(w.currentYear,w.currentMonth,1);t.setMonth(w.currentMonth+n),w.config.showMonths>1||"static"===w.config.monthSelectorType?w.monthElements[n].textContent=h(t.getMonth(),w.config.shorthandCurrentMonth,w.l10n)+" ":w.monthsDropdownContainer.value=t.getMonth().toString(),e.value=t.getFullYear().toString()})),w._hidePrevMonthArrow=void 0!==w.config.minDate&&(w.currentYear===w.config.minDate.getFullYear()?w.currentMonth<=w.config.minDate.getMonth():w.currentYear<w.config.minDate.getFullYear()),w._hideNextMonthArrow=void 0!==w.config.maxDate&&(w.currentYear===w.config.maxDate.getFullYear()?w.currentMonth+1>w.config.maxDate.getMonth():w.currentYear>w.config.maxDate.getFullYear()))}function Me(e){var n=e||(w.config.altInput?w.config.altFormat:w.config.dateFormat);return w.selectedDates.map((function(e){return w.formatDate(e,n)})).filter((function(e,n,t){return"range"!==w.config.mode||w.config.enableTime||t.indexOf(e)===n})).join("range"!==w.config.mode?w.config.conjunction:w.l10n.rangeSeparator)}function ye(e){void 0===e&&(e=!0),void 0!==w.mobileInput&&w.mobileFormatStr&&(w.mobileInput.value=void 0!==w.latestSelectedDateObj?w.formatDate(w.latestSelectedDateObj,w.mobileFormatStr):""),w.input.value=Me(w.config.dateFormat),void 0!==w.altInput&&(w.altInput.value=Me(w.config.altFormat)),!1!==e&&De("onValueUpdate")}function xe(e){var n=g(e),t=w.prevMonthNav.contains(n),a=w.nextMonthNav.contains(n);t||a?Z(t?-1:1):w.yearElements.indexOf(n)>=0?n.select():n.classList.contains("arrowUp")?w.changeYear(w.currentYear+1):n.classList.contains("arrowDown")&&w.changeYear(w.currentYear-1)}return function(){w.element=w.input=p,w.isOpen=!1,function(){var n=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],i=e(e({},JSON.parse(JSON.stringify(p.dataset||{}))),v),o={};w.config.parseDate=i.parseDate,w.config.formatDate=i.formatDate,Object.defineProperty(w.config,"enable",{get:function(){return w.config._enable},set:function(e){w.config._enable=he(e)}}),Object.defineProperty(w.config,"disable",{get:function(){return w.config._disable},set:function(e){w.config._disable=he(e)}});var r="time"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var l=I.defaultConfig.dateFormat||a.dateFormat;o.dateFormat=i.noCalendar||r?"H:i"+(i.enableSeconds?":S":""):l+" H:i"+(i.enableSeconds?":S":"")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var s=I.defaultConfig.altFormat||a.altFormat;o.altFormat=i.noCalendar||r?"h:i"+(i.enableSeconds?":S K":" K"):s+" h:i"+(i.enableSeconds?":S":"")+" K"}Object.defineProperty(w.config,"minDate",{get:function(){return w.config._minDate},set:le("min")}),Object.defineProperty(w.config,"maxDate",{get:function(){return w.config._maxDate},set:le("max")});var d=function(e){return function(n){w.config["min"===e?"_minTime":"_maxTime"]=w.parseDate(n,"H:i:S")}};Object.defineProperty(w.config,"minTime",{get:function(){return w.config._minTime},set:d("min")}),Object.defineProperty(w.config,"maxTime",{get:function(){return w.config._maxTime},set:d("max")}),"time"===i.mode&&(w.config.noCalendar=!0,w.config.enableTime=!0);Object.assign(w.config,o,i);for(var u=0;u<n.length;u++)w.config[n[u]]=!0===w.config[n[u]]||"true"===w.config[n[u]];t.filter((function(e){return void 0!==w.config[e]})).forEach((function(e){w.config[e]=c(w.config[e]||[]).map(T)})),w.isMobile=!w.config.disableMobile&&!w.config.inline&&"single"===w.config.mode&&!w.config.disable.length&&!w.config.enable&&!w.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(u=0;u<w.config.plugins.length;u++){var f=w.config.plugins[u](w)||{};for(var m in f)t.indexOf(m)>-1?w.config[m]=c(f[m]).map(T).concat(w.config[m]):void 0===i[m]&&(w.config[m]=f[m])}i.altInputClass||(w.config.altInputClass=ce().className+" "+w.config.altInputClass);De("onParseConfig")}(),se(),function(){if(w.input=ce(),!w.input)return void w.config.errorHandler(new Error("Invalid input element specified"));w.input._type=w.input.type,w.input.type="text",w.input.classList.add("flatpickr-input"),w._input=w.input,w.config.altInput&&(w.altInput=d(w.input.nodeName,w.config.altInputClass),w._input=w.altInput,w.altInput.placeholder=w.input.placeholder,w.altInput.disabled=w.input.disabled,w.altInput.required=w.input.required,w.altInput.tabIndex=w.input.tabIndex,w.altInput.type="text",w.input.setAttribute("type","hidden"),!w.config.static&&w.input.parentNode&&w.input.parentNode.insertBefore(w.altInput,w.input.nextSibling));w.config.allowInput||w._input.setAttribute("readonly","readonly");ve()}(),function(){w.selectedDates=[],w.now=w.parseDate(w.config.now)||new Date;var e=w.config.defaultDate||("INPUT"!==w.input.nodeName&&"TEXTAREA"!==w.input.nodeName||!w.input.placeholder||w.input.value!==w.input.placeholder?w.input.value:null);e&&pe(e,w.config.dateFormat);w._initialDate=w.selectedDates.length>0?w.selectedDates[0]:w.config.minDate&&w.config.minDate.getTime()>w.now.getTime()?w.config.minDate:w.config.maxDate&&w.config.maxDate.getTime()<w.now.getTime()?w.config.maxDate:w.now,w.currentYear=w._initialDate.getFullYear(),w.currentMonth=w._initialDate.getMonth(),w.selectedDates.length>0&&(w.latestSelectedDateObj=w.selectedDates[0]);void 0!==w.config.minTime&&(w.config.minTime=w.parseDate(w.config.minTime,"H:i"));void 0!==w.config.maxTime&&(w.config.maxTime=w.parseDate(w.config.maxTime,"H:i"));w.minDateHasTime=!!w.config.minDate&&(w.config.minDate.getHours()>0||w.config.minDate.getMinutes()>0||w.config.minDate.getSeconds()>0),w.maxDateHasTime=!!w.config.maxDate&&(w.config.maxDate.getHours()>0||w.config.maxDate.getMinutes()>0||w.config.maxDate.getSeconds()>0)}(),w.utils={getDaysInMonth:function(e,n){return void 0===e&&(e=w.currentMonth),void 0===n&&(n=w.currentYear),1===e&&(n%4==0&&n%100!=0||n%400==0)?29:w.l10n.daysInMonth[e]}},w.isMobile||function(){var e=window.document.createDocumentFragment();if(w.calendarContainer=d("div","flatpickr-calendar"),w.calendarContainer.tabIndex=-1,!w.config.noCalendar){if(e.appendChild((w.monthNav=d("div","flatpickr-months"),w.yearElements=[],w.monthElements=[],w.prevMonthNav=d("span","flatpickr-prev-month"),w.prevMonthNav.innerHTML=w.config.prevArrow,w.nextMonthNav=d("span","flatpickr-next-month"),w.nextMonthNav.innerHTML=w.config.nextArrow,V(),Object.defineProperty(w,"_hidePrevMonthArrow",{get:function(){return w.__hidePrevMonthArrow},set:function(e){w.__hidePrevMonthArrow!==e&&(s(w.prevMonthNav,"flatpickr-disabled",e),w.__hidePrevMonthArrow=e)}}),Object.defineProperty(w,"_hideNextMonthArrow",{get:function(){return w.__hideNextMonthArrow},set:function(e){w.__hideNextMonthArrow!==e&&(s(w.nextMonthNav,"flatpickr-disabled",e),w.__hideNextMonthArrow=e)}}),w.currentYearElement=w.yearElements[0],Ce(),w.monthNav)),w.innerContainer=d("div","flatpickr-innerContainer"),w.config.weekNumbers){var n=function(){w.calendarContainer.classList.add("hasWeeks");var e=d("div","flatpickr-weekwrapper");e.appendChild(d("span","flatpickr-weekday",w.l10n.weekAbbreviation));var n=d("div","flatpickr-weeks");return e.appendChild(n),{weekWrapper:e,weekNumbers:n}}(),t=n.weekWrapper,a=n.weekNumbers;w.innerContainer.appendChild(t),w.weekNumbers=a,w.weekWrapper=t}w.rContainer=d("div","flatpickr-rContainer"),w.rContainer.appendChild(z()),w.daysContainer||(w.daysContainer=d("div","flatpickr-days"),w.daysContainer.tabIndex=-1),U(),w.rContainer.appendChild(w.daysContainer),w.innerContainer.appendChild(w.rContainer),e.appendChild(w.innerContainer)}w.config.enableTime&&e.appendChild(function(){w.calendarContainer.classList.add("hasTime"),w.config.noCalendar&&w.calendarContainer.classList.add("noCalendar");var e=E(w.config);w.timeContainer=d("div","flatpickr-time"),w.timeContainer.tabIndex=-1;var n=d("span","flatpickr-time-separator",":"),t=m("flatpickr-hour",{"aria-label":w.l10n.hourAriaLabel});w.hourElement=t.getElementsByTagName("input")[0];var a=m("flatpickr-minute",{"aria-label":w.l10n.minuteAriaLabel});w.minuteElement=a.getElementsByTagName("input")[0],w.hourElement.tabIndex=w.minuteElement.tabIndex=-1,w.hourElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getHours():w.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),w.minuteElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getMinutes():e.minutes),w.hourElement.setAttribute("step",w.config.hourIncrement.toString()),w.minuteElement.setAttribute("step",w.config.minuteIncrement.toString()),w.hourElement.setAttribute("min",w.config.time_24hr?"0":"1"),w.hourElement.setAttribute("max",w.config.time_24hr?"23":"12"),w.hourElement.setAttribute("maxlength","2"),w.minuteElement.setAttribute("min","0"),w.minuteElement.setAttribute("max","59"),w.minuteElement.setAttribute("maxlength","2"),w.timeContainer.appendChild(t),w.timeContainer.appendChild(n),w.timeContainer.appendChild(a),w.config.time_24hr&&w.timeContainer.classList.add("time24hr");if(w.config.enableSeconds){w.timeContainer.classList.add("hasSeconds");var i=m("flatpickr-second");w.secondElement=i.getElementsByTagName("input")[0],w.secondElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getSeconds():e.seconds),w.secondElement.setAttribute("step",w.minuteElement.getAttribute("step")),w.secondElement.setAttribute("min","0"),w.secondElement.setAttribute("max","59"),w.secondElement.setAttribute("maxlength","2"),w.timeContainer.appendChild(d("span","flatpickr-time-separator",":")),w.timeContainer.appendChild(i)}w.config.time_24hr||(w.amPM=d("span","flatpickr-am-pm",w.l10n.amPM[r((w.latestSelectedDateObj?w.hourElement.value:w.config.defaultHour)>11)]),w.amPM.title=w.l10n.toggleTitle,w.amPM.tabIndex=-1,w.timeContainer.appendChild(w.amPM));return w.timeContainer}());s(w.calendarContainer,"rangeMode","range"===w.config.mode),s(w.calendarContainer,"animate",!0===w.config.animate),s(w.calendarContainer,"multiMonth",w.config.showMonths>1),w.calendarContainer.appendChild(e);var i=void 0!==w.config.appendTo&&void 0!==w.config.appendTo.nodeType;if((w.config.inline||w.config.static)&&(w.calendarContainer.classList.add(w.config.inline?"inline":"static"),w.config.inline&&(!i&&w.element.parentNode?w.element.parentNode.insertBefore(w.calendarContainer,w._input.nextSibling):void 0!==w.config.appendTo&&w.config.appendTo.appendChild(w.calendarContainer)),w.config.static)){var l=d("div","flatpickr-wrapper");w.element.parentNode&&w.element.parentNode.insertBefore(l,w.element),l.appendChild(w.element),w.altInput&&l.appendChild(w.altInput),l.appendChild(w.calendarContainer)}w.config.static||w.config.inline||(void 0!==w.config.appendTo?w.config.appendTo:window.document.body).appendChild(w.calendarContainer)}(),function(){w.config.wrap&&["open","close","toggle","clear"].forEach((function(e){Array.prototype.forEach.call(w.element.querySelectorAll("[data-"+e+"]"),(function(n){return P(n,"click",w[e])}))}));if(w.isMobile)return void function(){var e=w.config.enableTime?w.config.noCalendar?"time":"datetime-local":"date";w.mobileInput=d("input",w.input.className+" flatpickr-mobile"),w.mobileInput.tabIndex=1,w.mobileInput.type=e,w.mobileInput.disabled=w.input.disabled,w.mobileInput.required=w.input.required,w.mobileInput.placeholder=w.input.placeholder,w.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",w.selectedDates.length>0&&(w.mobileInput.defaultValue=w.mobileInput.value=w.formatDate(w.selectedDates[0],w.mobileFormatStr));w.config.minDate&&(w.mobileInput.min=w.formatDate(w.config.minDate,"Y-m-d"));w.config.maxDate&&(w.mobileInput.max=w.formatDate(w.config.maxDate,"Y-m-d"));w.input.getAttribute("step")&&(w.mobileInput.step=String(w.input.getAttribute("step")));w.input.type="hidden",void 0!==w.altInput&&(w.altInput.type="hidden");try{w.input.parentNode&&w.input.parentNode.insertBefore(w.mobileInput,w.input.nextSibling)}catch(e){}P(w.mobileInput,"change",(function(e){w.setDate(g(e).value,!1,w.mobileFormatStr),De("onChange"),De("onClose")}))}();var e=l(re,50);w._debouncedChange=l(Y,300),w.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&P(w.daysContainer,"mouseover",(function(e){"range"===w.config.mode&&oe(g(e))}));P(w._input,"keydown",ie),void 0!==w.calendarContainer&&P(w.calendarContainer,"keydown",ie);w.config.inline||w.config.static||P(window,"resize",e);void 0!==window.ontouchstart?P(window.document,"touchstart",X):P(window.document,"mousedown",X);P(window.document,"focus",X,{capture:!0}),!0===w.config.clickOpens&&(P(w._input,"focus",w.open),P(w._input,"click",w.open));void 0!==w.daysContainer&&(P(w.monthNav,"click",xe),P(w.monthNav,["keyup","increment"],N),P(w.daysContainer,"click",me));if(void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement){var n=function(e){return g(e).select()};P(w.timeContainer,["increment"],_),P(w.timeContainer,"blur",_,{capture:!0}),P(w.timeContainer,"click",H),P([w.hourElement,w.minuteElement],["focus","click"],n),void 0!==w.secondElement&&P(w.secondElement,"focus",(function(){return w.secondElement&&w.secondElement.select()})),void 0!==w.amPM&&P(w.amPM,"click",(function(e){_(e)}))}w.config.allowInput&&P(w._input,"blur",ae)}(),(w.selectedDates.length||w.config.noCalendar)&&(w.config.enableTime&&F(w.config.noCalendar?w.latestSelectedDateObj:void 0),ye(!1)),S();var n=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!w.isMobile&&n&&de(),De("onReady")}(),w}function T(e,n){for(var t=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;i<t.length;i++){var o=t[i];try{if(null!==o.getAttribute("data-fp-omit"))continue;void 0!==o._flatpickr&&(o._flatpickr.destroy(),o._flatpickr=void 0),o._flatpickr=k(o,n||{}),a.push(o._flatpickr)}catch(e){console.error(e)}}return 1===a.length?a[0]:a}"undefined"!=typeof HTMLElement&&"undefined"!=typeof HTMLCollection&&"undefined"!=typeof NodeList&&(HTMLCollection.prototype.flatpickr=NodeList.prototype.flatpickr=function(e){return T(this,e)},HTMLElement.prototype.flatpickr=function(e){return T([this],e)});var I=function(e,n){return"string"==typeof e?T(window.document.querySelectorAll(e),n):e instanceof Node?T([e],n):T(e,n)};return I.defaultConfig={},I.l10ns={en:e({},i),default:e({},i)},I.localize=function(n){I.l10ns.default=e(e({},I.l10ns.default),n)},I.setDefaults=function(n){I.defaultConfig=e(e({},I.defaultConfig),n)},I.parseDate=C({}),I.formatDate=b({}),I.compareDates=M,"undefined"!=typeof jQuery&&void 0!==jQuery.fn&&(jQuery.fn.flatpickr=function(e){return T(this,e)}),Date.prototype.fp_incr=function(e){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+("string"==typeof e?parseInt(e,10):e))},"undefined"!=typeof window&&(window.flatpickr=I),I}));
27932
27933/***/ }),
27934
vendor: 67,492 bytes, lines 27935-29529
27935/***/ "./node_modules/gsap/CSSPlugin.js":
27936/*!****************************************!*\
27937  !*** ./node_modules/gsap/CSSPlugin.js ***!
27938  \****************************************/
27939/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
27940
27941"use strict";
27942__webpack_require__.r(__webpack_exports__);
27943/* harmony export */ __webpack_require__.d(__webpack_exports__, {
27944/* harmony export */   "CSSPlugin": () => (/* binding */ CSSPlugin),
27945/* harmony export */   "_createElement": () => (/* binding */ _createElement),
27946/* harmony export */   "_getBBox": () => (/* binding */ _getBBox),
27947/* harmony export */   "checkPrefix": () => (/* binding */ _checkPropPrefix),
27948/* harmony export */   "default": () => (/* binding */ CSSPlugin)
27949/* harmony export */ });
27950/* harmony import */ var _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gsap-core.js */ "./node_modules/gsap/gsap-core.js");
27951/*!
27952 * CSSPlugin 3.12.5
27953 * https://gsap.com
27954 *
27955 * Copyright 2008-2024, GreenSock. All rights reserved.
27956 * Subject to the terms at https://gsap.com/standard-license or for
27957 * Club GSAP members, the agreement issued with that membership.
27958 * @author: Jack Doyle, [email protected]
27959*/
27960
27961/* eslint-disable */
27962
27963
27964var _win,
27965    _doc,
27966    _docElement,
27967    _pluginInitted,
27968    _tempDiv,
27969    _tempDivStyler,
27970    _recentSetterPlugin,
27971    _reverting,
27972    _windowExists = function _windowExists() {
27973  return typeof window !== "undefined";
27974},
27975    _transformProps = {},
27976    _RAD2DEG = 180 / Math.PI,
27977    _DEG2RAD = Math.PI / 180,
27978    _atan2 = Math.atan2,
27979    _bigNum = 1e8,
27980    _capsExp = /([A-Z])/g,
27981    _horizontalExp = /(left|right|width|margin|padding|x)/i,
27982    _complexExp = /[\s,\(]\S/,
27983    _propertyAliases = {
27984  autoAlpha: "opacity,visibility",
27985  scale: "scaleX,scaleY",
27986  alpha: "opacity"
27987},
27988    _renderCSSProp = function _renderCSSProp(ratio, data) {
27989  return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);
27990},
27991    _renderPropWithEnd = function _renderPropWithEnd(ratio, data) {
27992  return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);
27993},
27994    _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) {
27995  return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u : data.b, data);
27996},
27997    //if units change, we need a way to render the original unit/value when the tween goes all the way back to the beginning (ratio:0)
27998_renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) {
27999  var value = data.s + data.c * ratio;
28000  data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);
28001},
28002    _renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) {
28003  return data.set(data.t, data.p, ratio ? data.e : data.b, data);
28004},
28005    _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) {
28006  return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);
28007},
28008    _setterCSSStyle = function _setterCSSStyle(target, property, value) {
28009  return target.style[property] = value;
28010},
28011    _setterCSSProp = function _setterCSSProp(target, property, value) {
28012  return target.style.setProperty(property, value);
28013},
28014    _setterTransform = function _setterTransform(target, property, value) {
28015  return target._gsap[property] = value;
28016},
28017    _setterScale = function _setterScale(target, property, value) {
28018  return target._gsap.scaleX = target._gsap.scaleY = value;
28019},
28020    _setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) {
28021  var cache = target._gsap;
28022  cache.scaleX = cache.scaleY = value;
28023  cache.renderTransform(ratio, cache);
28024},
28025    _setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) {
28026  var cache = target._gsap;
28027  cache[property] = value;
28028  cache.renderTransform(ratio, cache);
28029},
28030    _transformProp = "transform",
28031    _transformOriginProp = _transformProp + "Origin",
28032    _saveStyle = function _saveStyle(property, isNotCSS) {
28033  var _this = this;
28034
28035  var target = this.target,
28036      style = target.style,
28037      cache = target._gsap;
28038
28039  if (property in _transformProps && style) {
28040    this.tfm = this.tfm || {};
28041
28042    if (property !== "transform") {
28043      property = _propertyAliases[property] || property;
28044      ~property.indexOf(",") ? property.split(",").forEach(function (a) {
28045        return _this.tfm[a] = _get(target, a);
28046      }) : this.tfm[property] = cache.x ? cache[property] : _get(target, property); // note: scale would map to "scaleX,scaleY", thus we loop and apply them both.
28047
28048      property === _transformOriginProp && (this.tfm.zOrigin = cache.zOrigin);
28049    } else {
28050      return _propertyAliases.transform.split(",").forEach(function (p) {
28051        return _saveStyle.call(_this, p, isNotCSS);
28052      });
28053    }
28054
28055    if (this.props.indexOf(_transformProp) >= 0) {
28056      return;
28057    }
28058
28059    if (cache.svg) {
28060      this.svgo = target.getAttribute("data-svg-origin");
28061      this.props.push(_transformOriginProp, isNotCSS, "");
28062    }
28063
28064    property = _transformProp;
28065  }
28066
28067  (style || isNotCSS) && this.props.push(property, isNotCSS, style[property]);
28068},
28069    _removeIndependentTransforms = function _removeIndependentTransforms(style) {
28070  if (style.translate) {
28071    style.removeProperty("translate");
28072    style.removeProperty("scale");
28073    style.removeProperty("rotate");
28074  }
28075},
28076    _revertStyle = function _revertStyle() {
28077  var props = this.props,
28078      target = this.target,
28079      style = target.style,
28080      cache = target._gsap,
28081      i,
28082      p;
28083
28084  for (i = 0; i < props.length; i += 3) {
28085    // stored like this: property, isNotCSS, value
28086    props[i + 1] ? target[props[i]] = props[i + 2] : props[i + 2] ? style[props[i]] = props[i + 2] : style.removeProperty(props[i].substr(0, 2) === "--" ? props[i] : props[i].replace(_capsExp, "-$1").toLowerCase());
28087  }
28088
28089  if (this.tfm) {
28090    for (p in this.tfm) {
28091      cache[p] = this.tfm[p];
28092    }
28093
28094    if (cache.svg) {
28095      cache.renderTransform();
28096      target.setAttribute("data-svg-origin", this.svgo || "");
28097    }
28098
28099    i = _reverting();
28100
28101    if ((!i || !i.isStart) && !style[_transformProp]) {
28102      _removeIndependentTransforms(style);
28103
28104      if (cache.zOrigin && style[_transformOriginProp]) {
28105        style[_transformOriginProp] += " " + cache.zOrigin + "px"; // since we're uncaching, we must put the zOrigin back into the transformOrigin so that we can pull it out accurately when we parse again. Otherwise, we'd lose the z portion of the origin since we extract it to protect from Safari bugs.
28106
28107        cache.zOrigin = 0;
28108        cache.renderTransform();
28109      }
28110
28111      cache.uncache = 1; // if it's a startAt that's being reverted in the _initTween() of the core, we don't need to uncache transforms. This is purely a performance optimization.
28112    }
28113  }
28114},
28115    _getStyleSaver = function _getStyleSaver(target, properties) {
28116  var saver = {
28117    target: target,
28118    props: [],
28119    revert: _revertStyle,
28120    save: _saveStyle
28121  };
28122  target._gsap || _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.gsap.core.getCache(target); // just make sure there's a _gsap cache defined because we read from it in _saveStyle() and it's more efficient to just check it here once.
28123
28124  properties && properties.split(",").forEach(function (p) {
28125    return saver.save(p);
28126  });
28127  return saver;
28128},
28129    _supports3D,
28130    _createElement = function _createElement(type, ns) {
28131  var e = _doc.createElementNS ? _doc.createElementNS((ns || "http://www.w3.org/1999/xhtml").replace(/^https/, "http"), type) : _doc.createElement(type); //some servers swap in https for http in the namespace which can break things, making "style" inaccessible.
28132
28133  return e && e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://gsap.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).
28134},
28135    _getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) {
28136  var cs = getComputedStyle(target);
28137  return cs[property] || cs.getPropertyValue(property.replace(_capsExp, "-$1").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || ""; //css variables may not need caps swapped out for dashes and lowercase.
28138},
28139    _prefixes = "O,Moz,ms,Ms,Webkit".split(","),
28140    _checkPropPrefix = function _checkPropPrefix(property, element, preferPrefix) {
28141  var e = element || _tempDiv,
28142      s = e.style,
28143      i = 5;
28144
28145  if (property in s && !preferPrefix) {
28146    return property;
28147  }
28148
28149  property = property.charAt(0).toUpperCase() + property.substr(1);
28150
28151  while (i-- && !(_prefixes[i] + property in s)) {}
28152
28153  return i < 0 ? null : (i === 3 ? "ms" : i >= 0 ? _prefixes[i] : "") + property;
28154},
28155    _initCore = function _initCore() {
28156  if (_windowExists() && window.document) {
28157    _win = window;
28158    _doc = _win.document;
28159    _docElement = _doc.documentElement;
28160    _tempDiv = _createElement("div") || {
28161      style: {}
28162    };
28163    _tempDivStyler = _createElement("div");
28164    _transformProp = _checkPropPrefix(_transformProp);
28165    _transformOriginProp = _transformProp + "Origin";
28166    _tempDiv.style.cssText = "border-width:0;line-height:0;position:absolute;padding:0"; //make sure to override certain properties that may contaminate measurements, in case the user has overreaching style sheets.
28167
28168    _supports3D = !!_checkPropPrefix("perspective");
28169    _reverting = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.gsap.core.reverting;
28170    _pluginInitted = 1;
28171  }
28172},
28173    _getBBoxHack = function _getBBoxHack(swapIfPossible) {
28174  //works around issues in some browsers (like Firefox) that don't correctly report getBBox() on SVG elements inside a <defs> element and/or <mask>. We try creating an SVG, adding it to the documentElement and toss the element in there so that it's definitely part of the rendering tree, then grab the bbox and if it works, we actually swap out the original getBBox() method for our own that does these extra steps whenever getBBox is needed. This helps ensure that performance is optimal (only do all these extra steps when absolutely necessary...most elements don't need it).
28175  var svg = _createElement("svg", this.ownerSVGElement && this.ownerSVGElement.getAttribute("xmlns") || "http://www.w3.org/2000/svg"),
28176      oldParent = this.parentNode,
28177      oldSibling = this.nextSibling,
28178      oldCSS = this.style.cssText,
28179      bbox;
28180
28181  _docElement.appendChild(svg);
28182
28183  svg.appendChild(this);
28184  this.style.display = "block";
28185
28186  if (swapIfPossible) {
28187    try {
28188      bbox = this.getBBox();
28189      this._gsapBBox = this.getBBox; //store the original
28190
28191      this.getBBox = _getBBoxHack;
28192    } catch (e) {}
28193  } else if (this._gsapBBox) {
28194    bbox = this._gsapBBox();
28195  }
28196
28197  if (oldParent) {
28198    if (oldSibling) {
28199      oldParent.insertBefore(this, oldSibling);
28200    } else {
28201      oldParent.appendChild(this);
28202    }
28203  }
28204
28205  _docElement.removeChild(svg);
28206
28207  this.style.cssText = oldCSS;
28208  return bbox;
28209},
28210    _getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) {
28211  var i = attributesArray.length;
28212
28213  while (i--) {
28214    if (target.hasAttribute(attributesArray[i])) {
28215      return target.getAttribute(attributesArray[i]);
28216    }
28217  }
28218},
28219    _getBBox = function _getBBox(target) {
28220  var bounds;
28221
28222  try {
28223    bounds = target.getBBox(); //Firefox throws errors if you try calling getBBox() on an SVG element that's not rendered (like in a <symbol> or <defs>). https://bugzilla.mozilla.org/show_bug.cgi?id=612118
28224  } catch (error) {
28225    bounds = _getBBoxHack.call(target, true);
28226  }
28227
28228  bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true)); //some browsers (like Firefox) misreport the bounds if the element has zero width and height (it just assumes it's at x:0, y:0), thus we need to manually grab the position in that case.
28229
28230  return bounds && !bounds.width && !bounds.x && !bounds.y ? {
28231    x: +_getAttributeFallbacks(target, ["x", "cx", "x1"]) || 0,
28232    y: +_getAttributeFallbacks(target, ["y", "cy", "y1"]) || 0,
28233    width: 0,
28234    height: 0
28235  } : bounds;
28236},
28237    _isSVG = function _isSVG(e) {
28238  return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));
28239},
28240    //reports if the element is an SVG on which getBBox() actually works
28241_removeProperty = function _removeProperty(target, property) {
28242  if (property) {
28243    var style = target.style,
28244        first2Chars;
28245
28246    if (property in _transformProps && property !== _transformOriginProp) {
28247      property = _transformProp;
28248    }
28249
28250    if (style.removeProperty) {
28251      first2Chars = property.substr(0, 2);
28252
28253      if (first2Chars === "ms" || property.substr(0, 6) === "webkit") {
28254        //Microsoft and some Webkit browsers don't conform to the standard of capitalizing the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be "ms-transform" instead of "-ms-transform" for IE9, for example)
28255        property = "-" + property;
28256      }
28257
28258      style.removeProperty(first2Chars === "--" ? property : property.replace(_capsExp, "-$1").toLowerCase());
28259    } else {
28260      //note: old versions of IE use "removeAttribute()" instead of "removeProperty()"
28261      style.removeAttribute(property);
28262    }
28263  }
28264},
28265    _addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) {
28266  var pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);
28267  plugin._pt = pt;
28268  pt.b = beginning;
28269  pt.e = end;
28270
28271  plugin._props.push(property);
28272
28273  return pt;
28274},
28275    _nonConvertibleUnits = {
28276  deg: 1,
28277  rad: 1,
28278  turn: 1
28279},
28280    _nonStandardLayouts = {
28281  grid: 1,
28282  flex: 1
28283},
28284    //takes a single value like 20px and converts it to the unit specified, like "%", returning only the numeric amount.
28285_convertToUnit = function _convertToUnit(target, property, value, unit) {
28286  var curValue = parseFloat(value) || 0,
28287      curUnit = (value + "").trim().substr((curValue + "").length) || "px",
28288      // some browsers leave extra whitespace at the beginning of CSS variables, hence the need to trim()
28289  style = _tempDiv.style,
28290      horizontal = _horizontalExp.test(property),
28291      isRootSVG = target.tagName.toLowerCase() === "svg",
28292      measureProperty = (isRootSVG ? "client" : "offset") + (horizontal ? "Width" : "Height"),
28293      amount = 100,
28294      toPixels = unit === "px",
28295      toPercent = unit === "%",
28296      px,
28297      parent,
28298      cache,
28299      isSVG;
28300
28301  if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {
28302    return curValue;
28303  }
28304
28305  curUnit !== "px" && !toPixels && (curValue = _convertToUnit(target, property, value, "px"));
28306  isSVG = target.getCTM && _isSVG(target);
28307
28308  if ((toPercent || curUnit === "%") && (_transformProps[property] || ~property.indexOf("adius"))) {
28309    px = isSVG ? target.getBBox()[horizontal ? "width" : "height"] : target[measureProperty];
28310    return (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(toPercent ? curValue / px * amount : curValue / 100 * px);
28311  }
28312
28313  style[horizontal ? "width" : "height"] = amount + (toPixels ? curUnit : unit);
28314  parent = ~property.indexOf("adius") || unit === "em" && target.appendChild && !isRootSVG ? target : target.parentNode;
28315
28316  if (isSVG) {
28317    parent = (target.ownerSVGElement || {}).parentNode;
28318  }
28319
28320  if (!parent || parent === _doc || !parent.appendChild) {
28321    parent = _doc.body;
28322  }
28323
28324  cache = parent._gsap;
28325
28326  if (cache && toPercent && cache.width && horizontal && cache.time === _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._ticker.time && !cache.uncache) {
28327    return (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(curValue / cache.width * amount);
28328  } else {
28329    if (toPercent && (property === "height" || property === "width")) {
28330      // if we're dealing with width/height that's inside a container with padding and/or it's a flexbox/grid container, we must apply it to the target itself rather than the _tempDiv in order to ensure complete accuracy, factoring in the parent's padding.
28331      var v = target.style[property];
28332      target.style[property] = amount + unit;
28333      px = target[measureProperty];
28334      v ? target.style[property] = v : _removeProperty(target, property);
28335    } else {
28336      (toPercent || curUnit === "%") && !_nonStandardLayouts[_getComputedProperty(parent, "display")] && (style.position = _getComputedProperty(target, "position"));
28337      parent === target && (style.position = "static"); // like for borderRadius, if it's a % we must have it relative to the target itself but that may not have position: relative or position: absolute in which case it'd go up the chain until it finds its offsetParent (bad). position: static protects against that.
28338
28339      parent.appendChild(_tempDiv);
28340      px = _tempDiv[measureProperty];
28341      parent.removeChild(_tempDiv);
28342      style.position = "absolute";
28343    }
28344
28345    if (horizontal && toPercent) {
28346      cache = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._getCache)(parent);
28347      cache.time = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._ticker.time;
28348      cache.width = parent[measureProperty];
28349    }
28350  }
28351
28352  return (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);
28353},
28354    _get = function _get(target, property, unit, uncache) {
28355  var value;
28356  _pluginInitted || _initCore();
28357
28358  if (property in _propertyAliases && property !== "transform") {
28359    property = _propertyAliases[property];
28360
28361    if (~property.indexOf(",")) {
28362      property = property.split(",")[0];
28363    }
28364  }
28365
28366  if (_transformProps[property] && property !== "transform") {
28367    value = _parseTransform(target, uncache);
28368    value = property !== "transformOrigin" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + " " + value.zOrigin + "px";
28369  } else {
28370    value = target.style[property];
28371
28372    if (!value || value === "auto" || uncache || ~(value + "").indexOf("calc(")) {
28373      value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._getProperty)(target, property) || (property === "opacity" ? 1 : 0); // note: some browsers, like Firefox, don't report borderRadius correctly! Instead, it only reports every corner like  borderTopLeftRadius
28374    }
28375  }
28376
28377  return unit && !~(value + "").trim().indexOf(" ") ? _convertToUnit(target, property, value, unit) + unit : value;
28378},
28379    _tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) {
28380  // note: we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus "this" would refer to the plugin.
28381  if (!start || start === "none") {
28382    // some browsers like Safari actually PREFER the prefixed property and mis-report the unprefixed value like clipPath (BUG). In other words, even though clipPath exists in the style ("clipPath" in target.style) and it's set in the CSS properly (along with -webkit-clip-path), Safari reports clipPath as "none" whereas WebkitClipPath reports accurately like "ellipse(100% 0% at 50% 0%)", so in this case we must SWITCH to using the prefixed property instead. See https://gsap.com/forums/topic/18310-clippath-doesnt-work-on-ios/
28383    var p = _checkPropPrefix(prop, target, 1),
28384        s = p && _getComputedProperty(target, p, 1);
28385
28386    if (s && s !== start) {
28387      prop = p;
28388      start = s;
28389    } else if (prop === "borderColor") {
28390      start = _getComputedProperty(target, "borderTopColor"); // Firefox bug: always reports "borderColor" as "", so we must fall back to borderTopColor. See https://gsap.com/forums/topic/24583-how-to-return-colors-that-i-had-after-reverse/
28391    }
28392  }
28393
28394  var pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(this._pt, target.style, prop, 0, 1, _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._renderComplexString),
28395      index = 0,
28396      matchIndex = 0,
28397      a,
28398      result,
28399      startValues,
28400      startNum,
28401      color,
28402      startValue,
28403      endValue,
28404      endNum,
28405      chunk,
28406      endUnit,
28407      startUnit,
28408      endValues;
28409  pt.b = start;
28410  pt.e = end;
28411  start += ""; // ensure values are strings
28412
28413  end += "";
28414
28415  if (end === "auto") {
28416    startValue = target.style[prop];
28417    target.style[prop] = end;
28418    end = _getComputedProperty(target, prop) || end;
28419    startValue ? target.style[prop] = startValue : _removeProperty(target, prop);
28420  }
28421
28422  a = [start, end];
28423
28424  (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._colorStringFilter)(a); // pass an array with the starting and ending values and let the filter do whatever it needs to the values. If colors are found, it returns true and then we must match where the color shows up order-wise because for things like boxShadow, sometimes the browser provides the computed values with the color FIRST, but the user provides it with the color LAST, so flip them if necessary. Same for drop-shadow().
28425
28426
28427  start = a[0];
28428  end = a[1];
28429  startValues = start.match(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._numWithUnitExp) || [];
28430  endValues = end.match(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._numWithUnitExp) || [];
28431
28432  if (endValues.length) {
28433    while (result = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._numWithUnitExp.exec(end)) {
28434      endValue = result[0];
28435      chunk = end.substring(index, result.index);
28436
28437      if (color) {
28438        color = (color + 1) % 5;
28439      } else if (chunk.substr(-5) === "rgba(" || chunk.substr(-5) === "hsla(") {
28440        color = 1;
28441      }
28442
28443      if (endValue !== (startValue = startValues[matchIndex++] || "")) {
28444        startNum = parseFloat(startValue) || 0;
28445        startUnit = startValue.substr((startNum + "").length);
28446        endValue.charAt(1) === "=" && (endValue = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._parseRelative)(startNum, endValue) + startUnit);
28447        endNum = parseFloat(endValue);
28448        endUnit = endValue.substr((endNum + "").length);
28449        index = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._numWithUnitExp.lastIndex - endUnit.length;
28450
28451        if (!endUnit) {
28452          //if something like "perspective:300" is passed in and we must add a unit to the end
28453          endUnit = endUnit || _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._config.units[prop] || startUnit;
28454
28455          if (index === end.length) {
28456            end += endUnit;
28457            pt.e += endUnit;
28458          }
28459        }
28460
28461        if (startUnit !== endUnit) {
28462          startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;
28463        } // these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.
28464
28465
28466        pt._pt = {
28467          _next: pt._pt,
28468          p: chunk || matchIndex === 1 ? chunk : ",",
28469          //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.
28470          s: startNum,
28471          c: endNum - startNum,
28472          m: color && color < 4 || prop === "zIndex" ? Math.round : 0
28473        };
28474      }
28475    }
28476
28477    pt.c = index < end.length ? end.substring(index, end.length) : ""; //we use the "c" of the PropTween to store the final part of the string (after the last number)
28478  } else {
28479    pt.r = prop === "display" && end === "none" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;
28480  }
28481
28482  _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._relExp.test(end) && (pt.e = 0); //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).
28483
28484  this._pt = pt; //start the linked list with this new PropTween. Remember, we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within another plugin too, thus "this" would refer to the plugin.
28485
28486  return pt;
28487},
28488    _keywordToPercent = {
28489  top: "0%",
28490  bottom: "100%",
28491  left: "0%",
28492  right: "100%",
28493  center: "50%"
28494},
28495    _convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) {
28496  var split = value.split(" "),
28497      x = split[0],
28498      y = split[1] || "50%";
28499
28500  if (x === "top" || x === "bottom" || y === "left" || y === "right") {
28501    //the user provided them in the wrong order, so flip them
28502    value = x;
28503    x = y;
28504    y = value;
28505  }
28506
28507  split[0] = _keywordToPercent[x] || x;
28508  split[1] = _keywordToPercent[y] || y;
28509  return split.join(" ");
28510},
28511    _renderClearProps = function _renderClearProps(ratio, data) {
28512  if (data.tween && data.tween._time === data.tween._dur) {
28513    var target = data.t,
28514        style = target.style,
28515        props = data.u,
28516        cache = target._gsap,
28517        prop,
28518        clearTransforms,
28519        i;
28520
28521    if (props === "all" || props === true) {
28522      style.cssText = "";
28523      clearTransforms = 1;
28524    } else {
28525      props = props.split(",");
28526      i = props.length;
28527
28528      while (--i > -1) {
28529        prop = props[i];
28530
28531        if (_transformProps[prop]) {
28532          clearTransforms = 1;
28533          prop = prop === "transformOrigin" ? _transformOriginProp : _transformProp;
28534        }
28535
28536        _removeProperty(target, prop);
28537      }
28538    }
28539
28540    if (clearTransforms) {
28541      _removeProperty(target, _transformProp);
28542
28543      if (cache) {
28544        cache.svg && target.removeAttribute("transform");
28545
28546        _parseTransform(target, 1); // force all the cached values back to "normal"/identity, otherwise if there's another tween that's already set to render transforms on this element, it could display the wrong values.
28547
28548
28549        cache.uncache = 1;
28550
28551        _removeIndependentTransforms(style);
28552      }
28553    }
28554  }
28555},
28556    // note: specialProps should return 1 if (and only if) they have a non-zero priority. It indicates we need to sort the linked list.
28557_specialProps = {
28558  clearProps: function clearProps(plugin, target, property, endValue, tween) {
28559    if (tween.data !== "isFromStart") {
28560      var pt = plugin._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);
28561      pt.u = endValue;
28562      pt.pr = -10;
28563      pt.tween = tween;
28564
28565      plugin._props.push(property);
28566
28567      return 1;
28568    }
28569  }
28570  /* className feature (about 0.4kb gzipped).
28571  , className(plugin, target, property, endValue, tween) {
28572  	let _renderClassName = (ratio, data) => {
28573  			data.css.render(ratio, data.css);
28574  			if (!ratio || ratio === 1) {
28575  				let inline = data.rmv,
28576  					target = data.t,
28577  					p;
28578  				target.setAttribute("class", ratio ? data.e : data.b);
28579  				for (p in inline) {
28580  					_removeProperty(target, p);
28581  				}
28582  			}
28583  		},
28584  		_getAllStyles = (target) => {
28585  			let styles = {},
28586  				computed = getComputedStyle(target),
28587  				p;
28588  			for (p in computed) {
28589  				if (isNaN(p) && p !== "cssText" && p !== "length") {
28590  					styles[p] = computed[p];
28591  				}
28592  			}
28593  			_setDefaults(styles, _parseTransform(target, 1));
28594  			return styles;
28595  		},
28596  		startClassList = target.getAttribute("class"),
28597  		style = target.style,
28598  		cssText = style.cssText,
28599  		cache = target._gsap,
28600  		classPT = cache.classPT,
28601  		inlineToRemoveAtEnd = {},
28602  		data = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== "=") ? endValue : startClassList.replace(new RegExp("(?:\\s|^)" + endValue.substr(2) + "(?![\\w-])"), "") + ((endValue.charAt(0) === "+") ? " " + endValue.substr(2) : "")},
28603  		changingVars = {},
28604  		startVars = _getAllStyles(target),
28605  		transformRelated = /(transform|perspective)/i,
28606  		endVars, p;
28607  	if (classPT) {
28608  		classPT.r(1, classPT.d);
28609  		_removeLinkedListItem(classPT.d.plugin, classPT, "_pt");
28610  	}
28611  	target.setAttribute("class", data.e);
28612  	endVars = _getAllStyles(target, true);
28613  	target.setAttribute("class", startClassList);
28614  	for (p in endVars) {
28615  		if (endVars[p] !== startVars[p] && !transformRelated.test(p)) {
28616  			changingVars[p] = endVars[p];
28617  			if (!style[p] && style[p] !== "0") {
28618  				inlineToRemoveAtEnd[p] = 1;
28619  			}
28620  		}
28621  	}
28622  	cache.classPT = plugin._pt = new PropTween(plugin._pt, target, "className", 0, 0, _renderClassName, data, 0, -11);
28623  	if (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://gsap.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.
28624  		style.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).
28625  	}
28626  	_parseTransform(target, true); //to clear the caching of transforms
28627  	data.css = new gsap.plugins.css();
28628  	data.css.init(target, changingVars, tween);
28629  	plugin._props.push(...data.css._props);
28630  	return 1;
28631  }
28632  */
28633
28634},
28635
28636/*
28637 * --------------------------------------------------------------------------------------
28638 * TRANSFORMS
28639 * --------------------------------------------------------------------------------------
28640 */
28641_identity2DMatrix = [1, 0, 0, 1, 0, 0],
28642    _rotationalProperties = {},
28643    _isNullTransform = function _isNullTransform(value) {
28644  return value === "matrix(1, 0, 0, 1, 0, 0)" || value === "none" || !value;
28645},
28646    _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) {
28647  var matrixString = _getComputedProperty(target, _transformProp);
28648
28649  return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._numExp).map(_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round);
28650},
28651    _getMatrix = function _getMatrix(target, force2D) {
28652  var cache = target._gsap || (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._getCache)(target),
28653      style = target.style,
28654      matrix = _getComputedTransformMatrixAsArray(target),
28655      parent,
28656      nextSibling,
28657      temp,
28658      addedToDOM;
28659
28660  if (cache.svg && target.getAttribute("transform")) {
28661    temp = target.transform.baseVal.consolidate().matrix; //ensures that even complex values like "translate(50,60) rotate(135,0,0)" are parsed because it mashes it into a matrix.
28662
28663    matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];
28664    return matrix.join(",") === "1,0,0,1,0,0" ? _identity2DMatrix : matrix;
28665  } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {
28666    //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397
28667    //browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not "none". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px).
28668    temp = style.display;
28669    style.display = "block";
28670    parent = target.parentNode;
28671
28672    if (!parent || !target.offsetParent) {
28673      // note: in 3.3.0 we switched target.offsetParent to _doc.body.contains(target) to avoid [sometimes unnecessary] MutationObserver calls but that wasn't adequate because there are edge cases where nested position: fixed elements need to get reparented to accurately sense transforms. See https://github.com/greensock/GSAP/issues/388 and https://github.com/greensock/GSAP/issues/375
28674      addedToDOM = 1; //flag
28675
28676      nextSibling = target.nextElementSibling;
28677
28678      _docElement.appendChild(target); //we must add it to the DOM in order to get values properly
28679
28680    }
28681
28682    matrix = _getComputedTransformMatrixAsArray(target);
28683    temp ? style.display = temp : _removeProperty(target, "display");
28684
28685    if (addedToDOM) {
28686      nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);
28687    }
28688  }
28689
28690  return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;
28691},
28692    _applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {
28693  var cache = target._gsap,
28694      matrix = matrixArray || _getMatrix(target, true),
28695      xOriginOld = cache.xOrigin || 0,
28696      yOriginOld = cache.yOrigin || 0,
28697      xOffsetOld = cache.xOffset || 0,
28698      yOffsetOld = cache.yOffset || 0,
28699      a = matrix[0],
28700      b = matrix[1],
28701      c = matrix[2],
28702      d = matrix[3],
28703      tx = matrix[4],
28704      ty = matrix[5],
28705      originSplit = origin.split(" "),
28706      xOrigin = parseFloat(originSplit[0]) || 0,
28707      yOrigin = parseFloat(originSplit[1]) || 0,
28708      bounds,
28709      determinant,
28710      x,
28711      y;
28712
28713  if (!originIsAbsolute) {
28714    bounds = _getBBox(target);
28715    xOrigin = bounds.x + (~originSplit[0].indexOf("%") ? xOrigin / 100 * bounds.width : xOrigin);
28716    yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf("%") ? yOrigin / 100 * bounds.height : yOrigin); // if (!("xOrigin" in cache) && (xOrigin || yOrigin)) { // added in 3.12.3, reverted in 3.12.4; requires more exploration
28717    // 	xOrigin -= bounds.x;
28718    // 	yOrigin -= bounds.y;
28719    // }
28720  } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {
28721    //if it's zero (like if scaleX and scaleY are zero), skip it to avoid errors with dividing by zero.
28722    x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;
28723    y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;
28724    xOrigin = x;
28725    yOrigin = y; // theory: we only had to do this for smoothing and it assumes that the previous one was not originIsAbsolute.
28726  }
28727
28728  if (smooth || smooth !== false && cache.smooth) {
28729    tx = xOrigin - xOriginOld;
28730    ty = yOrigin - yOriginOld;
28731    cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;
28732    cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;
28733  } else {
28734    cache.xOffset = cache.yOffset = 0;
28735  }
28736
28737  cache.xOrigin = xOrigin;
28738  cache.yOrigin = yOrigin;
28739  cache.smooth = !!smooth;
28740  cache.origin = origin;
28741  cache.originIsAbsolute = !!originIsAbsolute;
28742  target.style[_transformOriginProp] = "0px 0px"; //otherwise, if someone sets  an origin via CSS, it will likely interfere with the SVG transform attribute ones (because remember, we're baking the origin into the matrix() value).
28743
28744  if (pluginToAddPropTweensTo) {
28745    _addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOrigin", xOriginOld, xOrigin);
28746
28747    _addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOrigin", yOriginOld, yOrigin);
28748
28749    _addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOffset", xOffsetOld, cache.xOffset);
28750
28751    _addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOffset", yOffsetOld, cache.yOffset);
28752  }
28753
28754  target.setAttribute("data-svg-origin", xOrigin + " " + yOrigin);
28755},
28756    _parseTransform = function _parseTransform(target, uncache) {
28757  var cache = target._gsap || new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.GSCache(target);
28758
28759  if ("x" in cache && !uncache && !cache.uncache) {
28760    return cache;
28761  }
28762
28763  var style = target.style,
28764      invertedScaleX = cache.scaleX < 0,
28765      px = "px",
28766      deg = "deg",
28767      cs = getComputedStyle(target),
28768      origin = _getComputedProperty(target, _transformOriginProp) || "0",
28769      x,
28770      y,
28771      z,
28772      scaleX,
28773      scaleY,
28774      rotation,
28775      rotationX,
28776      rotationY,
28777      skewX,
28778      skewY,
28779      perspective,
28780      xOrigin,
28781      yOrigin,
28782      matrix,
28783      angle,
28784      cos,
28785      sin,
28786      a,
28787      b,
28788      c,
28789      d,
28790      a12,
28791      a22,
28792      t1,
28793      t2,
28794      t3,
28795      a13,
28796      a23,
28797      a33,
28798      a42,
28799      a43,
28800      a32;
28801  x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;
28802  scaleX = scaleY = 1;
28803  cache.svg = !!(target.getCTM && _isSVG(target));
28804
28805  if (cs.translate) {
28806    // accommodate independent transforms by combining them into normal ones.
28807    if (cs.translate !== "none" || cs.scale !== "none" || cs.rotate !== "none") {
28808      style[_transformProp] = (cs.translate !== "none" ? "translate3d(" + (cs.translate + " 0 0").split(" ").slice(0, 3).join(", ") + ") " : "") + (cs.rotate !== "none" ? "rotate(" + cs.rotate + ") " : "") + (cs.scale !== "none" ? "scale(" + cs.scale.split(" ").join(",") + ") " : "") + (cs[_transformProp] !== "none" ? cs[_transformProp] : "");
28809    }
28810
28811    style.scale = style.rotate = style.translate = "none";
28812  }
28813
28814  matrix = _getMatrix(target, cache.svg);
28815
28816  if (cache.svg) {
28817    if (cache.uncache) {
28818      // if cache.uncache is true (and maybe if origin is 0,0), we need to set element.style.transformOrigin = (cache.xOrigin - bbox.x) + "px " + (cache.yOrigin - bbox.y) + "px". Previously we let the data-svg-origin stay instead, but when introducing revert(), it complicated things.
28819      t2 = target.getBBox();
28820      origin = cache.xOrigin - t2.x + "px " + (cache.yOrigin - t2.y) + "px";
28821      t1 = "";
28822    } else {
28823      t1 = !uncache && target.getAttribute("data-svg-origin"); //  Remember, to work around browser inconsistencies we always force SVG elements' transformOrigin to 0,0 and offset the translation accordingly.
28824    }
28825
28826    _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);
28827  }
28828
28829  xOrigin = cache.xOrigin || 0;
28830  yOrigin = cache.yOrigin || 0;
28831
28832  if (matrix !== _identity2DMatrix) {
28833    a = matrix[0]; //a11
28834
28835    b = matrix[1]; //a21
28836
28837    c = matrix[2]; //a31
28838
28839    d = matrix[3]; //a41
28840
28841    x = a12 = matrix[4];
28842    y = a22 = matrix[5]; //2D matrix
28843
28844    if (matrix.length === 6) {
28845      scaleX = Math.sqrt(a * a + b * b);
28846      scaleY = Math.sqrt(d * d + c * c);
28847      rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).
28848
28849      skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;
28850      skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));
28851
28852      if (cache.svg) {
28853        x -= xOrigin - (xOrigin * a + yOrigin * c);
28854        y -= yOrigin - (xOrigin * b + yOrigin * d);
28855      } //3D matrix
28856
28857    } else {
28858      a32 = matrix[6];
28859      a42 = matrix[7];
28860      a13 = matrix[8];
28861      a23 = matrix[9];
28862      a33 = matrix[10];
28863      a43 = matrix[11];
28864      x = matrix[12];
28865      y = matrix[13];
28866      z = matrix[14];
28867      angle = _atan2(a32, a33);
28868      rotationX = angle * _RAD2DEG; //rotationX
28869
28870      if (angle) {
28871        cos = Math.cos(-angle);
28872        sin = Math.sin(-angle);
28873        t1 = a12 * cos + a13 * sin;
28874        t2 = a22 * cos + a23 * sin;
28875        t3 = a32 * cos + a33 * sin;
28876        a13 = a12 * -sin + a13 * cos;
28877        a23 = a22 * -sin + a23 * cos;
28878        a33 = a32 * -sin + a33 * cos;
28879        a43 = a42 * -sin + a43 * cos;
28880        a12 = t1;
28881        a22 = t2;
28882        a32 = t3;
28883      } //rotationY
28884
28885
28886      angle = _atan2(-c, a33);
28887      rotationY = angle * _RAD2DEG;
28888
28889      if (angle) {
28890        cos = Math.cos(-angle);
28891        sin = Math.sin(-angle);
28892        t1 = a * cos - a13 * sin;
28893        t2 = b * cos - a23 * sin;
28894        t3 = c * cos - a33 * sin;
28895        a43 = d * sin + a43 * cos;
28896        a = t1;
28897        b = t2;
28898        c = t3;
28899      } //rotationZ
28900
28901
28902      angle = _atan2(b, a);
28903      rotation = angle * _RAD2DEG;
28904
28905      if (angle) {
28906        cos = Math.cos(angle);
28907        sin = Math.sin(angle);
28908        t1 = a * cos + b * sin;
28909        t2 = a12 * cos + a22 * sin;
28910        b = b * cos - a * sin;
28911        a22 = a22 * cos - a12 * sin;
28912        a = t1;
28913        a12 = t2;
28914      }
28915
28916      if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {
28917        //when rotationY is set, it will often be parsed as 180 degrees different than it should be, and rotationX and rotation both being 180 (it looks the same), so we adjust for that here.
28918        rotationX = rotation = 0;
28919        rotationY = 180 - rotationY;
28920      }
28921
28922      scaleX = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(Math.sqrt(a * a + b * b + c * c));
28923      scaleY = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(Math.sqrt(a22 * a22 + a32 * a32));
28924      angle = _atan2(a12, a22);
28925      skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0;
28926      perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;
28927    }
28928
28929    if (cache.svg) {
28930      //sense if there are CSS transforms applied on an SVG element in which case we must overwrite them when rendering. The transform attribute is more reliable cross-browser, but we can't just remove the CSS ones because they may be applied in a CSS rule somewhere (not just inline).
28931      t1 = target.getAttribute("transform");
28932      cache.forceCSS = target.setAttribute("transform", "") || !_isNullTransform(_getComputedProperty(target, _transformProp));
28933      t1 && target.setAttribute("transform", t1);
28934    }
28935  }
28936
28937  if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {
28938    if (invertedScaleX) {
28939      scaleX *= -1;
28940      skewX += rotation <= 0 ? 180 : -180;
28941      rotation += rotation <= 0 ? 180 : -180;
28942    } else {
28943      scaleY *= -1;
28944      skewX += skewX <= 0 ? 180 : -180;
28945    }
28946  }
28947
28948  uncache = uncache || cache.uncache;
28949  cache.x = x - ((cache.xPercent = x && (!uncache && cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px;
28950  cache.y = y - ((cache.yPercent = y && (!uncache && cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px;
28951  cache.z = z + px;
28952  cache.scaleX = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(scaleX);
28953  cache.scaleY = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(scaleY);
28954  cache.rotation = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(rotation) + deg;
28955  cache.rotationX = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(rotationX) + deg;
28956  cache.rotationY = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(rotationY) + deg;
28957  cache.skewX = skewX + deg;
28958  cache.skewY = skewY + deg;
28959  cache.transformPerspective = perspective + px;
28960
28961  if (cache.zOrigin = parseFloat(origin.split(" ")[2]) || !uncache && cache.zOrigin || 0) {
28962    style[_transformOriginProp] = _firstTwoOnly(origin);
28963  }
28964
28965  cache.xOffset = cache.yOffset = 0;
28966  cache.force3D = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._config.force3D;
28967  cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;
28968  cache.uncache = 0;
28969  return cache;
28970},
28971    _firstTwoOnly = function _firstTwoOnly(value) {
28972  return (value = value.split(" "))[0] + " " + value[1];
28973},
28974    //for handling transformOrigin values, stripping out the 3rd dimension
28975_addPxTranslate = function _addPxTranslate(target, start, value) {
28976  var unit = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(start);
28977  return (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(parseFloat(start) + parseFloat(_convertToUnit(target, "x", value + "px", unit))) + unit;
28978},
28979    _renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) {
28980  cache.z = "0px";
28981  cache.rotationY = cache.rotationX = "0deg";
28982  cache.force3D = 0;
28983
28984  _renderCSSTransforms(ratio, cache);
28985},
28986    _zeroDeg = "0deg",
28987    _zeroPx = "0px",
28988    _endParenthesis = ") ",
28989    _renderCSSTransforms = function _renderCSSTransforms(ratio, cache) {
28990  var _ref = cache || this,
28991      xPercent = _ref.xPercent,
28992      yPercent = _ref.yPercent,
28993      x = _ref.x,
28994      y = _ref.y,
28995      z = _ref.z,
28996      rotation = _ref.rotation,
28997      rotationY = _ref.rotationY,
28998      rotationX = _ref.rotationX,
28999      skewX = _ref.skewX,
29000      skewY = _ref.skewY,
29001      scaleX = _ref.scaleX,
29002      scaleY = _ref.scaleY,
29003      transformPerspective = _ref.transformPerspective,
29004      force3D = _ref.force3D,
29005      target = _ref.target,
29006      zOrigin = _ref.zOrigin,
29007      transforms = "",
29008      use3D = force3D === "auto" && ratio && ratio !== 1 || force3D === true; // Safari has a bug that causes it not to render 3D transform-origin values properly, so we force the z origin to 0, record it in the cache, and then do the math here to offset the translate values accordingly (basically do the 3D transform-origin part manually)
29009
29010
29011  if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {
29012    var angle = parseFloat(rotationY) * _DEG2RAD,
29013        a13 = Math.sin(angle),
29014        a33 = Math.cos(angle),
29015        cos;
29016
29017    angle = parseFloat(rotationX) * _DEG2RAD;
29018    cos = Math.cos(angle);
29019    x = _addPxTranslate(target, x, a13 * cos * -zOrigin);
29020    y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);
29021    z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);
29022  }
29023
29024  if (transformPerspective !== _zeroPx) {
29025    transforms += "perspective(" + transformPerspective + _endParenthesis;
29026  }
29027
29028  if (xPercent || yPercent) {
29029    transforms += "translate(" + xPercent + "%, " + yPercent + "%) ";
29030  }
29031
29032  if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {
29033    transforms += z !== _zeroPx || use3D ? "translate3d(" + x + ", " + y + ", " + z + ") " : "translate(" + x + ", " + y + _endParenthesis;
29034  }
29035
29036  if (rotation !== _zeroDeg) {
29037    transforms += "rotate(" + rotation + _endParenthesis;
29038  }
29039
29040  if (rotationY !== _zeroDeg) {
29041    transforms += "rotateY(" + rotationY + _endParenthesis;
29042  }
29043
29044  if (rotationX !== _zeroDeg) {
29045    transforms += "rotateX(" + rotationX + _endParenthesis;
29046  }
29047
29048  if (skewX !== _zeroDeg || skewY !== _zeroDeg) {
29049    transforms += "skew(" + skewX + ", " + skewY + _endParenthesis;
29050  }
29051
29052  if (scaleX !== 1 || scaleY !== 1) {
29053    transforms += "scale(" + scaleX + ", " + scaleY + _endParenthesis;
29054  }
29055
29056  target.style[_transformProp] = transforms || "translate(0, 0)";
29057},
29058    _renderSVGTransforms = function _renderSVGTransforms(ratio, cache) {
29059  var _ref2 = cache || this,
29060      xPercent = _ref2.xPercent,
29061      yPercent = _ref2.yPercent,
29062      x = _ref2.x,
29063      y = _ref2.y,
29064      rotation = _ref2.rotation,
29065      skewX = _ref2.skewX,
29066      skewY = _ref2.skewY,
29067      scaleX = _ref2.scaleX,
29068      scaleY = _ref2.scaleY,
29069      target = _ref2.target,
29070      xOrigin = _ref2.xOrigin,
29071      yOrigin = _ref2.yOrigin,
29072      xOffset = _ref2.xOffset,
29073      yOffset = _ref2.yOffset,
29074      forceCSS = _ref2.forceCSS,
29075      tx = parseFloat(x),
29076      ty = parseFloat(y),
29077      a11,
29078      a21,
29079      a12,
29080      a22,
29081      temp;
29082
29083  rotation = parseFloat(rotation);
29084  skewX = parseFloat(skewX);
29085  skewY = parseFloat(skewY);
29086
29087  if (skewY) {
29088    //for performance reasons, we combine all skewing into the skewX and rotation values. Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of 10 degrees.
29089    skewY = parseFloat(skewY);
29090    skewX += skewY;
29091    rotation += skewY;
29092  }
29093
29094  if (rotation || skewX) {
29095    rotation *= _DEG2RAD;
29096    skewX *= _DEG2RAD;
29097    a11 = Math.cos(rotation) * scaleX;
29098    a21 = Math.sin(rotation) * scaleX;
29099    a12 = Math.sin(rotation - skewX) * -scaleY;
29100    a22 = Math.cos(rotation - skewX) * scaleY;
29101
29102    if (skewX) {
29103      skewY *= _DEG2RAD;
29104      temp = Math.tan(skewX - skewY);
29105      temp = Math.sqrt(1 + temp * temp);
29106      a12 *= temp;
29107      a22 *= temp;
29108
29109      if (skewY) {
29110        temp = Math.tan(skewY);
29111        temp = Math.sqrt(1 + temp * temp);
29112        a11 *= temp;
29113        a21 *= temp;
29114      }
29115    }
29116
29117    a11 = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(a11);
29118    a21 = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(a21);
29119    a12 = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(a12);
29120    a22 = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(a22);
29121  } else {
29122    a11 = scaleX;
29123    a22 = scaleY;
29124    a21 = a12 = 0;
29125  }
29126
29127  if (tx && !~(x + "").indexOf("px") || ty && !~(y + "").indexOf("px")) {
29128    tx = _convertToUnit(target, "x", x, "px");
29129    ty = _convertToUnit(target, "y", y, "px");
29130  }
29131
29132  if (xOrigin || yOrigin || xOffset || yOffset) {
29133    tx = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);
29134    ty = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);
29135  }
29136
29137  if (xPercent || yPercent) {
29138    //The SVG spec doesn't support percentage-based translation in the "transform" attribute, so we merge it into the translation to simulate it.
29139    temp = target.getBBox();
29140    tx = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(tx + xPercent / 100 * temp.width);
29141    ty = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._round)(ty + yPercent / 100 * temp.height);
29142  }
29143
29144  temp = "matrix(" + a11 + "," + a21 + "," + a12 + "," + a22 + "," + tx + "," + ty + ")";
29145  target.setAttribute("transform", temp);
29146  forceCSS && (target.style[_transformProp] = temp); //some browsers prioritize CSS transforms over the transform attribute. When we sense that the user has CSS transforms applied, we must overwrite them this way (otherwise some browser simply won't render the transform attribute changes!)
29147},
29148    _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue) {
29149  var cap = 360,
29150      isString = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._isString)(endValue),
29151      endNum = parseFloat(endValue) * (isString && ~endValue.indexOf("rad") ? _RAD2DEG : 1),
29152      change = endNum - startNum,
29153      finalValue = startNum + change + "deg",
29154      direction,
29155      pt;
29156
29157  if (isString) {
29158    direction = endValue.split("_")[1];
29159
29160    if (direction === "short") {
29161      change %= cap;
29162
29163      if (change !== change % (cap / 2)) {
29164        change += change < 0 ? cap : -cap;
29165      }
29166    }
29167
29168    if (direction === "cw" && change < 0) {
29169      change = (change + cap * _bigNum) % cap - ~~(change / cap) * cap;
29170    } else if (direction === "ccw" && change > 0) {
29171      change = (change - cap * _bigNum) % cap - ~~(change / cap) * cap;
29172    }
29173  }
29174
29175  plugin._pt = pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);
29176  pt.e = finalValue;
29177  pt.u = "deg";
29178
29179  plugin._props.push(property);
29180
29181  return pt;
29182},
29183    _assign = function _assign(target, source) {
29184  // Internet Explorer doesn't have Object.assign(), so we recreate it here.
29185  for (var p in source) {
29186    target[p] = source[p];
29187  }
29188
29189  return target;
29190},
29191    _addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) {
29192  //for handling cases where someone passes in a whole transform string, like transform: "scale(2, 3) rotate(20deg) translateY(30em)"
29193  var startCache = _assign({}, target._gsap),
29194      exclude = "perspective,force3D,transformOrigin,svgOrigin",
29195      style = target.style,
29196      endCache,
29197      p,
29198      startValue,
29199      endValue,
29200      startNum,
29201      endNum,
29202      startUnit,
29203      endUnit;
29204
29205  if (startCache.svg) {
29206    startValue = target.getAttribute("transform");
29207    target.setAttribute("transform", "");
29208    style[_transformProp] = transforms;
29209    endCache = _parseTransform(target, 1);
29210
29211    _removeProperty(target, _transformProp);
29212
29213    target.setAttribute("transform", startValue);
29214  } else {
29215    startValue = getComputedStyle(target)[_transformProp];
29216    style[_transformProp] = transforms;
29217    endCache = _parseTransform(target, 1);
29218    style[_transformProp] = startValue;
29219  }
29220
29221  for (p in _transformProps) {
29222    startValue = startCache[p];
29223    endValue = endCache[p];
29224
29225    if (startValue !== endValue && exclude.indexOf(p) < 0) {
29226      //tweening to no perspective gives very unintuitive results - just keep the same perspective in that case.
29227      startUnit = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(startValue);
29228      endUnit = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(endValue);
29229      startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);
29230      endNum = parseFloat(endValue);
29231      plugin._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);
29232      plugin._pt.u = endUnit || 0;
29233
29234      plugin._props.push(p);
29235    }
29236  }
29237
29238  _assign(endCache, startCache);
29239}; // handle splitting apart padding, margin, borderWidth, and borderRadius into their 4 components. Firefox, for example, won't report borderRadius correctly - it will only do borderTopLeftRadius and the other corners. We also want to handle paddingTop, marginLeft, borderRightWidth, etc.
29240
29241
29242(0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._forEachName)("padding,margin,Width,Radius", function (name, index) {
29243  var t = "Top",
29244      r = "Right",
29245      b = "Bottom",
29246      l = "Left",
29247      props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) {
29248    return index < 2 ? name + side : "border" + side + name;
29249  });
29250
29251  _specialProps[index > 1 ? "border" + name : name] = function (plugin, target, property, endValue, tween) {
29252    var a, vars;
29253
29254    if (arguments.length < 4) {
29255      // getter, passed target, property, and unit (from _get())
29256      a = props.map(function (prop) {
29257        return _get(plugin, prop, property);
29258      });
29259      vars = a.join(" ");
29260      return vars.split(a[0]).length === 5 ? a[0] : vars;
29261    }
29262
29263    a = (endValue + "").split(" ");
29264    vars = {};
29265    props.forEach(function (prop, i) {
29266      return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];
29267    });
29268    plugin.init(target, vars, tween);
29269  };
29270});
29271
29272var CSSPlugin = {
29273  name: "css",
29274  register: _initCore,
29275  targetTest: function targetTest(target) {
29276    return target.style && target.nodeType;
29277  },
29278  init: function init(target, vars, tween, index, targets) {
29279    var props = this._props,
29280        style = target.style,
29281        startAt = tween.vars.startAt,
29282        startValue,
29283        endValue,
29284        endNum,
29285        startNum,
29286        type,
29287        specialProp,
29288        p,
29289        startUnit,
29290        endUnit,
29291        relative,
29292        isTransformRelated,
29293        transformPropTween,
29294        cache,
29295        smooth,
29296        hasPriority,
29297        inlineProps;
29298    _pluginInitted || _initCore(); // we may call init() multiple times on the same plugin instance, like when adding special properties, so make sure we don't overwrite the revert data or inlineProps
29299
29300    this.styles = this.styles || _getStyleSaver(target);
29301    inlineProps = this.styles.props;
29302    this.tween = tween;
29303
29304    for (p in vars) {
29305      if (p === "autoRound") {
29306        continue;
29307      }
29308
29309      endValue = vars[p];
29310
29311      if (_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._plugins[p] && (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._checkPlugin)(p, vars, tween, index, target, targets)) {
29312        // plugins
29313        continue;
29314      }
29315
29316      type = typeof endValue;
29317      specialProp = _specialProps[p];
29318
29319      if (type === "function") {
29320        endValue = endValue.call(tween, index, target, targets);
29321        type = typeof endValue;
29322      }
29323
29324      if (type === "string" && ~endValue.indexOf("random(")) {
29325        endValue = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._replaceRandom)(endValue);
29326      }
29327
29328      if (specialProp) {
29329        specialProp(this, target, p, endValue, tween) && (hasPriority = 1);
29330      } else if (p.substr(0, 2) === "--") {
29331        //CSS variable
29332        startValue = (getComputedStyle(target).getPropertyValue(p) + "").trim();
29333        endValue += "";
29334        _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._colorExp.lastIndex = 0;
29335
29336        if (!_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._colorExp.test(startValue)) {
29337          // colors don't have units
29338          startUnit = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(startValue);
29339          endUnit = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(endValue);
29340        }
29341
29342        endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);
29343        this.add(style, "setProperty", startValue, endValue, index, targets, 0, 0, p);
29344        props.push(p);
29345        inlineProps.push(p, 0, style[p]);
29346      } else if (type !== "undefined") {
29347        if (startAt && p in startAt) {
29348          // in case someone hard-codes a complex value as the start, like top: "calc(2vh / 2)". Without this, it'd use the computed value (always in px)
29349          startValue = typeof startAt[p] === "function" ? startAt[p].call(tween, index, target, targets) : startAt[p];
29350          (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._isString)(startValue) && ~startValue.indexOf("random(") && (startValue = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._replaceRandom)(startValue));
29351          (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(startValue + "") || startValue === "auto" || (startValue += _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._config.units[p] || (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(_get(target, p)) || ""); // for cases when someone passes in a unitless value like {x: 100}; if we try setting translate(100, 0px) it won't work.
29352
29353          (startValue + "").charAt(1) === "=" && (startValue = _get(target, p)); // can't work with relative values
29354        } else {
29355          startValue = _get(target, p);
29356        }
29357
29358        startNum = parseFloat(startValue);
29359        relative = type === "string" && endValue.charAt(1) === "=" && endValue.substr(0, 2);
29360        relative && (endValue = endValue.substr(2));
29361        endNum = parseFloat(endValue);
29362
29363        if (p in _propertyAliases) {
29364          if (p === "autoAlpha") {
29365            //special case where we control the visibility along with opacity. We still allow the opacity value to pass through and get tweened.
29366            if (startNum === 1 && _get(target, "visibility") === "hidden" && endNum) {
29367              //if visibility is initially set to "hidden", we should interpret that as intent to make opacity 0 (a convenience)
29368              startNum = 0;
29369            }
29370
29371            inlineProps.push("visibility", 0, style.visibility);
29372
29373            _addNonTweeningPT(this, style, "visibility", startNum ? "inherit" : "hidden", endNum ? "inherit" : "hidden", !endNum);
29374          }
29375
29376          if (p !== "scale" && p !== "transform") {
29377            p = _propertyAliases[p];
29378            ~p.indexOf(",") && (p = p.split(",")[0]);
29379          }
29380        }
29381
29382        isTransformRelated = p in _transformProps; //--- TRANSFORM-RELATED ---
29383
29384        if (isTransformRelated) {
29385          this.styles.save(p);
29386
29387          if (!transformPropTween) {
29388            cache = target._gsap;
29389            cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform); // if, for example, gsap.set(... {transform:"translateX(50vw)"}), the _get() call doesn't parse the transform, thus cache.renderTransform won't be set yet so force the parsing of the transform here.
29390
29391            smooth = vars.smoothOrigin !== false && cache.smooth;
29392            transformPropTween = this._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1); //the first time through, create the rendering PropTween so that it runs LAST (in the linked list, we keep adding to the beginning)
29393
29394            transformPropTween.dep = 1; //flag it as dependent so that if things get killed/overwritten and this is the only PropTween left, we can safely kill the whole tween.
29395          }
29396
29397          if (p === "scale") {
29398            this._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(this._pt, cache, "scaleY", cache.scaleY, (relative ? (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._parseRelative)(cache.scaleY, relative + endNum) : endNum) - cache.scaleY || 0, _renderCSSProp);
29399            this._pt.u = 0;
29400            props.push("scaleY", p);
29401            p += "X";
29402          } else if (p === "transformOrigin") {
29403            inlineProps.push(_transformOriginProp, 0, style[_transformOriginProp]);
29404            endValue = _convertKeywordsToPercentages(endValue); //in case something like "left top" or "bottom right" is passed in. Convert to percentages.
29405
29406            if (cache.svg) {
29407              _applySVGOrigin(target, endValue, 0, smooth, 0, this);
29408            } else {
29409              endUnit = parseFloat(endValue.split(" ")[2]) || 0; //handle the zOrigin separately!
29410
29411              endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, "zOrigin", cache.zOrigin, endUnit);
29412
29413              _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));
29414            }
29415
29416            continue;
29417          } else if (p === "svgOrigin") {
29418            _applySVGOrigin(target, endValue, 1, smooth, 0, this);
29419
29420            continue;
29421          } else if (p in _rotationalProperties) {
29422            _addRotationalPropTween(this, cache, p, startNum, relative ? (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._parseRelative)(startNum, relative + endValue) : endValue);
29423
29424            continue;
29425          } else if (p === "smoothOrigin") {
29426            _addNonTweeningPT(this, cache, "smooth", cache.smooth, endValue);
29427
29428            continue;
29429          } else if (p === "force3D") {
29430            cache[p] = endValue;
29431            continue;
29432          } else if (p === "transform") {
29433            _addRawTransformPTs(this, endValue, target);
29434
29435            continue;
29436          }
29437        } else if (!(p in style)) {
29438          p = _checkPropPrefix(p) || p;
29439        }
29440
29441        if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {
29442          startUnit = (startValue + "").substr((startNum + "").length);
29443          endNum || (endNum = 0); // protect against NaN
29444
29445          endUnit = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.getUnit)(endValue) || (p in _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._config.units ? _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._config.units[p] : startUnit);
29446          startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));
29447          this._pt = new _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, (relative ? (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._parseRelative)(startNum, relative + endNum) : endNum) - startNum, !isTransformRelated && (endUnit === "px" || p === "zIndex") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp);
29448          this._pt.u = endUnit || 0;
29449
29450          if (startUnit !== endUnit && endUnit !== "%") {
29451            //when the tween goes all the way back to the beginning, we need to revert it to the OLD/ORIGINAL value (with those units). We record that as a "b" (beginning) property and point to a render method that handles that. (performance optimization)
29452            this._pt.b = startValue;
29453            this._pt.r = _renderCSSPropWithBeginning;
29454          }
29455        } else if (!(p in style)) {
29456          if (p in target) {
29457            //maybe it's not a style - it could be a property added directly to an element in which case we'll try to animate that.
29458            this.add(target, p, startValue || target[p], relative ? relative + endValue : endValue, index, targets);
29459          } else if (p !== "parseTransform") {
29460            (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._missingPlugin)(p, endValue);
29461
29462            continue;
29463          }
29464        } else {
29465          _tweenComplexCSSString.call(this, target, p, startValue, relative ? relative + endValue : endValue);
29466        }
29467
29468        isTransformRelated || (p in style ? inlineProps.push(p, 0, style[p]) : inlineProps.push(p, 1, startValue || target[p]));
29469        props.push(p);
29470      }
29471    }
29472
29473    hasPriority && (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._sortPropTweensByPriority)(this);
29474  },
29475  render: function render(ratio, data) {
29476    if (data.tween._time || !_reverting()) {
29477      var pt = data._pt;
29478
29479      while (pt) {
29480        pt.r(ratio, pt.d);
29481        pt = pt._next;
29482      }
29483    } else {
29484      data.styles.revert();
29485    }
29486  },
29487  get: _get,
29488  aliases: _propertyAliases,
29489  getSetter: function getSetter(target, property, plugin) {
29490    //returns a setter function that accepts target, property, value and applies it accordingly. Remember, properties like "x" aren't as simple as target.style.property = value because they've got to be applied to a proxy object and then merged into a transform string in a renderer.
29491    var p = _propertyAliases[property];
29492    p && p.indexOf(",") < 0 && (property = p);
29493    return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, "x")) ? plugin && _recentSetterPlugin === plugin ? property === "scale" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === "scale" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !(0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._isUndefined)(target.style[property]) ? _setterCSSStyle : ~property.indexOf("-") ? _setterCSSProp : (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._getSetter)(target, property);
29494  },
29495  core: {
29496    _removeProperty: _removeProperty,
29497    _getMatrix: _getMatrix
29498  }
29499};
29500_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.gsap.utils.checkPrefix = _checkPropPrefix;
29501_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.gsap.core.getStyleSaver = _getStyleSaver;
29502
29503(function (positionAndScale, rotation, others, aliases) {
29504  var all = (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._forEachName)(positionAndScale + "," + rotation + "," + others, function (name) {
29505    _transformProps[name] = 1;
29506  });
29507
29508  (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._forEachName)(rotation, function (name) {
29509    _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._config.units[name] = "deg";
29510    _rotationalProperties[name] = 1;
29511  });
29512
29513  _propertyAliases[all[13]] = positionAndScale + "," + rotation;
29514
29515  (0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._forEachName)(aliases, function (name) {
29516    var split = name.split(":");
29517    _propertyAliases[split[1]] = all[split[0]];
29518  });
29519})("x,y,z,scale,scaleX,scaleY,xPercent,yPercent", "rotation,rotationX,rotationY,skewX,skewY", "transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective", "0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY");
29520
29521(0,_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._forEachName)("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective", function (name) {
29522  _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__._config.units[name] = "px";
29523});
29524
29525_gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.gsap.registerPlugin(CSSPlugin);
29526
29527
29528/***/ }),
29529
vendor: 14,509 bytes, lines 29530-29914
29530/***/ "./node_modules/gsap/MotionPathPlugin.js":
29531/*!***********************************************!*\
29532  !*** ./node_modules/gsap/MotionPathPlugin.js ***!
29533  \***********************************************/
29534/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
29535
29536"use strict";
29537__webpack_require__.r(__webpack_exports__);
29538/* harmony export */ __webpack_require__.d(__webpack_exports__, {
29539/* harmony export */   "MotionPathPlugin": () => (/* binding */ MotionPathPlugin),
29540/* harmony export */   "default": () => (/* binding */ MotionPathPlugin)
29541/* harmony export */ });
29542/* harmony import */ var _utils_paths_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/paths.js */ "./node_modules/gsap/utils/paths.js");
29543/* harmony import */ var _utils_matrix_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/matrix.js */ "./node_modules/gsap/utils/matrix.js");
29544/*!
29545 * MotionPathPlugin 3.12.5
29546 * https://gsap.com
29547 *
29548 * @license Copyright 2008-2024, GreenSock. All rights reserved.
29549 * Subject to the terms at https://gsap.com/standard-license or for
29550 * Club GSAP members, the agreement issued with that membership.
29551 * @author: Jack Doyle, [email protected]
29552*/
29553
29554/* eslint-disable */
29555
29556
29557
29558var _xProps = "x,translateX,left,marginLeft,xPercent".split(","),
29559    _yProps = "y,translateY,top,marginTop,yPercent".split(","),
29560    _DEG2RAD = Math.PI / 180,
29561    gsap,
29562    PropTween,
29563    _getUnit,
29564    _toArray,
29565    _getStyleSaver,
29566    _reverting,
29567    _getGSAP = function _getGSAP() {
29568  return gsap || typeof window !== "undefined" && (gsap = window.gsap) && gsap.registerPlugin && gsap;
29569},
29570    _populateSegmentFromArray = function _populateSegmentFromArray(segment, values, property, mode) {
29571  //mode: 0 = x but don't fill y yet, 1 = y, 2 = x and fill y with 0.
29572  var l = values.length,
29573      si = mode === 2 ? 0 : mode,
29574      i = 0,
29575      v;
29576
29577  for (; i < l; i++) {
29578    segment[si] = v = parseFloat(values[i][property]);
29579    mode === 2 && (segment[si + 1] = 0);
29580    si += 2;
29581  }
29582
29583  return segment;
29584},
29585    _getPropNum = function _getPropNum(target, prop, unit) {
29586  return parseFloat(target._gsap.get(target, prop, unit || "px")) || 0;
29587},
29588    _relativize = function _relativize(segment) {
29589  var x = segment[0],
29590      y = segment[1],
29591      i;
29592
29593  for (i = 2; i < segment.length; i += 2) {
29594    x = segment[i] += x;
29595    y = segment[i + 1] += y;
29596  }
29597},
29598    // feed in an array of quadratic bezier points like [{x: 0, y: 0}, ...] and it'll convert it to cubic bezier
29599// _quadToCubic = points => {
29600// 	let cubic = [],
29601// 		l = points.length - 1,
29602// 		i = 1,
29603// 		a, b, c;
29604// 	for (; i < l; i+=2) {
29605// 		a = points[i-1];
29606// 		b = points[i];
29607// 		c = points[i+1];
29608// 		cubic.push(a, {x: (2 * b.x + a.x) / 3, y: (2 * b.y + a.y) / 3}, {x: (2 * b.x + c.x) / 3, y: (2 * b.y + c.y) / 3});
29609// 	}
29610// 	cubic.push(points[l]);
29611// 	return cubic;
29612// },
29613_segmentToRawPath = function _segmentToRawPath(plugin, segment, target, x, y, slicer, vars, unitX, unitY) {
29614  if (vars.type === "cubic") {
29615    segment = [segment];
29616  } else {
29617    vars.fromCurrent !== false && segment.unshift(_getPropNum(target, x, unitX), y ? _getPropNum(target, y, unitY) : 0);
29618    vars.relative && _relativize(segment);
29619    var pointFunc = y ? _utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.pointsToSegment : _utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.flatPointsToSegment;
29620    segment = [pointFunc(segment, vars.curviness)];
29621  }
29622
29623  segment = slicer(_align(segment, target, vars));
29624
29625  _addDimensionalPropTween(plugin, target, x, segment, "x", unitX);
29626
29627  y && _addDimensionalPropTween(plugin, target, y, segment, "y", unitY);
29628  return (0,_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.cacheRawPathMeasurements)(segment, vars.resolution || (vars.curviness === 0 ? 20 : 12)); //when curviness is 0, it creates control points right on top of the anchors which makes it more sensitive to resolution, thus we change the default accordingly.
29629},
29630    _emptyFunc = function _emptyFunc(v) {
29631  return v;
29632},
29633    _numExp = /[-+\.]*\d+\.?(?:e-|e\+)?\d*/g,
29634    _originToPoint = function _originToPoint(element, origin, parentMatrix) {
29635  // origin is an array of normalized values (0-1) in relation to the width/height, so [0.5, 0.5] would be the center. It can also be "auto" in which case it will be the top left unless it's a <path>, when it will start at the beginning of the path itself.
29636  var m = (0,_utils_matrix_js__WEBPACK_IMPORTED_MODULE_1__.getGlobalMatrix)(element),
29637      x = 0,
29638      y = 0,
29639      svg;
29640
29641  if ((element.tagName + "").toLowerCase() === "svg") {
29642    svg = element.viewBox.baseVal;
29643    svg.width || (svg = {
29644      width: +element.getAttribute("width"),
29645      height: +element.getAttribute("height")
29646    });
29647  } else {
29648    svg = origin && element.getBBox && element.getBBox();
29649  }
29650
29651  if (origin && origin !== "auto") {
29652    x = origin.push ? origin[0] * (svg ? svg.width : element.offsetWidth || 0) : origin.x;
29653    y = origin.push ? origin[1] * (svg ? svg.height : element.offsetHeight || 0) : origin.y;
29654  }
29655
29656  return parentMatrix.apply(x || y ? m.apply({
29657    x: x,
29658    y: y
29659  }) : {
29660    x: m.e,
29661    y: m.f
29662  });
29663},
29664    _getAlignMatrix = function _getAlignMatrix(fromElement, toElement, fromOrigin, toOrigin) {
29665  var parentMatrix = (0,_utils_matrix_js__WEBPACK_IMPORTED_MODULE_1__.getGlobalMatrix)(fromElement.parentNode, true, true),
29666      m = parentMatrix.clone().multiply((0,_utils_matrix_js__WEBPACK_IMPORTED_MODULE_1__.getGlobalMatrix)(toElement)),
29667      fromPoint = _originToPoint(fromElement, fromOrigin, parentMatrix),
29668      _originToPoint2 = _originToPoint(toElement, toOrigin, parentMatrix),
29669      x = _originToPoint2.x,
29670      y = _originToPoint2.y,
29671      p;
29672
29673  m.e = m.f = 0;
29674
29675  if (toOrigin === "auto" && toElement.getTotalLength && toElement.tagName.toLowerCase() === "path") {
29676    p = toElement.getAttribute("d").match(_numExp) || [];
29677    p = m.apply({
29678      x: +p[0],
29679      y: +p[1]
29680    });
29681    x += p.x;
29682    y += p.y;
29683  } //if (p || (toElement.getBBox && fromElement.getBBox && toElement.ownerSVGElement === fromElement.ownerSVGElement)) {
29684
29685
29686  if (p) {
29687    p = m.apply(toElement.getBBox());
29688    x -= p.x;
29689    y -= p.y;
29690  }
29691
29692  m.e = x - fromPoint.x;
29693  m.f = y - fromPoint.y;
29694  return m;
29695},
29696    _align = function _align(rawPath, target, _ref) {
29697  var align = _ref.align,
29698      matrix = _ref.matrix,
29699      offsetX = _ref.offsetX,
29700      offsetY = _ref.offsetY,
29701      alignOrigin = _ref.alignOrigin;
29702
29703  var x = rawPath[0][0],
29704      y = rawPath[0][1],
29705      curX = _getPropNum(target, "x"),
29706      curY = _getPropNum(target, "y"),
29707      alignTarget,
29708      m,
29709      p;
29710
29711  if (!rawPath || !rawPath.length) {
29712    return (0,_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.getRawPath)("M0,0L0,0");
29713  }
29714
29715  if (align) {
29716    if (align === "self" || (alignTarget = _toArray(align)[0] || target) === target) {
29717      (0,_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.transformRawPath)(rawPath, 1, 0, 0, 1, curX - x, curY - y);
29718    } else {
29719      if (alignOrigin && alignOrigin[2] !== false) {
29720        gsap.set(target, {
29721          transformOrigin: alignOrigin[0] * 100 + "% " + alignOrigin[1] * 100 + "%"
29722        });
29723      } else {
29724        alignOrigin = [_getPropNum(target, "xPercent") / -100, _getPropNum(target, "yPercent") / -100];
29725      }
29726
29727      m = _getAlignMatrix(target, alignTarget, alignOrigin, "auto");
29728      p = m.apply({
29729        x: x,
29730        y: y
29731      });
29732      (0,_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.transformRawPath)(rawPath, m.a, m.b, m.c, m.d, curX + m.e - (p.x - m.e), curY + m.f - (p.y - m.f));
29733    }
29734  }
29735
29736  if (matrix) {
29737    (0,_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.transformRawPath)(rawPath, matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);
29738  } else if (offsetX || offsetY) {
29739    (0,_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.transformRawPath)(rawPath, 1, 0, 0, 1, offsetX || 0, offsetY || 0);
29740  }
29741
29742  return rawPath;
29743},
29744    _addDimensionalPropTween = function _addDimensionalPropTween(plugin, target, property, rawPath, pathProperty, forceUnit) {
29745  var cache = target._gsap,
29746      harness = cache.harness,
29747      alias = harness && harness.aliases && harness.aliases[property],
29748      prop = alias && alias.indexOf(",") < 0 ? alias : property,
29749      pt = plugin._pt = new PropTween(plugin._pt, target, prop, 0, 0, _emptyFunc, 0, cache.set(target, prop, plugin));
29750  pt.u = _getUnit(cache.get(target, prop, forceUnit)) || 0;
29751  pt.path = rawPath;
29752  pt.pp = pathProperty;
29753
29754  plugin._props.push(prop);
29755},
29756    _sliceModifier = function _sliceModifier(start, end) {
29757  return function (rawPath) {
29758    return start || end !== 1 ? (0,_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.sliceRawPath)(rawPath, start, end) : rawPath;
29759  };
29760};
29761
29762var MotionPathPlugin = {
29763  version: "3.12.5",
29764  name: "motionPath",
29765  register: function register(core, Plugin, propTween) {
29766    gsap = core;
29767    _getUnit = gsap.utils.getUnit;
29768    _toArray = gsap.utils.toArray;
29769    _getStyleSaver = gsap.core.getStyleSaver;
29770
29771    _reverting = gsap.core.reverting || function () {};
29772
29773    PropTween = propTween;
29774  },
29775  init: function init(target, vars, tween) {
29776    if (!gsap) {
29777      console.warn("Please gsap.registerPlugin(MotionPathPlugin)");
29778      return false;
29779    }
29780
29781    if (!(typeof vars === "object" && !vars.style) || !vars.path) {
29782      vars = {
29783        path: vars
29784      };
29785    }
29786
29787    var rawPaths = [],
29788        _vars = vars,
29789        path = _vars.path,
29790        autoRotate = _vars.autoRotate,
29791        unitX = _vars.unitX,
29792        unitY = _vars.unitY,
29793        x = _vars.x,
29794        y = _vars.y,
29795        firstObj = path[0],
29796        slicer = _sliceModifier(vars.start, "end" in vars ? vars.end : 1),
29797        rawPath,
29798        p;
29799
29800    this.rawPaths = rawPaths;
29801    this.target = target;
29802    this.tween = tween;
29803    this.styles = _getStyleSaver && _getStyleSaver(target, "transform");
29804
29805    if (this.rotate = autoRotate || autoRotate === 0) {
29806      //get the rotational data FIRST so that the setTransform() method is called in the correct order in the render() loop - rotation gets set last.
29807      this.rOffset = parseFloat(autoRotate) || 0;
29808      this.radians = !!vars.useRadians;
29809      this.rProp = vars.rotation || "rotation"; // rotation property
29810
29811      this.rSet = target._gsap.set(target, this.rProp, this); // rotation setter
29812
29813      this.ru = _getUnit(target._gsap.get(target, this.rProp)) || 0; // rotation units
29814    }
29815
29816    if (Array.isArray(path) && !("closed" in path) && typeof firstObj !== "number") {
29817      for (p in firstObj) {
29818        if (!x && ~_xProps.indexOf(p)) {
29819          x = p;
29820        } else if (!y && ~_yProps.indexOf(p)) {
29821          y = p;
29822        }
29823      }
29824
29825      if (x && y) {
29826        //correlated values
29827        rawPaths.push(_segmentToRawPath(this, _populateSegmentFromArray(_populateSegmentFromArray([], path, x, 0), path, y, 1), target, x, y, slicer, vars, unitX || _getUnit(path[0][x]), unitY || _getUnit(path[0][y])));
29828      } else {
29829        x = y = 0;
29830      }
29831
29832      for (p in firstObj) {
29833        p !== x && p !== y && rawPaths.push(_segmentToRawPath(this, _populateSegmentFromArray([], path, p, 2), target, p, 0, slicer, vars, _getUnit(path[0][p])));
29834      }
29835    } else {
29836      rawPath = slicer(_align((0,_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.getRawPath)(vars.path), target, vars));
29837      (0,_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.cacheRawPathMeasurements)(rawPath, vars.resolution);
29838      rawPaths.push(rawPath);
29839
29840      _addDimensionalPropTween(this, target, vars.x || "x", rawPath, "x", vars.unitX || "px");
29841
29842      _addDimensionalPropTween(this, target, vars.y || "y", rawPath, "y", vars.unitY || "px");
29843    }
29844  },
29845  render: function render(ratio, data) {
29846    var rawPaths = data.rawPaths,
29847        i = rawPaths.length,
29848        pt = data._pt;
29849
29850    if (data.tween._time || !_reverting()) {
29851      if (ratio > 1) {
29852        ratio = 1;
29853      } else if (ratio < 0) {
29854        ratio = 0;
29855      }
29856
29857      while (i--) {
29858        (0,_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.getPositionOnPath)(rawPaths[i], ratio, !i && data.rotate, rawPaths[i]);
29859      }
29860
29861      while (pt) {
29862        pt.set(pt.t, pt.p, pt.path[pt.pp] + pt.u, pt.d, ratio);
29863        pt = pt._next;
29864      }
29865
29866      data.rotate && data.rSet(data.target, data.rProp, rawPaths[0].angle * (data.radians ? _DEG2RAD : 1) + data.rOffset + data.ru, data, ratio);
29867    } else {
29868      data.styles.revert();
29869    }
29870  },
29871  getLength: function getLength(path) {
29872    return (0,_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.cacheRawPathMeasurements)((0,_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.getRawPath)(path)).totalLength;
29873  },
29874  sliceRawPath: _utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.sliceRawPath,
29875  getRawPath: _utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.getRawPath,
29876  pointsToSegment: _utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.pointsToSegment,
29877  stringToRawPath: _utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.stringToRawPath,
29878  rawPathToString: _utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.rawPathToString,
29879  transformRawPath: _utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.transformRawPath,
29880  getGlobalMatrix: _utils_matrix_js__WEBPACK_IMPORTED_MODULE_1__.getGlobalMatrix,
29881  getPositionOnPath: _utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.getPositionOnPath,
29882  cacheRawPathMeasurements: _utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.cacheRawPathMeasurements,
29883  convertToPath: function convertToPath(targets, swap) {
29884    return _toArray(targets).map(function (target) {
29885      return (0,_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.convertToPath)(target, swap !== false);
29886    });
29887  },
29888  convertCoordinates: function convertCoordinates(fromElement, toElement, point) {
29889    var m = (0,_utils_matrix_js__WEBPACK_IMPORTED_MODULE_1__.getGlobalMatrix)(toElement, true, true).multiply((0,_utils_matrix_js__WEBPACK_IMPORTED_MODULE_1__.getGlobalMatrix)(fromElement));
29890    return point ? m.apply(point) : m;
29891  },
29892  getAlignMatrix: _getAlignMatrix,
29893  getRelativePosition: function getRelativePosition(fromElement, toElement, fromOrigin, toOrigin) {
29894    var m = _getAlignMatrix(fromElement, toElement, fromOrigin, toOrigin);
29895
29896    return {
29897      x: m.e,
29898      y: m.f
29899    };
29900  },
29901  arrayToRawPath: function arrayToRawPath(value, vars) {
29902    vars = vars || {};
29903
29904    var segment = _populateSegmentFromArray(_populateSegmentFromArray([], value, vars.x || "x", 0), value, vars.y || "y", 1);
29905
29906    vars.relative && _relativize(segment);
29907    return [vars.type === "cubic" ? segment : (0,_utils_paths_js__WEBPACK_IMPORTED_MODULE_0__.pointsToSegment)(segment, vars.curviness)];
29908  }
29909};
29910_getGSAP() && gsap.registerPlugin(MotionPathPlugin);
29911
29912
29913/***/ }),
29914
vendor: 26,482 bytes, lines 29915-30624
29915/***/ "./node_modules/gsap/Observer.js":
29916/*!***************************************!*\
29917  !*** ./node_modules/gsap/Observer.js ***!
29918  \***************************************/
29919/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
29920
29921"use strict";
29922__webpack_require__.r(__webpack_exports__);
29923/* harmony export */ __webpack_require__.d(__webpack_exports__, {
29924/* harmony export */   "Observer": () => (/* binding */ Observer),
29925/* harmony export */   "_getProxyProp": () => (/* binding */ _getProxyProp),
29926/* harmony export */   "_getScrollFunc": () => (/* binding */ _getScrollFunc),
29927/* harmony export */   "_getTarget": () => (/* binding */ _getTarget),
29928/* harmony export */   "_getVelocityProp": () => (/* binding */ _getVelocityProp),
29929/* harmony export */   "_horizontal": () => (/* binding */ _horizontal),
29930/* harmony export */   "_isViewport": () => (/* binding */ _isViewport),
29931/* harmony export */   "_proxies": () => (/* binding */ _proxies),
29932/* harmony export */   "_scrollers": () => (/* binding */ _scrollers),
29933/* harmony export */   "_vertical": () => (/* binding */ _vertical),
29934/* harmony export */   "default": () => (/* binding */ Observer)
29935/* harmony export */ });
29936function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
29937
29938function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
29939
29940/*!
29941 * Observer 3.12.5
29942 * https://gsap.com
29943 *
29944 * @license Copyright 2008-2024, GreenSock. All rights reserved.
29945 * Subject to the terms at https://gsap.com/standard-license or for
29946 * Club GSAP members, the agreement issued with that membership.
29947 * @author: Jack Doyle, [email protected]
29948*/
29949
29950/* eslint-disable */
29951var gsap,
29952    _coreInitted,
29953    _clamp,
29954    _win,
29955    _doc,
29956    _docEl,
29957    _body,
29958    _isTouch,
29959    _pointerType,
29960    ScrollTrigger,
29961    _root,
29962    _normalizer,
29963    _eventTypes,
29964    _context,
29965    _getGSAP = function _getGSAP() {
29966  return gsap || typeof window !== "undefined" && (gsap = window.gsap) && gsap.registerPlugin && gsap;
29967},
29968    _startup = 1,
29969    _observers = [],
29970    _scrollers = [],
29971    _proxies = [],
29972    _getTime = Date.now,
29973    _bridge = function _bridge(name, value) {
29974  return value;
29975},
29976    _integrate = function _integrate() {
29977  var core = ScrollTrigger.core,
29978      data = core.bridge || {},
29979      scrollers = core._scrollers,
29980      proxies = core._proxies;
29981  scrollers.push.apply(scrollers, _scrollers);
29982  proxies.push.apply(proxies, _proxies);
29983  _scrollers = scrollers;
29984  _proxies = proxies;
29985
29986  _bridge = function _bridge(name, value) {
29987    return data[name](value);
29988  };
29989},
29990    _getProxyProp = function _getProxyProp(element, property) {
29991  return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property];
29992},
29993    _isViewport = function _isViewport(el) {
29994  return !!~_root.indexOf(el);
29995},
29996    _addListener = function _addListener(element, type, func, passive, capture) {
29997  return element.addEventListener(type, func, {
29998    passive: passive !== false,
29999    capture: !!capture
30000  });
30001},
30002    _removeListener = function _removeListener(element, type, func, capture) {
30003  return element.removeEventListener(type, func, !!capture);
30004},
30005    _scrollLeft = "scrollLeft",
30006    _scrollTop = "scrollTop",
30007    _onScroll = function _onScroll() {
30008  return _normalizer && _normalizer.isPressed || _scrollers.cache++;
30009},
30010    _scrollCacheFunc = function _scrollCacheFunc(f, doNotCache) {
30011  var cachingFunc = function cachingFunc(value) {
30012    // since reading the scrollTop/scrollLeft/pageOffsetY/pageOffsetX can trigger a layout, this function allows us to cache the value so it only gets read fresh after a "scroll" event fires (or while we're refreshing because that can lengthen the page and alter the scroll position). when "soft" is true, that means don't actually set the scroll, but cache the new value instead (useful in ScrollSmoother)
30013    if (value || value === 0) {
30014      _startup && (_win.history.scrollRestoration = "manual"); // otherwise the new position will get overwritten by the browser onload.
30015
30016      var isNormalizing = _normalizer && _normalizer.isPressed;
30017      value = cachingFunc.v = Math.round(value) || (_normalizer && _normalizer.iOS ? 1 : 0); //TODO: iOS Bug: if you allow it to go to 0, Safari can start to report super strange (wildly inaccurate) touch positions!
30018
30019      f(value);
30020      cachingFunc.cacheID = _scrollers.cache;
30021      isNormalizing && _bridge("ss", value); // set scroll (notify ScrollTrigger so it can dispatch a "scrollStart" event if necessary
30022    } else if (doNotCache || _scrollers.cache !== cachingFunc.cacheID || _bridge("ref")) {
30023      cachingFunc.cacheID = _scrollers.cache;
30024      cachingFunc.v = f();
30025    }
30026
30027    return cachingFunc.v + cachingFunc.offset;
30028  };
30029
30030  cachingFunc.offset = 0;
30031  return f && cachingFunc;
30032},
30033    _horizontal = {
30034  s: _scrollLeft,
30035  p: "left",
30036  p2: "Left",
30037  os: "right",
30038  os2: "Right",
30039  d: "width",
30040  d2: "Width",
30041  a: "x",
30042  sc: _scrollCacheFunc(function (value) {
30043    return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0;
30044  })
30045},
30046    _vertical = {
30047  s: _scrollTop,
30048  p: "top",
30049  p2: "Top",
30050  os: "bottom",
30051  os2: "Bottom",
30052  d: "height",
30053  d2: "Height",
30054  a: "y",
30055  op: _horizontal,
30056  sc: _scrollCacheFunc(function (value) {
30057    return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0;
30058  })
30059},
30060    _getTarget = function _getTarget(t, self) {
30061  return (self && self._ctx && self._ctx.selector || gsap.utils.toArray)(t)[0] || (typeof t === "string" && gsap.config().nullTargetWarn !== false ? console.warn("Element not found:", t) : null);
30062},
30063    _getScrollFunc = function _getScrollFunc(element, _ref) {
30064  var s = _ref.s,
30065      sc = _ref.sc;
30066  // we store the scroller functions in an alternating sequenced Array like [element, verticalScrollFunc, horizontalScrollFunc, ...] so that we can minimize memory, maximize performance, and we also record the last position as a ".rec" property in order to revert to that after refreshing to ensure things don't shift around.
30067  _isViewport(element) && (element = _doc.scrollingElement || _docEl);
30068
30069  var i = _scrollers.indexOf(element),
30070      offset = sc === _vertical.sc ? 1 : 2;
30071
30072  !~i && (i = _scrollers.push(element) - 1);
30073  _scrollers[i + offset] || _addListener(element, "scroll", _onScroll); // clear the cache when a scroll occurs
30074
30075  var prev = _scrollers[i + offset],
30076      func = prev || (_scrollers[i + offset] = _scrollCacheFunc(_getProxyProp(element, s), true) || (_isViewport(element) ? sc : _scrollCacheFunc(function (value) {
30077    return arguments.length ? element[s] = value : element[s];
30078  })));
30079  func.target = element;
30080  prev || (func.smooth = gsap.getProperty(element, "scrollBehavior") === "smooth"); // only set it the first time (don't reset every time a scrollFunc is requested because perhaps it happens during a refresh() when it's disabled in ScrollTrigger.
30081
30082  return func;
30083},
30084    _getVelocityProp = function _getVelocityProp(value, minTimeRefresh, useDelta) {
30085  var v1 = value,
30086      v2 = value,
30087      t1 = _getTime(),
30088      t2 = t1,
30089      min = minTimeRefresh || 50,
30090      dropToZeroTime = Math.max(500, min * 3),
30091      update = function update(value, force) {
30092    var t = _getTime();
30093
30094    if (force || t - t1 > min) {
30095      v2 = v1;
30096      v1 = value;
30097      t2 = t1;
30098      t1 = t;
30099    } else if (useDelta) {
30100      v1 += value;
30101    } else {
30102      // not totally necessary, but makes it a bit more accurate by adjusting the v1 value according to the new slope. This way we're not just ignoring the incoming data. Removing for now because it doesn't seem to make much practical difference and it's probably not worth the kb.
30103      v1 = v2 + (value - v2) / (t - t2) * (t1 - t2);
30104    }
30105  },
30106      reset = function reset() {
30107    v2 = v1 = useDelta ? 0 : v1;
30108    t2 = t1 = 0;
30109  },
30110      getVelocity = function getVelocity(latestValue) {
30111    var tOld = t2,
30112        vOld = v2,
30113        t = _getTime();
30114
30115    (latestValue || latestValue === 0) && latestValue !== v1 && update(latestValue);
30116    return t1 === t2 || t - t2 > dropToZeroTime ? 0 : (v1 + (useDelta ? vOld : -vOld)) / ((useDelta ? t : t1) - tOld) * 1000;
30117  };
30118
30119  return {
30120    update: update,
30121    reset: reset,
30122    getVelocity: getVelocity
30123  };
30124},
30125    _getEvent = function _getEvent(e, preventDefault) {
30126  preventDefault && !e._gsapAllow && e.preventDefault();
30127  return e.changedTouches ? e.changedTouches[0] : e;
30128},
30129    _getAbsoluteMax = function _getAbsoluteMax(a) {
30130  var max = Math.max.apply(Math, a),
30131      min = Math.min.apply(Math, a);
30132  return Math.abs(max) >= Math.abs(min) ? max : min;
30133},
30134    _setScrollTrigger = function _setScrollTrigger() {
30135  ScrollTrigger = gsap.core.globals().ScrollTrigger;
30136  ScrollTrigger && ScrollTrigger.core && _integrate();
30137},
30138    _initCore = function _initCore(core) {
30139  gsap = core || _getGSAP();
30140
30141  if (!_coreInitted && gsap && typeof document !== "undefined" && document.body) {
30142    _win = window;
30143    _doc = document;
30144    _docEl = _doc.documentElement;
30145    _body = _doc.body;
30146    _root = [_win, _doc, _docEl, _body];
30147    _clamp = gsap.utils.clamp;
30148
30149    _context = gsap.core.context || function () {};
30150
30151    _pointerType = "onpointerenter" in _body ? "pointer" : "mouse"; // isTouch is 0 if no touch, 1 if ONLY touch, and 2 if it can accommodate touch but also other types like mouse/pointer.
30152
30153    _isTouch = Observer.isTouch = _win.matchMedia && _win.matchMedia("(hover: none), (pointer: coarse)").matches ? 1 : "ontouchstart" in _win || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 ? 2 : 0;
30154    _eventTypes = Observer.eventTypes = ("ontouchstart" in _docEl ? "touchstart,touchmove,touchcancel,touchend" : !("onpointerdown" in _docEl) ? "mousedown,mousemove,mouseup,mouseup" : "pointerdown,pointermove,pointercancel,pointerup").split(",");
30155    setTimeout(function () {
30156      return _startup = 0;
30157    }, 500);
30158
30159    _setScrollTrigger();
30160
30161    _coreInitted = 1;
30162  }
30163
30164  return _coreInitted;
30165};
30166
30167_horizontal.op = _vertical;
30168_scrollers.cache = 0;
30169var Observer = /*#__PURE__*/function () {
30170  function Observer(vars) {
30171    this.init(vars);
30172  }
30173
30174  var _proto = Observer.prototype;
30175
30176  _proto.init = function init(vars) {
30177    _coreInitted || _initCore(gsap) || console.warn("Please gsap.registerPlugin(Observer)");
30178    ScrollTrigger || _setScrollTrigger();
30179    var tolerance = vars.tolerance,
30180        dragMinimum = vars.dragMinimum,
30181        type = vars.type,
30182        target = vars.target,
30183        lineHeight = vars.lineHeight,
30184        debounce = vars.debounce,
30185        preventDefault = vars.preventDefault,
30186        onStop = vars.onStop,
30187        onStopDelay = vars.onStopDelay,
30188        ignore = vars.ignore,
30189        wheelSpeed = vars.wheelSpeed,
30190        event = vars.event,
30191        onDragStart = vars.onDragStart,
30192        onDragEnd = vars.onDragEnd,
30193        onDrag = vars.onDrag,
30194        onPress = vars.onPress,
30195        onRelease = vars.onRelease,
30196        onRight = vars.onRight,
30197        onLeft = vars.onLeft,
30198        onUp = vars.onUp,
30199        onDown = vars.onDown,
30200        onChangeX = vars.onChangeX,
30201        onChangeY = vars.onChangeY,
30202        onChange = vars.onChange,
30203        onToggleX = vars.onToggleX,
30204        onToggleY = vars.onToggleY,
30205        onHover = vars.onHover,
30206        onHoverEnd = vars.onHoverEnd,
30207        onMove = vars.onMove,
30208        ignoreCheck = vars.ignoreCheck,
30209        isNormalizer = vars.isNormalizer,
30210        onGestureStart = vars.onGestureStart,
30211        onGestureEnd = vars.onGestureEnd,
30212        onWheel = vars.onWheel,
30213        onEnable = vars.onEnable,
30214        onDisable = vars.onDisable,
30215        onClick = vars.onClick,
30216        scrollSpeed = vars.scrollSpeed,
30217        capture = vars.capture,
30218        allowClicks = vars.allowClicks,
30219        lockAxis = vars.lockAxis,
30220        onLockAxis = vars.onLockAxis;
30221    this.target = target = _getTarget(target) || _docEl;
30222    this.vars = vars;
30223    ignore && (ignore = gsap.utils.toArray(ignore));
30224    tolerance = tolerance || 1e-9;
30225    dragMinimum = dragMinimum || 0;
30226    wheelSpeed = wheelSpeed || 1;
30227    scrollSpeed = scrollSpeed || 1;
30228    type = type || "wheel,touch,pointer";
30229    debounce = debounce !== false;
30230    lineHeight || (lineHeight = parseFloat(_win.getComputedStyle(_body).lineHeight) || 22); // note: browser may report "normal", so default to 22.
30231
30232    var id,
30233        onStopDelayedCall,
30234        dragged,
30235        moved,
30236        wheeled,
30237        locked,
30238        axis,
30239        self = this,
30240        prevDeltaX = 0,
30241        prevDeltaY = 0,
30242        passive = vars.passive || !preventDefault,
30243        scrollFuncX = _getScrollFunc(target, _horizontal),
30244        scrollFuncY = _getScrollFunc(target, _vertical),
30245        scrollX = scrollFuncX(),
30246        scrollY = scrollFuncY(),
30247        limitToTouch = ~type.indexOf("touch") && !~type.indexOf("pointer") && _eventTypes[0] === "pointerdown",
30248        // for devices that accommodate mouse events and touch events, we need to distinguish.
30249    isViewport = _isViewport(target),
30250        ownerDoc = target.ownerDocument || _doc,
30251        deltaX = [0, 0, 0],
30252        // wheel, scroll, pointer/touch
30253    deltaY = [0, 0, 0],
30254        onClickTime = 0,
30255        clickCapture = function clickCapture() {
30256      return onClickTime = _getTime();
30257    },
30258        _ignoreCheck = function _ignoreCheck(e, isPointerOrTouch) {
30259      return (self.event = e) && ignore && ~ignore.indexOf(e.target) || isPointerOrTouch && limitToTouch && e.pointerType !== "touch" || ignoreCheck && ignoreCheck(e, isPointerOrTouch);
30260    },
30261        onStopFunc = function onStopFunc() {
30262      self._vx.reset();
30263
30264      self._vy.reset();
30265
30266      onStopDelayedCall.pause();
30267      onStop && onStop(self);
30268    },
30269        update = function update() {
30270      var dx = self.deltaX = _getAbsoluteMax(deltaX),
30271          dy = self.deltaY = _getAbsoluteMax(deltaY),
30272          changedX = Math.abs(dx) >= tolerance,
30273          changedY = Math.abs(dy) >= tolerance;
30274
30275      onChange && (changedX || changedY) && onChange(self, dx, dy, deltaX, deltaY); // in ScrollTrigger.normalizeScroll(), we need to know if it was touch/pointer so we need access to the deltaX/deltaY Arrays before we clear them out.
30276
30277      if (changedX) {
30278        onRight && self.deltaX > 0 && onRight(self);
30279        onLeft && self.deltaX < 0 && onLeft(self);
30280        onChangeX && onChangeX(self);
30281        onToggleX && self.deltaX < 0 !== prevDeltaX < 0 && onToggleX(self);
30282        prevDeltaX = self.deltaX;
30283        deltaX[0] = deltaX[1] = deltaX[2] = 0;
30284      }
30285
30286      if (changedY) {
30287        onDown && self.deltaY > 0 && onDown(self);
30288        onUp && self.deltaY < 0 && onUp(self);
30289        onChangeY && onChangeY(self);
30290        onToggleY && self.deltaY < 0 !== prevDeltaY < 0 && onToggleY(self);
30291        prevDeltaY = self.deltaY;
30292        deltaY[0] = deltaY[1] = deltaY[2] = 0;
30293      }
30294
30295      if (moved || dragged) {
30296        onMove && onMove(self);
30297
30298        if (dragged) {
30299          onDrag(self);
30300          dragged = false;
30301        }
30302
30303        moved = false;
30304      }
30305
30306      locked && !(locked = false) && onLockAxis && onLockAxis(self);
30307
30308      if (wheeled) {
30309        onWheel(self);
30310        wheeled = false;
30311      }
30312
30313      id = 0;
30314    },
30315        onDelta = function onDelta(x, y, index) {
30316      deltaX[index] += x;
30317      deltaY[index] += y;
30318
30319      self._vx.update(x);
30320
30321      self._vy.update(y);
30322
30323      debounce ? id || (id = requestAnimationFrame(update)) : update();
30324    },
30325        onTouchOrPointerDelta = function onTouchOrPointerDelta(x, y) {
30326      if (lockAxis && !axis) {
30327        self.axis = axis = Math.abs(x) > Math.abs(y) ? "x" : "y";
30328        locked = true;
30329      }
30330
30331      if (axis !== "y") {
30332        deltaX[2] += x;
30333
30334        self._vx.update(x, true); // update the velocity as frequently as possible instead of in the debounced function so that very quick touch-scrolls (flicks) feel natural. If it's the mouse/touch/pointer, force it so that we get snappy/accurate momentum scroll.
30335
30336      }
30337
30338      if (axis !== "x") {
30339        deltaY[2] += y;
30340
30341        self._vy.update(y, true);
30342      }
30343
30344      debounce ? id || (id = requestAnimationFrame(update)) : update();
30345    },
30346        _onDrag = function _onDrag(e) {
30347      if (_ignoreCheck(e, 1)) {
30348        return;
30349      }
30350
30351      e = _getEvent(e, preventDefault);
30352      var x = e.clientX,
30353          y = e.clientY,
30354          dx = x - self.x,
30355          dy = y - self.y,
30356          isDragging = self.isDragging;
30357      self.x = x;
30358      self.y = y;
30359
30360      if (isDragging || Math.abs(self.startX - x) >= dragMinimum || Math.abs(self.startY - y) >= dragMinimum) {
30361        onDrag && (dragged = true);
30362        isDragging || (self.isDragging = true);
30363        onTouchOrPointerDelta(dx, dy);
30364        isDragging || onDragStart && onDragStart(self);
30365      }
30366    },
30367        _onPress = self.onPress = function (e) {
30368      if (_ignoreCheck(e, 1) || e && e.button) {
30369        return;
30370      }
30371
30372      self.axis = axis = null;
30373      onStopDelayedCall.pause();
30374      self.isPressed = true;
30375      e = _getEvent(e); // note: may need to preventDefault(?) Won't side-scroll on iOS Safari if we do, though.
30376
30377      prevDeltaX = prevDeltaY = 0;
30378      self.startX = self.x = e.clientX;
30379      self.startY = self.y = e.clientY;
30380
30381      self._vx.reset(); // otherwise the t2 may be stale if the user touches and flicks super fast and releases in less than 2 requestAnimationFrame ticks, causing velocity to be 0.
30382
30383
30384      self._vy.reset();
30385
30386      _addListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, passive, true);
30387
30388      self.deltaX = self.deltaY = 0;
30389      onPress && onPress(self);
30390    },
30391        _onRelease = self.onRelease = function (e) {
30392      if (_ignoreCheck(e, 1)) {
30393        return;
30394      }
30395
30396      _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);
30397
30398      var isTrackingDrag = !isNaN(self.y - self.startY),
30399          wasDragging = self.isDragging,
30400          isDragNotClick = wasDragging && (Math.abs(self.x - self.startX) > 3 || Math.abs(self.y - self.startY) > 3),
30401          // some touch devices need some wiggle room in terms of sensing clicks - the finger may move a few pixels.
30402      eventData = _getEvent(e);
30403
30404      if (!isDragNotClick && isTrackingDrag) {
30405        self._vx.reset();
30406
30407        self._vy.reset(); //if (preventDefault && allowClicks && self.isPressed) { // check isPressed because in a rare edge case, the inputObserver in ScrollTrigger may stopPropagation() on the press/drag, so the onRelease may get fired without the onPress/onDrag ever getting called, thus it could trigger a click to occur on a link after scroll-dragging it.
30408
30409
30410        if (preventDefault && allowClicks) {
30411          gsap.delayedCall(0.08, function () {
30412            // some browsers (like Firefox) won't trust script-generated clicks, so if the user tries to click on a video to play it, for example, it simply won't work. Since a regular "click" event will most likely be generated anyway (one that has its isTrusted flag set to true), we must slightly delay our script-generated click so that the "real"/trusted one is prioritized. Remember, when there are duplicate events in quick succession, we suppress all but the first one. Some browsers don't even trigger the "real" one at all, so our synthetic one is a safety valve that ensures that no matter what, a click event does get dispatched.
30413            if (_getTime() - onClickTime > 300 && !e.defaultPrevented) {
30414              if (e.target.click) {
30415                //some browsers (like mobile Safari) don't properly trigger the click event
30416                e.target.click();
30417              } else if (ownerDoc.createEvent) {
30418                var syntheticEvent = ownerDoc.createEvent("MouseEvents");
30419                syntheticEvent.initMouseEvent("click", true, true, _win, 1, eventData.screenX, eventData.screenY, eventData.clientX, eventData.clientY, false, false, false, false, 0, null);
30420                e.target.dispatchEvent(syntheticEvent);
30421              }
30422            }
30423          });
30424        }
30425      }
30426
30427      self.isDragging = self.isGesturing = self.isPressed = false;
30428      onStop && wasDragging && !isNormalizer && onStopDelayedCall.restart(true);
30429      onDragEnd && wasDragging && onDragEnd(self);
30430      onRelease && onRelease(self, isDragNotClick);
30431    },
30432        _onGestureStart = function _onGestureStart(e) {
30433      return e.touches && e.touches.length > 1 && (self.isGesturing = true) && onGestureStart(e, self.isDragging);
30434    },
30435        _onGestureEnd = function _onGestureEnd() {
30436      return (self.isGesturing = false) || onGestureEnd(self);
30437    },
30438        onScroll = function onScroll(e) {
30439      if (_ignoreCheck(e)) {
30440        return;
30441      }
30442
30443      var x = scrollFuncX(),
30444          y = scrollFuncY();
30445      onDelta((x - scrollX) * scrollSpeed, (y - scrollY) * scrollSpeed, 1);
30446      scrollX = x;
30447      scrollY = y;
30448      onStop && onStopDelayedCall.restart(true);
30449    },
30450        _onWheel = function _onWheel(e) {
30451      if (_ignoreCheck(e)) {
30452        return;
30453      }
30454
30455      e = _getEvent(e, preventDefault);
30456      onWheel && (wheeled = true);
30457      var multiplier = (e.deltaMode === 1 ? lineHeight : e.deltaMode === 2 ? _win.innerHeight : 1) * wheelSpeed;
30458      onDelta(e.deltaX * multiplier, e.deltaY * multiplier, 0);
30459      onStop && !isNormalizer && onStopDelayedCall.restart(true);
30460    },
30461        _onMove = function _onMove(e) {
30462      if (_ignoreCheck(e)) {
30463        return;
30464      }
30465
30466      var x = e.clientX,
30467          y = e.clientY,
30468          dx = x - self.x,
30469          dy = y - self.y;
30470      self.x = x;
30471      self.y = y;
30472      moved = true;
30473      onStop && onStopDelayedCall.restart(true);
30474      (dx || dy) && onTouchOrPointerDelta(dx, dy);
30475    },
30476        _onHover = function _onHover(e) {
30477      self.event = e;
30478      onHover(self);
30479    },
30480        _onHoverEnd = function _onHoverEnd(e) {
30481      self.event = e;
30482      onHoverEnd(self);
30483    },
30484        _onClick = function _onClick(e) {
30485      return _ignoreCheck(e) || _getEvent(e, preventDefault) && onClick(self);
30486    };
30487
30488    onStopDelayedCall = self._dc = gsap.delayedCall(onStopDelay || 0.25, onStopFunc).pause();
30489    self.deltaX = self.deltaY = 0;
30490    self._vx = _getVelocityProp(0, 50, true);
30491    self._vy = _getVelocityProp(0, 50, true);
30492    self.scrollX = scrollFuncX;
30493    self.scrollY = scrollFuncY;
30494    self.isDragging = self.isGesturing = self.isPressed = false;
30495
30496    _context(this);
30497
30498    self.enable = function (e) {
30499      if (!self.isEnabled) {
30500        _addListener(isViewport ? ownerDoc : target, "scroll", _onScroll);
30501
30502        type.indexOf("scroll") >= 0 && _addListener(isViewport ? ownerDoc : target, "scroll", onScroll, passive, capture);
30503        type.indexOf("wheel") >= 0 && _addListener(target, "wheel", _onWheel, passive, capture);
30504
30505        if (type.indexOf("touch") >= 0 && _isTouch || type.indexOf("pointer") >= 0) {
30506          _addListener(target, _eventTypes[0], _onPress, passive, capture);
30507
30508          _addListener(ownerDoc, _eventTypes[2], _onRelease);
30509
30510          _addListener(ownerDoc, _eventTypes[3], _onRelease);
30511
30512          allowClicks && _addListener(target, "click", clickCapture, true, true);
30513          onClick && _addListener(target, "click", _onClick);
30514          onGestureStart && _addListener(ownerDoc, "gesturestart", _onGestureStart);
30515          onGestureEnd && _addListener(ownerDoc, "gestureend", _onGestureEnd);
30516          onHover && _addListener(target, _pointerType + "enter", _onHover);
30517          onHoverEnd && _addListener(target, _pointerType + "leave", _onHoverEnd);
30518          onMove && _addListener(target, _pointerType + "move", _onMove);
30519        }
30520
30521        self.isEnabled = true;
30522        e && e.type && _onPress(e);
30523        onEnable && onEnable(self);
30524      }
30525
30526      return self;
30527    };
30528
30529    self.disable = function () {
30530      if (self.isEnabled) {
30531        // only remove the _onScroll listener if there aren't any others that rely on the functionality.
30532        _observers.filter(function (o) {
30533          return o !== self && _isViewport(o.target);
30534        }).length || _removeListener(isViewport ? ownerDoc : target, "scroll", _onScroll);
30535
30536        if (self.isPressed) {
30537          self._vx.reset();
30538
30539          self._vy.reset();
30540
30541          _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);
30542        }
30543
30544        _removeListener(isViewport ? ownerDoc : target, "scroll", onScroll, capture);
30545
30546        _removeListener(target, "wheel", _onWheel, capture);
30547
30548        _removeListener(target, _eventTypes[0], _onPress, capture);
30549
30550        _removeListener(ownerDoc, _eventTypes[2], _onRelease);
30551
30552        _removeListener(ownerDoc, _eventTypes[3], _onRelease);
30553
30554        _removeListener(target, "click", clickCapture, true);
30555
30556        _removeListener(target, "click", _onClick);
30557
30558        _removeListener(ownerDoc, "gesturestart", _onGestureStart);
30559
30560        _removeListener(ownerDoc, "gestureend", _onGestureEnd);
30561
30562        _removeListener(target, _pointerType + "enter", _onHover);
30563
30564        _removeListener(target, _pointerType + "leave", _onHoverEnd);
30565
30566        _removeListener(target, _pointerType + "move", _onMove);
30567
30568        self.isEnabled = self.isPressed = self.isDragging = false;
30569        onDisable && onDisable(self);
30570      }
30571    };
30572
30573    self.kill = self.revert = function () {
30574      self.disable();
30575
30576      var i = _observers.indexOf(self);
30577
30578      i >= 0 && _observers.splice(i, 1);
30579      _normalizer === self && (_normalizer = 0);
30580    };
30581
30582    _observers.push(self);
30583
30584    isNormalizer && _isViewport(target) && (_normalizer = self);
30585    self.enable(event);
30586  };
30587
30588  _createClass(Observer, [{
30589    key: "velocityX",
30590    get: function get() {
30591      return this._vx.getVelocity();
30592    }
30593  }, {
30594    key: "velocityY",
30595    get: function get() {
30596      return this._vy.getVelocity();
30597    }
30598  }]);
30599
30600  return Observer;
30601}();
30602Observer.version = "3.12.5";
30603
30604Observer.create = function (vars) {
30605  return new Observer(vars);
30606};
30607
30608Observer.register = _initCore;
30609
30610Observer.getAll = function () {
30611  return _observers.slice();
30612};
30613
30614Observer.getById = function (id) {
30615  return _observers.filter(function (o) {
30616    return o.vars.id === id;
30617  })[0];
30618};
30619
30620_getGSAP() && gsap.registerPlugin(Observer);
30621
30622
30623/***/ }),
30624
vendor: 15,468 bytes, lines 30625-31100
30625/***/ "./node_modules/gsap/PixiPlugin.js":
30626/*!*****************************************!*\
30627  !*** ./node_modules/gsap/PixiPlugin.js ***!
30628  \*****************************************/
30629/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
30630
30631"use strict";
30632__webpack_require__.r(__webpack_exports__);
30633/* harmony export */ __webpack_require__.d(__webpack_exports__, {
30634/* harmony export */   "PixiPlugin": () => (/* binding */ PixiPlugin),
30635/* harmony export */   "default": () => (/* binding */ PixiPlugin)
30636/* harmony export */ });
30637/*!
30638 * PixiPlugin 3.12.5
30639 * https://gsap.com
30640 *
30641 * @license Copyright 2008-2024, GreenSock. All rights reserved.
30642 * Subject to the terms at https://gsap.com/standard-license or for
30643 * Club GSAP members, the agreement issued with that membership.
30644 * @author: Jack Doyle, [email protected]
30645*/
30646
30647/* eslint-disable */
30648var gsap,
30649    _splitColor,
30650    _coreInitted,
30651    _PIXI,
30652    PropTween,
30653    _getSetter,
30654    _isV4,
30655    _windowExists = function _windowExists() {
30656  return typeof window !== "undefined";
30657},
30658    _getGSAP = function _getGSAP() {
30659  return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;
30660},
30661    _isFunction = function _isFunction(value) {
30662  return typeof value === "function";
30663},
30664    _warn = function _warn(message) {
30665  return console.warn(message);
30666},
30667    _idMatrix = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0],
30668    _lumR = 0.212671,
30669    _lumG = 0.715160,
30670    _lumB = 0.072169,
30671    _filterClass = function _filterClass(name) {
30672  return _isFunction(_PIXI[name]) ? _PIXI[name] : _PIXI.filters[name];
30673},
30674    // in PIXI 7.1, filters moved from PIXI.filters to just PIXI
30675_applyMatrix = function _applyMatrix(m, m2) {
30676  var temp = [],
30677      i = 0,
30678      z = 0,
30679      y,
30680      x;
30681
30682  for (y = 0; y < 4; y++) {
30683    for (x = 0; x < 5; x++) {
30684      z = x === 4 ? m[i + 4] : 0;
30685      temp[i + x] = m[i] * m2[x] + m[i + 1] * m2[x + 5] + m[i + 2] * m2[x + 10] + m[i + 3] * m2[x + 15] + z;
30686    }
30687
30688    i += 5;
30689  }
30690
30691  return temp;
30692},
30693    _setSaturation = function _setSaturation(m, n) {
30694  var inv = 1 - n,
30695      r = inv * _lumR,
30696      g = inv * _lumG,
30697      b = inv * _lumB;
30698  return _applyMatrix([r + n, g, b, 0, 0, r, g + n, b, 0, 0, r, g, b + n, 0, 0, 0, 0, 0, 1, 0], m);
30699},
30700    _colorize = function _colorize(m, color, amount) {
30701  var c = _splitColor(color),
30702      r = c[0] / 255,
30703      g = c[1] / 255,
30704      b = c[2] / 255,
30705      inv = 1 - amount;
30706
30707  return _applyMatrix([inv + amount * r * _lumR, amount * r * _lumG, amount * r * _lumB, 0, 0, amount * g * _lumR, inv + amount * g * _lumG, amount * g * _lumB, 0, 0, amount * b * _lumR, amount * b * _lumG, inv + amount * b * _lumB, 0, 0, 0, 0, 0, 1, 0], m);
30708},
30709    _setHue = function _setHue(m, n) {
30710  n *= Math.PI / 180;
30711  var c = Math.cos(n),
30712      s = Math.sin(n);
30713  return _applyMatrix([_lumR + c * (1 - _lumR) + s * -_lumR, _lumG + c * -_lumG + s * -_lumG, _lumB + c * -_lumB + s * (1 - _lumB), 0, 0, _lumR + c * -_lumR + s * 0.143, _lumG + c * (1 - _lumG) + s * 0.14, _lumB + c * -_lumB + s * -0.283, 0, 0, _lumR + c * -_lumR + s * -(1 - _lumR), _lumG + c * -_lumG + s * _lumG, _lumB + c * (1 - _lumB) + s * _lumB, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], m);
30714},
30715    _setContrast = function _setContrast(m, n) {
30716  return _applyMatrix([n, 0, 0, 0, 0.5 * (1 - n), 0, n, 0, 0, 0.5 * (1 - n), 0, 0, n, 0, 0.5 * (1 - n), 0, 0, 0, 1, 0], m);
30717},
30718    _getFilter = function _getFilter(target, type) {
30719  var filterClass = _filterClass(type),
30720      filters = target.filters || [],
30721      i = filters.length,
30722      filter;
30723
30724  filterClass || _warn(type + " not found. PixiPlugin.registerPIXI(PIXI)");
30725
30726  while (--i > -1) {
30727    if (filters[i] instanceof filterClass) {
30728      return filters[i];
30729    }
30730  }
30731
30732  filter = new filterClass();
30733
30734  if (type === "BlurFilter") {
30735    filter.blur = 0;
30736  }
30737
30738  filters.push(filter);
30739  target.filters = filters;
30740  return filter;
30741},
30742    _addColorMatrixFilterCacheTween = function _addColorMatrixFilterCacheTween(p, plugin, cache, vars) {
30743  //we cache the ColorMatrixFilter components in a _gsColorMatrixFilter object attached to the target object so that it's easy to grab the current value at any time.
30744  plugin.add(cache, p, cache[p], vars[p]);
30745
30746  plugin._props.push(p);
30747},
30748    _applyBrightnessToMatrix = function _applyBrightnessToMatrix(brightness, matrix) {
30749  var filterClass = _filterClass("ColorMatrixFilter"),
30750      temp = new filterClass();
30751
30752  temp.matrix = matrix;
30753  temp.brightness(brightness, true);
30754  return temp.matrix;
30755},
30756    _copy = function _copy(obj) {
30757  var copy = {},
30758      p;
30759
30760  for (p in obj) {
30761    copy[p] = obj[p];
30762  }
30763
30764  return copy;
30765},
30766    _CMFdefaults = {
30767  contrast: 1,
30768  saturation: 1,
30769  colorizeAmount: 0,
30770  colorize: "rgb(255,255,255)",
30771  hue: 0,
30772  brightness: 1
30773},
30774    _parseColorMatrixFilter = function _parseColorMatrixFilter(target, v, pg) {
30775  var filter = _getFilter(target, "ColorMatrixFilter"),
30776      cache = target._gsColorMatrixFilter = target._gsColorMatrixFilter || _copy(_CMFdefaults),
30777      combine = v.combineCMF && !("colorMatrixFilter" in v && !v.colorMatrixFilter),
30778      i,
30779      matrix,
30780      startMatrix;
30781
30782  startMatrix = filter.matrix;
30783
30784  if (v.resolution) {
30785    filter.resolution = v.resolution;
30786  }
30787
30788  if (v.matrix && v.matrix.length === startMatrix.length) {
30789    matrix = v.matrix;
30790
30791    if (cache.contrast !== 1) {
30792      _addColorMatrixFilterCacheTween("contrast", pg, cache, _CMFdefaults);
30793    }
30794
30795    if (cache.hue) {
30796      _addColorMatrixFilterCacheTween("hue", pg, cache, _CMFdefaults);
30797    }
30798
30799    if (cache.brightness !== 1) {
30800      _addColorMatrixFilterCacheTween("brightness", pg, cache, _CMFdefaults);
30801    }
30802
30803    if (cache.colorizeAmount) {
30804      _addColorMatrixFilterCacheTween("colorize", pg, cache, _CMFdefaults);
30805
30806      _addColorMatrixFilterCacheTween("colorizeAmount", pg, cache, _CMFdefaults);
30807    }
30808
30809    if (cache.saturation !== 1) {
30810      _addColorMatrixFilterCacheTween("saturation", pg, cache, _CMFdefaults);
30811    }
30812  } else {
30813    matrix = _idMatrix.slice();
30814
30815    if (v.contrast != null) {
30816      matrix = _setContrast(matrix, +v.contrast);
30817
30818      _addColorMatrixFilterCacheTween("contrast", pg, cache, v);
30819    } else if (cache.contrast !== 1) {
30820      if (combine) {
30821        matrix = _setContrast(matrix, cache.contrast);
30822      } else {
30823        _addColorMatrixFilterCacheTween("contrast", pg, cache, _CMFdefaults);
30824      }
30825    }
30826
30827    if (v.hue != null) {
30828      matrix = _setHue(matrix, +v.hue);
30829
30830      _addColorMatrixFilterCacheTween("hue", pg, cache, v);
30831    } else if (cache.hue) {
30832      if (combine) {
30833        matrix = _setHue(matrix, cache.hue);
30834      } else {
30835        _addColorMatrixFilterCacheTween("hue", pg, cache, _CMFdefaults);
30836      }
30837    }
30838
30839    if (v.brightness != null) {
30840      matrix = _applyBrightnessToMatrix(+v.brightness, matrix);
30841
30842      _addColorMatrixFilterCacheTween("brightness", pg, cache, v);
30843    } else if (cache.brightness !== 1) {
30844      if (combine) {
30845        matrix = _applyBrightnessToMatrix(cache.brightness, matrix);
30846      } else {
30847        _addColorMatrixFilterCacheTween("brightness", pg, cache, _CMFdefaults);
30848      }
30849    }
30850
30851    if (v.colorize != null) {
30852      v.colorizeAmount = "colorizeAmount" in v ? +v.colorizeAmount : 1;
30853      matrix = _colorize(matrix, v.colorize, v.colorizeAmount);
30854
30855      _addColorMatrixFilterCacheTween("colorize", pg, cache, v);
30856
30857      _addColorMatrixFilterCacheTween("colorizeAmount", pg, cache, v);
30858    } else if (cache.colorizeAmount) {
30859      if (combine) {
30860        matrix = _colorize(matrix, cache.colorize, cache.colorizeAmount);
30861      } else {
30862        _addColorMatrixFilterCacheTween("colorize", pg, cache, _CMFdefaults);
30863
30864        _addColorMatrixFilterCacheTween("colorizeAmount", pg, cache, _CMFdefaults);
30865      }
30866    }
30867
30868    if (v.saturation != null) {
30869      matrix = _setSaturation(matrix, +v.saturation);
30870
30871      _addColorMatrixFilterCacheTween("saturation", pg, cache, v);
30872    } else if (cache.saturation !== 1) {
30873      if (combine) {
30874        matrix = _setSaturation(matrix, cache.saturation);
30875      } else {
30876        _addColorMatrixFilterCacheTween("saturation", pg, cache, _CMFdefaults);
30877      }
30878    }
30879  }
30880
30881  i = matrix.length;
30882
30883  while (--i > -1) {
30884    if (matrix[i] !== startMatrix[i]) {
30885      pg.add(startMatrix, i, startMatrix[i], matrix[i], "colorMatrixFilter");
30886    }
30887  }
30888
30889  pg._props.push("colorMatrixFilter");
30890},
30891    _renderColor = function _renderColor(ratio, _ref) {
30892  var t = _ref.t,
30893      p = _ref.p,
30894      color = _ref.color,
30895      set = _ref.set;
30896  set(t, p, color[0] << 16 | color[1] << 8 | color[2]);
30897},
30898    _renderDirtyCache = function _renderDirtyCache(ratio, _ref2) {
30899  var g = _ref2.g;
30900
30901  if (g) {
30902    //in order for PixiJS to actually redraw GraphicsData, we've gotta increment the "dirty" and "clearDirty" values. If we don't do this, the values will be tween properly, but not rendered.
30903    g.dirty++;
30904    g.clearDirty++;
30905  }
30906},
30907    _renderAutoAlpha = function _renderAutoAlpha(ratio, data) {
30908  data.t.visible = !!data.t.alpha;
30909},
30910    _addColorTween = function _addColorTween(target, p, value, plugin) {
30911  var currentValue = target[p],
30912      startColor = _splitColor(_isFunction(currentValue) ? target[p.indexOf("set") || !_isFunction(target["get" + p.substr(3)]) ? p : "get" + p.substr(3)]() : currentValue),
30913      endColor = _splitColor(value);
30914
30915  plugin._pt = new PropTween(plugin._pt, target, p, 0, 0, _renderColor, {
30916    t: target,
30917    p: p,
30918    color: startColor,
30919    set: _getSetter(target, p)
30920  });
30921  plugin.add(startColor, 0, startColor[0], endColor[0]);
30922  plugin.add(startColor, 1, startColor[1], endColor[1]);
30923  plugin.add(startColor, 2, startColor[2], endColor[2]);
30924},
30925    _colorProps = {
30926  tint: 1,
30927  lineColor: 1,
30928  fillColor: 1
30929},
30930    _xyContexts = "position,scale,skew,pivot,anchor,tilePosition,tileScale".split(","),
30931    _contexts = {
30932  x: "position",
30933  y: "position",
30934  tileX: "tilePosition",
30935  tileY: "tilePosition"
30936},
30937    _colorMatrixFilterProps = {
30938  colorMatrixFilter: 1,
30939  saturation: 1,
30940  contrast: 1,
30941  hue: 1,
30942  colorize: 1,
30943  colorizeAmount: 1,
30944  brightness: 1,
30945  combineCMF: 1
30946},
30947    _DEG2RAD = Math.PI / 180,
30948    _isString = function _isString(value) {
30949  return typeof value === "string";
30950},
30951    _degreesToRadians = function _degreesToRadians(value) {
30952  return _isString(value) && value.charAt(1) === "=" ? value.substr(0, 2) + parseFloat(value.substr(2)) * _DEG2RAD : value * _DEG2RAD;
30953},
30954    _renderPropWithEnd = function _renderPropWithEnd(ratio, data) {
30955  return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 100000) / 100000, data);
30956},
30957    _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue, radians) {
30958  var cap = 360 * (radians ? _DEG2RAD : 1),
30959      isString = _isString(endValue),
30960      relative = isString && endValue.charAt(1) === "=" ? +(endValue.charAt(0) + "1") : 0,
30961      endNum = parseFloat(relative ? endValue.substr(2) : endValue) * (radians ? _DEG2RAD : 1),
30962      change = relative ? endNum * relative : endNum - startNum,
30963      finalValue = startNum + change,
30964      direction,
30965      pt;
30966
30967  if (isString) {
30968    direction = endValue.split("_")[1];
30969
30970    if (direction === "short") {
30971      change %= cap;
30972
30973      if (change !== change % (cap / 2)) {
30974        change += change < 0 ? cap : -cap;
30975      }
30976    }
30977
30978    if (direction === "cw" && change < 0) {
30979      change = (change + cap * 1e10) % cap - ~~(change / cap) * cap;
30980    } else if (direction === "ccw" && change > 0) {
30981      change = (change - cap * 1e10) % cap - ~~(change / cap) * cap;
30982    }
30983  }
30984
30985  plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);
30986  pt.e = finalValue;
30987  return pt;
30988},
30989    _initCore = function _initCore() {
30990  if (!_coreInitted) {
30991    gsap = _getGSAP();
30992    _PIXI = _coreInitted = _PIXI || _windowExists() && window.PIXI;
30993    _isV4 = _PIXI && _PIXI.VERSION && _PIXI.VERSION.charAt(0) === "4";
30994
30995    _splitColor = function _splitColor(color) {
30996      return gsap.utils.splitColor((color + "").substr(0, 2) === "0x" ? "#" + color.substr(2) : color);
30997    }; // some colors in PIXI are reported as "0xFF4421" instead of "#FF4421".
30998
30999  }
31000},
31001    i,
31002    p; //context setup...
31003
31004
31005for (i = 0; i < _xyContexts.length; i++) {
31006  p = _xyContexts[i];
31007  _contexts[p + "X"] = p;
31008  _contexts[p + "Y"] = p;
31009}
31010
31011var PixiPlugin = {
31012  version: "3.12.5",
31013  name: "pixi",
31014  register: function register(core, Plugin, propTween) {
31015    gsap = core;
31016    PropTween = propTween;
31017    _getSetter = Plugin.getSetter;
31018
31019    _initCore();
31020  },
31021  headless: true,
31022  // doesn't need window
31023  registerPIXI: function registerPIXI(pixi) {
31024    _PIXI = pixi;
31025  },
31026  init: function init(target, values, tween, index, targets) {
31027    _PIXI || _initCore();
31028
31029    if (!_PIXI) {
31030      _warn("PIXI was not found. PixiPlugin.registerPIXI(PIXI);");
31031
31032      return false;
31033    }
31034
31035    var context, axis, value, colorMatrix, filter, p, padding, i, data;
31036
31037    for (p in values) {
31038      context = _contexts[p];
31039      value = values[p];
31040
31041      if (context) {
31042        axis = ~p.charAt(p.length - 1).toLowerCase().indexOf("x") ? "x" : "y";
31043        this.add(target[context], axis, target[context][axis], context === "skew" ? _degreesToRadians(value) : value, 0, 0, 0, 0, 0, 1);
31044      } else if (p === "scale" || p === "anchor" || p === "pivot" || p === "tileScale") {
31045        this.add(target[p], "x", target[p].x, value);
31046        this.add(target[p], "y", target[p].y, value);
31047      } else if (p === "rotation" || p === "angle") {
31048        //PIXI expects rotation in radians, but as a convenience we let folks define it in degrees and we do the conversion.
31049        _addRotationalPropTween(this, target, p, target[p], value, p === "rotation");
31050      } else if (_colorMatrixFilterProps[p]) {
31051        if (!colorMatrix) {
31052          _parseColorMatrixFilter(target, values.colorMatrixFilter || values, this);
31053
31054          colorMatrix = true;
31055        }
31056      } else if (p === "blur" || p === "blurX" || p === "blurY" || p === "blurPadding") {
31057        filter = _getFilter(target, "BlurFilter");
31058        this.add(filter, p, filter[p], value);
31059
31060        if (values.blurPadding !== 0) {
31061          padding = values.blurPadding || Math.max(filter[p], value) * 2;
31062          i = target.filters.length;
31063
31064          while (--i > -1) {
31065            target.filters[i].padding = Math.max(target.filters[i].padding, padding); //if we don't expand the padding on all the filters, it can look clipped.
31066          }
31067        }
31068      } else if (_colorProps[p]) {
31069        if ((p === "lineColor" || p === "fillColor") && target instanceof _PIXI.Graphics) {
31070          data = (target.geometry || target).graphicsData; //"geometry" was introduced in PIXI version 5
31071
31072          this._pt = new PropTween(this._pt, target, p, 0, 0, _renderDirtyCache, {
31073            g: target.geometry || target
31074          });
31075          i = data.length;
31076
31077          while (--i > -1) {
31078            _addColorTween(_isV4 ? data[i] : data[i][p.substr(0, 4) + "Style"], _isV4 ? p : "color", value, this);
31079          }
31080        } else {
31081          _addColorTween(target, p, value, this);
31082        }
31083      } else if (p === "autoAlpha") {
31084        this._pt = new PropTween(this._pt, target, "visible", 0, 0, _renderAutoAlpha);
31085        this.add(target, "alpha", target.alpha, value);
31086
31087        this._props.push("alpha", "visible");
31088      } else if (p !== "resolution") {
31089        this.add(target, p, "get", value);
31090      }
31091
31092      this._props.push(p);
31093    }
31094  }
31095};
31096_getGSAP() && gsap.registerPlugin(PixiPlugin);
31097
31098
31099/***/ }),
31100
vendor: 114,561 bytes, lines 31101-33774
31101/***/ "./node_modules/gsap/ScrollTrigger.js":
31102/*!********************************************!*\
31103  !*** ./node_modules/gsap/ScrollTrigger.js ***!
31104  \********************************************/
31105/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
31106
31107"use strict";
31108__webpack_require__.r(__webpack_exports__);
31109/* harmony export */ __webpack_require__.d(__webpack_exports__, {
31110/* harmony export */   "ScrollTrigger": () => (/* binding */ ScrollTrigger),
31111/* harmony export */   "default": () => (/* binding */ ScrollTrigger)
31112/* harmony export */ });
31113/* harmony import */ var _Observer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Observer.js */ "./node_modules/gsap/Observer.js");
31114/*!
31115 * ScrollTrigger 3.12.5
31116 * https://gsap.com
31117 *
31118 * @license Copyright 2008-2024, GreenSock. All rights reserved.
31119 * Subject to the terms at https://gsap.com/standard-license or for
31120 * Club GSAP members, the agreement issued with that membership.
31121 * @author: Jack Doyle, [email protected]
31122*/
31123
31124/* eslint-disable */
31125
31126
31127var gsap,
31128    _coreInitted,
31129    _win,
31130    _doc,
31131    _docEl,
31132    _body,
31133    _root,
31134    _resizeDelay,
31135    _toArray,
31136    _clamp,
31137    _time2,
31138    _syncInterval,
31139    _refreshing,
31140    _pointerIsDown,
31141    _transformProp,
31142    _i,
31143    _prevWidth,
31144    _prevHeight,
31145    _autoRefresh,
31146    _sort,
31147    _suppressOverwrites,
31148    _ignoreResize,
31149    _normalizer,
31150    _ignoreMobileResize,
31151    _baseScreenHeight,
31152    _baseScreenWidth,
31153    _fixIOSBug,
31154    _context,
31155    _scrollRestoration,
31156    _div100vh,
31157    _100vh,
31158    _isReverted,
31159    _clampingMax,
31160    _limitCallbacks,
31161    // if true, we'll only trigger callbacks if the active state toggles, so if you scroll immediately past both the start and end positions of a ScrollTrigger (thus inactive to inactive), neither its onEnter nor onLeave will be called. This is useful during startup.
31162_startup = 1,
31163    _getTime = Date.now,
31164    _time1 = _getTime(),
31165    _lastScrollTime = 0,
31166    _enabled = 0,
31167    _parseClamp = function _parseClamp(value, type, self) {
31168  var clamp = _isString(value) && (value.substr(0, 6) === "clamp(" || value.indexOf("max") > -1);
31169  self["_" + type + "Clamp"] = clamp;
31170  return clamp ? value.substr(6, value.length - 7) : value;
31171},
31172    _keepClamp = function _keepClamp(value, clamp) {
31173  return clamp && (!_isString(value) || value.substr(0, 6) !== "clamp(") ? "clamp(" + value + ")" : value;
31174},
31175    _rafBugFix = function _rafBugFix() {
31176  return _enabled && requestAnimationFrame(_rafBugFix);
31177},
31178    // in some browsers (like Firefox), screen repaints weren't consistent unless we had SOMETHING queued up in requestAnimationFrame()! So this just creates a super simple loop to keep it alive and smooth out repaints.
31179_pointerDownHandler = function _pointerDownHandler() {
31180  return _pointerIsDown = 1;
31181},
31182    _pointerUpHandler = function _pointerUpHandler() {
31183  return _pointerIsDown = 0;
31184},
31185    _passThrough = function _passThrough(v) {
31186  return v;
31187},
31188    _round = function _round(value) {
31189  return Math.round(value * 100000) / 100000 || 0;
31190},
31191    _windowExists = function _windowExists() {
31192  return typeof window !== "undefined";
31193},
31194    _getGSAP = function _getGSAP() {
31195  return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;
31196},
31197    _isViewport = function _isViewport(e) {
31198  return !!~_root.indexOf(e);
31199},
31200    _getViewportDimension = function _getViewportDimension(dimensionProperty) {
31201  return (dimensionProperty === "Height" ? _100vh : _win["inner" + dimensionProperty]) || _docEl["client" + dimensionProperty] || _body["client" + dimensionProperty];
31202},
31203    _getBoundsFunc = function _getBoundsFunc(element) {
31204  return (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getProxyProp)(element, "getBoundingClientRect") || (_isViewport(element) ? function () {
31205    _winOffsets.width = _win.innerWidth;
31206    _winOffsets.height = _100vh;
31207    return _winOffsets;
31208  } : function () {
31209    return _getBounds(element);
31210  });
31211},
31212    _getSizeFunc = function _getSizeFunc(scroller, isViewport, _ref) {
31213  var d = _ref.d,
31214      d2 = _ref.d2,
31215      a = _ref.a;
31216  return (a = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getProxyProp)(scroller, "getBoundingClientRect")) ? function () {
31217    return a()[d];
31218  } : function () {
31219    return (isViewport ? _getViewportDimension(d2) : scroller["client" + d2]) || 0;
31220  };
31221},
31222    _getOffsetsFunc = function _getOffsetsFunc(element, isViewport) {
31223  return !isViewport || ~_Observer_js__WEBPACK_IMPORTED_MODULE_0__._proxies.indexOf(element) ? _getBoundsFunc(element) : function () {
31224    return _winOffsets;
31225  };
31226},
31227    _maxScroll = function _maxScroll(element, _ref2) {
31228  var s = _ref2.s,
31229      d2 = _ref2.d2,
31230      d = _ref2.d,
31231      a = _ref2.a;
31232  return Math.max(0, (s = "scroll" + d2) && (a = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getProxyProp)(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport(element) ? (_docEl[s] || _body[s]) - _getViewportDimension(d2) : element[s] - element["offset" + d2]);
31233},
31234    _iterateAutoRefresh = function _iterateAutoRefresh(func, events) {
31235  for (var i = 0; i < _autoRefresh.length; i += 3) {
31236    (!events || ~events.indexOf(_autoRefresh[i + 1])) && func(_autoRefresh[i], _autoRefresh[i + 1], _autoRefresh[i + 2]);
31237  }
31238},
31239    _isString = function _isString(value) {
31240  return typeof value === "string";
31241},
31242    _isFunction = function _isFunction(value) {
31243  return typeof value === "function";
31244},
31245    _isNumber = function _isNumber(value) {
31246  return typeof value === "number";
31247},
31248    _isObject = function _isObject(value) {
31249  return typeof value === "object";
31250},
31251    _endAnimation = function _endAnimation(animation, reversed, pause) {
31252  return animation && animation.progress(reversed ? 0 : 1) && pause && animation.pause();
31253},
31254    _callback = function _callback(self, func) {
31255  if (self.enabled) {
31256    var result = self._ctx ? self._ctx.add(function () {
31257      return func(self);
31258    }) : func(self);
31259    result && result.totalTime && (self.callbackAnimation = result);
31260  }
31261},
31262    _abs = Math.abs,
31263    _left = "left",
31264    _top = "top",
31265    _right = "right",
31266    _bottom = "bottom",
31267    _width = "width",
31268    _height = "height",
31269    _Right = "Right",
31270    _Left = "Left",
31271    _Top = "Top",
31272    _Bottom = "Bottom",
31273    _padding = "padding",
31274    _margin = "margin",
31275    _Width = "Width",
31276    _Height = "Height",
31277    _px = "px",
31278    _getComputedStyle = function _getComputedStyle(element) {
31279  return _win.getComputedStyle(element);
31280},
31281    _makePositionable = function _makePositionable(element) {
31282  // if the element already has position: absolute or fixed, leave that, otherwise make it position: relative
31283  var position = _getComputedStyle(element).position;
31284
31285  element.style.position = position === "absolute" || position === "fixed" ? position : "relative";
31286},
31287    _setDefaults = function _setDefaults(obj, defaults) {
31288  for (var p in defaults) {
31289    p in obj || (obj[p] = defaults[p]);
31290  }
31291
31292  return obj;
31293},
31294    _getBounds = function _getBounds(element, withoutTransforms) {
31295  var tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== "matrix(1, 0, 0, 1, 0, 0)" && gsap.to(element, {
31296    x: 0,
31297    y: 0,
31298    xPercent: 0,
31299    yPercent: 0,
31300    rotation: 0,
31301    rotationX: 0,
31302    rotationY: 0,
31303    scale: 1,
31304    skewX: 0,
31305    skewY: 0
31306  }).progress(1),
31307      bounds = element.getBoundingClientRect();
31308  tween && tween.progress(0).kill();
31309  return bounds;
31310},
31311    _getSize = function _getSize(element, _ref3) {
31312  var d2 = _ref3.d2;
31313  return element["offset" + d2] || element["client" + d2] || 0;
31314},
31315    _getLabelRatioArray = function _getLabelRatioArray(timeline) {
31316  var a = [],
31317      labels = timeline.labels,
31318      duration = timeline.duration(),
31319      p;
31320
31321  for (p in labels) {
31322    a.push(labels[p] / duration);
31323  }
31324
31325  return a;
31326},
31327    _getClosestLabel = function _getClosestLabel(animation) {
31328  return function (value) {
31329    return gsap.utils.snap(_getLabelRatioArray(animation), value);
31330  };
31331},
31332    _snapDirectional = function _snapDirectional(snapIncrementOrArray) {
31333  var snap = gsap.utils.snap(snapIncrementOrArray),
31334      a = Array.isArray(snapIncrementOrArray) && snapIncrementOrArray.slice(0).sort(function (a, b) {
31335    return a - b;
31336  });
31337  return a ? function (value, direction, threshold) {
31338    if (threshold === void 0) {
31339      threshold = 1e-3;
31340    }
31341
31342    var i;
31343
31344    if (!direction) {
31345      return snap(value);
31346    }
31347
31348    if (direction > 0) {
31349      value -= threshold; // to avoid rounding errors. If we're too strict, it might snap forward, then immediately again, and again.
31350
31351      for (i = 0; i < a.length; i++) {
31352        if (a[i] >= value) {
31353          return a[i];
31354        }
31355      }
31356
31357      return a[i - 1];
31358    } else {
31359      i = a.length;
31360      value += threshold;
31361
31362      while (i--) {
31363        if (a[i] <= value) {
31364          return a[i];
31365        }
31366      }
31367    }
31368
31369    return a[0];
31370  } : function (value, direction, threshold) {
31371    if (threshold === void 0) {
31372      threshold = 1e-3;
31373    }
31374
31375    var snapped = snap(value);
31376    return !direction || Math.abs(snapped - value) < threshold || snapped - value < 0 === direction < 0 ? snapped : snap(direction < 0 ? value - snapIncrementOrArray : value + snapIncrementOrArray);
31377  };
31378},
31379    _getLabelAtDirection = function _getLabelAtDirection(timeline) {
31380  return function (value, st) {
31381    return _snapDirectional(_getLabelRatioArray(timeline))(value, st.direction);
31382  };
31383},
31384    _multiListener = function _multiListener(func, element, types, callback) {
31385  return types.split(",").forEach(function (type) {
31386    return func(element, type, callback);
31387  });
31388},
31389    _addListener = function _addListener(element, type, func, nonPassive, capture) {
31390  return element.addEventListener(type, func, {
31391    passive: !nonPassive,
31392    capture: !!capture
31393  });
31394},
31395    _removeListener = function _removeListener(element, type, func, capture) {
31396  return element.removeEventListener(type, func, !!capture);
31397},
31398    _wheelListener = function _wheelListener(func, el, scrollFunc) {
31399  scrollFunc = scrollFunc && scrollFunc.wheelHandler;
31400
31401  if (scrollFunc) {
31402    func(el, "wheel", scrollFunc);
31403    func(el, "touchmove", scrollFunc);
31404  }
31405},
31406    _markerDefaults = {
31407  startColor: "green",
31408  endColor: "red",
31409  indent: 0,
31410  fontSize: "16px",
31411  fontWeight: "normal"
31412},
31413    _defaults = {
31414  toggleActions: "play",
31415  anticipatePin: 0
31416},
31417    _keywords = {
31418  top: 0,
31419  left: 0,
31420  center: 0.5,
31421  bottom: 1,
31422  right: 1
31423},
31424    _offsetToPx = function _offsetToPx(value, size) {
31425  if (_isString(value)) {
31426    var eqIndex = value.indexOf("="),
31427        relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0;
31428
31429    if (~eqIndex) {
31430      value.indexOf("%") > eqIndex && (relative *= size / 100);
31431      value = value.substr(0, eqIndex - 1);
31432    }
31433
31434    value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf("%") ? parseFloat(value) * size / 100 : parseFloat(value) || 0);
31435  }
31436
31437  return value;
31438},
31439    _createMarker = function _createMarker(type, name, container, direction, _ref4, offset, matchWidthEl, containerAnimation) {
31440  var startColor = _ref4.startColor,
31441      endColor = _ref4.endColor,
31442      fontSize = _ref4.fontSize,
31443      indent = _ref4.indent,
31444      fontWeight = _ref4.fontWeight;
31445
31446  var e = _doc.createElement("div"),
31447      useFixedPosition = _isViewport(container) || (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getProxyProp)(container, "pinType") === "fixed",
31448      isScroller = type.indexOf("scroller") !== -1,
31449      parent = useFixedPosition ? _body : container,
31450      isStart = type.indexOf("start") !== -1,
31451      color = isStart ? startColor : endColor,
31452      css = "border-color:" + color + ";font-size:" + fontSize + ";color:" + color + ";font-weight:" + fontWeight + ";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;";
31453
31454  css += "position:" + ((isScroller || containerAnimation) && useFixedPosition ? "fixed;" : "absolute;");
31455  (isScroller || containerAnimation || !useFixedPosition) && (css += (direction === _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical ? _right : _bottom) + ":" + (offset + parseFloat(indent)) + "px;");
31456  matchWidthEl && (css += "box-sizing:border-box;text-align:left;width:" + matchWidthEl.offsetWidth + "px;");
31457  e._isStart = isStart;
31458  e.setAttribute("class", "gsap-marker-" + type + (name ? " marker-" + name : ""));
31459  e.style.cssText = css;
31460  e.innerText = name || name === 0 ? type + "-" + name : type;
31461  parent.children[0] ? parent.insertBefore(e, parent.children[0]) : parent.appendChild(e);
31462  e._offset = e["offset" + direction.op.d2];
31463
31464  _positionMarker(e, 0, direction, isStart);
31465
31466  return e;
31467},
31468    _positionMarker = function _positionMarker(marker, start, direction, flipped) {
31469  var vars = {
31470    display: "block"
31471  },
31472      side = direction[flipped ? "os2" : "p2"],
31473      oppositeSide = direction[flipped ? "p2" : "os2"];
31474  marker._isFlipped = flipped;
31475  vars[direction.a + "Percent"] = flipped ? -100 : 0;
31476  vars[direction.a] = flipped ? "1px" : 0;
31477  vars["border" + side + _Width] = 1;
31478  vars["border" + oppositeSide + _Width] = 0;
31479  vars[direction.p] = start + "px";
31480  gsap.set(marker, vars);
31481},
31482    _triggers = [],
31483    _ids = {},
31484    _rafID,
31485    _sync = function _sync() {
31486  return _getTime() - _lastScrollTime > 34 && (_rafID || (_rafID = requestAnimationFrame(_updateAll)));
31487},
31488    _onScroll = function _onScroll() {
31489  // previously, we tried to optimize performance by batching/deferring to the next requestAnimationFrame(), but discovered that Safari has a few bugs that make this unworkable (especially on iOS). See https://codepen.io/GreenSock/pen/16c435b12ef09c38125204818e7b45fc?editors=0010 and https://codepen.io/GreenSock/pen/JjOxYpQ/3dd65ccec5a60f1d862c355d84d14562?editors=0010 and https://codepen.io/GreenSock/pen/ExbrPNa/087cef197dc35445a0951e8935c41503?editors=0010
31490  if (!_normalizer || !_normalizer.isPressed || _normalizer.startX > _body.clientWidth) {
31491    // if the user is dragging the scrollbar, allow it.
31492    _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.cache++;
31493
31494    if (_normalizer) {
31495      _rafID || (_rafID = requestAnimationFrame(_updateAll));
31496    } else {
31497      _updateAll(); // Safari in particular (on desktop) NEEDS the immediate update rather than waiting for a requestAnimationFrame() whereas iOS seems to benefit from waiting for the requestAnimationFrame() tick, at least when normalizing. See https://codepen.io/GreenSock/pen/qBYozqO?editors=0110
31498
31499    }
31500
31501    _lastScrollTime || _dispatch("scrollStart");
31502    _lastScrollTime = _getTime();
31503  }
31504},
31505    _setBaseDimensions = function _setBaseDimensions() {
31506  _baseScreenWidth = _win.innerWidth;
31507  _baseScreenHeight = _win.innerHeight;
31508},
31509    _onResize = function _onResize() {
31510  _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.cache++;
31511  !_refreshing && !_ignoreResize && !_doc.fullscreenElement && !_doc.webkitFullscreenElement && (!_ignoreMobileResize || _baseScreenWidth !== _win.innerWidth || Math.abs(_win.innerHeight - _baseScreenHeight) > _win.innerHeight * 0.25) && _resizeDelay.restart(true);
31512},
31513    // ignore resizes triggered by refresh()
31514_listeners = {},
31515    _emptyArray = [],
31516    _softRefresh = function _softRefresh() {
31517  return _removeListener(ScrollTrigger, "scrollEnd", _softRefresh) || _refreshAll(true);
31518},
31519    _dispatch = function _dispatch(type) {
31520  return _listeners[type] && _listeners[type].map(function (f) {
31521    return f();
31522  }) || _emptyArray;
31523},
31524    _savedStyles = [],
31525    // when ScrollTrigger.saveStyles() is called, the inline styles are recorded in this Array in a sequential format like [element, cssText, gsCache, media]. This keeps it very memory-efficient and fast to iterate through.
31526_revertRecorded = function _revertRecorded(media) {
31527  for (var i = 0; i < _savedStyles.length; i += 5) {
31528    if (!media || _savedStyles[i + 4] && _savedStyles[i + 4].query === media) {
31529      _savedStyles[i].style.cssText = _savedStyles[i + 1];
31530      _savedStyles[i].getBBox && _savedStyles[i].setAttribute("transform", _savedStyles[i + 2] || "");
31531      _savedStyles[i + 3].uncache = 1;
31532    }
31533  }
31534},
31535    _revertAll = function _revertAll(kill, media) {
31536  var trigger;
31537
31538  for (_i = 0; _i < _triggers.length; _i++) {
31539    trigger = _triggers[_i];
31540
31541    if (trigger && (!media || trigger._ctx === media)) {
31542      if (kill) {
31543        trigger.kill(1);
31544      } else {
31545        trigger.revert(true, true);
31546      }
31547    }
31548  }
31549
31550  _isReverted = true;
31551  media && _revertRecorded(media);
31552  media || _dispatch("revert");
31553},
31554    _clearScrollMemory = function _clearScrollMemory(scrollRestoration, force) {
31555  // zero-out all the recorded scroll positions. Don't use _triggers because if, for example, .matchMedia() is used to create some ScrollTriggers and then the user resizes and it removes ALL ScrollTriggers, and then go back to a size where there are ScrollTriggers, it would have kept the position(s) saved from the initial state.
31556  _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.cache++;
31557  (force || !_refreshingAll) && _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.forEach(function (obj) {
31558    return _isFunction(obj) && obj.cacheID++ && (obj.rec = 0);
31559  });
31560  _isString(scrollRestoration) && (_win.history.scrollRestoration = _scrollRestoration = scrollRestoration);
31561},
31562    _refreshingAll,
31563    _refreshID = 0,
31564    _queueRefreshID,
31565    _queueRefreshAll = function _queueRefreshAll() {
31566  // we don't want to call _refreshAll() every time we create a new ScrollTrigger (for performance reasons) - it's better to batch them. Some frameworks dynamically load content and we can't rely on the window's "load" or "DOMContentLoaded" events to trigger it.
31567  if (_queueRefreshID !== _refreshID) {
31568    var id = _queueRefreshID = _refreshID;
31569    requestAnimationFrame(function () {
31570      return id === _refreshID && _refreshAll(true);
31571    });
31572  }
31573},
31574    _refresh100vh = function _refresh100vh() {
31575  _body.appendChild(_div100vh);
31576
31577  _100vh = !_normalizer && _div100vh.offsetHeight || _win.innerHeight;
31578
31579  _body.removeChild(_div100vh);
31580},
31581    _hideAllMarkers = function _hideAllMarkers(hide) {
31582  return _toArray(".gsap-marker-start, .gsap-marker-end, .gsap-marker-scroller-start, .gsap-marker-scroller-end").forEach(function (el) {
31583    return el.style.display = hide ? "none" : "block";
31584  });
31585},
31586    _refreshAll = function _refreshAll(force, skipRevert) {
31587  if (_lastScrollTime && !force && !_isReverted) {
31588    _addListener(ScrollTrigger, "scrollEnd", _softRefresh);
31589
31590    return;
31591  }
31592
31593  _refresh100vh();
31594
31595  _refreshingAll = ScrollTrigger.isRefreshing = true;
31596
31597  _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.forEach(function (obj) {
31598    return _isFunction(obj) && ++obj.cacheID && (obj.rec = obj());
31599  }); // force the clearing of the cache because some browsers take a little while to dispatch the "scroll" event and the user may have changed the scroll position and then called ScrollTrigger.refresh() right away
31600
31601
31602  var refreshInits = _dispatch("refreshInit");
31603
31604  _sort && ScrollTrigger.sort();
31605  skipRevert || _revertAll();
31606
31607  _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.forEach(function (obj) {
31608    if (_isFunction(obj)) {
31609      obj.smooth && (obj.target.style.scrollBehavior = "auto"); // smooth scrolling interferes
31610
31611      obj(0);
31612    }
31613  });
31614
31615  _triggers.slice(0).forEach(function (t) {
31616    return t.refresh();
31617  }); // don't loop with _i because during a refresh() someone could call ScrollTrigger.update() which would iterate through _i resulting in a skip.
31618
31619
31620  _isReverted = false;
31621
31622  _triggers.forEach(function (t) {
31623    // nested pins (pinnedContainer) with pinSpacing may expand the container, so we must accommodate that here.
31624    if (t._subPinOffset && t.pin) {
31625      var prop = t.vars.horizontal ? "offsetWidth" : "offsetHeight",
31626          original = t.pin[prop];
31627      t.revert(true, 1);
31628      t.adjustPinSpacing(t.pin[prop] - original);
31629      t.refresh();
31630    }
31631  });
31632
31633  _clampingMax = 1; // pinSpacing might be propping a page open, thus when we .setPositions() to clamp a ScrollTrigger's end we should leave the pinSpacing alone. That's what this flag is for.
31634
31635  _hideAllMarkers(true);
31636
31637  _triggers.forEach(function (t) {
31638    // the scroller's max scroll position may change after all the ScrollTriggers refreshed (like pinning could push it down), so we need to loop back and correct any with end: "max". Same for anything with a clamped end
31639    var max = _maxScroll(t.scroller, t._dir),
31640        endClamp = t.vars.end === "max" || t._endClamp && t.end > max,
31641        startClamp = t._startClamp && t.start >= max;
31642
31643    (endClamp || startClamp) && t.setPositions(startClamp ? max - 1 : t.start, endClamp ? Math.max(startClamp ? max : t.start + 1, max) : t.end, true);
31644  });
31645
31646  _hideAllMarkers(false);
31647
31648  _clampingMax = 0;
31649  refreshInits.forEach(function (result) {
31650    return result && result.render && result.render(-1);
31651  }); // if the onRefreshInit() returns an animation (typically a gsap.set()), revert it. This makes it easy to put things in a certain spot before refreshing for measurement purposes, and then put things back.
31652
31653  _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.forEach(function (obj) {
31654    if (_isFunction(obj)) {
31655      obj.smooth && requestAnimationFrame(function () {
31656        return obj.target.style.scrollBehavior = "smooth";
31657      });
31658      obj.rec && obj(obj.rec);
31659    }
31660  });
31661
31662  _clearScrollMemory(_scrollRestoration, 1);
31663
31664  _resizeDelay.pause();
31665
31666  _refreshID++;
31667  _refreshingAll = 2;
31668
31669  _updateAll(2);
31670
31671  _triggers.forEach(function (t) {
31672    return _isFunction(t.vars.onRefresh) && t.vars.onRefresh(t);
31673  });
31674
31675  _refreshingAll = ScrollTrigger.isRefreshing = false;
31676
31677  _dispatch("refresh");
31678},
31679    _lastScroll = 0,
31680    _direction = 1,
31681    _primary,
31682    _updateAll = function _updateAll(force) {
31683  if (force === 2 || !_refreshingAll && !_isReverted) {
31684    // _isReverted could be true if, for example, a matchMedia() is in the process of executing. We don't want to update during the time everything is reverted.
31685    ScrollTrigger.isUpdating = true;
31686    _primary && _primary.update(0); // ScrollSmoother uses refreshPriority -9999 to become the primary that gets updated before all others because it affects the scroll position.
31687
31688    var l = _triggers.length,
31689        time = _getTime(),
31690        recordVelocity = time - _time1 >= 50,
31691        scroll = l && _triggers[0].scroll();
31692
31693    _direction = _lastScroll > scroll ? -1 : 1;
31694    _refreshingAll || (_lastScroll = scroll);
31695
31696    if (recordVelocity) {
31697      if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) {
31698        _lastScrollTime = 0;
31699
31700        _dispatch("scrollEnd");
31701      }
31702
31703      _time2 = _time1;
31704      _time1 = time;
31705    }
31706
31707    if (_direction < 0) {
31708      _i = l;
31709
31710      while (_i-- > 0) {
31711        _triggers[_i] && _triggers[_i].update(0, recordVelocity);
31712      }
31713
31714      _direction = 1;
31715    } else {
31716      for (_i = 0; _i < l; _i++) {
31717        _triggers[_i] && _triggers[_i].update(0, recordVelocity);
31718      }
31719    }
31720
31721    ScrollTrigger.isUpdating = false;
31722  }
31723
31724  _rafID = 0;
31725},
31726    _propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, "display", "flexShrink", "float", "zIndex", "gridColumnStart", "gridColumnEnd", "gridRowStart", "gridRowEnd", "gridArea", "justifySelf", "alignSelf", "placeSelf", "order"],
31727    _stateProps = _propNamesToCopy.concat([_width, _height, "boxSizing", "max" + _Width, "max" + _Height, "position", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]),
31728    _swapPinOut = function _swapPinOut(pin, spacer, state) {
31729  _setState(state);
31730
31731  var cache = pin._gsap;
31732
31733  if (cache.spacerIsNative) {
31734    _setState(cache.spacerState);
31735  } else if (pin._gsap.swappedIn) {
31736    var parent = spacer.parentNode;
31737
31738    if (parent) {
31739      parent.insertBefore(pin, spacer);
31740      parent.removeChild(spacer);
31741    }
31742  }
31743
31744  pin._gsap.swappedIn = false;
31745},
31746    _swapPinIn = function _swapPinIn(pin, spacer, cs, spacerState) {
31747  if (!pin._gsap.swappedIn) {
31748    var i = _propNamesToCopy.length,
31749        spacerStyle = spacer.style,
31750        pinStyle = pin.style,
31751        p;
31752
31753    while (i--) {
31754      p = _propNamesToCopy[i];
31755      spacerStyle[p] = cs[p];
31756    }
31757
31758    spacerStyle.position = cs.position === "absolute" ? "absolute" : "relative";
31759    cs.display === "inline" && (spacerStyle.display = "inline-block");
31760    pinStyle[_bottom] = pinStyle[_right] = "auto";
31761    spacerStyle.flexBasis = cs.flexBasis || "auto";
31762    spacerStyle.overflow = "visible";
31763    spacerStyle.boxSizing = "border-box";
31764    spacerStyle[_width] = _getSize(pin, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal) + _px;
31765    spacerStyle[_height] = _getSize(pin, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical) + _px;
31766    spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = "0";
31767
31768    _setState(spacerState);
31769
31770    pinStyle[_width] = pinStyle["max" + _Width] = cs[_width];
31771    pinStyle[_height] = pinStyle["max" + _Height] = cs[_height];
31772    pinStyle[_padding] = cs[_padding];
31773
31774    if (pin.parentNode !== spacer) {
31775      pin.parentNode.insertBefore(spacer, pin);
31776      spacer.appendChild(pin);
31777    }
31778
31779    pin._gsap.swappedIn = true;
31780  }
31781},
31782    _capsExp = /([A-Z])/g,
31783    _setState = function _setState(state) {
31784  if (state) {
31785    var style = state.t.style,
31786        l = state.length,
31787        i = 0,
31788        p,
31789        value;
31790    (state.t._gsap || gsap.core.getCache(state.t)).uncache = 1; // otherwise transforms may be off
31791
31792    for (; i < l; i += 2) {
31793      value = state[i + 1];
31794      p = state[i];
31795
31796      if (value) {
31797        style[p] = value;
31798      } else if (style[p]) {
31799        style.removeProperty(p.replace(_capsExp, "-$1").toLowerCase());
31800      }
31801    }
31802  }
31803},
31804    _getState = function _getState(element) {
31805  // returns an Array with alternating values like [property, value, property, value] and a "t" property pointing to the target (element). Makes it fast and cheap.
31806  var l = _stateProps.length,
31807      style = element.style,
31808      state = [],
31809      i = 0;
31810
31811  for (; i < l; i++) {
31812    state.push(_stateProps[i], style[_stateProps[i]]);
31813  }
31814
31815  state.t = element;
31816  return state;
31817},
31818    _copyState = function _copyState(state, override, omitOffsets) {
31819  var result = [],
31820      l = state.length,
31821      i = omitOffsets ? 8 : 0,
31822      // skip top, left, right, bottom if omitOffsets is true
31823  p;
31824
31825  for (; i < l; i += 2) {
31826    p = state[i];
31827    result.push(p, p in override ? override[p] : state[i + 1]);
31828  }
31829
31830  result.t = state.t;
31831  return result;
31832},
31833    _winOffsets = {
31834  left: 0,
31835  top: 0
31836},
31837    // // potential future feature (?) Allow users to calculate where a trigger hits (scroll position) like getScrollPosition("#id", "top bottom")
31838// _getScrollPosition = (trigger, position, {scroller, containerAnimation, horizontal}) => {
31839// 	scroller = _getTarget(scroller || _win);
31840// 	let direction = horizontal ? _horizontal : _vertical,
31841// 		isViewport = _isViewport(scroller);
31842// 	_getSizeFunc(scroller, isViewport, direction);
31843// 	return _parsePosition(position, _getTarget(trigger), _getSizeFunc(scroller, isViewport, direction)(), direction, _getScrollFunc(scroller, direction)(), 0, 0, 0, _getOffsetsFunc(scroller, isViewport)(), isViewport ? 0 : parseFloat(_getComputedStyle(scroller)["border" + direction.p2 + _Width]) || 0, 0, containerAnimation ? containerAnimation.duration() : _maxScroll(scroller), containerAnimation);
31844// },
31845_parsePosition = function _parsePosition(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self, scrollerBounds, borderWidth, useFixedPosition, scrollerMax, containerAnimation, clampZeroProp) {
31846  _isFunction(value) && (value = value(self));
31847
31848  if (_isString(value) && value.substr(0, 3) === "max") {
31849    value = scrollerMax + (value.charAt(4) === "=" ? _offsetToPx("0" + value.substr(3), scrollerSize) : 0);
31850  }
31851
31852  var time = containerAnimation ? containerAnimation.time() : 0,
31853      p1,
31854      p2,
31855      element;
31856  containerAnimation && containerAnimation.seek(0);
31857  isNaN(value) || (value = +value); // convert a string number like "45" to an actual number
31858
31859  if (!_isNumber(value)) {
31860    _isFunction(trigger) && (trigger = trigger(self));
31861    var offsets = (value || "0").split(" "),
31862        bounds,
31863        localOffset,
31864        globalOffset,
31865        display;
31866    element = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(trigger, self) || _body;
31867    bounds = _getBounds(element) || {};
31868
31869    if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === "none") {
31870      // if display is "none", it won't report getBoundingClientRect() properly
31871      display = element.style.display;
31872      element.style.display = "block";
31873      bounds = _getBounds(element);
31874      display ? element.style.display = display : element.style.removeProperty("display");
31875    }
31876
31877    localOffset = _offsetToPx(offsets[0], bounds[direction.d]);
31878    globalOffset = _offsetToPx(offsets[1] || "0", scrollerSize);
31879    value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset;
31880    markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20);
31881    scrollerSize -= scrollerSize - globalOffset; // adjust for the marker
31882  } else {
31883    containerAnimation && (value = gsap.utils.mapRange(containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, 0, scrollerMax, value));
31884    markerScroller && _positionMarker(markerScroller, scrollerSize, direction, true);
31885  }
31886
31887  if (clampZeroProp) {
31888    self[clampZeroProp] = value || -0.001;
31889    value < 0 && (value = 0);
31890  }
31891
31892  if (marker) {
31893    var position = value + scrollerSize,
31894        isStart = marker._isStart;
31895    p1 = "scroll" + direction.d2;
31896
31897    _positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body[p1], _docEl[p1]) : marker.parentNode[p1]) <= position + 1);
31898
31899    if (useFixedPosition) {
31900      scrollerBounds = _getBounds(markerScroller);
31901      useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px);
31902    }
31903  }
31904
31905  if (containerAnimation && element) {
31906    p1 = _getBounds(element);
31907    containerAnimation.seek(scrollerMax);
31908    p2 = _getBounds(element);
31909    containerAnimation._caScrollDist = p1[direction.p] - p2[direction.p];
31910    value = value / containerAnimation._caScrollDist * scrollerMax;
31911  }
31912
31913  containerAnimation && containerAnimation.seek(time);
31914  return containerAnimation ? value : Math.round(value);
31915},
31916    _prefixExp = /(webkit|moz|length|cssText|inset)/i,
31917    _reparent = function _reparent(element, parent, top, left) {
31918  if (element.parentNode !== parent) {
31919    var style = element.style,
31920        p,
31921        cs;
31922
31923    if (parent === _body) {
31924      element._stOrig = style.cssText; // record original inline styles so we can revert them later
31925
31926      cs = _getComputedStyle(element);
31927
31928      for (p in cs) {
31929        // must copy all relevant styles to ensure that nothing changes visually when we reparent to the <body>. Skip the vendor prefixed ones.
31930        if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === "string" && p !== "0") {
31931          style[p] = cs[p];
31932        }
31933      }
31934
31935      style.top = top;
31936      style.left = left;
31937    } else {
31938      style.cssText = element._stOrig;
31939    }
31940
31941    gsap.core.getCache(element).uncache = 1;
31942    parent.appendChild(element);
31943  }
31944},
31945    _interruptionTracker = function _interruptionTracker(getValueFunc, initialValue, onInterrupt) {
31946  var last1 = initialValue,
31947      last2 = last1;
31948  return function (value) {
31949    var current = Math.round(getValueFunc()); // round because in some [very uncommon] Windows environments, scroll can get reported with decimals even though it was set without.
31950
31951    if (current !== last1 && current !== last2 && Math.abs(current - last1) > 3 && Math.abs(current - last2) > 3) {
31952      // if the user scrolls, kill the tween. iOS Safari intermittently misreports the scroll position, it may be the most recently-set one or the one before that! When Safari is zoomed (CMD-+), it often misreports as 1 pixel off too! So if we set the scroll position to 125, for example, it'll actually report it as 124.
31953      value = current;
31954      onInterrupt && onInterrupt();
31955    }
31956
31957    last2 = last1;
31958    last1 = value;
31959    return value;
31960  };
31961},
31962    _shiftMarker = function _shiftMarker(marker, direction, value) {
31963  var vars = {};
31964  vars[direction.p] = "+=" + value;
31965  gsap.set(marker, vars);
31966},
31967    // _mergeAnimations = animations => {
31968// 	let tl = gsap.timeline({smoothChildTiming: true}).startTime(Math.min(...animations.map(a => a.globalTime(0))));
31969// 	animations.forEach(a => {let time = a.totalTime(); tl.add(a); a.totalTime(time); });
31970// 	tl.smoothChildTiming = false;
31971// 	return tl;
31972// },
31973// returns a function that can be used to tween the scroll position in the direction provided, and when doing so it'll add a .tween property to the FUNCTION itself, and remove it when the tween completes or gets killed. This gives us a way to have multiple ScrollTriggers use a central function for any given scroller and see if there's a scroll tween running (which would affect if/how things get updated)
31974_getTweenCreator = function _getTweenCreator(scroller, direction) {
31975  var getScroll = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getScrollFunc)(scroller, direction),
31976      prop = "_scroll" + direction.p2,
31977      // add a tweenable property to the scroller that's a getter/setter function, like _scrollTop or _scrollLeft. This way, if someone does gsap.killTweensOf(scroller) it'll kill the scroll tween.
31978  getTween = function getTween(scrollTo, vars, initialValue, change1, change2) {
31979    var tween = getTween.tween,
31980        onComplete = vars.onComplete,
31981        modifiers = {};
31982    initialValue = initialValue || getScroll();
31983
31984    var checkForInterruption = _interruptionTracker(getScroll, initialValue, function () {
31985      tween.kill();
31986      getTween.tween = 0;
31987    });
31988
31989    change2 = change1 && change2 || 0; // if change1 is 0, we set that to the difference and ignore change2. Otherwise, there would be a compound effect.
31990
31991    change1 = change1 || scrollTo - initialValue;
31992    tween && tween.kill();
31993    vars[prop] = scrollTo;
31994    vars.inherit = false;
31995    vars.modifiers = modifiers;
31996
31997    modifiers[prop] = function () {
31998      return checkForInterruption(initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio);
31999    };
32000
32001    vars.onUpdate = function () {
32002      _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.cache++;
32003      getTween.tween && _updateAll(); // if it was interrupted/killed, like in a context.revert(), don't force an updateAll()
32004    };
32005
32006    vars.onComplete = function () {
32007      getTween.tween = 0;
32008      onComplete && onComplete.call(tween);
32009    };
32010
32011    tween = getTween.tween = gsap.to(scroller, vars);
32012    return tween;
32013  };
32014
32015  scroller[prop] = getScroll;
32016
32017  getScroll.wheelHandler = function () {
32018    return getTween.tween && getTween.tween.kill() && (getTween.tween = 0);
32019  };
32020
32021  _addListener(scroller, "wheel", getScroll.wheelHandler); // Windows machines handle mousewheel scrolling in chunks (like "3 lines per scroll") meaning the typical strategy for cancelling the scroll isn't as sensitive. It's much more likely to match one of the previous 2 scroll event positions. So we kill any snapping as soon as there's a wheel event.
32022
32023
32024  ScrollTrigger.isTouch && _addListener(scroller, "touchmove", getScroll.wheelHandler);
32025  return getTween;
32026};
32027
32028var ScrollTrigger = /*#__PURE__*/function () {
32029  function ScrollTrigger(vars, animation) {
32030    _coreInitted || ScrollTrigger.register(gsap) || console.warn("Please gsap.registerPlugin(ScrollTrigger)");
32031
32032    _context(this);
32033
32034    this.init(vars, animation);
32035  }
32036
32037  var _proto = ScrollTrigger.prototype;
32038
32039  _proto.init = function init(vars, animation) {
32040    this.progress = this.start = 0;
32041    this.vars && this.kill(true, true); // in case it's being initted again
32042
32043    if (!_enabled) {
32044      this.update = this.refresh = this.kill = _passThrough;
32045      return;
32046    }
32047
32048    vars = _setDefaults(_isString(vars) || _isNumber(vars) || vars.nodeType ? {
32049      trigger: vars
32050    } : vars, _defaults);
32051
32052    var _vars = vars,
32053        onUpdate = _vars.onUpdate,
32054        toggleClass = _vars.toggleClass,
32055        id = _vars.id,
32056        onToggle = _vars.onToggle,
32057        onRefresh = _vars.onRefresh,
32058        scrub = _vars.scrub,
32059        trigger = _vars.trigger,
32060        pin = _vars.pin,
32061        pinSpacing = _vars.pinSpacing,
32062        invalidateOnRefresh = _vars.invalidateOnRefresh,
32063        anticipatePin = _vars.anticipatePin,
32064        onScrubComplete = _vars.onScrubComplete,
32065        onSnapComplete = _vars.onSnapComplete,
32066        once = _vars.once,
32067        snap = _vars.snap,
32068        pinReparent = _vars.pinReparent,
32069        pinSpacer = _vars.pinSpacer,
32070        containerAnimation = _vars.containerAnimation,
32071        fastScrollEnd = _vars.fastScrollEnd,
32072        preventOverlaps = _vars.preventOverlaps,
32073        direction = vars.horizontal || vars.containerAnimation && vars.horizontal !== false ? _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal : _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical,
32074        isToggle = !scrub && scrub !== 0,
32075        scroller = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(vars.scroller || _win),
32076        scrollerCache = gsap.core.getCache(scroller),
32077        isViewport = _isViewport(scroller),
32078        useFixedPosition = ("pinType" in vars ? vars.pinType : (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getProxyProp)(scroller, "pinType") || isViewport && "fixed") === "fixed",
32079        callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack],
32080        toggleActions = isToggle && vars.toggleActions.split(" "),
32081        markers = "markers" in vars ? vars.markers : _defaults.markers,
32082        borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)["border" + direction.p2 + _Width]) || 0,
32083        self = this,
32084        onRefreshInit = vars.onRefreshInit && function () {
32085      return vars.onRefreshInit(self);
32086    },
32087        getScrollerSize = _getSizeFunc(scroller, isViewport, direction),
32088        getScrollerOffsets = _getOffsetsFunc(scroller, isViewport),
32089        lastSnap = 0,
32090        lastRefresh = 0,
32091        prevProgress = 0,
32092        scrollFunc = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getScrollFunc)(scroller, direction),
32093        tweenTo,
32094        pinCache,
32095        snapFunc,
32096        scroll1,
32097        scroll2,
32098        start,
32099        end,
32100        markerStart,
32101        markerEnd,
32102        markerStartTrigger,
32103        markerEndTrigger,
32104        markerVars,
32105        executingOnRefresh,
32106        change,
32107        pinOriginalState,
32108        pinActiveState,
32109        pinState,
32110        spacer,
32111        offset,
32112        pinGetter,
32113        pinSetter,
32114        pinStart,
32115        pinChange,
32116        spacingStart,
32117        spacerState,
32118        markerStartSetter,
32119        pinMoves,
32120        markerEndSetter,
32121        cs,
32122        snap1,
32123        snap2,
32124        scrubTween,
32125        scrubSmooth,
32126        snapDurClamp,
32127        snapDelayedCall,
32128        prevScroll,
32129        prevAnimProgress,
32130        caMarkerSetter,
32131        customRevertReturn; // for the sake of efficiency, _startClamp/_endClamp serve like a truthy value indicating that clamping was enabled on the start/end, and ALSO store the actual pre-clamped numeric value. We tap into that in ScrollSmoother for speed effects. So for example, if start="clamp(top bottom)" results in a start of -100 naturally, it would get clamped to 0 but -100 would be stored in _startClamp.
32132
32133
32134    self._startClamp = self._endClamp = false;
32135    self._dir = direction;
32136    anticipatePin *= 45;
32137    self.scroller = scroller;
32138    self.scroll = containerAnimation ? containerAnimation.time.bind(containerAnimation) : scrollFunc;
32139    scroll1 = scrollFunc();
32140    self.vars = vars;
32141    animation = animation || vars.animation;
32142
32143    if ("refreshPriority" in vars) {
32144      _sort = 1;
32145      vars.refreshPriority === -9999 && (_primary = self); // used by ScrollSmoother
32146    }
32147
32148    scrollerCache.tweenScroll = scrollerCache.tweenScroll || {
32149      top: _getTweenCreator(scroller, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical),
32150      left: _getTweenCreator(scroller, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal)
32151    };
32152    self.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];
32153
32154    self.scrubDuration = function (value) {
32155      scrubSmooth = _isNumber(value) && value;
32156
32157      if (!scrubSmooth) {
32158        scrubTween && scrubTween.progress(1).kill();
32159        scrubTween = 0;
32160      } else {
32161        scrubTween ? scrubTween.duration(value) : scrubTween = gsap.to(animation, {
32162          ease: "expo",
32163          totalProgress: "+=0",
32164          inherit: false,
32165          duration: scrubSmooth,
32166          paused: true,
32167          onComplete: function onComplete() {
32168            return onScrubComplete && onScrubComplete(self);
32169          }
32170        });
32171      }
32172    };
32173
32174    if (animation) {
32175      animation.vars.lazy = false;
32176      animation._initted && !self.isReverted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.duration() && animation.render(0, true, true); // special case: if this ScrollTrigger gets re-initted, a from() tween with a stagger could get initted initially and then reverted on the re-init which means it'll need to get rendered again here to properly display things. Otherwise, See https://gsap.com/forums/topic/36777-scrollsmoother-splittext-nextjs/ and https://codepen.io/GreenSock/pen/eYPyPpd?editors=0010
32177
32178      self.animation = animation.pause();
32179      animation.scrollTrigger = self;
32180      self.scrubDuration(scrub);
32181      snap1 = 0;
32182      id || (id = animation.vars.id);
32183    }
32184
32185    if (snap) {
32186      // TODO: potential idea: use legitimate CSS scroll snapping by pushing invisible elements into the DOM that serve as snap positions, and toggle the document.scrollingElement.style.scrollSnapType onToggle. See https://codepen.io/GreenSock/pen/JjLrgWM for a quick proof of concept.
32187      if (!_isObject(snap) || snap.push) {
32188        snap = {
32189          snapTo: snap
32190        };
32191      }
32192
32193      "scrollBehavior" in _body.style && gsap.set(isViewport ? [_body, _docEl] : scroller, {
32194        scrollBehavior: "auto"
32195      }); // smooth scrolling doesn't work with snap.
32196
32197      _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.forEach(function (o) {
32198        return _isFunction(o) && o.target === (isViewport ? _doc.scrollingElement || _docEl : scroller) && (o.smooth = false);
32199      }); // note: set smooth to false on both the vertical and horizontal scroll getters/setters
32200
32201
32202      snapFunc = _isFunction(snap.snapTo) ? snap.snapTo : snap.snapTo === "labels" ? _getClosestLabel(animation) : snap.snapTo === "labelsDirectional" ? _getLabelAtDirection(animation) : snap.directional !== false ? function (value, st) {
32203        return _snapDirectional(snap.snapTo)(value, _getTime() - lastRefresh < 500 ? 0 : st.direction);
32204      } : gsap.utils.snap(snap.snapTo);
32205      snapDurClamp = snap.duration || {
32206        min: 0.1,
32207        max: 2
32208      };
32209      snapDurClamp = _isObject(snapDurClamp) ? _clamp(snapDurClamp.min, snapDurClamp.max) : _clamp(snapDurClamp, snapDurClamp);
32210      snapDelayedCall = gsap.delayedCall(snap.delay || scrubSmooth / 2 || 0.1, function () {
32211        var scroll = scrollFunc(),
32212            refreshedRecently = _getTime() - lastRefresh < 500,
32213            tween = tweenTo.tween;
32214
32215        if ((refreshedRecently || Math.abs(self.getVelocity()) < 10) && !tween && !_pointerIsDown && lastSnap !== scroll) {
32216          var progress = (scroll - start) / change,
32217              totalProgress = animation && !isToggle ? animation.totalProgress() : progress,
32218              velocity = refreshedRecently ? 0 : (totalProgress - snap2) / (_getTime() - _time2) * 1000 || 0,
32219              change1 = gsap.utils.clamp(-progress, 1 - progress, _abs(velocity / 2) * velocity / 0.185),
32220              naturalEnd = progress + (snap.inertia === false ? 0 : change1),
32221              endValue,
32222              endScroll,
32223              _snap = snap,
32224              onStart = _snap.onStart,
32225              _onInterrupt = _snap.onInterrupt,
32226              _onComplete = _snap.onComplete;
32227          endValue = snapFunc(naturalEnd, self);
32228          _isNumber(endValue) || (endValue = naturalEnd); // in case the function didn't return a number, fall back to using the naturalEnd
32229
32230          endScroll = Math.round(start + endValue * change);
32231
32232          if (scroll <= end && scroll >= start && endScroll !== scroll) {
32233            if (tween && !tween._initted && tween.data <= _abs(endScroll - scroll)) {
32234              // there's an overlapping snap! So we must figure out which one is closer and let that tween live.
32235              return;
32236            }
32237
32238            if (snap.inertia === false) {
32239              change1 = endValue - progress;
32240            }
32241
32242            tweenTo(endScroll, {
32243              duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)),
32244              ease: snap.ease || "power3",
32245              data: _abs(endScroll - scroll),
32246              // record the distance so that if another snap tween occurs (conflict) we can prioritize the closest snap.
32247              onInterrupt: function onInterrupt() {
32248                return snapDelayedCall.restart(true) && _onInterrupt && _onInterrupt(self);
32249              },
32250              onComplete: function onComplete() {
32251                self.update();
32252                lastSnap = scrollFunc();
32253
32254                if (animation) {
32255                  // the resolution of the scrollbar is limited, so we should correct the scrubbed animation's playhead at the end to match EXACTLY where it was supposed to snap
32256                  scrubTween ? scrubTween.resetTo("totalProgress", endValue, animation._tTime / animation._tDur) : animation.progress(endValue);
32257                }
32258
32259                snap1 = snap2 = animation && !isToggle ? animation.totalProgress() : self.progress;
32260                onSnapComplete && onSnapComplete(self);
32261                _onComplete && _onComplete(self);
32262              }
32263            }, scroll, change1 * change, endScroll - scroll - change1 * change);
32264            onStart && onStart(self, tweenTo.tween);
32265          }
32266        } else if (self.isActive && lastSnap !== scroll) {
32267          snapDelayedCall.restart(true);
32268        }
32269      }).pause();
32270    }
32271
32272    id && (_ids[id] = self);
32273    trigger = self.trigger = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(trigger || pin !== true && pin); // if a trigger has some kind of scroll-related effect applied that could contaminate the "y" or "x" position (like a ScrollSmoother effect), we needed a way to temporarily revert it, so we use the stRevert property of the gsCache. It can return another function that we'll call at the end so it can return to its normal state.
32274
32275    customRevertReturn = trigger && trigger._gsap && trigger._gsap.stRevert;
32276    customRevertReturn && (customRevertReturn = customRevertReturn(self));
32277    pin = pin === true ? trigger : (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(pin);
32278    _isString(toggleClass) && (toggleClass = {
32279      targets: trigger,
32280      className: toggleClass
32281    });
32282
32283    if (pin) {
32284      pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && pin.parentNode && pin.parentNode.style && _getComputedStyle(pin.parentNode).display === "flex" ? false : _padding); // if the parent is display: flex, don't apply pinSpacing by default. We should check that pin.parentNode is an element (not shadow dom window)
32285
32286      self.pin = pin;
32287      pinCache = gsap.core.getCache(pin);
32288
32289      if (!pinCache.spacer) {
32290        // record the spacer and pinOriginalState on the cache in case someone tries pinning the same element with MULTIPLE ScrollTriggers - we don't want to have multiple spacers or record the "original" pin state after it has already been affected by another ScrollTrigger.
32291        if (pinSpacer) {
32292          pinSpacer = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(pinSpacer);
32293          pinSpacer && !pinSpacer.nodeType && (pinSpacer = pinSpacer.current || pinSpacer.nativeElement); // for React & Angular
32294
32295          pinCache.spacerIsNative = !!pinSpacer;
32296          pinSpacer && (pinCache.spacerState = _getState(pinSpacer));
32297        }
32298
32299        pinCache.spacer = spacer = pinSpacer || _doc.createElement("div");
32300        spacer.classList.add("pin-spacer");
32301        id && spacer.classList.add("pin-spacer-" + id);
32302        pinCache.pinState = pinOriginalState = _getState(pin);
32303      } else {
32304        pinOriginalState = pinCache.pinState;
32305      }
32306
32307      vars.force3D !== false && gsap.set(pin, {
32308        force3D: true
32309      });
32310      self.spacer = spacer = pinCache.spacer;
32311      cs = _getComputedStyle(pin);
32312      spacingStart = cs[pinSpacing + direction.os2];
32313      pinGetter = gsap.getProperty(pin);
32314      pinSetter = gsap.quickSetter(pin, direction.a, _px); // pin.firstChild && !_maxScroll(pin, direction) && (pin.style.overflow = "hidden"); // protects from collapsing margins, but can have unintended consequences as demonstrated here: https://codepen.io/GreenSock/pen/1e42c7a73bfa409d2cf1e184e7a4248d so it was removed in favor of just telling people to set up their CSS to avoid the collapsing margins (overflow: hidden | auto is just one option. Another is border-top: 1px solid transparent).
32315
32316      _swapPinIn(pin, spacer, cs);
32317
32318      pinState = _getState(pin);
32319    }
32320
32321    if (markers) {
32322      markerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults;
32323      markerStartTrigger = _createMarker("scroller-start", id, scroller, direction, markerVars, 0);
32324      markerEndTrigger = _createMarker("scroller-end", id, scroller, direction, markerVars, 0, markerStartTrigger);
32325      offset = markerStartTrigger["offset" + direction.op.d2];
32326
32327      var content = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)((0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getProxyProp)(scroller, "content") || scroller);
32328
32329      markerStart = this.markerStart = _createMarker("start", id, content, direction, markerVars, offset, 0, containerAnimation);
32330      markerEnd = this.markerEnd = _createMarker("end", id, content, direction, markerVars, offset, 0, containerAnimation);
32331      containerAnimation && (caMarkerSetter = gsap.quickSetter([markerStart, markerEnd], direction.a, _px));
32332
32333      if (!useFixedPosition && !(_Observer_js__WEBPACK_IMPORTED_MODULE_0__._proxies.length && (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getProxyProp)(scroller, "fixedMarkers") === true)) {
32334        _makePositionable(isViewport ? _body : scroller);
32335
32336        gsap.set([markerStartTrigger, markerEndTrigger], {
32337          force3D: true
32338        });
32339        markerStartSetter = gsap.quickSetter(markerStartTrigger, direction.a, _px);
32340        markerEndSetter = gsap.quickSetter(markerEndTrigger, direction.a, _px);
32341      }
32342    }
32343
32344    if (containerAnimation) {
32345      var oldOnUpdate = containerAnimation.vars.onUpdate,
32346          oldParams = containerAnimation.vars.onUpdateParams;
32347      containerAnimation.eventCallback("onUpdate", function () {
32348        self.update(0, 0, 1);
32349        oldOnUpdate && oldOnUpdate.apply(containerAnimation, oldParams || []);
32350      });
32351    }
32352
32353    self.previous = function () {
32354      return _triggers[_triggers.indexOf(self) - 1];
32355    };
32356
32357    self.next = function () {
32358      return _triggers[_triggers.indexOf(self) + 1];
32359    };
32360
32361    self.revert = function (revert, temp) {
32362      if (!temp) {
32363        return self.kill(true);
32364      } // for compatibility with gsap.context() and gsap.matchMedia() which call revert()
32365
32366
32367      var r = revert !== false || !self.enabled,
32368          prevRefreshing = _refreshing;
32369
32370      if (r !== self.isReverted) {
32371        if (r) {
32372          prevScroll = Math.max(scrollFunc(), self.scroll.rec || 0); // record the scroll so we can revert later (repositioning/pinning things can affect scroll position). In the static refresh() method, we first record all the scroll positions as a reference.
32373
32374          prevProgress = self.progress;
32375          prevAnimProgress = animation && animation.progress();
32376        }
32377
32378        markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {
32379          return m.style.display = r ? "none" : "block";
32380        });
32381
32382        if (r) {
32383          _refreshing = self;
32384          self.update(r); // make sure the pin is back in its original position so that all the measurements are correct. do this BEFORE swapping the pin out
32385        }
32386
32387        if (pin && (!pinReparent || !self.isActive)) {
32388          if (r) {
32389            _swapPinOut(pin, spacer, pinOriginalState);
32390          } else {
32391            _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState);
32392          }
32393        }
32394
32395        r || self.update(r); // when we're restoring, the update should run AFTER swapping the pin into its pin-spacer.
32396
32397        _refreshing = prevRefreshing; // restore. We set it to true during the update() so that things fire properly in there.
32398
32399        self.isReverted = r;
32400      }
32401    };
32402
32403    self.refresh = function (soft, force, position, pinOffset) {
32404      // position is typically only defined if it's coming from setPositions() - it's a way to skip the normal parsing. pinOffset is also only from setPositions() and is mostly related to fancy stuff we need to do in ScrollSmoother with effects
32405      if ((_refreshing || !self.enabled) && !force) {
32406        return;
32407      }
32408
32409      if (pin && soft && _lastScrollTime) {
32410        _addListener(ScrollTrigger, "scrollEnd", _softRefresh);
32411
32412        return;
32413      }
32414
32415      !_refreshingAll && onRefreshInit && onRefreshInit(self);
32416      _refreshing = self;
32417
32418      if (tweenTo.tween && !position) {
32419        // we skip this if a position is passed in because typically that's from .setPositions() and it's best to allow in-progress snapping to continue.
32420        tweenTo.tween.kill();
32421        tweenTo.tween = 0;
32422      }
32423
32424      scrubTween && scrubTween.pause();
32425      invalidateOnRefresh && animation && animation.revert({
32426        kill: false
32427      }).invalidate();
32428      self.isReverted || self.revert(true, true);
32429      self._subPinOffset = false; // we'll set this to true in the sub-pins if we find any
32430
32431      var size = getScrollerSize(),
32432          scrollerBounds = getScrollerOffsets(),
32433          max = containerAnimation ? containerAnimation.duration() : _maxScroll(scroller, direction),
32434          isFirstRefresh = change <= 0.01,
32435          offset = 0,
32436          otherPinOffset = pinOffset || 0,
32437          parsedEnd = _isObject(position) ? position.end : vars.end,
32438          parsedEndTrigger = vars.endTrigger || trigger,
32439          parsedStart = _isObject(position) ? position.start : vars.start || (vars.start === 0 || !trigger ? 0 : pin ? "0 0" : "0 100%"),
32440          pinnedContainer = self.pinnedContainer = vars.pinnedContainer && (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(vars.pinnedContainer, self),
32441          triggerIndex = trigger && Math.max(0, _triggers.indexOf(self)) || 0,
32442          i = triggerIndex,
32443          cs,
32444          bounds,
32445          scroll,
32446          isVertical,
32447          override,
32448          curTrigger,
32449          curPin,
32450          oppositeScroll,
32451          initted,
32452          revertedPins,
32453          forcedOverflow,
32454          markerStartOffset,
32455          markerEndOffset;
32456
32457      if (markers && _isObject(position)) {
32458        // if we alter the start/end positions with .setPositions(), it generally feeds in absolute NUMBERS which don't convey information about where to line up the markers, so to keep it intuitive, we record how far the trigger positions shift after applying the new numbers and then offset by that much in the opposite direction. We do the same to the associated trigger markers too of course.
32459        markerStartOffset = gsap.getProperty(markerStartTrigger, direction.p);
32460        markerEndOffset = gsap.getProperty(markerEndTrigger, direction.p);
32461      }
32462
32463      while (i--) {
32464        // user might try to pin the same element more than once, so we must find any prior triggers with the same pin, revert them, and determine how long they're pinning so that we can offset things appropriately. Make sure we revert from last to first so that things "rewind" properly.
32465        curTrigger = _triggers[i];
32466        curTrigger.end || curTrigger.refresh(0, 1) || (_refreshing = self); // if it's a timeline-based trigger that hasn't been fully initialized yet because it's waiting for 1 tick, just force the refresh() here, otherwise if it contains a pin that's supposed to affect other ScrollTriggers further down the page, they won't be adjusted properly.
32467
32468        curPin = curTrigger.pin;
32469
32470        if (curPin && (curPin === trigger || curPin === pin || curPin === pinnedContainer) && !curTrigger.isReverted) {
32471          revertedPins || (revertedPins = []);
32472          revertedPins.unshift(curTrigger); // we'll revert from first to last to make sure things reach their end state properly
32473
32474          curTrigger.revert(true, true);
32475        }
32476
32477        if (curTrigger !== _triggers[i]) {
32478          // in case it got removed.
32479          triggerIndex--;
32480          i--;
32481        }
32482      }
32483
32484      _isFunction(parsedStart) && (parsedStart = parsedStart(self));
32485      parsedStart = _parseClamp(parsedStart, "start", self);
32486      start = _parsePosition(parsedStart, trigger, size, direction, scrollFunc(), markerStart, markerStartTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self._startClamp && "_startClamp") || (pin ? -0.001 : 0);
32487      _isFunction(parsedEnd) && (parsedEnd = parsedEnd(self));
32488
32489      if (_isString(parsedEnd) && !parsedEnd.indexOf("+=")) {
32490        if (~parsedEnd.indexOf(" ")) {
32491          parsedEnd = (_isString(parsedStart) ? parsedStart.split(" ")[0] : "") + parsedEnd;
32492        } else {
32493          offset = _offsetToPx(parsedEnd.substr(2), size);
32494          parsedEnd = _isString(parsedStart) ? parsedStart : (containerAnimation ? gsap.utils.mapRange(0, containerAnimation.duration(), containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, start) : start) + offset; // _parsePosition won't factor in the offset if the start is a number, so do it here.
32495
32496          parsedEndTrigger = trigger;
32497        }
32498      }
32499
32500      parsedEnd = _parseClamp(parsedEnd, "end", self);
32501      end = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? "100% 0" : max), parsedEndTrigger, size, direction, scrollFunc() + offset, markerEnd, markerEndTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self._endClamp && "_endClamp")) || -0.001;
32502      offset = 0;
32503      i = triggerIndex;
32504
32505      while (i--) {
32506        curTrigger = _triggers[i];
32507        curPin = curTrigger.pin;
32508
32509        if (curPin && curTrigger.start - curTrigger._pinPush <= start && !containerAnimation && curTrigger.end > 0) {
32510          cs = curTrigger.end - (self._startClamp ? Math.max(0, curTrigger.start) : curTrigger.start);
32511
32512          if ((curPin === trigger && curTrigger.start - curTrigger._pinPush < start || curPin === pinnedContainer) && isNaN(parsedStart)) {
32513            // numeric start values shouldn't be offset at all - treat them as absolute
32514            offset += cs * (1 - curTrigger.progress);
32515          }
32516
32517          curPin === pin && (otherPinOffset += cs);
32518        }
32519      }
32520
32521      start += offset;
32522      end += offset;
32523      self._startClamp && (self._startClamp += offset);
32524
32525      if (self._endClamp && !_refreshingAll) {
32526        self._endClamp = end || -0.001;
32527        end = Math.min(end, _maxScroll(scroller, direction));
32528      }
32529
32530      change = end - start || (start -= 0.01) && 0.001;
32531
32532      if (isFirstRefresh) {
32533        // on the very first refresh(), the prevProgress couldn't have been accurate yet because the start/end were never calculated, so we set it here. Before 3.11.5, it could lead to an inaccurate scroll position restoration with snapping.
32534        prevProgress = gsap.utils.clamp(0, 1, gsap.utils.normalize(start, end, prevScroll));
32535      }
32536
32537      self._pinPush = otherPinOffset;
32538
32539      if (markerStart && offset) {
32540        // offset the markers if necessary
32541        cs = {};
32542        cs[direction.a] = "+=" + offset;
32543        pinnedContainer && (cs[direction.p] = "-=" + scrollFunc());
32544        gsap.set([markerStart, markerEnd], cs);
32545      }
32546
32547      if (pin && !(_clampingMax && self.end >= _maxScroll(scroller, direction))) {
32548        cs = _getComputedStyle(pin);
32549        isVertical = direction === _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical;
32550        scroll = scrollFunc(); // recalculate because the triggers can affect the scroll
32551
32552        pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset;
32553
32554        if (!max && end > 1) {
32555          // makes sure the scroller has a scrollbar, otherwise if something has width: 100%, for example, it would be too big (exclude the scrollbar). See https://gsap.com/forums/topic/25182-scrolltrigger-width-of-page-increase-where-markers-are-set-to-false/
32556          forcedOverflow = (isViewport ? _doc.scrollingElement || _docEl : scroller).style;
32557          forcedOverflow = {
32558            style: forcedOverflow,
32559            value: forcedOverflow["overflow" + direction.a.toUpperCase()]
32560          };
32561
32562          if (isViewport && _getComputedStyle(_body)["overflow" + direction.a.toUpperCase()] !== "scroll") {
32563            // avoid an extra scrollbar if BOTH <html> and <body> have overflow set to "scroll"
32564            forcedOverflow.style["overflow" + direction.a.toUpperCase()] = "scroll";
32565          }
32566        }
32567
32568        _swapPinIn(pin, spacer, cs);
32569
32570        pinState = _getState(pin); // transforms will interfere with the top/left/right/bottom placement, so remove them temporarily. getBoundingClientRect() factors in transforms.
32571
32572        bounds = _getBounds(pin, true);
32573        oppositeScroll = useFixedPosition && (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getScrollFunc)(scroller, isVertical ? _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal : _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical)();
32574
32575        if (pinSpacing) {
32576          spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px];
32577          spacerState.t = spacer;
32578          i = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0;
32579
32580          if (i) {
32581            spacerState.push(direction.d, i + _px); // for box-sizing: border-box (must include padding).
32582
32583            spacer.style.flexBasis !== "auto" && (spacer.style.flexBasis = i + _px);
32584          }
32585
32586          _setState(spacerState);
32587
32588          if (pinnedContainer) {
32589            // in ScrollTrigger.refresh(), we need to re-evaluate the pinContainer's size because this pinSpacing may stretch it out, but we can't just add the exact distance because depending on layout, it may not push things down or it may only do so partially.
32590            _triggers.forEach(function (t) {
32591              if (t.pin === pinnedContainer && t.vars.pinSpacing !== false) {
32592                t._subPinOffset = true;
32593              }
32594            });
32595          }
32596
32597          useFixedPosition && scrollFunc(prevScroll);
32598        } else {
32599          i = _getSize(pin, direction);
32600          i && spacer.style.flexBasis !== "auto" && (spacer.style.flexBasis = i + _px);
32601        }
32602
32603        if (useFixedPosition) {
32604          override = {
32605            top: bounds.top + (isVertical ? scroll - start : oppositeScroll) + _px,
32606            left: bounds.left + (isVertical ? oppositeScroll : scroll - start) + _px,
32607            boxSizing: "border-box",
32608            position: "fixed"
32609          };
32610          override[_width] = override["max" + _Width] = Math.ceil(bounds.width) + _px;
32611          override[_height] = override["max" + _Height] = Math.ceil(bounds.height) + _px;
32612          override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = "0";
32613          override[_padding] = cs[_padding];
32614          override[_padding + _Top] = cs[_padding + _Top];
32615          override[_padding + _Right] = cs[_padding + _Right];
32616          override[_padding + _Bottom] = cs[_padding + _Bottom];
32617          override[_padding + _Left] = cs[_padding + _Left];
32618          pinActiveState = _copyState(pinOriginalState, override, pinReparent);
32619          _refreshingAll && scrollFunc(0);
32620        }
32621
32622        if (animation) {
32623          // the animation might be affecting the transform, so we must jump to the end, check the value, and compensate accordingly. Otherwise, when it becomes unpinned, the pinSetter() will get set to a value that doesn't include whatever the animation did.
32624          initted = animation._initted; // if not, we must invalidate() after this step, otherwise it could lock in starting values prematurely.
32625
32626          _suppressOverwrites(1);
32627
32628          animation.render(animation.duration(), true, true);
32629          pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset;
32630          pinMoves = Math.abs(change - pinChange) > 1;
32631          useFixedPosition && pinMoves && pinActiveState.splice(pinActiveState.length - 2, 2); // transform is the last property/value set in the state Array. Since the animation is controlling that, we should omit it.
32632
32633          animation.render(0, true, true);
32634          initted || animation.invalidate(true);
32635          animation.parent || animation.totalTime(animation.totalTime()); // if, for example, a toggleAction called play() and then refresh() happens and when we render(1) above, it would cause the animation to complete and get removed from its parent, so this makes sure it gets put back in.
32636
32637          _suppressOverwrites(0);
32638        } else {
32639          pinChange = change;
32640        }
32641
32642        forcedOverflow && (forcedOverflow.value ? forcedOverflow.style["overflow" + direction.a.toUpperCase()] = forcedOverflow.value : forcedOverflow.style.removeProperty("overflow-" + direction.a));
32643      } else if (trigger && scrollFunc() && !containerAnimation) {
32644        // it may be INSIDE a pinned element, so walk up the tree and look for any elements with _pinOffset to compensate because anything with pinSpacing that's already scrolled would throw off the measurements in getBoundingClientRect()
32645        bounds = trigger.parentNode;
32646
32647        while (bounds && bounds !== _body) {
32648          if (bounds._pinOffset) {
32649            start -= bounds._pinOffset;
32650            end -= bounds._pinOffset;
32651          }
32652
32653          bounds = bounds.parentNode;
32654        }
32655      }
32656
32657      revertedPins && revertedPins.forEach(function (t) {
32658        return t.revert(false, true);
32659      });
32660      self.start = start;
32661      self.end = end;
32662      scroll1 = scroll2 = _refreshingAll ? prevScroll : scrollFunc(); // reset velocity
32663
32664      if (!containerAnimation && !_refreshingAll) {
32665        scroll1 < prevScroll && scrollFunc(prevScroll);
32666        self.scroll.rec = 0;
32667      }
32668
32669      self.revert(false, true);
32670      lastRefresh = _getTime();
32671
32672      if (snapDelayedCall) {
32673        lastSnap = -1; // just so snapping gets re-enabled, clear out any recorded last value
32674        // self.isActive && scrollFunc(start + change * prevProgress); // previously this line was here to ensure that when snapping kicks in, it's from the previous progress but in some cases that's not desirable, like an all-page ScrollTrigger when new content gets added to the page, that'd totally change the progress.
32675
32676        snapDelayedCall.restart(true);
32677      }
32678
32679      _refreshing = 0;
32680      animation && isToggle && (animation._initted || prevAnimProgress) && animation.progress() !== prevAnimProgress && animation.progress(prevAnimProgress || 0, true).render(animation.time(), true, true); // must force a re-render because if saveStyles() was used on the target(s), the styles could have been wiped out during the refresh().
32681
32682      if (isFirstRefresh || prevProgress !== self.progress || containerAnimation || invalidateOnRefresh) {
32683        // ensures that the direction is set properly (when refreshing, progress is set back to 0 initially, then back again to wherever it needs to be) and that callbacks are triggered.
32684        animation && !isToggle && animation.totalProgress(containerAnimation && start < -0.001 && !prevProgress ? gsap.utils.normalize(start, end, 0) : prevProgress, true); // to avoid issues where animation callbacks like onStart aren't triggered.
32685
32686        self.progress = isFirstRefresh || (scroll1 - start) / change === prevProgress ? 0 : prevProgress;
32687      }
32688
32689      pin && pinSpacing && (spacer._pinOffset = Math.round(self.progress * pinChange));
32690      scrubTween && scrubTween.invalidate();
32691
32692      if (!isNaN(markerStartOffset)) {
32693        // numbers were passed in for the position which are absolute, so instead of just putting the markers at the very bottom of the viewport, we figure out how far they shifted down (it's safe to assume they were originally positioned in closer relation to the trigger element with values like "top", "center", a percentage or whatever, so we offset that much in the opposite direction to basically revert them to the relative position thy were at previously.
32694        markerStartOffset -= gsap.getProperty(markerStartTrigger, direction.p);
32695        markerEndOffset -= gsap.getProperty(markerEndTrigger, direction.p);
32696
32697        _shiftMarker(markerStartTrigger, direction, markerStartOffset);
32698
32699        _shiftMarker(markerStart, direction, markerStartOffset - (pinOffset || 0));
32700
32701        _shiftMarker(markerEndTrigger, direction, markerEndOffset);
32702
32703        _shiftMarker(markerEnd, direction, markerEndOffset - (pinOffset || 0));
32704      }
32705
32706      isFirstRefresh && !_refreshingAll && self.update(); // edge case - when you reload a page when it's already scrolled down, some browsers fire a "scroll" event before DOMContentLoaded, triggering an updateAll(). If we don't update the self.progress as part of refresh(), then when it happens next, it may record prevProgress as 0 when it really shouldn't, potentially causing a callback in an animation to fire again.
32707
32708      if (onRefresh && !_refreshingAll && !executingOnRefresh) {
32709        // when refreshing all, we do extra work to correct pinnedContainer sizes and ensure things don't exceed the maxScroll, so we should do all the refreshes at the end after all that work so that the start/end values are corrected.
32710        executingOnRefresh = true;
32711        onRefresh(self);
32712        executingOnRefresh = false;
32713      }
32714    };
32715
32716    self.getVelocity = function () {
32717      return (scrollFunc() - scroll2) / (_getTime() - _time2) * 1000 || 0;
32718    };
32719
32720    self.endAnimation = function () {
32721      _endAnimation(self.callbackAnimation);
32722
32723      if (animation) {
32724        scrubTween ? scrubTween.progress(1) : !animation.paused() ? _endAnimation(animation, animation.reversed()) : isToggle || _endAnimation(animation, self.direction < 0, 1);
32725      }
32726    };
32727
32728    self.labelToScroll = function (label) {
32729      return animation && animation.labels && (start || self.refresh() || start) + animation.labels[label] / animation.duration() * change || 0;
32730    };
32731
32732    self.getTrailing = function (name) {
32733      var i = _triggers.indexOf(self),
32734          a = self.direction > 0 ? _triggers.slice(0, i).reverse() : _triggers.slice(i + 1);
32735
32736      return (_isString(name) ? a.filter(function (t) {
32737        return t.vars.preventOverlaps === name;
32738      }) : a).filter(function (t) {
32739        return self.direction > 0 ? t.end <= start : t.start >= end;
32740      });
32741    };
32742
32743    self.update = function (reset, recordVelocity, forceFake) {
32744      if (containerAnimation && !forceFake && !reset) {
32745        return;
32746      }
32747
32748      var scroll = _refreshingAll === true ? prevScroll : self.scroll(),
32749          p = reset ? 0 : (scroll - start) / change,
32750          clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0,
32751          prevProgress = self.progress,
32752          isActive,
32753          wasActive,
32754          toggleState,
32755          action,
32756          stateChanged,
32757          toggled,
32758          isAtMax,
32759          isTakingAction;
32760
32761      if (recordVelocity) {
32762        scroll2 = scroll1;
32763        scroll1 = containerAnimation ? scrollFunc() : scroll;
32764
32765        if (snap) {
32766          snap2 = snap1;
32767          snap1 = animation && !isToggle ? animation.totalProgress() : clipped;
32768        }
32769      } // anticipate the pinning a few ticks ahead of time based on velocity to avoid a visual glitch due to the fact that most browsers do scrolling on a separate thread (not synced with requestAnimationFrame).
32770
32771
32772      if (anticipatePin && pin && !_refreshing && !_startup && _lastScrollTime) {
32773        if (!clipped && start < scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin) {
32774          clipped = 0.0001;
32775        } else if (clipped === 1 && end > scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin) {
32776          clipped = 0.9999;
32777        }
32778      }
32779
32780      if (clipped !== prevProgress && self.enabled) {
32781        isActive = self.isActive = !!clipped && clipped < 1;
32782        wasActive = !!prevProgress && prevProgress < 1;
32783        toggled = isActive !== wasActive;
32784        stateChanged = toggled || !!clipped !== !!prevProgress; // could go from start all the way to end, thus it didn't toggle but it did change state in a sense (may need to fire a callback)
32785
32786        self.direction = clipped > prevProgress ? 1 : -1;
32787        self.progress = clipped;
32788
32789        if (stateChanged && !_refreshing) {
32790          toggleState = clipped && !prevProgress ? 0 : clipped === 1 ? 1 : prevProgress === 1 ? 2 : 3; // 0 = enter, 1 = leave, 2 = enterBack, 3 = leaveBack (we prioritize the FIRST encounter, thus if you scroll really fast past the onEnter and onLeave in one tick, it'd prioritize onEnter.
32791
32792          if (isToggle) {
32793            action = !toggled && toggleActions[toggleState + 1] !== "none" && toggleActions[toggleState + 1] || toggleActions[toggleState]; // if it didn't toggle, that means it shot right past and since we prioritize the "enter" action, we should switch to the "leave" in this case (but only if one is defined)
32794
32795            isTakingAction = animation && (action === "complete" || action === "reset" || action in animation);
32796          }
32797        }
32798
32799        preventOverlaps && (toggled || isTakingAction) && (isTakingAction || scrub || !animation) && (_isFunction(preventOverlaps) ? preventOverlaps(self) : self.getTrailing(preventOverlaps).forEach(function (t) {
32800          return t.endAnimation();
32801        }));
32802
32803        if (!isToggle) {
32804          if (scrubTween && !_refreshing && !_startup) {
32805            scrubTween._dp._time - scrubTween._start !== scrubTween._time && scrubTween.render(scrubTween._dp._time - scrubTween._start); // if there's a scrub on both the container animation and this one (or a ScrollSmoother), the update order would cause this one not to have rendered yet, so it wouldn't make any progress before we .restart() it heading toward the new progress so it'd appear stuck thus we force a render here.
32806
32807            if (scrubTween.resetTo) {
32808              scrubTween.resetTo("totalProgress", clipped, animation._tTime / animation._tDur);
32809            } else {
32810              // legacy support (courtesy), before 3.10.0
32811              scrubTween.vars.totalProgress = clipped;
32812              scrubTween.invalidate().restart();
32813            }
32814          } else if (animation) {
32815            animation.totalProgress(clipped, !!(_refreshing && (lastRefresh || reset)));
32816          }
32817        }
32818
32819        if (pin) {
32820          reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart);
32821
32822          if (!useFixedPosition) {
32823            pinSetter(_round(pinStart + pinChange * clipped));
32824          } else if (stateChanged) {
32825            isAtMax = !reset && clipped > prevProgress && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction); // if it's at the VERY end of the page, don't switch away from position: fixed because it's pointless and it could cause a brief flash when the user scrolls back up (when it gets pinned again)
32826
32827            if (pinReparent) {
32828              if (!reset && (isActive || isAtMax)) {
32829                var bounds = _getBounds(pin, true),
32830                    _offset = scroll - start;
32831
32832                _reparent(pin, _body, bounds.top + (direction === _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical ? _offset : 0) + _px, bounds.left + (direction === _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical ? 0 : _offset) + _px);
32833              } else {
32834                _reparent(pin, spacer);
32835              }
32836            }
32837
32838            _setState(isActive || isAtMax ? pinActiveState : pinState);
32839
32840            pinMoves && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !isAtMax ? pinChange : 0));
32841          }
32842        }
32843
32844        snap && !tweenTo.tween && !_refreshing && !_startup && snapDelayedCall.restart(true);
32845        toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function (el) {
32846          return el.classList[isActive || once ? "add" : "remove"](toggleClass.className);
32847        }); // classes could affect positioning, so do it even if reset or refreshing is true.
32848
32849        onUpdate && !isToggle && !reset && onUpdate(self);
32850
32851        if (stateChanged && !_refreshing) {
32852          if (isToggle) {
32853            if (isTakingAction) {
32854              if (action === "complete") {
32855                animation.pause().totalProgress(1);
32856              } else if (action === "reset") {
32857                animation.restart(true).pause();
32858              } else if (action === "restart") {
32859                animation.restart(true);
32860              } else {
32861                animation[action]();
32862              }
32863            }
32864
32865            onUpdate && onUpdate(self);
32866          }
32867
32868          if (toggled || !_limitCallbacks) {
32869            // on startup, the page could be scrolled and we don't want to fire callbacks that didn't toggle. For example onEnter shouldn't fire if the ScrollTrigger isn't actually entered.
32870            onToggle && toggled && _callback(self, onToggle);
32871            callbacks[toggleState] && _callback(self, callbacks[toggleState]);
32872            once && (clipped === 1 ? self.kill(false, 1) : callbacks[toggleState] = 0); // a callback shouldn't be called again if once is true.
32873
32874            if (!toggled) {
32875              // it's possible to go completely past, like from before the start to after the end (or vice-versa) in which case BOTH callbacks should be fired in that order
32876              toggleState = clipped === 1 ? 1 : 3;
32877              callbacks[toggleState] && _callback(self, callbacks[toggleState]);
32878            }
32879          }
32880
32881          if (fastScrollEnd && !isActive && Math.abs(self.getVelocity()) > (_isNumber(fastScrollEnd) ? fastScrollEnd : 2500)) {
32882            _endAnimation(self.callbackAnimation);
32883
32884            scrubTween ? scrubTween.progress(1) : _endAnimation(animation, action === "reverse" ? 1 : !clipped, 1);
32885          }
32886        } else if (isToggle && onUpdate && !_refreshing) {
32887          onUpdate(self);
32888        }
32889      } // update absolutely-positioned markers (only if the scroller isn't the viewport)
32890
32891
32892      if (markerEndSetter) {
32893        var n = containerAnimation ? scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0) : scroll;
32894        markerStartSetter(n + (markerStartTrigger._isFlipped ? 1 : 0));
32895        markerEndSetter(n);
32896      }
32897
32898      caMarkerSetter && caMarkerSetter(-scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0));
32899    };
32900
32901    self.enable = function (reset, refresh) {
32902      if (!self.enabled) {
32903        self.enabled = true;
32904
32905        _addListener(scroller, "resize", _onResize);
32906
32907        isViewport || _addListener(scroller, "scroll", _onScroll);
32908        onRefreshInit && _addListener(ScrollTrigger, "refreshInit", onRefreshInit);
32909
32910        if (reset !== false) {
32911          self.progress = prevProgress = 0;
32912          scroll1 = scroll2 = lastSnap = scrollFunc();
32913        }
32914
32915        refresh !== false && self.refresh();
32916      }
32917    };
32918
32919    self.getTween = function (snap) {
32920      return snap && tweenTo ? tweenTo.tween : scrubTween;
32921    };
32922
32923    self.setPositions = function (newStart, newEnd, keepClamp, pinOffset) {
32924      // doesn't persist after refresh()! Intended to be a way to override values that were set during refresh(), like you could set it in onRefresh()
32925      if (containerAnimation) {
32926        // convert ratios into scroll positions. Remember, start/end values on ScrollTriggers that have a containerAnimation refer to the time (in seconds), NOT scroll positions.
32927        var st = containerAnimation.scrollTrigger,
32928            duration = containerAnimation.duration(),
32929            _change = st.end - st.start;
32930
32931        newStart = st.start + _change * newStart / duration;
32932        newEnd = st.start + _change * newEnd / duration;
32933      }
32934
32935      self.refresh(false, false, {
32936        start: _keepClamp(newStart, keepClamp && !!self._startClamp),
32937        end: _keepClamp(newEnd, keepClamp && !!self._endClamp)
32938      }, pinOffset);
32939      self.update();
32940    };
32941
32942    self.adjustPinSpacing = function (amount) {
32943      if (spacerState && amount) {
32944        var i = spacerState.indexOf(direction.d) + 1;
32945        spacerState[i] = parseFloat(spacerState[i]) + amount + _px;
32946        spacerState[1] = parseFloat(spacerState[1]) + amount + _px;
32947
32948        _setState(spacerState);
32949      }
32950    };
32951
32952    self.disable = function (reset, allowAnimation) {
32953      if (self.enabled) {
32954        reset !== false && self.revert(true, true);
32955        self.enabled = self.isActive = false;
32956        allowAnimation || scrubTween && scrubTween.pause();
32957        prevScroll = 0;
32958        pinCache && (pinCache.uncache = 1);
32959        onRefreshInit && _removeListener(ScrollTrigger, "refreshInit", onRefreshInit);
32960
32961        if (snapDelayedCall) {
32962          snapDelayedCall.pause();
32963          tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0);
32964        }
32965
32966        if (!isViewport) {
32967          var i = _triggers.length;
32968
32969          while (i--) {
32970            if (_triggers[i].scroller === scroller && _triggers[i] !== self) {
32971              return; //don't remove the listeners if there are still other triggers referencing it.
32972            }
32973          }
32974
32975          _removeListener(scroller, "resize", _onResize);
32976
32977          isViewport || _removeListener(scroller, "scroll", _onScroll);
32978        }
32979      }
32980    };
32981
32982    self.kill = function (revert, allowAnimation) {
32983      self.disable(revert, allowAnimation);
32984      scrubTween && !allowAnimation && scrubTween.kill();
32985      id && delete _ids[id];
32986
32987      var i = _triggers.indexOf(self);
32988
32989      i >= 0 && _triggers.splice(i, 1);
32990      i === _i && _direction > 0 && _i--; // if we're in the middle of a refresh() or update(), splicing would cause skips in the index, so adjust...
32991      // if no other ScrollTrigger instances of the same scroller are found, wipe out any recorded scroll position. Otherwise, in a single page application, for example, it could maintain scroll position when it really shouldn't.
32992
32993      i = 0;
32994
32995      _triggers.forEach(function (t) {
32996        return t.scroller === self.scroller && (i = 1);
32997      });
32998
32999      i || _refreshingAll || (self.scroll.rec = 0);
33000
33001      if (animation) {
33002        animation.scrollTrigger = null;
33003        revert && animation.revert({
33004          kill: false
33005        });
33006        allowAnimation || animation.kill();
33007      }
33008
33009      markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {
33010        return m.parentNode && m.parentNode.removeChild(m);
33011      });
33012      _primary === self && (_primary = 0);
33013
33014      if (pin) {
33015        pinCache && (pinCache.uncache = 1);
33016        i = 0;
33017
33018        _triggers.forEach(function (t) {
33019          return t.pin === pin && i++;
33020        });
33021
33022        i || (pinCache.spacer = 0); // if there aren't any more ScrollTriggers with the same pin, remove the spacer, otherwise it could be contaminated with old/stale values if the user re-creates a ScrollTrigger for the same element.
33023      }
33024
33025      vars.onKill && vars.onKill(self);
33026    };
33027
33028    _triggers.push(self);
33029
33030    self.enable(false, false);
33031    customRevertReturn && customRevertReturn(self);
33032
33033    if (animation && animation.add && !change) {
33034      // if the animation is a timeline, it may not have been populated yet, so it wouldn't render at the proper place on the first refresh(), thus we should schedule one for the next tick. If "change" is defined, we know it must be re-enabling, thus we can refresh() right away.
33035      var updateFunc = self.update; // some browsers may fire a scroll event BEFORE a tick elapses and/or the DOMContentLoaded fires. So there's a chance update() will be called BEFORE a refresh() has happened on a Timeline-attached ScrollTrigger which means the start/end won't be calculated yet. We don't want to add conditional logic inside the update() method (like check to see if end is defined and if not, force a refresh()) because that's a function that gets hit a LOT (performance). So we swap out the real update() method for this one that'll re-attach it the first time it gets called and of course forces a refresh().
33036
33037      self.update = function () {
33038        self.update = updateFunc;
33039        start || end || self.refresh();
33040      };
33041
33042      gsap.delayedCall(0.01, self.update);
33043      change = 0.01;
33044      start = end = 0;
33045    } else {
33046      self.refresh();
33047    }
33048
33049    pin && _queueRefreshAll(); // pinning could affect the positions of other things, so make sure we queue a full refresh()
33050  };
33051
33052  ScrollTrigger.register = function register(core) {
33053    if (!_coreInitted) {
33054      gsap = core || _getGSAP();
33055      _windowExists() && window.document && ScrollTrigger.enable();
33056      _coreInitted = _enabled;
33057    }
33058
33059    return _coreInitted;
33060  };
33061
33062  ScrollTrigger.defaults = function defaults(config) {
33063    if (config) {
33064      for (var p in config) {
33065        _defaults[p] = config[p];
33066      }
33067    }
33068
33069    return _defaults;
33070  };
33071
33072  ScrollTrigger.disable = function disable(reset, kill) {
33073    _enabled = 0;
33074
33075    _triggers.forEach(function (trigger) {
33076      return trigger[kill ? "kill" : "disable"](reset);
33077    });
33078
33079    _removeListener(_win, "wheel", _onScroll);
33080
33081    _removeListener(_doc, "scroll", _onScroll);
33082
33083    clearInterval(_syncInterval);
33084
33085    _removeListener(_doc, "touchcancel", _passThrough);
33086
33087    _removeListener(_body, "touchstart", _passThrough);
33088
33089    _multiListener(_removeListener, _doc, "pointerdown,touchstart,mousedown", _pointerDownHandler);
33090
33091    _multiListener(_removeListener, _doc, "pointerup,touchend,mouseup", _pointerUpHandler);
33092
33093    _resizeDelay.kill();
33094
33095    _iterateAutoRefresh(_removeListener);
33096
33097    for (var i = 0; i < _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.length; i += 3) {
33098      _wheelListener(_removeListener, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i], _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i + 1]);
33099
33100      _wheelListener(_removeListener, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i], _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i + 2]);
33101    }
33102  };
33103
33104  ScrollTrigger.enable = function enable() {
33105    _win = window;
33106    _doc = document;
33107    _docEl = _doc.documentElement;
33108    _body = _doc.body;
33109
33110    if (gsap) {
33111      _toArray = gsap.utils.toArray;
33112      _clamp = gsap.utils.clamp;
33113      _context = gsap.core.context || _passThrough;
33114      _suppressOverwrites = gsap.core.suppressOverwrites || _passThrough;
33115      _scrollRestoration = _win.history.scrollRestoration || "auto";
33116      _lastScroll = _win.pageYOffset;
33117      gsap.core.globals("ScrollTrigger", ScrollTrigger); // must register the global manually because in Internet Explorer, functions (classes) don't have a "name" property.
33118
33119      if (_body) {
33120        _enabled = 1;
33121        _div100vh = document.createElement("div"); // to solve mobile browser address bar show/hide resizing, we shouldn't rely on window.innerHeight. Instead, use a <div> with its height set to 100vh and measure that since that's what the scrolling is based on anyway and it's not affected by address bar showing/hiding.
33122
33123        _div100vh.style.height = "100vh";
33124        _div100vh.style.position = "absolute";
33125
33126        _refresh100vh();
33127
33128        _rafBugFix();
33129
33130        _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.register(gsap); // isTouch is 0 if no touch, 1 if ONLY touch, and 2 if it can accommodate touch but also other types like mouse/pointer.
33131
33132        ScrollTrigger.isTouch = _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.isTouch;
33133        _fixIOSBug = _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.isTouch && /(iPad|iPhone|iPod|Mac)/g.test(navigator.userAgent); // since 2017, iOS has had a bug that causes event.clientX/Y to be inaccurate when a scroll occurs, thus we must alternate ignoring every other touchmove event to work around it. See https://bugs.webkit.org/show_bug.cgi?id=181954 and https://codepen.io/GreenSock/pen/ExbrPNa/087cef197dc35445a0951e8935c41503
33134
33135        _ignoreMobileResize = _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.isTouch === 1;
33136
33137        _addListener(_win, "wheel", _onScroll); // mostly for 3rd party smooth scrolling libraries.
33138
33139
33140        _root = [_win, _doc, _docEl, _body];
33141
33142        if (gsap.matchMedia) {
33143          ScrollTrigger.matchMedia = function (vars) {
33144            var mm = gsap.matchMedia(),
33145                p;
33146
33147            for (p in vars) {
33148              mm.add(p, vars[p]);
33149            }
33150
33151            return mm;
33152          };
33153
33154          gsap.addEventListener("matchMediaInit", function () {
33155            return _revertAll();
33156          });
33157          gsap.addEventListener("matchMediaRevert", function () {
33158            return _revertRecorded();
33159          });
33160          gsap.addEventListener("matchMedia", function () {
33161            _refreshAll(0, 1);
33162
33163            _dispatch("matchMedia");
33164          });
33165          gsap.matchMedia("(orientation: portrait)", function () {
33166            // when orientation changes, we should take new base measurements for the ignoreMobileResize feature.
33167            _setBaseDimensions();
33168
33169            return _setBaseDimensions;
33170          });
33171        } else {
33172          console.warn("Requires GSAP 3.11.0 or later");
33173        }
33174
33175        _setBaseDimensions();
33176
33177        _addListener(_doc, "scroll", _onScroll); // some browsers (like Chrome), the window stops dispatching scroll events on the window if you scroll really fast, but it's consistent on the document!
33178
33179
33180        var bodyStyle = _body.style,
33181            border = bodyStyle.borderTopStyle,
33182            AnimationProto = gsap.core.Animation.prototype,
33183            bounds,
33184            i;
33185        AnimationProto.revert || Object.defineProperty(AnimationProto, "revert", {
33186          value: function value() {
33187            return this.time(-0.01, true);
33188          }
33189        }); // only for backwards compatibility (Animation.revert() was added after 3.10.4)
33190
33191        bodyStyle.borderTopStyle = "solid"; // works around an issue where a margin of a child element could throw off the bounds of the _body, making it seem like there's a margin when there actually isn't. The border ensures that the bounds are accurate.
33192
33193        bounds = _getBounds(_body);
33194        _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical.m = Math.round(bounds.top + _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical.sc()) || 0; // accommodate the offset of the <body> caused by margins and/or padding
33195
33196        _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal.m = Math.round(bounds.left + _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal.sc()) || 0;
33197        border ? bodyStyle.borderTopStyle = border : bodyStyle.removeProperty("border-top-style"); // TODO: (?) maybe move to leveraging the velocity mechanism in Observer and skip intervals.
33198
33199        _syncInterval = setInterval(_sync, 250);
33200        gsap.delayedCall(0.5, function () {
33201          return _startup = 0;
33202        });
33203
33204        _addListener(_doc, "touchcancel", _passThrough); // some older Android devices intermittently stop dispatching "touchmove" events if we don't listen for "touchcancel" on the document.
33205
33206
33207        _addListener(_body, "touchstart", _passThrough); //works around Safari bug: https://gsap.com/forums/topic/21450-draggable-in-iframe-on-mobile-is-buggy/
33208
33209
33210        _multiListener(_addListener, _doc, "pointerdown,touchstart,mousedown", _pointerDownHandler);
33211
33212        _multiListener(_addListener, _doc, "pointerup,touchend,mouseup", _pointerUpHandler);
33213
33214        _transformProp = gsap.utils.checkPrefix("transform");
33215
33216        _stateProps.push(_transformProp);
33217
33218        _coreInitted = _getTime();
33219        _resizeDelay = gsap.delayedCall(0.2, _refreshAll).pause();
33220        _autoRefresh = [_doc, "visibilitychange", function () {
33221          var w = _win.innerWidth,
33222              h = _win.innerHeight;
33223
33224          if (_doc.hidden) {
33225            _prevWidth = w;
33226            _prevHeight = h;
33227          } else if (_prevWidth !== w || _prevHeight !== h) {
33228            _onResize();
33229          }
33230        }, _doc, "DOMContentLoaded", _refreshAll, _win, "load", _refreshAll, _win, "resize", _onResize];
33231
33232        _iterateAutoRefresh(_addListener);
33233
33234        _triggers.forEach(function (trigger) {
33235          return trigger.enable(0, 1);
33236        });
33237
33238        for (i = 0; i < _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.length; i += 3) {
33239          _wheelListener(_removeListener, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i], _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i + 1]);
33240
33241          _wheelListener(_removeListener, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i], _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers[i + 2]);
33242        }
33243      }
33244    }
33245  };
33246
33247  ScrollTrigger.config = function config(vars) {
33248    "limitCallbacks" in vars && (_limitCallbacks = !!vars.limitCallbacks);
33249    var ms = vars.syncInterval;
33250    ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms);
33251    "ignoreMobileResize" in vars && (_ignoreMobileResize = ScrollTrigger.isTouch === 1 && vars.ignoreMobileResize);
33252
33253    if ("autoRefreshEvents" in vars) {
33254      _iterateAutoRefresh(_removeListener) || _iterateAutoRefresh(_addListener, vars.autoRefreshEvents || "none");
33255      _ignoreResize = (vars.autoRefreshEvents + "").indexOf("resize") === -1;
33256    }
33257  };
33258
33259  ScrollTrigger.scrollerProxy = function scrollerProxy(target, vars) {
33260    var t = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(target),
33261        i = _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.indexOf(t),
33262        isViewport = _isViewport(t);
33263
33264    if (~i) {
33265      _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.splice(i, isViewport ? 6 : 2);
33266    }
33267
33268    if (vars) {
33269      isViewport ? _Observer_js__WEBPACK_IMPORTED_MODULE_0__._proxies.unshift(_win, vars, _body, vars, _docEl, vars) : _Observer_js__WEBPACK_IMPORTED_MODULE_0__._proxies.unshift(t, vars);
33270    }
33271  };
33272
33273  ScrollTrigger.clearMatchMedia = function clearMatchMedia(query) {
33274    _triggers.forEach(function (t) {
33275      return t._ctx && t._ctx.query === query && t._ctx.kill(true, true);
33276    });
33277  };
33278
33279  ScrollTrigger.isInViewport = function isInViewport(element, ratio, horizontal) {
33280    var bounds = (_isString(element) ? (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(element) : element).getBoundingClientRect(),
33281        offset = bounds[horizontal ? _width : _height] * ratio || 0;
33282    return horizontal ? bounds.right - offset > 0 && bounds.left + offset < _win.innerWidth : bounds.bottom - offset > 0 && bounds.top + offset < _win.innerHeight;
33283  };
33284
33285  ScrollTrigger.positionInViewport = function positionInViewport(element, referencePoint, horizontal) {
33286    _isString(element) && (element = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(element));
33287    var bounds = element.getBoundingClientRect(),
33288        size = bounds[horizontal ? _width : _height],
33289        offset = referencePoint == null ? size / 2 : referencePoint in _keywords ? _keywords[referencePoint] * size : ~referencePoint.indexOf("%") ? parseFloat(referencePoint) * size / 100 : parseFloat(referencePoint) || 0;
33290    return horizontal ? (bounds.left + offset) / _win.innerWidth : (bounds.top + offset) / _win.innerHeight;
33291  };
33292
33293  ScrollTrigger.killAll = function killAll(allowListeners) {
33294    _triggers.slice(0).forEach(function (t) {
33295      return t.vars.id !== "ScrollSmoother" && t.kill();
33296    });
33297
33298    if (allowListeners !== true) {
33299      var listeners = _listeners.killAll || [];
33300      _listeners = {};
33301      listeners.forEach(function (f) {
33302        return f();
33303      });
33304    }
33305  };
33306
33307  return ScrollTrigger;
33308}();
33309ScrollTrigger.version = "3.12.5";
33310
33311ScrollTrigger.saveStyles = function (targets) {
33312  return targets ? _toArray(targets).forEach(function (target) {
33313    // saved styles are recorded in a consecutive alternating Array, like [element, cssText, transform attribute, cache, matchMedia, ...]
33314    if (target && target.style) {
33315      var i = _savedStyles.indexOf(target);
33316
33317      i >= 0 && _savedStyles.splice(i, 5);
33318
33319      _savedStyles.push(target, target.style.cssText, target.getBBox && target.getAttribute("transform"), gsap.core.getCache(target), _context());
33320    }
33321  }) : _savedStyles;
33322};
33323
33324ScrollTrigger.revert = function (soft, media) {
33325  return _revertAll(!soft, media);
33326};
33327
33328ScrollTrigger.create = function (vars, animation) {
33329  return new ScrollTrigger(vars, animation);
33330};
33331
33332ScrollTrigger.refresh = function (safe) {
33333  return safe ? _onResize() : (_coreInitted || ScrollTrigger.register()) && _refreshAll(true);
33334};
33335
33336ScrollTrigger.update = function (force) {
33337  return ++_Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.cache && _updateAll(force === true ? 2 : 0);
33338};
33339
33340ScrollTrigger.clearScrollMemory = _clearScrollMemory;
33341
33342ScrollTrigger.maxScroll = function (element, horizontal) {
33343  return _maxScroll(element, horizontal ? _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal : _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical);
33344};
33345
33346ScrollTrigger.getScrollFunc = function (element, horizontal) {
33347  return (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getScrollFunc)((0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(element), horizontal ? _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal : _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical);
33348};
33349
33350ScrollTrigger.getById = function (id) {
33351  return _ids[id];
33352};
33353
33354ScrollTrigger.getAll = function () {
33355  return _triggers.filter(function (t) {
33356    return t.vars.id !== "ScrollSmoother";
33357  });
33358}; // it's common for people to ScrollTrigger.getAll(t => t.kill()) on page routes, for example, and we don't want it to ruin smooth scrolling by killing the main ScrollSmoother one.
33359
33360
33361ScrollTrigger.isScrolling = function () {
33362  return !!_lastScrollTime;
33363};
33364
33365ScrollTrigger.snapDirectional = _snapDirectional;
33366
33367ScrollTrigger.addEventListener = function (type, callback) {
33368  var a = _listeners[type] || (_listeners[type] = []);
33369  ~a.indexOf(callback) || a.push(callback);
33370};
33371
33372ScrollTrigger.removeEventListener = function (type, callback) {
33373  var a = _listeners[type],
33374      i = a && a.indexOf(callback);
33375  i >= 0 && a.splice(i, 1);
33376};
33377
33378ScrollTrigger.batch = function (targets, vars) {
33379  var result = [],
33380      varsCopy = {},
33381      interval = vars.interval || 0.016,
33382      batchMax = vars.batchMax || 1e9,
33383      proxyCallback = function proxyCallback(type, callback) {
33384    var elements = [],
33385        triggers = [],
33386        delay = gsap.delayedCall(interval, function () {
33387      callback(elements, triggers);
33388      elements = [];
33389      triggers = [];
33390    }).pause();
33391    return function (self) {
33392      elements.length || delay.restart(true);
33393      elements.push(self.trigger);
33394      triggers.push(self);
33395      batchMax <= elements.length && delay.progress(1);
33396    };
33397  },
33398      p;
33399
33400  for (p in vars) {
33401    varsCopy[p] = p.substr(0, 2) === "on" && _isFunction(vars[p]) && p !== "onRefreshInit" ? proxyCallback(p, vars[p]) : vars[p];
33402  }
33403
33404  if (_isFunction(batchMax)) {
33405    batchMax = batchMax();
33406
33407    _addListener(ScrollTrigger, "refresh", function () {
33408      return batchMax = vars.batchMax();
33409    });
33410  }
33411
33412  _toArray(targets).forEach(function (target) {
33413    var config = {};
33414
33415    for (p in varsCopy) {
33416      config[p] = varsCopy[p];
33417    }
33418
33419    config.trigger = target;
33420    result.push(ScrollTrigger.create(config));
33421  });
33422
33423  return result;
33424}; // to reduce file size. clamps the scroll and also returns a duration multiplier so that if the scroll gets chopped shorter, the duration gets curtailed as well (otherwise if you're very close to the top of the page, for example, and swipe up really fast, it'll suddenly slow down and take a long time to reach the top).
33425
33426
33427var _clampScrollAndGetDurationMultiplier = function _clampScrollAndGetDurationMultiplier(scrollFunc, current, end, max) {
33428  current > max ? scrollFunc(max) : current < 0 && scrollFunc(0);
33429  return end > max ? (max - current) / (end - current) : end < 0 ? current / (current - end) : 1;
33430},
33431    _allowNativePanning = function _allowNativePanning(target, direction) {
33432  if (direction === true) {
33433    target.style.removeProperty("touch-action");
33434  } else {
33435    target.style.touchAction = direction === true ? "auto" : direction ? "pan-" + direction + (_Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.isTouch ? " pinch-zoom" : "") : "none"; // note: Firefox doesn't support it pinch-zoom properly, at least in addition to a pan-x or pan-y.
33436  }
33437
33438  target === _docEl && _allowNativePanning(_body, direction);
33439},
33440    _overflow = {
33441  auto: 1,
33442  scroll: 1
33443},
33444    _nestedScroll = function _nestedScroll(_ref5) {
33445  var event = _ref5.event,
33446      target = _ref5.target,
33447      axis = _ref5.axis;
33448
33449  var node = (event.changedTouches ? event.changedTouches[0] : event).target,
33450      cache = node._gsap || gsap.core.getCache(node),
33451      time = _getTime(),
33452      cs;
33453
33454  if (!cache._isScrollT || time - cache._isScrollT > 2000) {
33455    // cache for 2 seconds to improve performance.
33456    while (node && node !== _body && (node.scrollHeight <= node.clientHeight && node.scrollWidth <= node.clientWidth || !(_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]))) {
33457      node = node.parentNode;
33458    }
33459
33460    cache._isScroll = node && node !== target && !_isViewport(node) && (_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]);
33461    cache._isScrollT = time;
33462  }
33463
33464  if (cache._isScroll || axis === "x") {
33465    event.stopPropagation();
33466    event._gsapAllow = true;
33467  }
33468},
33469    // capture events on scrollable elements INSIDE the <body> and allow those by calling stopPropagation() when we find a scrollable ancestor
33470_inputObserver = function _inputObserver(target, type, inputs, nested) {
33471  return _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.create({
33472    target: target,
33473    capture: true,
33474    debounce: false,
33475    lockAxis: true,
33476    type: type,
33477    onWheel: nested = nested && _nestedScroll,
33478    onPress: nested,
33479    onDrag: nested,
33480    onScroll: nested,
33481    onEnable: function onEnable() {
33482      return inputs && _addListener(_doc, _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.eventTypes[0], _captureInputs, false, true);
33483    },
33484    onDisable: function onDisable() {
33485      return _removeListener(_doc, _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.eventTypes[0], _captureInputs, true);
33486    }
33487  });
33488},
33489    _inputExp = /(input|label|select|textarea)/i,
33490    _inputIsFocused,
33491    _captureInputs = function _captureInputs(e) {
33492  var isInput = _inputExp.test(e.target.tagName);
33493
33494  if (isInput || _inputIsFocused) {
33495    e._gsapAllow = true;
33496    _inputIsFocused = isInput;
33497  }
33498},
33499    _getScrollNormalizer = function _getScrollNormalizer(vars) {
33500  _isObject(vars) || (vars = {});
33501  vars.preventDefault = vars.isNormalizer = vars.allowClicks = true;
33502  vars.type || (vars.type = "wheel,touch");
33503  vars.debounce = !!vars.debounce;
33504  vars.id = vars.id || "normalizer";
33505
33506  var _vars2 = vars,
33507      normalizeScrollX = _vars2.normalizeScrollX,
33508      momentum = _vars2.momentum,
33509      allowNestedScroll = _vars2.allowNestedScroll,
33510      onRelease = _vars2.onRelease,
33511      self,
33512      maxY,
33513      target = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(vars.target) || _docEl,
33514      smoother = gsap.core.globals().ScrollSmoother,
33515      smootherInstance = smoother && smoother.get(),
33516      content = _fixIOSBug && (vars.content && (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getTarget)(vars.content) || smootherInstance && vars.content !== false && !smootherInstance.smooth() && smootherInstance.content()),
33517      scrollFuncY = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getScrollFunc)(target, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical),
33518      scrollFuncX = (0,_Observer_js__WEBPACK_IMPORTED_MODULE_0__._getScrollFunc)(target, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal),
33519      scale = 1,
33520      initialScale = (_Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer.isTouch && _win.visualViewport ? _win.visualViewport.scale * _win.visualViewport.width : _win.outerWidth) / _win.innerWidth,
33521      wheelRefresh = 0,
33522      resolveMomentumDuration = _isFunction(momentum) ? function () {
33523    return momentum(self);
33524  } : function () {
33525    return momentum || 2.8;
33526  },
33527      lastRefreshID,
33528      skipTouchMove,
33529      inputObserver = _inputObserver(target, vars.type, true, allowNestedScroll),
33530      resumeTouchMove = function resumeTouchMove() {
33531    return skipTouchMove = false;
33532  },
33533      scrollClampX = _passThrough,
33534      scrollClampY = _passThrough,
33535      updateClamps = function updateClamps() {
33536    maxY = _maxScroll(target, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical);
33537    scrollClampY = _clamp(_fixIOSBug ? 1 : 0, maxY);
33538    normalizeScrollX && (scrollClampX = _clamp(0, _maxScroll(target, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal)));
33539    lastRefreshID = _refreshID;
33540  },
33541      removeContentOffset = function removeContentOffset() {
33542    content._gsap.y = _round(parseFloat(content._gsap.y) + scrollFuncY.offset) + "px";
33543    content.style.transform = "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, " + parseFloat(content._gsap.y) + ", 0, 1)";
33544    scrollFuncY.offset = scrollFuncY.cacheID = 0;
33545  },
33546      ignoreDrag = function ignoreDrag() {
33547    if (skipTouchMove) {
33548      requestAnimationFrame(resumeTouchMove);
33549
33550      var offset = _round(self.deltaY / 2),
33551          scroll = scrollClampY(scrollFuncY.v - offset);
33552
33553      if (content && scroll !== scrollFuncY.v + scrollFuncY.offset) {
33554        scrollFuncY.offset = scroll - scrollFuncY.v;
33555
33556        var y = _round((parseFloat(content && content._gsap.y) || 0) - scrollFuncY.offset);
33557
33558        content.style.transform = "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, " + y + ", 0, 1)";
33559        content._gsap.y = y + "px";
33560        scrollFuncY.cacheID = _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.cache;
33561
33562        _updateAll();
33563      }
33564
33565      return true;
33566    }
33567
33568    scrollFuncY.offset && removeContentOffset();
33569    skipTouchMove = true;
33570  },
33571      tween,
33572      startScrollX,
33573      startScrollY,
33574      onStopDelayedCall,
33575      onResize = function onResize() {
33576    // if the window resizes, like on an iPhone which Apple FORCES the address bar to show/hide even if we event.preventDefault(), it may be scrolling too far now that the address bar is showing, so we must dynamically adjust the momentum tween.
33577    updateClamps();
33578
33579    if (tween.isActive() && tween.vars.scrollY > maxY) {
33580      scrollFuncY() > maxY ? tween.progress(1) && scrollFuncY(maxY) : tween.resetTo("scrollY", maxY);
33581    }
33582  };
33583
33584  content && gsap.set(content, {
33585    y: "+=0"
33586  }); // to ensure there's a cache (element._gsap)
33587
33588  vars.ignoreCheck = function (e) {
33589    return _fixIOSBug && e.type === "touchmove" && ignoreDrag(e) || scale > 1.05 && e.type !== "touchstart" || self.isGesturing || e.touches && e.touches.length > 1;
33590  };
33591
33592  vars.onPress = function () {
33593    skipTouchMove = false;
33594    var prevScale = scale;
33595    scale = _round((_win.visualViewport && _win.visualViewport.scale || 1) / initialScale);
33596    tween.pause();
33597    prevScale !== scale && _allowNativePanning(target, scale > 1.01 ? true : normalizeScrollX ? false : "x");
33598    startScrollX = scrollFuncX();
33599    startScrollY = scrollFuncY();
33600    updateClamps();
33601    lastRefreshID = _refreshID;
33602  };
33603
33604  vars.onRelease = vars.onGestureStart = function (self, wasDragging) {
33605    scrollFuncY.offset && removeContentOffset();
33606
33607    if (!wasDragging) {
33608      onStopDelayedCall.restart(true);
33609    } else {
33610      _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers.cache++; // make sure we're pulling the non-cached value
33611      // alternate algorithm: durX = Math.min(6, Math.abs(self.velocityX / 800)),	dur = Math.max(durX, Math.min(6, Math.abs(self.velocityY / 800))); dur = dur * (0.4 + (1 - _power4In(dur / 6)) * 0.6)) * (momentumSpeed || 1)
33612
33613      var dur = resolveMomentumDuration(),
33614          currentScroll,
33615          endScroll;
33616
33617      if (normalizeScrollX) {
33618        currentScroll = scrollFuncX();
33619        endScroll = currentScroll + dur * 0.05 * -self.velocityX / 0.227; // the constant .227 is from power4(0.05). velocity is inverted because scrolling goes in the opposite direction.
33620
33621        dur *= _clampScrollAndGetDurationMultiplier(scrollFuncX, currentScroll, endScroll, _maxScroll(target, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._horizontal));
33622        tween.vars.scrollX = scrollClampX(endScroll);
33623      }
33624
33625      currentScroll = scrollFuncY();
33626      endScroll = currentScroll + dur * 0.05 * -self.velocityY / 0.227; // the constant .227 is from power4(0.05)
33627
33628      dur *= _clampScrollAndGetDurationMultiplier(scrollFuncY, currentScroll, endScroll, _maxScroll(target, _Observer_js__WEBPACK_IMPORTED_MODULE_0__._vertical));
33629      tween.vars.scrollY = scrollClampY(endScroll);
33630      tween.invalidate().duration(dur).play(0.01);
33631
33632      if (_fixIOSBug && tween.vars.scrollY >= maxY || currentScroll >= maxY - 1) {
33633        // iOS bug: it'll show the address bar but NOT fire the window "resize" event until the animation is done but we must protect against overshoot so we leverage an onUpdate to do so.
33634        gsap.to({}, {
33635          onUpdate: onResize,
33636          duration: dur
33637        });
33638      }
33639    }
33640
33641    onRelease && onRelease(self);
33642  };
33643
33644  vars.onWheel = function () {
33645    tween._ts && tween.pause();
33646
33647    if (_getTime() - wheelRefresh > 1000) {
33648      // after 1 second, refresh the clamps otherwise that'll only happen when ScrollTrigger.refresh() is called or for touch-scrolling.
33649      lastRefreshID = 0;
33650      wheelRefresh = _getTime();
33651    }
33652  };
33653
33654  vars.onChange = function (self, dx, dy, xArray, yArray) {
33655    _refreshID !== lastRefreshID && updateClamps();
33656    dx && normalizeScrollX && scrollFuncX(scrollClampX(xArray[2] === dx ? startScrollX + (self.startX - self.x) : scrollFuncX() + dx - xArray[1])); // for more precision, we track pointer/touch movement from the start, otherwise it'll drift.
33657
33658    if (dy) {
33659      scrollFuncY.offset && removeContentOffset();
33660      var isTouch = yArray[2] === dy,
33661          y = isTouch ? startScrollY + self.startY - self.y : scrollFuncY() + dy - yArray[1],
33662          yClamped = scrollClampY(y);
33663      isTouch && y !== yClamped && (startScrollY += yClamped - y);
33664      scrollFuncY(yClamped);
33665    }
33666
33667    (dy || dx) && _updateAll();
33668  };
33669
33670  vars.onEnable = function () {
33671    _allowNativePanning(target, normalizeScrollX ? false : "x");
33672
33673    ScrollTrigger.addEventListener("refresh", onResize);
33674
33675    _addListener(_win, "resize", onResize);
33676
33677    if (scrollFuncY.smooth) {
33678      scrollFuncY.target.style.scrollBehavior = "auto";
33679      scrollFuncY.smooth = scrollFuncX.smooth = false;
33680    }
33681
33682    inputObserver.enable();
33683  };
33684
33685  vars.onDisable = function () {
33686    _allowNativePanning(target, true);
33687
33688    _removeListener(_win, "resize", onResize);
33689
33690    ScrollTrigger.removeEventListener("refresh", onResize);
33691    inputObserver.kill();
33692  };
33693
33694  vars.lockAxis = vars.lockAxis !== false;
33695  self = new _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer(vars);
33696  self.iOS = _fixIOSBug; // used in the Observer getCachedScroll() function to work around an iOS bug that wreaks havoc with TouchEvent.clientY if we allow scroll to go all the way back to 0.
33697
33698  _fixIOSBug && !scrollFuncY() && scrollFuncY(1); // iOS bug causes event.clientY values to freak out (wildly inaccurate) if the scroll position is exactly 0.
33699
33700  _fixIOSBug && gsap.ticker.add(_passThrough); // prevent the ticker from sleeping
33701
33702  onStopDelayedCall = self._dc;
33703  tween = gsap.to(self, {
33704    ease: "power4",
33705    paused: true,
33706    inherit: false,
33707    scrollX: normalizeScrollX ? "+=0.1" : "+=0",
33708    scrollY: "+=0.1",
33709    modifiers: {
33710      scrollY: _interruptionTracker(scrollFuncY, scrollFuncY(), function () {
33711        return tween.pause();
33712      })
33713    },
33714    onUpdate: _updateAll,
33715    onComplete: onStopDelayedCall.vars.onComplete
33716  }); // we need the modifier to sense if the scroll position is altered outside of the momentum tween (like with a scrollTo tween) so we can pause() it to prevent conflicts.
33717
33718  return self;
33719};
33720
33721ScrollTrigger.sort = function (func) {
33722  return _triggers.sort(func || function (a, b) {
33723    return (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6);
33724  });
33725};
33726
33727ScrollTrigger.observe = function (vars) {
33728  return new _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer(vars);
33729};
33730
33731ScrollTrigger.normalizeScroll = function (vars) {
33732  if (typeof vars === "undefined") {
33733    return _normalizer;
33734  }
33735
33736  if (vars === true && _normalizer) {
33737    return _normalizer.enable();
33738  }
33739
33740  if (vars === false) {
33741    _normalizer && _normalizer.kill();
33742    _normalizer = vars;
33743    return;
33744  }
33745
33746  var normalizer = vars instanceof _Observer_js__WEBPACK_IMPORTED_MODULE_0__.Observer ? vars : _getScrollNormalizer(vars);
33747  _normalizer && _normalizer.target === normalizer.target && _normalizer.kill();
33748  _isViewport(normalizer.target) && (_normalizer = normalizer);
33749  return normalizer;
33750};
33751
33752ScrollTrigger.core = {
33753  // smaller file size way to leverage in ScrollSmoother and Observer
33754  _getVelocityProp: _Observer_js__WEBPACK_IMPORTED_MODULE_0__._getVelocityProp,
33755  _inputObserver: _inputObserver,
33756  _scrollers: _Observer_js__WEBPACK_IMPORTED_MODULE_0__._scrollers,
33757  _proxies: _Observer_js__WEBPACK_IMPORTED_MODULE_0__._proxies,
33758  bridge: {
33759    // when normalizeScroll sets the scroll position (ss = setScroll)
33760    ss: function ss() {
33761      _lastScrollTime || _dispatch("scrollStart");
33762      _lastScrollTime = _getTime();
33763    },
33764    // a way to get the _refreshing value in Observer
33765    ref: function ref() {
33766      return _refreshing;
33767    }
33768  }
33769};
33770_getGSAP() && gsap.registerPlugin(ScrollTrigger);
33771
33772
33773/***/ }),
33774
vendor: 174,839 bytes, lines 33775-38343
33775/***/ "./node_modules/gsap/gsap-core.js":
33776/*!****************************************!*\
33777  !*** ./node_modules/gsap/gsap-core.js ***!
33778  \****************************************/
33779/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
33780
33781"use strict";
33782__webpack_require__.r(__webpack_exports__);
33783/* harmony export */ __webpack_require__.d(__webpack_exports__, {
33784/* harmony export */   "Animation": () => (/* binding */ Animation),
33785/* harmony export */   "Back": () => (/* binding */ Back),
33786/* harmony export */   "Bounce": () => (/* binding */ Bounce),
33787/* harmony export */   "Circ": () => (/* binding */ Circ),
33788/* harmony export */   "Cubic": () => (/* binding */ Cubic),
33789/* harmony export */   "Elastic": () => (/* binding */ Elastic),
33790/* harmony export */   "Expo": () => (/* binding */ Expo),
33791/* harmony export */   "GSCache": () => (/* binding */ GSCache),
33792/* harmony export */   "Linear": () => (/* binding */ Linear),
33793/* harmony export */   "Power0": () => (/* binding */ Power0),
33794/* harmony export */   "Power1": () => (/* binding */ Power1),
33795/* harmony export */   "Power2": () => (/* binding */ Power2),
33796/* harmony export */   "Power3": () => (/* binding */ Power3),
33797/* harmony export */   "Power4": () => (/* binding */ Power4),
33798/* harmony export */   "PropTween": () => (/* binding */ PropTween),
33799/* harmony export */   "Quad": () => (/* binding */ Quad),
33800/* harmony export */   "Quart": () => (/* binding */ Quart),
33801/* harmony export */   "Quint": () => (/* binding */ Quint),
33802/* harmony export */   "Sine": () => (/* binding */ Sine),
33803/* harmony export */   "SteppedEase": () => (/* binding */ SteppedEase),
33804/* harmony export */   "Strong": () => (/* binding */ Strong),
33805/* harmony export */   "Timeline": () => (/* binding */ Timeline),
33806/* harmony export */   "TimelineLite": () => (/* binding */ Timeline),
33807/* harmony export */   "TimelineMax": () => (/* binding */ Timeline),
33808/* harmony export */   "Tween": () => (/* binding */ Tween),
33809/* harmony export */   "TweenLite": () => (/* binding */ Tween),
33810/* harmony export */   "TweenMax": () => (/* binding */ Tween),
33811/* harmony export */   "_checkPlugin": () => (/* binding */ _checkPlugin),
33812/* harmony export */   "_colorExp": () => (/* binding */ _colorExp),
33813/* harmony export */   "_colorStringFilter": () => (/* binding */ _colorStringFilter),
33814/* harmony export */   "_config": () => (/* binding */ _config),
33815/* harmony export */   "_forEachName": () => (/* binding */ _forEachName),
33816/* harmony export */   "_getCache": () => (/* binding */ _getCache),
33817/* harmony export */   "_getProperty": () => (/* binding */ _getProperty),
33818/* harmony export */   "_getSetter": () => (/* binding */ _getSetter),
33819/* harmony export */   "_isString": () => (/* binding */ _isString),
33820/* harmony export */   "_isUndefined": () => (/* binding */ _isUndefined),
33821/* harmony export */   "_missingPlugin": () => (/* binding */ _missingPlugin),
33822/* harmony export */   "_numExp": () => (/* binding */ _numExp),
33823/* harmony export */   "_numWithUnitExp": () => (/* binding */ _numWithUnitExp),
33824/* harmony export */   "_parseRelative": () => (/* binding */ _parseRelative),
33825/* harmony export */   "_plugins": () => (/* binding */ _plugins),
33826/* harmony export */   "_relExp": () => (/* binding */ _relExp),
33827/* harmony export */   "_removeLinkedListItem": () => (/* binding */ _removeLinkedListItem),
33828/* harmony export */   "_renderComplexString": () => (/* binding */ _renderComplexString),
33829/* harmony export */   "_replaceRandom": () => (/* binding */ _replaceRandom),
33830/* harmony export */   "_round": () => (/* binding */ _round),
33831/* harmony export */   "_roundModifier": () => (/* binding */ _roundModifier),
33832/* harmony export */   "_setDefaults": () => (/* binding */ _setDefaults),
33833/* harmony export */   "_sortPropTweensByPriority": () => (/* binding */ _sortPropTweensByPriority),
33834/* harmony export */   "_ticker": () => (/* binding */ _ticker),
33835/* harmony export */   "clamp": () => (/* binding */ clamp),
33836/* harmony export */   "default": () => (/* binding */ gsap),
33837/* harmony export */   "distribute": () => (/* binding */ distribute),
33838/* harmony export */   "getUnit": () => (/* binding */ getUnit),
33839/* harmony export */   "gsap": () => (/* binding */ gsap),
33840/* harmony export */   "interpolate": () => (/* binding */ interpolate),
33841/* harmony export */   "mapRange": () => (/* binding */ mapRange),
33842/* harmony export */   "normalize": () => (/* binding */ normalize),
33843/* harmony export */   "pipe": () => (/* binding */ pipe),
33844/* harmony export */   "random": () => (/* binding */ random),
33845/* harmony export */   "selector": () => (/* binding */ selector),
33846/* harmony export */   "shuffle": () => (/* binding */ shuffle),
33847/* harmony export */   "snap": () => (/* binding */ snap),
33848/* harmony export */   "splitColor": () => (/* binding */ splitColor),
33849/* harmony export */   "toArray": () => (/* binding */ toArray),
33850/* harmony export */   "unitize": () => (/* binding */ unitize),
33851/* harmony export */   "wrap": () => (/* binding */ wrap),
33852/* harmony export */   "wrapYoyo": () => (/* binding */ wrapYoyo)
33853/* harmony export */ });
33854function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
33855
33856function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
33857
33858/*!
33859 * GSAP 3.12.5
33860 * https://gsap.com
33861 *
33862 * @license Copyright 2008-2024, GreenSock. All rights reserved.
33863 * Subject to the terms at https://gsap.com/standard-license or for
33864 * Club GSAP members, the agreement issued with that membership.
33865 * @author: Jack Doyle, [email protected]
33866*/
33867
33868/* eslint-disable */
33869var _config = {
33870  autoSleep: 120,
33871  force3D: "auto",
33872  nullTargetWarn: 1,
33873  units: {
33874    lineHeight: ""
33875  }
33876},
33877    _defaults = {
33878  duration: .5,
33879  overwrite: false,
33880  delay: 0
33881},
33882    _suppressOverwrites,
33883    _reverting,
33884    _context,
33885    _bigNum = 1e8,
33886    _tinyNum = 1 / _bigNum,
33887    _2PI = Math.PI * 2,
33888    _HALF_PI = _2PI / 4,
33889    _gsID = 0,
33890    _sqrt = Math.sqrt,
33891    _cos = Math.cos,
33892    _sin = Math.sin,
33893    _isString = function _isString(value) {
33894  return typeof value === "string";
33895},
33896    _isFunction = function _isFunction(value) {
33897  return typeof value === "function";
33898},
33899    _isNumber = function _isNumber(value) {
33900  return typeof value === "number";
33901},
33902    _isUndefined = function _isUndefined(value) {
33903  return typeof value === "undefined";
33904},
33905    _isObject = function _isObject(value) {
33906  return typeof value === "object";
33907},
33908    _isNotFalse = function _isNotFalse(value) {
33909  return value !== false;
33910},
33911    _windowExists = function _windowExists() {
33912  return typeof window !== "undefined";
33913},
33914    _isFuncOrString = function _isFuncOrString(value) {
33915  return _isFunction(value) || _isString(value);
33916},
33917    _isTypedArray = typeof ArrayBuffer === "function" && ArrayBuffer.isView || function () {},
33918    // note: IE10 has ArrayBuffer, but NOT ArrayBuffer.isView().
33919_isArray = Array.isArray,
33920    _strictNumExp = /(?:-?\.?\d|\.)+/gi,
33921    //only numbers (including negatives and decimals) but NOT relative values.
33922_numExp = /[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g,
33923    //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.
33924_numWithUnitExp = /[-+=.]*\d+[.e-]*\d*[a-z%]*/g,
33925    _complexStringNumExp = /[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi,
33926    //duplicate so that while we're looping through matches from exec(), it doesn't contaminate the lastIndex of _numExp which we use to search for colors too.
33927_relExp = /[+-]=-?[.\d]+/,
33928    _delimitedValueExp = /[^,'"\[\]\s]+/gi,
33929    // previously /[#\-+.]*\b[a-z\d\-=+%.]+/gi but didn't catch special characters.
33930_unitExp = /^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i,
33931    _globalTimeline,
33932    _win,
33933    _coreInitted,
33934    _doc,
33935    _globals = {},
33936    _installScope = {},
33937    _coreReady,
33938    _install = function _install(scope) {
33939  return (_installScope = _merge(scope, _globals)) && gsap;
33940},
33941    _missingPlugin = function _missingPlugin(property, value) {
33942  return console.warn("Invalid property", property, "set to", value, "Missing plugin? gsap.registerPlugin()");
33943},
33944    _warn = function _warn(message, suppress) {
33945  return !suppress && console.warn(message);
33946},
33947    _addGlobal = function _addGlobal(name, obj) {
33948  return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;
33949},
33950    _emptyFunc = function _emptyFunc() {
33951  return 0;
33952},
33953    _startAtRevertConfig = {
33954  suppressEvents: true,
33955  isStart: true,
33956  kill: false
33957},
33958    _revertConfigNoKill = {
33959  suppressEvents: true,
33960  kill: false
33961},
33962    _revertConfig = {
33963  suppressEvents: true
33964},
33965    _reservedProps = {},
33966    _lazyTweens = [],
33967    _lazyLookup = {},
33968    _lastRenderedFrame,
33969    _plugins = {},
33970    _effects = {},
33971    _nextGCFrame = 30,
33972    _harnessPlugins = [],
33973    _callbackNames = "",
33974    _harness = function _harness(targets) {
33975  var target = targets[0],
33976      harnessPlugin,
33977      i;
33978  _isObject(target) || _isFunction(target) || (targets = [targets]);
33979
33980  if (!(harnessPlugin = (target._gsap || {}).harness)) {
33981    // find the first target with a harness. We assume targets passed into an animation will be of similar type, meaning the same kind of harness can be used for them all (performance optimization)
33982    i = _harnessPlugins.length;
33983
33984    while (i-- && !_harnessPlugins[i].targetTest(target)) {}
33985
33986    harnessPlugin = _harnessPlugins[i];
33987  }
33988
33989  i = targets.length;
33990
33991  while (i--) {
33992    targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);
33993  }
33994
33995  return targets;
33996},
33997    _getCache = function _getCache(target) {
33998  return target._gsap || _harness(toArray(target))[0]._gsap;
33999},
34000    _getProperty = function _getProperty(target, property, v) {
34001  return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;
34002},
34003    _forEachName = function _forEachName(names, func) {
34004  return (names = names.split(",")).forEach(func) || names;
34005},
34006    //split a comma-delimited list of names into an array, then run a forEach() function and return the split array (this is just a way to consolidate/shorten some code).
34007_round = function _round(value) {
34008  return Math.round(value * 100000) / 100000 || 0;
34009},
34010    _roundPrecise = function _roundPrecise(value) {
34011  return Math.round(value * 10000000) / 10000000 || 0;
34012},
34013    // increased precision mostly for timing values.
34014_parseRelative = function _parseRelative(start, value) {
34015  var operator = value.charAt(0),
34016      end = parseFloat(value.substr(2));
34017  start = parseFloat(start);
34018  return operator === "+" ? start + end : operator === "-" ? start - end : operator === "*" ? start * end : start / end;
34019},
34020    _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {
34021  //searches one array to find matches for any of the items in the toFind array. As soon as one is found, it returns true. It does NOT return all the matches; it's simply a boolean search.
34022  var l = toFind.length,
34023      i = 0;
34024
34025  for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}
34026
34027  return i < l;
34028},
34029    _lazyRender = function _lazyRender() {
34030  var l = _lazyTweens.length,
34031      a = _lazyTweens.slice(0),
34032      i,
34033      tween;
34034
34035  _lazyLookup = {};
34036  _lazyTweens.length = 0;
34037
34038  for (i = 0; i < l; i++) {
34039    tween = a[i];
34040    tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);
34041  }
34042},
34043    _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {
34044  _lazyTweens.length && !_reverting && _lazyRender();
34045  animation.render(time, suppressEvents, force || _reverting && time < 0 && (animation._initted || animation._startAt));
34046  _lazyTweens.length && !_reverting && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.
34047},
34048    _numericIfPossible = function _numericIfPossible(value) {
34049  var n = parseFloat(value);
34050  return (n || n === 0) && (value + "").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;
34051},
34052    _passThrough = function _passThrough(p) {
34053  return p;
34054},
34055    _setDefaults = function _setDefaults(obj, defaults) {
34056  for (var p in defaults) {
34057    p in obj || (obj[p] = defaults[p]);
34058  }
34059
34060  return obj;
34061},
34062    _setKeyframeDefaults = function _setKeyframeDefaults(excludeDuration) {
34063  return function (obj, defaults) {
34064    for (var p in defaults) {
34065      p in obj || p === "duration" && excludeDuration || p === "ease" || (obj[p] = defaults[p]);
34066    }
34067  };
34068},
34069    _merge = function _merge(base, toMerge) {
34070  for (var p in toMerge) {
34071    base[p] = toMerge[p];
34072  }
34073
34074  return base;
34075},
34076    _mergeDeep = function _mergeDeep(base, toMerge) {
34077  for (var p in toMerge) {
34078    p !== "__proto__" && p !== "constructor" && p !== "prototype" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);
34079  }
34080
34081  return base;
34082},
34083    _copyExcluding = function _copyExcluding(obj, excluding) {
34084  var copy = {},
34085      p;
34086
34087  for (p in obj) {
34088    p in excluding || (copy[p] = obj[p]);
34089  }
34090
34091  return copy;
34092},
34093    _inheritDefaults = function _inheritDefaults(vars) {
34094  var parent = vars.parent || _globalTimeline,
34095      func = vars.keyframes ? _setKeyframeDefaults(_isArray(vars.keyframes)) : _setDefaults;
34096
34097  if (_isNotFalse(vars.inherit)) {
34098    while (parent) {
34099      func(vars, parent.vars.defaults);
34100      parent = parent.parent || parent._dp;
34101    }
34102  }
34103
34104  return vars;
34105},
34106    _arraysMatch = function _arraysMatch(a1, a2) {
34107  var i = a1.length,
34108      match = i === a2.length;
34109
34110  while (match && i-- && a1[i] === a2[i]) {}
34111
34112  return i < 0;
34113},
34114    _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {
34115  if (firstProp === void 0) {
34116    firstProp = "_first";
34117  }
34118
34119  if (lastProp === void 0) {
34120    lastProp = "_last";
34121  }
34122
34123  var prev = parent[lastProp],
34124      t;
34125
34126  if (sortBy) {
34127    t = child[sortBy];
34128
34129    while (prev && prev[sortBy] > t) {
34130      prev = prev._prev;
34131    }
34132  }
34133
34134  if (prev) {
34135    child._next = prev._next;
34136    prev._next = child;
34137  } else {
34138    child._next = parent[firstProp];
34139    parent[firstProp] = child;
34140  }
34141
34142  if (child._next) {
34143    child._next._prev = child;
34144  } else {
34145    parent[lastProp] = child;
34146  }
34147
34148  child._prev = prev;
34149  child.parent = child._dp = parent;
34150  return child;
34151},
34152    _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {
34153  if (firstProp === void 0) {
34154    firstProp = "_first";
34155  }
34156
34157  if (lastProp === void 0) {
34158    lastProp = "_last";
34159  }
34160
34161  var prev = child._prev,
34162      next = child._next;
34163
34164  if (prev) {
34165    prev._next = next;
34166  } else if (parent[firstProp] === child) {
34167    parent[firstProp] = next;
34168  }
34169
34170  if (next) {
34171    next._prev = prev;
34172  } else if (parent[lastProp] === child) {
34173    parent[lastProp] = prev;
34174  }
34175
34176  child._next = child._prev = child.parent = null; // don't delete the _dp just so we can revert if necessary. But parent should be null to indicate the item isn't in a linked list.
34177},
34178    _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {
34179  child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove && child.parent.remove(child);
34180  child._act = 0;
34181},
34182    _uncache = function _uncache(animation, child) {
34183  if (animation && (!child || child._end > animation._dur || child._start < 0)) {
34184    // performance optimization: if a child animation is passed in we should only uncache if that child EXTENDS the animation (its end time is beyond the end)
34185    var a = animation;
34186
34187    while (a) {
34188      a._dirty = 1;
34189      a = a.parent;
34190    }
34191  }
34192
34193  return animation;
34194},
34195    _recacheAncestors = function _recacheAncestors(animation) {
34196  var parent = animation.parent;
34197
34198  while (parent && parent.parent) {
34199    //sometimes we must force a re-sort of all children and update the duration/totalDuration of all ancestor timelines immediately in case, for example, in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.
34200    parent._dirty = 1;
34201    parent.totalDuration();
34202    parent = parent.parent;
34203  }
34204
34205  return animation;
34206},
34207    _rewindStartAt = function _rewindStartAt(tween, totalTime, suppressEvents, force) {
34208  return tween._startAt && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween.vars.immediateRender && !tween.vars.autoRevert || tween._startAt.render(totalTime, true, force));
34209},
34210    _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {
34211  return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);
34212},
34213    _elapsedCycleDuration = function _elapsedCycleDuration(animation) {
34214  return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;
34215},
34216    // feed in the totalTime and cycleDuration and it'll return the cycle (iteration minus 1) and if the playhead is exactly at the very END, it will NOT bump up to the next cycle.
34217_animationCycle = function _animationCycle(tTime, cycleDuration) {
34218  var whole = Math.floor(tTime /= cycleDuration);
34219  return tTime && whole === tTime ? whole - 1 : whole;
34220},
34221    _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {
34222  return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);
34223},
34224    _setEnd = function _setEnd(animation) {
34225  return animation._end = _roundPrecise(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));
34226},
34227    _alignPlayhead = function _alignPlayhead(animation, totalTime) {
34228  // adjusts the animation's _start and _end according to the provided totalTime (only if the parent's smoothChildTiming is true and the animation isn't paused). It doesn't do any rendering or forcing things back into parent timelines, etc. - that's what totalTime() is for.
34229  var parent = animation._dp;
34230
34231  if (parent && parent.smoothChildTiming && animation._ts) {
34232    animation._start = _roundPrecise(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));
34233
34234    _setEnd(animation);
34235
34236    parent._dirty || _uncache(parent, animation); //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.
34237  }
34238
34239  return animation;
34240},
34241
34242/*
34243_totalTimeToTime = (clampedTotalTime, duration, repeat, repeatDelay, yoyo) => {
34244	let cycleDuration = duration + repeatDelay,
34245		time = _round(clampedTotalTime % cycleDuration);
34246	if (time > duration) {
34247		time = duration;
34248	}
34249	return (yoyo && (~~(clampedTotalTime / cycleDuration) & 1)) ? duration - time : time;
34250},
34251*/
34252_postAddChecks = function _postAddChecks(timeline, child) {
34253  var t;
34254
34255  if (child._time || !child._dur && child._initted || child._start < timeline._time && (child._dur || !child.add)) {
34256    // in case, for example, the _start is moved on a tween that has already rendered, or if it's being inserted into a timeline BEFORE where the playhead is currently. Imagine it's at its end state, then the startTime is moved WAY later (after the end of this timeline), it should render at its beginning. Special case: if it's a timeline (has .add() method) and no duration, we can skip rendering because the user may be populating it AFTER adding it to a parent timeline (unconventional, but possible, and we wouldn't want it to get removed if the parent's autoRemoveChildren is true).
34257    t = _parentToChildTotalTime(timeline.rawTime(), child);
34258
34259    if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {
34260      child.render(t, true);
34261    }
34262  } //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.
34263
34264
34265  if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {
34266    //in case any of the ancestors had completed but should now be enabled...
34267    if (timeline._dur < timeline.duration()) {
34268      t = timeline;
34269
34270      while (t._dp) {
34271        t.rawTime() >= 0 && t.totalTime(t._tTime); //moves the timeline (shifts its startTime) if necessary, and also enables it. If it's currently zero, though, it may not be scheduled to render until later so there's no need to force it to align with the current playhead position. Only move to catch up with the playhead.
34272
34273        t = t._dp;
34274      }
34275    }
34276
34277    timeline._zTime = -_tinyNum; // helps ensure that the next render() will be forced (crossingStart = true in render()), even if the duration hasn't changed (we're adding a child which would need to get rendered). Definitely an edge case. Note: we MUST do this AFTER the loop above where the totalTime() might trigger a render() because this _addToTimeline() method gets called from the Animation constructor, BEFORE tweens even record their targets, etc. so we wouldn't want things to get triggered in the wrong order.
34278  }
34279},
34280    _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) {
34281  child.parent && _removeFromParent(child);
34282  child._start = _roundPrecise((_isNumber(position) ? position : position || timeline !== _globalTimeline ? _parsePosition(timeline, position, child) : timeline._time) + child._delay);
34283  child._end = _roundPrecise(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));
34284
34285  _addLinkedListItem(timeline, child, "_first", "_last", timeline._sort ? "_start" : 0);
34286
34287  _isFromOrFromStart(child) || (timeline._recent = child);
34288  skipChecks || _postAddChecks(timeline, child);
34289  timeline._ts < 0 && _alignPlayhead(timeline, timeline._tTime); // if the timeline is reversed and the new child makes it longer, we may need to adjust the parent's _start (push it back)
34290
34291  return timeline;
34292},
34293    _scrollTrigger = function _scrollTrigger(animation, trigger) {
34294  return (_globals.ScrollTrigger || _missingPlugin("scrollTrigger", trigger)) && _globals.ScrollTrigger.create(trigger, animation);
34295},
34296    _attemptInitTween = function _attemptInitTween(tween, time, force, suppressEvents, tTime) {
34297  _initTween(tween, time, tTime);
34298
34299  if (!tween._initted) {
34300    return 1;
34301  }
34302
34303  if (!force && tween._pt && !_reverting && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {
34304    _lazyTweens.push(tween);
34305
34306    tween._lazy = [tTime, suppressEvents];
34307    return 1;
34308  }
34309},
34310    _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart(_ref) {
34311  var parent = _ref.parent;
34312  return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent));
34313},
34314    // check parent's _lock because when a timeline repeats/yoyos and does its artificial wrapping, we shouldn't force the ratio back to 0
34315_isFromOrFromStart = function _isFromOrFromStart(_ref2) {
34316  var data = _ref2.data;
34317  return data === "isFromStart" || data === "isStart";
34318},
34319    _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {
34320  var prevRatio = tween.ratio,
34321      ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1,
34322      // if the tween or its parent is reversed and the totalTime is 0, we should go to a ratio of 0. Edge case: if a from() or fromTo() stagger tween is placed later in a timeline, the "startAt" zero-duration tween could initially render at a time when the parent timeline's playhead is technically BEFORE where this tween is, so make sure that any "from" and "fromTo" startAt tweens are rendered the first time at a ratio of 1.
34323  repeatDelay = tween._rDelay,
34324      tTime = 0,
34325      pt,
34326      iteration,
34327      prevIteration;
34328
34329  if (repeatDelay && tween._repeat) {
34330    // in case there's a zero-duration tween that has a repeat with a repeatDelay
34331    tTime = _clamp(0, tween._tDur, totalTime);
34332    iteration = _animationCycle(tTime, repeatDelay);
34333    tween._yoyo && iteration & 1 && (ratio = 1 - ratio);
34334
34335    if (iteration !== _animationCycle(tween._tTime, repeatDelay)) {
34336      // if iteration changed
34337      prevRatio = 1 - ratio;
34338      tween.vars.repeatRefresh && tween._initted && tween.invalidate();
34339    }
34340  }
34341
34342  if (ratio !== prevRatio || _reverting || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {
34343    if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents, tTime)) {
34344      // if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.
34345      return;
34346    }
34347
34348    prevIteration = tween._zTime;
34349    tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); // when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.
34350
34351    suppressEvents || (suppressEvents = totalTime && !prevIteration); // if it was rendered previously at exactly 0 (_zTime) and now the playhead is moving away, DON'T fire callbacks otherwise they'll seem like duplicates.
34352
34353    tween.ratio = ratio;
34354    tween._from && (ratio = 1 - ratio);
34355    tween._time = 0;
34356    tween._tTime = tTime;
34357    pt = tween._pt;
34358
34359    while (pt) {
34360      pt.r(ratio, pt.d);
34361      pt = pt._next;
34362    }
34363
34364    totalTime < 0 && _rewindStartAt(tween, totalTime, suppressEvents, true);
34365    tween._onUpdate && !suppressEvents && _callback(tween, "onUpdate");
34366    tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, "onRepeat");
34367
34368    if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {
34369      ratio && _removeFromParent(tween, 1);
34370
34371      if (!suppressEvents && !_reverting) {
34372        _callback(tween, ratio ? "onComplete" : "onReverseComplete", true);
34373
34374        tween._prom && tween._prom();
34375      }
34376    }
34377  } else if (!tween._zTime) {
34378    tween._zTime = totalTime;
34379  }
34380},
34381    _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {
34382  var child;
34383
34384  if (time > prevTime) {
34385    child = animation._first;
34386
34387    while (child && child._start <= time) {
34388      if (child.data === "isPause" && child._start > prevTime) {
34389        return child;
34390      }
34391
34392      child = child._next;
34393    }
34394  } else {
34395    child = animation._last;
34396
34397    while (child && child._start >= time) {
34398      if (child.data === "isPause" && child._start < prevTime) {
34399        return child;
34400      }
34401
34402      child = child._prev;
34403    }
34404  }
34405},
34406    _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) {
34407  var repeat = animation._repeat,
34408      dur = _roundPrecise(duration) || 0,
34409      totalProgress = animation._tTime / animation._tDur;
34410  totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);
34411  animation._dur = dur;
34412  animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _roundPrecise(dur * (repeat + 1) + animation._rDelay * repeat);
34413  totalProgress > 0 && !leavePlayhead && _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress);
34414  animation.parent && _setEnd(animation);
34415  skipUncache || _uncache(animation.parent, animation);
34416  return animation;
34417},
34418    _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {
34419  return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);
34420},
34421    _zeroPosition = {
34422  _start: 0,
34423  endTime: _emptyFunc,
34424  totalDuration: _emptyFunc
34425},
34426    _parsePosition = function _parsePosition(animation, position, percentAnimation) {
34427  var labels = animation.labels,
34428      recent = animation._recent || _zeroPosition,
34429      clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,
34430      //in case there's a child that infinitely repeats, users almost never intend for the insertion point of a new child to be based on a SUPER long value like that so we clip it and assume the most recently-added child's endTime should be used instead.
34431  i,
34432      offset,
34433      isPercent;
34434
34435  if (_isString(position) && (isNaN(position) || position in labels)) {
34436    //if the string is a number like "1", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).
34437    offset = position.charAt(0);
34438    isPercent = position.substr(-1) === "%";
34439    i = position.indexOf("=");
34440
34441    if (offset === "<" || offset === ">") {
34442      i >= 0 && (position = position.replace(/=/, ""));
34443      return (offset === "<" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);
34444    }
34445
34446    if (i < 0) {
34447      position in labels || (labels[position] = clippedDuration);
34448      return labels[position];
34449    }
34450
34451    offset = parseFloat(position.charAt(i - 1) + position.substr(i + 1));
34452
34453    if (isPercent && percentAnimation) {
34454      offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();
34455    }
34456
34457    return i > 1 ? _parsePosition(animation, position.substr(0, i - 1), percentAnimation) + offset : clippedDuration + offset;
34458  }
34459
34460  return position == null ? clippedDuration : +position;
34461},
34462    _createTweenType = function _createTweenType(type, params, timeline) {
34463  var isLegacy = _isNumber(params[1]),
34464      varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),
34465      vars = params[varsIndex],
34466      irVars,
34467      parent;
34468
34469  isLegacy && (vars.duration = params[1]);
34470  vars.parent = timeline;
34471
34472  if (type) {
34473    irVars = vars;
34474    parent = timeline;
34475
34476    while (parent && !("immediateRender" in irVars)) {
34477      // inheritance hasn't happened yet, but someone may have set a default in an ancestor timeline. We could do vars.immediateRender = _isNotFalse(_inheritDefaults(vars).immediateRender) but that'd exact a slight performance penalty because _inheritDefaults() also runs in the Tween constructor. We're paying a small kb price here to gain speed.
34478      irVars = parent.vars.defaults || {};
34479      parent = _isNotFalse(parent.vars.inherit) && parent.parent;
34480    }
34481
34482    vars.immediateRender = _isNotFalse(irVars.immediateRender);
34483    type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1]; // "from" vars
34484  }
34485
34486  return new Tween(params[0], vars, params[varsIndex + 1]);
34487},
34488    _conditionalReturn = function _conditionalReturn(value, func) {
34489  return value || value === 0 ? func(value) : func;
34490},
34491    _clamp = function _clamp(min, max, value) {
34492  return value < min ? min : value > max ? max : value;
34493},
34494    getUnit = function getUnit(value, v) {
34495  return !_isString(value) || !(v = _unitExp.exec(value)) ? "" : v[1];
34496},
34497    // note: protect against padded numbers as strings, like "100.100". That shouldn't return "00" as the unit. If it's numeric, return no unit.
34498clamp = function clamp(min, max, value) {
34499  return _conditionalReturn(value, function (v) {
34500    return _clamp(min, max, v);
34501  });
34502},
34503    _slice = [].slice,
34504    _isArrayLike = function _isArrayLike(value, nonEmpty) {
34505  return value && _isObject(value) && "length" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;
34506},
34507    _flatten = function _flatten(ar, leaveStrings, accumulator) {
34508  if (accumulator === void 0) {
34509    accumulator = [];
34510  }
34511
34512  return ar.forEach(function (value) {
34513    var _accumulator;
34514
34515    return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);
34516  }) || accumulator;
34517},
34518    //takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.
34519toArray = function toArray(value, scope, leaveStrings) {
34520  return _context && !scope && _context.selector ? _context.selector(value) : _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call((scope || _doc).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];
34521},
34522    selector = function selector(value) {
34523  value = toArray(value)[0] || _warn("Invalid scope") || {};
34524  return function (v) {
34525    var el = value.current || value.nativeElement || value;
34526    return toArray(v, el.querySelectorAll ? el : el === value ? _warn("Invalid scope") || _doc.createElement("div") : value);
34527  };
34528},
34529    shuffle = function shuffle(a) {
34530  return a.sort(function () {
34531    return .5 - Math.random();
34532  });
34533},
34534    // alternative that's a bit faster and more reliably diverse but bigger:   for (let j, v, i = a.length; i; j = Math.floor(Math.random() * i), v = a[--i], a[i] = a[j], a[j] = v); return a;
34535//for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following
34536distribute = function distribute(v) {
34537  if (_isFunction(v)) {
34538    return v;
34539  }
34540
34541  var vars = _isObject(v) ? v : {
34542    each: v
34543  },
34544      //n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total "amount" that's chunked out among them all.
34545  ease = _parseEase(vars.ease),
34546      from = vars.from || 0,
34547      base = parseFloat(vars.base) || 0,
34548      cache = {},
34549      isDecimal = from > 0 && from < 1,
34550      ratios = isNaN(from) || isDecimal,
34551      axis = vars.axis,
34552      ratioX = from,
34553      ratioY = from;
34554
34555  if (_isString(from)) {
34556    ratioX = ratioY = {
34557      center: .5,
34558      edges: .5,
34559      end: 1
34560    }[from] || 0;
34561  } else if (!isDecimal && ratios) {
34562    ratioX = from[0];
34563    ratioY = from[1];
34564  }
34565
34566  return function (i, target, a) {
34567    var l = (a || vars).length,
34568        distances = cache[l],
34569        originX,
34570        originY,
34571        x,
34572        y,
34573        d,
34574        j,
34575        max,
34576        min,
34577        wrapAt;
34578
34579    if (!distances) {
34580      wrapAt = vars.grid === "auto" ? 0 : (vars.grid || [1, _bigNum])[1];
34581
34582      if (!wrapAt) {
34583        max = -_bigNum;
34584
34585        while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}
34586
34587        wrapAt < l && wrapAt--;
34588      }
34589
34590      distances = cache[l] = [];
34591      originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;
34592      originY = wrapAt === _bigNum ? 0 : ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;
34593      max = 0;
34594      min = _bigNum;
34595
34596      for (j = 0; j < l; j++) {
34597        x = j % wrapAt - originX;
34598        y = originY - (j / wrapAt | 0);
34599        distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === "y" ? y : x);
34600        d > max && (max = d);
34601        d < min && (min = d);
34602      }
34603
34604      from === "random" && shuffle(distances);
34605      distances.max = max - min;
34606      distances.min = min;
34607      distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === "y" ? l / wrapAt : wrapAt) || 0) * (from === "edges" ? -1 : 1);
34608      distances.b = l < 0 ? base - l : base;
34609      distances.u = getUnit(vars.amount || vars.each) || 0; //unit
34610
34611      ease = ease && l < 0 ? _invertEase(ease) : ease;
34612    }
34613
34614    l = (distances[i] - distances.min) / distances.max || 0;
34615    return _roundPrecise(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; //round in order to work around floating point errors
34616  };
34617},
34618    _roundModifier = function _roundModifier(v) {
34619  //pass in 0.1 get a function that'll round to the nearest tenth, or 5 to round to the closest 5, or 0.001 to the closest 1000th, etc.
34620  var p = Math.pow(10, ((v + "").split(".")[1] || "").length); //to avoid floating point math errors (like 24 * 0.1 == 2.4000000000000004), we chop off at a specific number of decimal places (much faster than toFixed())
34621
34622  return function (raw) {
34623    var n = _roundPrecise(Math.round(parseFloat(raw) / v) * v * p);
34624
34625    return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw)); // n - n % 1 replaces Math.floor() in order to handle negative values properly. For example, Math.floor(-150.00000000000003) is 151!
34626  };
34627},
34628    snap = function snap(snapTo, value) {
34629  var isArray = _isArray(snapTo),
34630      radius,
34631      is2D;
34632
34633  if (!isArray && _isObject(snapTo)) {
34634    radius = isArray = snapTo.radius || _bigNum;
34635
34636    if (snapTo.values) {
34637      snapTo = toArray(snapTo.values);
34638
34639      if (is2D = !_isNumber(snapTo[0])) {
34640        radius *= radius; //performance optimization so we don't have to Math.sqrt() in the loop.
34641      }
34642    } else {
34643      snapTo = _roundModifier(snapTo.increment);
34644    }
34645  }
34646
34647  return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {
34648    is2D = snapTo(raw);
34649    return Math.abs(is2D - raw) <= radius ? is2D : raw;
34650  } : function (raw) {
34651    var x = parseFloat(is2D ? raw.x : raw),
34652        y = parseFloat(is2D ? raw.y : 0),
34653        min = _bigNum,
34654        closest = 0,
34655        i = snapTo.length,
34656        dx,
34657        dy;
34658
34659    while (i--) {
34660      if (is2D) {
34661        dx = snapTo[i].x - x;
34662        dy = snapTo[i].y - y;
34663        dx = dx * dx + dy * dy;
34664      } else {
34665        dx = Math.abs(snapTo[i] - x);
34666      }
34667
34668      if (dx < min) {
34669        min = dx;
34670        closest = i;
34671      }
34672    }
34673
34674    closest = !radius || min <= radius ? snapTo[closest] : raw;
34675    return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);
34676  });
34677},
34678    random = function random(min, max, roundingIncrement, returnFunction) {
34679  return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {
34680    return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + "").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;
34681  });
34682},
34683    pipe = function pipe() {
34684  for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {
34685    functions[_key] = arguments[_key];
34686  }
34687
34688  return function (value) {
34689    return functions.reduce(function (v, f) {
34690      return f(v);
34691    }, value);
34692  };
34693},
34694    unitize = function unitize(func, unit) {
34695  return function (value) {
34696    return func(parseFloat(value)) + (unit || getUnit(value));
34697  };
34698},
34699    normalize = function normalize(min, max, value) {
34700  return mapRange(min, max, 0, 1, value);
34701},
34702    _wrapArray = function _wrapArray(a, wrapper, value) {
34703  return _conditionalReturn(value, function (index) {
34704    return a[~~wrapper(index)];
34705  });
34706},
34707    wrap = function wrap(min, max, value) {
34708  // NOTE: wrap() CANNOT be an arrow function! A very odd compiling bug causes problems (unrelated to GSAP).
34709  var range = max - min;
34710  return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {
34711    return (range + (value - min) % range) % range + min;
34712  });
34713},
34714    wrapYoyo = function wrapYoyo(min, max, value) {
34715  var range = max - min,
34716      total = range * 2;
34717  return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {
34718    value = (total + (value - min) % total) % total || 0;
34719    return min + (value > range ? total - value : value);
34720  });
34721},
34722    _replaceRandom = function _replaceRandom(value) {
34723  //replaces all occurrences of random(...) in a string with the calculated random value. can be a range like random(-100, 100, 5) or an array like random([0, 100, 500])
34724  var prev = 0,
34725      s = "",
34726      i,
34727      nums,
34728      end,
34729      isArray;
34730
34731  while (~(i = value.indexOf("random(", prev))) {
34732    end = value.indexOf(")", i);
34733    isArray = value.charAt(i + 7) === "[";
34734    nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);
34735    s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);
34736    prev = end + 1;
34737  }
34738
34739  return s + value.substr(prev, value.length - prev);
34740},
34741    mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {
34742  var inRange = inMax - inMin,
34743      outRange = outMax - outMin;
34744  return _conditionalReturn(value, function (value) {
34745    return outMin + ((value - inMin) / inRange * outRange || 0);
34746  });
34747},
34748    interpolate = function interpolate(start, end, progress, mutate) {
34749  var func = isNaN(start + end) ? 0 : function (p) {
34750    return (1 - p) * start + p * end;
34751  };
34752
34753  if (!func) {
34754    var isString = _isString(start),
34755        master = {},
34756        p,
34757        i,
34758        interpolators,
34759        l,
34760        il;
34761
34762    progress === true && (mutate = 1) && (progress = null);
34763
34764    if (isString) {
34765      start = {
34766        p: start
34767      };
34768      end = {
34769        p: end
34770      };
34771    } else if (_isArray(start) && !_isArray(end)) {
34772      interpolators = [];
34773      l = start.length;
34774      il = l - 2;
34775
34776      for (i = 1; i < l; i++) {
34777        interpolators.push(interpolate(start[i - 1], start[i])); //build the interpolators up front as a performance optimization so that when the function is called many times, it can just reuse them.
34778      }
34779
34780      l--;
34781
34782      func = function func(p) {
34783        p *= l;
34784        var i = Math.min(il, ~~p);
34785        return interpolators[i](p - i);
34786      };
34787
34788      progress = end;
34789    } else if (!mutate) {
34790      start = _merge(_isArray(start) ? [] : {}, start);
34791    }
34792
34793    if (!interpolators) {
34794      for (p in end) {
34795        _addPropTween.call(master, start, p, "get", end[p]);
34796      }
34797
34798      func = function func(p) {
34799        return _renderPropTweens(p, master) || (isString ? start.p : start);
34800      };
34801    }
34802  }
34803
34804  return _conditionalReturn(progress, func);
34805},
34806    _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {
34807  //used for nextLabel() and previousLabel()
34808  var labels = timeline.labels,
34809      min = _bigNum,
34810      p,
34811      distance,
34812      label;
34813
34814  for (p in labels) {
34815    distance = labels[p] - fromTime;
34816
34817    if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {
34818      label = p;
34819      min = distance;
34820    }
34821  }
34822
34823  return label;
34824},
34825    _callback = function _callback(animation, type, executeLazyFirst) {
34826  var v = animation.vars,
34827      callback = v[type],
34828      prevContext = _context,
34829      context = animation._ctx,
34830      params,
34831      scope,
34832      result;
34833
34834  if (!callback) {
34835    return;
34836  }
34837
34838  params = v[type + "Params"];
34839  scope = v.callbackScope || animation;
34840  executeLazyFirst && _lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.
34841
34842  context && (_context = context);
34843  result = params ? callback.apply(scope, params) : callback.call(scope);
34844  _context = prevContext;
34845  return result;
34846},
34847    _interrupt = function _interrupt(animation) {
34848  _removeFromParent(animation);
34849
34850  animation.scrollTrigger && animation.scrollTrigger.kill(!!_reverting);
34851  animation.progress() < 1 && _callback(animation, "onInterrupt");
34852  return animation;
34853},
34854    _quickTween,
34855    _registerPluginQueue = [],
34856    _createPlugin = function _createPlugin(config) {
34857  if (!config) return;
34858  config = !config.name && config["default"] || config; // UMD packaging wraps things oddly, so for example MotionPathHelper becomes {MotionPathHelper:MotionPathHelper, default:MotionPathHelper}.
34859
34860  if (_windowExists() || config.headless) {
34861    // edge case: some build tools may pass in a null/undefined value
34862    var name = config.name,
34863        isFunc = _isFunction(config),
34864        Plugin = name && !isFunc && config.init ? function () {
34865      this._props = [];
34866    } : config,
34867        //in case someone passes in an object that's not a plugin, like CustomEase
34868    instanceDefaults = {
34869      init: _emptyFunc,
34870      render: _renderPropTweens,
34871      add: _addPropTween,
34872      kill: _killPropTweensOf,
34873      modifier: _addPluginModifier,
34874      rawVars: 0
34875    },
34876        statics = {
34877      targetTest: 0,
34878      get: 0,
34879      getSetter: _getSetter,
34880      aliases: {},
34881      register: 0
34882    };
34883
34884    _wake();
34885
34886    if (config !== Plugin) {
34887      if (_plugins[name]) {
34888        return;
34889      }
34890
34891      _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics)); //static methods
34892
34893
34894      _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); //instance methods
34895
34896
34897      _plugins[Plugin.prop = name] = Plugin;
34898
34899      if (config.targetTest) {
34900        _harnessPlugins.push(Plugin);
34901
34902        _reservedProps[name] = 1;
34903      }
34904
34905      name = (name === "css" ? "CSS" : name.charAt(0).toUpperCase() + name.substr(1)) + "Plugin"; //for the global name. "motionPath" should become MotionPathPlugin
34906    }
34907
34908    _addGlobal(name, Plugin);
34909
34910    config.register && config.register(gsap, Plugin, PropTween);
34911  } else {
34912    _registerPluginQueue.push(config);
34913  }
34914},
34915
34916/*
34917 * --------------------------------------------------------------------------------------
34918 * COLORS
34919 * --------------------------------------------------------------------------------------
34920 */
34921_255 = 255,
34922    _colorLookup = {
34923  aqua: [0, _255, _255],
34924  lime: [0, _255, 0],
34925  silver: [192, 192, 192],
34926  black: [0, 0, 0],
34927  maroon: [128, 0, 0],
34928  teal: [0, 128, 128],
34929  blue: [0, 0, _255],
34930  navy: [0, 0, 128],
34931  white: [_255, _255, _255],
34932  olive: [128, 128, 0],
34933  yellow: [_255, _255, 0],
34934  orange: [_255, 165, 0],
34935  gray: [128, 128, 128],
34936  purple: [128, 0, 128],
34937  green: [0, 128, 0],
34938  red: [_255, 0, 0],
34939  pink: [_255, 192, 203],
34940  cyan: [0, _255, _255],
34941  transparent: [_255, _255, _255, 0]
34942},
34943    // possible future idea to replace the hard-coded color name values - put this in the ticker.wake() where we set the _doc:
34944// let ctx = _doc.createElement("canvas").getContext("2d");
34945// _forEachName("aqua,lime,silver,black,maroon,teal,blue,navy,white,olive,yellow,orange,gray,purple,green,red,pink,cyan", color => {ctx.fillStyle = color; _colorLookup[color] = splitColor(ctx.fillStyle)});
34946_hue = function _hue(h, m1, m2) {
34947  h += h < 0 ? 1 : h > 1 ? -1 : 0;
34948  return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0;
34949},
34950    splitColor = function splitColor(v, toHSL, forceAlpha) {
34951  var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,
34952      r,
34953      g,
34954      b,
34955      h,
34956      s,
34957      l,
34958      max,
34959      min,
34960      d,
34961      wasHSL;
34962
34963  if (!a) {
34964    if (v.substr(-1) === ",") {
34965      //sometimes a trailing comma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)" - in this example "blue," has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.
34966      v = v.substr(0, v.length - 1);
34967    }
34968
34969    if (_colorLookup[v]) {
34970      a = _colorLookup[v];
34971    } else if (v.charAt(0) === "#") {
34972      if (v.length < 6) {
34973        //for shorthand like #9F0 or #9F0F (could have alpha)
34974        r = v.charAt(1);
34975        g = v.charAt(2);
34976        b = v.charAt(3);
34977        v = "#" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : "");
34978      }
34979
34980      if (v.length === 9) {
34981        // hex with alpha, like #fd5e53ff
34982        a = parseInt(v.substr(1, 6), 16);
34983        return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];
34984      }
34985
34986      v = parseInt(v.substr(1), 16);
34987      a = [v >> 16, v >> 8 & _255, v & _255];
34988    } else if (v.substr(0, 3) === "hsl") {
34989      a = wasHSL = v.match(_strictNumExp);
34990
34991      if (!toHSL) {
34992        h = +a[0] % 360 / 360;
34993        s = +a[1] / 100;
34994        l = +a[2] / 100;
34995        g = l <= .5 ? l * (s + 1) : l + s - l * s;
34996        r = l * 2 - g;
34997        a.length > 3 && (a[3] *= 1); //cast as number
34998
34999        a[0] = _hue(h + 1 / 3, r, g);
35000        a[1] = _hue(h, r, g);
35001        a[2] = _hue(h - 1 / 3, r, g);
35002      } else if (~v.indexOf("=")) {
35003        //if relative values are found, just return the raw strings with the relative prefixes in place.
35004        a = v.match(_numExp);
35005        forceAlpha && a.length < 4 && (a[3] = 1);
35006        return a;
35007      }
35008    } else {
35009      a = v.match(_strictNumExp) || _colorLookup.transparent;
35010    }
35011
35012    a = a.map(Number);
35013  }
35014
35015  if (toHSL && !wasHSL) {
35016    r = a[0] / _255;
35017    g = a[1] / _255;
35018    b = a[2] / _255;
35019    max = Math.max(r, g, b);
35020    min = Math.min(r, g, b);
35021    l = (max + min) / 2;
35022
35023    if (max === min) {
35024      h = s = 0;
35025    } else {
35026      d = max - min;
35027      s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
35028      h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;
35029      h *= 60;
35030    }
35031
35032    a[0] = ~~(h + .5);
35033    a[1] = ~~(s * 100 + .5);
35034    a[2] = ~~(l * 100 + .5);
35035  }
35036
35037  forceAlpha && a.length < 4 && (a[3] = 1);
35038  return a;
35039},
35040    _colorOrderData = function _colorOrderData(v) {
35041  // strips out the colors from the string, finds all the numeric slots (with units) and returns an array of those. The Array also has a "c" property which is an Array of the index values where the colors belong. This is to help work around issues where there's a mis-matched order of color/numeric data like drop-shadow(#f00 0px 1px 2px) and drop-shadow(0x 1px 2px #f00). This is basically a helper function used in _formatColors()
35042  var values = [],
35043      c = [],
35044      i = -1;
35045  v.split(_colorExp).forEach(function (v) {
35046    var a = v.match(_numWithUnitExp) || [];
35047    values.push.apply(values, a);
35048    c.push(i += a.length + 1);
35049  });
35050  values.c = c;
35051  return values;
35052},
35053    _formatColors = function _formatColors(s, toHSL, orderMatchData) {
35054  var result = "",
35055      colors = (s + result).match(_colorExp),
35056      type = toHSL ? "hsla(" : "rgba(",
35057      i = 0,
35058      c,
35059      shell,
35060      d,
35061      l;
35062
35063  if (!colors) {
35064    return s;
35065  }
35066
35067  colors = colors.map(function (color) {
35068    return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + "," + color[1] + "%," + color[2] + "%," + color[3] : color.join(",")) + ")";
35069  });
35070
35071  if (orderMatchData) {
35072    d = _colorOrderData(s);
35073    c = orderMatchData.c;
35074
35075    if (c.join(result) !== d.c.join(result)) {
35076      shell = s.replace(_colorExp, "1").split(_numWithUnitExp);
35077      l = shell.length - 1;
35078
35079      for (; i < l; i++) {
35080        result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + "0,0,0,0)" : (d.length ? d : colors.length ? colors : orderMatchData).shift());
35081      }
35082    }
35083  }
35084
35085  if (!shell) {
35086    shell = s.split(_colorExp);
35087    l = shell.length - 1;
35088
35089    for (; i < l; i++) {
35090      result += shell[i] + colors[i];
35091    }
35092  }
35093
35094  return result + shell[l];
35095},
35096    _colorExp = function () {
35097  var s = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3,4}){1,2}\\b",
35098      //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.,
35099  p;
35100
35101  for (p in _colorLookup) {
35102    s += "|" + p + "\\b";
35103  }
35104
35105  return new RegExp(s + ")", "gi");
35106}(),
35107    _hslExp = /hsl[a]?\(/,
35108    _colorStringFilter = function _colorStringFilter(a) {
35109  var combined = a.join(" "),
35110      toHSL;
35111  _colorExp.lastIndex = 0;
35112
35113  if (_colorExp.test(combined)) {
35114    toHSL = _hslExp.test(combined);
35115    a[1] = _formatColors(a[1], toHSL);
35116    a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1])); // make sure the order of numbers/colors match with the END value.
35117
35118    return true;
35119  }
35120},
35121
35122/*
35123 * --------------------------------------------------------------------------------------
35124 * TICKER
35125 * --------------------------------------------------------------------------------------
35126 */
35127_tickerActive,
35128    _ticker = function () {
35129  var _getTime = Date.now,
35130      _lagThreshold = 500,
35131      _adjustedLag = 33,
35132      _startTime = _getTime(),
35133      _lastUpdate = _startTime,
35134      _gap = 1000 / 240,
35135      _nextTime = _gap,
35136      _listeners = [],
35137      _id,
35138      _req,
35139      _raf,
35140      _self,
35141      _delta,
35142      _i,
35143      _tick = function _tick(v) {
35144    var elapsed = _getTime() - _lastUpdate,
35145        manual = v === true,
35146        overlap,
35147        dispatch,
35148        time,
35149        frame;
35150
35151    (elapsed > _lagThreshold || elapsed < 0) && (_startTime += elapsed - _adjustedLag);
35152    _lastUpdate += elapsed;
35153    time = _lastUpdate - _startTime;
35154    overlap = time - _nextTime;
35155
35156    if (overlap > 0 || manual) {
35157      frame = ++_self.frame;
35158      _delta = time - _self.time * 1000;
35159      _self.time = time = time / 1000;
35160      _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);
35161      dispatch = 1;
35162    }
35163
35164    manual || (_id = _req(_tick)); //make sure the request is made before we dispatch the "tick" event so that timing is maintained. Otherwise, if processing the "tick" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.
35165
35166    if (dispatch) {
35167      for (_i = 0; _i < _listeners.length; _i++) {
35168        // use _i and check _listeners.length instead of a variable because a listener could get removed during the loop, and if that happens to an element less than the current index, it'd throw things off in the loop.
35169        _listeners[_i](time, _delta, frame, v);
35170      }
35171    }
35172  };
35173
35174  _self = {
35175    time: 0,
35176    frame: 0,
35177    tick: function tick() {
35178      _tick(true);
35179    },
35180    deltaRatio: function deltaRatio(fps) {
35181      return _delta / (1000 / (fps || 60));
35182    },
35183    wake: function wake() {
35184      if (_coreReady) {
35185        if (!_coreInitted && _windowExists()) {
35186          _win = _coreInitted = window;
35187          _doc = _win.document || {};
35188          _globals.gsap = gsap;
35189          (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);
35190
35191          _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});
35192
35193          _registerPluginQueue.forEach(_createPlugin);
35194        }
35195
35196        _raf = typeof requestAnimationFrame !== "undefined" && requestAnimationFrame;
35197        _id && _self.sleep();
35198
35199        _req = _raf || function (f) {
35200          return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0);
35201        };
35202
35203        _tickerActive = 1;
35204
35205        _tick(2);
35206      }
35207    },
35208    sleep: function sleep() {
35209      (_raf ? cancelAnimationFrame : clearTimeout)(_id);
35210      _tickerActive = 0;
35211      _req = _emptyFunc;
35212    },
35213    lagSmoothing: function lagSmoothing(threshold, adjustedLag) {
35214      _lagThreshold = threshold || Infinity; // zero should be interpreted as basically unlimited
35215
35216      _adjustedLag = Math.min(adjustedLag || 33, _lagThreshold);
35217    },
35218    fps: function fps(_fps) {
35219      _gap = 1000 / (_fps || 240);
35220      _nextTime = _self.time * 1000 + _gap;
35221    },
35222    add: function add(callback, once, prioritize) {
35223      var func = once ? function (t, d, f, v) {
35224        callback(t, d, f, v);
35225
35226        _self.remove(func);
35227      } : callback;
35228
35229      _self.remove(callback);
35230
35231      _listeners[prioritize ? "unshift" : "push"](func);
35232
35233      _wake();
35234
35235      return func;
35236    },
35237    remove: function remove(callback, i) {
35238      ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;
35239    },
35240    _listeners: _listeners
35241  };
35242  return _self;
35243}(),
35244    _wake = function _wake() {
35245  return !_tickerActive && _ticker.wake();
35246},
35247    //also ensures the core classes are initialized.
35248
35249/*
35250* -------------------------------------------------
35251* EASING
35252* -------------------------------------------------
35253*/
35254_easeMap = {},
35255    _customEaseExp = /^[\d.\-M][\d.\-,\s]/,
35256    _quotesExp = /["']/g,
35257    _parseObjectInString = function _parseObjectInString(value) {
35258  //takes a string like "{wiggles:10, type:anticipate})" and turns it into a real object. Notice it ends in ")" and includes the {} wrappers. This is because we only use this function for parsing ease configs and prioritized optimization rather than reusability.
35259  var obj = {},
35260      split = value.substr(1, value.length - 3).split(":"),
35261      key = split[0],
35262      i = 1,
35263      l = split.length,
35264      index,
35265      val,
35266      parsedVal;
35267
35268  for (; i < l; i++) {
35269    val = split[i];
35270    index = i !== l - 1 ? val.lastIndexOf(",") : val.length;
35271    parsedVal = val.substr(0, index);
35272    obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, "").trim() : +parsedVal;
35273    key = val.substr(index + 1).trim();
35274  }
35275
35276  return obj;
35277},
35278    _valueInParentheses = function _valueInParentheses(value) {
35279  var open = value.indexOf("(") + 1,
35280      close = value.indexOf(")"),
35281      nested = value.indexOf("(", open);
35282  return value.substring(open, ~nested && nested < close ? value.indexOf(")", close + 1) : close);
35283},
35284    _configEaseFromString = function _configEaseFromString(name) {
35285  //name can be a string like "elastic.out(1,0.5)", and pass in _easeMap as obj and it'll parse it out and call the actual function like _easeMap.Elastic.easeOut.config(1,0.5). It will also parse custom ease strings as long as CustomEase is loaded and registered (internally as _easeMap._CE).
35286  var split = (name + "").split("("),
35287      ease = _easeMap[split[0]];
35288  return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf("{") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(",").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE("", name) : ease;
35289},
35290    _invertEase = function _invertEase(ease) {
35291  return function (p) {
35292    return 1 - ease(1 - p);
35293  };
35294},
35295    // allow yoyoEase to be set in children and have those affected when the parent/ancestor timeline yoyos.
35296_propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) {
35297  var child = timeline._first,
35298      ease;
35299
35300  while (child) {
35301    if (child instanceof Timeline) {
35302      _propagateYoyoEase(child, isYoyo);
35303    } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {
35304      if (child.timeline) {
35305        _propagateYoyoEase(child.timeline, isYoyo);
35306      } else {
35307        ease = child._ease;
35308        child._ease = child._yEase;
35309        child._yEase = ease;
35310        child._yoyo = isYoyo;
35311      }
35312    }
35313
35314    child = child._next;
35315  }
35316},
35317    _parseEase = function _parseEase(ease, defaultEase) {
35318  return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;
35319},
35320    _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {
35321  if (easeOut === void 0) {
35322    easeOut = function easeOut(p) {
35323      return 1 - easeIn(1 - p);
35324    };
35325  }
35326
35327  if (easeInOut === void 0) {
35328    easeInOut = function easeInOut(p) {
35329      return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;
35330    };
35331  }
35332
35333  var ease = {
35334    easeIn: easeIn,
35335    easeOut: easeOut,
35336    easeInOut: easeInOut
35337  },
35338      lowercaseName;
35339
35340  _forEachName(names, function (name) {
35341    _easeMap[name] = _globals[name] = ease;
35342    _easeMap[lowercaseName = name.toLowerCase()] = easeOut;
35343
35344    for (var p in ease) {
35345      _easeMap[lowercaseName + (p === "easeIn" ? ".in" : p === "easeOut" ? ".out" : ".inOut")] = _easeMap[name + "." + p] = ease[p];
35346    }
35347  });
35348
35349  return ease;
35350},
35351    _easeInOutFromOut = function _easeInOutFromOut(easeOut) {
35352  return function (p) {
35353    return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;
35354  };
35355},
35356    _configElastic = function _configElastic(type, amplitude, period) {
35357  var p1 = amplitude >= 1 ? amplitude : 1,
35358      //note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1.
35359  p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),
35360      p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),
35361      easeOut = function easeOut(p) {
35362    return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;
35363  },
35364      ease = type === "out" ? easeOut : type === "in" ? function (p) {
35365    return 1 - easeOut(1 - p);
35366  } : _easeInOutFromOut(easeOut);
35367
35368  p2 = _2PI / p2; //precalculate to optimize
35369
35370  ease.config = function (amplitude, period) {
35371    return _configElastic(type, amplitude, period);
35372  };
35373
35374  return ease;
35375},
35376    _configBack = function _configBack(type, overshoot) {
35377  if (overshoot === void 0) {
35378    overshoot = 1.70158;
35379  }
35380
35381  var easeOut = function easeOut(p) {
35382    return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;
35383  },
35384      ease = type === "out" ? easeOut : type === "in" ? function (p) {
35385    return 1 - easeOut(1 - p);
35386  } : _easeInOutFromOut(easeOut);
35387
35388  ease.config = function (overshoot) {
35389    return _configBack(type, overshoot);
35390  };
35391
35392  return ease;
35393}; // a cheaper (kb and cpu) but more mild way to get a parameterized weighted ease by feeding in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.
35394// _weightedEase = ratio => {
35395// 	let y = 0.5 + ratio / 2;
35396// 	return p => (2 * (1 - p) * p * y + p * p);
35397// },
35398// a stronger (but more expensive kb/cpu) parameterized weighted ease that lets you feed in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.
35399// _weightedEaseStrong = ratio => {
35400// 	ratio = .5 + ratio / 2;
35401// 	let o = 1 / 3 * (ratio < .5 ? ratio : 1 - ratio),
35402// 		b = ratio - o,
35403// 		c = ratio + o;
35404// 	return p => p === 1 ? p : 3 * b * (1 - p) * (1 - p) * p + 3 * c * (1 - p) * p * p + p * p * p;
35405// };
35406
35407
35408_forEachName("Linear,Quad,Cubic,Quart,Quint,Strong", function (name, i) {
35409  var power = i < 5 ? i + 1 : i;
35410
35411  _insertEase(name + ",Power" + (power - 1), i ? function (p) {
35412    return Math.pow(p, power);
35413  } : function (p) {
35414    return p;
35415  }, function (p) {
35416    return 1 - Math.pow(1 - p, power);
35417  }, function (p) {
35418    return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;
35419  });
35420});
35421
35422_easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;
35423
35424_insertEase("Elastic", _configElastic("in"), _configElastic("out"), _configElastic());
35425
35426(function (n, c) {
35427  var n1 = 1 / c,
35428      n2 = 2 * n1,
35429      n3 = 2.5 * n1,
35430      easeOut = function easeOut(p) {
35431    return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375;
35432  };
35433
35434  _insertEase("Bounce", function (p) {
35435    return 1 - easeOut(1 - p);
35436  }, easeOut);
35437})(7.5625, 2.75);
35438
35439_insertEase("Expo", function (p) {
35440  return p ? Math.pow(2, 10 * (p - 1)) : 0;
35441});
35442
35443_insertEase("Circ", function (p) {
35444  return -(_sqrt(1 - p * p) - 1);
35445});
35446
35447_insertEase("Sine", function (p) {
35448  return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;
35449});
35450
35451_insertEase("Back", _configBack("in"), _configBack("out"), _configBack());
35452
35453_easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {
35454  config: function config(steps, immediateStart) {
35455    if (steps === void 0) {
35456      steps = 1;
35457    }
35458
35459    var p1 = 1 / steps,
35460        p2 = steps + (immediateStart ? 0 : 1),
35461        p3 = immediateStart ? 1 : 0,
35462        max = 1 - _tinyNum;
35463    return function (p) {
35464      return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;
35465    };
35466  }
35467};
35468_defaults.ease = _easeMap["quad.out"];
35469
35470_forEachName("onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt", function (name) {
35471  return _callbackNames += name + "," + name + "Params,";
35472});
35473/*
35474 * --------------------------------------------------------------------------------------
35475 * CACHE
35476 * --------------------------------------------------------------------------------------
35477 */
35478
35479
35480var GSCache = function GSCache(target, harness) {
35481  this.id = _gsID++;
35482  target._gsap = this;
35483  this.target = target;
35484  this.harness = harness;
35485  this.get = harness ? harness.get : _getProperty;
35486  this.set = harness ? harness.getSetter : _getSetter;
35487};
35488/*
35489 * --------------------------------------------------------------------------------------
35490 * ANIMATION
35491 * --------------------------------------------------------------------------------------
35492 */
35493
35494var Animation = /*#__PURE__*/function () {
35495  function Animation(vars) {
35496    this.vars = vars;
35497    this._delay = +vars.delay || 0;
35498
35499    if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {
35500      // TODO: repeat: Infinity on a timeline's children must flag that timeline internally and affect its totalDuration, otherwise it'll stop in the negative direction when reaching the start.
35501      this._rDelay = vars.repeatDelay || 0;
35502      this._yoyo = !!vars.yoyo || !!vars.yoyoEase;
35503    }
35504
35505    this._ts = 1;
35506
35507    _setDuration(this, +vars.duration, 1, 1);
35508
35509    this.data = vars.data;
35510
35511    if (_context) {
35512      this._ctx = _context;
35513
35514      _context.data.push(this);
35515    }
35516
35517    _tickerActive || _ticker.wake();
35518  }
35519
35520  var _proto = Animation.prototype;
35521
35522  _proto.delay = function delay(value) {
35523    if (value || value === 0) {
35524      this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);
35525      this._delay = value;
35526      return this;
35527    }
35528
35529    return this._delay;
35530  };
35531
35532  _proto.duration = function duration(value) {
35533    return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;
35534  };
35535
35536  _proto.totalDuration = function totalDuration(value) {
35537    if (!arguments.length) {
35538      return this._tDur;
35539    }
35540
35541    this._dirty = 0;
35542    return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));
35543  };
35544
35545  _proto.totalTime = function totalTime(_totalTime, suppressEvents) {
35546    _wake();
35547
35548    if (!arguments.length) {
35549      return this._tTime;
35550    }
35551
35552    var parent = this._dp;
35553
35554    if (parent && parent.smoothChildTiming && this._ts) {
35555      _alignPlayhead(this, _totalTime);
35556
35557      !parent._dp || parent.parent || _postAddChecks(parent, this); // edge case: if this is a child of a timeline that already completed, for example, we must re-activate the parent.
35558      //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The start of that child would get pushed out, but one of the ancestors may have completed.
35559
35560      while (parent && parent.parent) {
35561        if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {
35562          parent.totalTime(parent._tTime, true);
35563        }
35564
35565        parent = parent.parent;
35566      }
35567
35568      if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {
35569        //if the animation doesn't have a parent, put it back into its last parent (recorded as _dp for exactly cases like this). Limit to parents with autoRemoveChildren (like globalTimeline) so that if the user manually removes an animation from a timeline and then alters its playhead, it doesn't get added back in.
35570        _addToTimeline(this._dp, this, this._start - this._delay);
35571      }
35572    }
35573
35574    if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {
35575      // check for _ptLookup on a Tween instance to ensure it has actually finished being instantiated, otherwise if this.reverse() gets called in the Animation constructor, it could trigger a render() here even though the _targets weren't populated, thus when _init() is called there won't be any PropTweens (it'll act like the tween is non-functional)
35576      this._ts || (this._pTime = _totalTime); // otherwise, if an animation is paused, then the playhead is moved back to zero, then resumed, it'd revert back to the original time at the pause
35577      //if (!this._lock) { // avoid endless recursion (not sure we need this yet or if it's worth the performance hit)
35578      //   this._lock = 1;
35579
35580      _lazySafeRender(this, _totalTime, suppressEvents); //   this._lock = 0;
35581      //}
35582
35583    }
35584
35585    return this;
35586  };
35587
35588  _proto.time = function time(value, suppressEvents) {
35589    return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time; // note: if the modulus results in 0, the playhead could be exactly at the end or the beginning, and we always defer to the END with a non-zero value, otherwise if you set the time() to the very end (duration()), it would render at the START!
35590  };
35591
35592  _proto.totalProgress = function totalProgress(value, suppressEvents) {
35593    return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.rawTime() > 0 ? 1 : 0;
35594  };
35595
35596  _proto.progress = function progress(value, suppressEvents) {
35597    return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.rawTime() > 0 ? 1 : 0;
35598  };
35599
35600  _proto.iteration = function iteration(value, suppressEvents) {
35601    var cycleDuration = this.duration() + this._rDelay;
35602
35603    return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;
35604  } // potential future addition:
35605  // isPlayingBackwards() {
35606  // 	let animation = this,
35607  // 		orientation = 1; // 1 = forward, -1 = backward
35608  // 	while (animation) {
35609  // 		orientation *= animation.reversed() || (animation.repeat() && !(animation.iteration() & 1)) ? -1 : 1;
35610  // 		animation = animation.parent;
35611  // 	}
35612  // 	return orientation < 0;
35613  // }
35614  ;
35615
35616  _proto.timeScale = function timeScale(value, suppressEvents) {
35617    if (!arguments.length) {
35618      return this._rts === -_tinyNum ? 0 : this._rts; // recorded timeScale. Special case: if someone calls reverse() on an animation with timeScale of 0, we assign it -_tinyNum to remember it's reversed.
35619    }
35620
35621    if (this._rts === value) {
35622      return this;
35623    }
35624
35625    var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; // make sure to do the parentToChildTotalTime() BEFORE setting the new _ts because the old one must be used in that calculation.
35626    // future addition? Up side: fast and minimal file size. Down side: only works on this animation; if a timeline is reversed, for example, its childrens' onReverse wouldn't get called.
35627    //(+value < 0 && this._rts >= 0) && _callback(this, "onReverse", true);
35628    // prioritize rendering where the parent's playhead lines up instead of this._tTime because there could be a tween that's animating another tween's timeScale in the same rendering loop (same parent), thus if the timeScale tween renders first, it would alter _start BEFORE _tTime was set on that tick (in the rendering loop), effectively freezing it until the timeScale tween finishes.
35629
35630    this._rts = +value || 0;
35631    this._ts = this._ps || value === -_tinyNum ? 0 : this._rts; // _ts is the functional timeScale which would be 0 if the animation is paused.
35632
35633    this.totalTime(_clamp(-Math.abs(this._delay), this._tDur, tTime), suppressEvents !== false);
35634
35635    _setEnd(this); // if parent.smoothChildTiming was false, the end time didn't get updated in the _alignPlayhead() method, so do it here.
35636
35637
35638    return _recacheAncestors(this);
35639  };
35640
35641  _proto.paused = function paused(value) {
35642    if (!arguments.length) {
35643      return this._ps;
35644    }
35645
35646    if (this._ps !== value) {
35647      this._ps = value;
35648
35649      if (value) {
35650        this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); // if the pause occurs during the delay phase, make sure that's factored in when resuming.
35651
35652        this._ts = this._act = 0; // _ts is the functional timeScale, so a paused tween would effectively have a timeScale of 0. We record the "real" timeScale as _rts (recorded time scale)
35653      } else {
35654        _wake();
35655
35656        this._ts = this._rts; //only defer to _pTime (pauseTime) if tTime is zero. Remember, someone could pause() an animation, then scrub the playhead and resume(). If the parent doesn't have smoothChildTiming, we render at the rawTime() because the startTime won't get updated.
35657
35658        this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum)); // edge case: animation.progress(1).pause().play() wouldn't render again because the playhead is already at the end, but the call to totalTime() below will add it back to its parent...and not remove it again (since removing only happens upon rendering at a new time). Offsetting the _tTime slightly is done simply to cause the final render in totalTime() that'll pop it off its timeline (if autoRemoveChildren is true, of course). Check to make sure _zTime isn't -_tinyNum to avoid an edge case where the playhead is pushed to the end but INSIDE a tween/callback, the timeline itself is paused thus halting rendering and leaving a few unrendered. When resuming, it wouldn't render those otherwise.
35659      }
35660    }
35661
35662    return this;
35663  };
35664
35665  _proto.startTime = function startTime(value) {
35666    if (arguments.length) {
35667      this._start = value;
35668      var parent = this.parent || this._dp;
35669      parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);
35670      return this;
35671    }
35672
35673    return this._start;
35674  };
35675
35676  _proto.endTime = function endTime(includeRepeats) {
35677    return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1);
35678  };
35679
35680  _proto.rawTime = function rawTime(wrapRepeats) {
35681    var parent = this.parent || this._dp; // _dp = detached parent
35682
35683    return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);
35684  };
35685
35686  _proto.revert = function revert(config) {
35687    if (config === void 0) {
35688      config = _revertConfig;
35689    }
35690
35691    var prevIsReverting = _reverting;
35692    _reverting = config;
35693
35694    if (this._initted || this._startAt) {
35695      this.timeline && this.timeline.revert(config);
35696      this.totalTime(-0.01, config.suppressEvents);
35697    }
35698
35699    this.data !== "nested" && config.kill !== false && this.kill();
35700    _reverting = prevIsReverting;
35701    return this;
35702  };
35703
35704  _proto.globalTime = function globalTime(rawTime) {
35705    var animation = this,
35706        time = arguments.length ? rawTime : animation.rawTime();
35707
35708    while (animation) {
35709      time = animation._start + time / (Math.abs(animation._ts) || 1);
35710      animation = animation._dp;
35711    }
35712
35713    return !this.parent && this._sat ? this._sat.globalTime(rawTime) : time; // the _startAt tweens for .fromTo() and .from() that have immediateRender should always be FIRST in the timeline (important for context.revert()). "_sat" stands for _startAtTween, referring to the parent tween that created the _startAt. We must discern if that tween had immediateRender so that we can know whether or not to prioritize it in revert().
35714  };
35715
35716  _proto.repeat = function repeat(value) {
35717    if (arguments.length) {
35718      this._repeat = value === Infinity ? -2 : value;
35719      return _onUpdateTotalDuration(this);
35720    }
35721
35722    return this._repeat === -2 ? Infinity : this._repeat;
35723  };
35724
35725  _proto.repeatDelay = function repeatDelay(value) {
35726    if (arguments.length) {
35727      var time = this._time;
35728      this._rDelay = value;
35729
35730      _onUpdateTotalDuration(this);
35731
35732      return time ? this.time(time) : this;
35733    }
35734
35735    return this._rDelay;
35736  };
35737
35738  _proto.yoyo = function yoyo(value) {
35739    if (arguments.length) {
35740      this._yoyo = value;
35741      return this;
35742    }
35743
35744    return this._yoyo;
35745  };
35746
35747  _proto.seek = function seek(position, suppressEvents) {
35748    return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));
35749  };
35750
35751  _proto.restart = function restart(includeDelay, suppressEvents) {
35752    return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));
35753  };
35754
35755  _proto.play = function play(from, suppressEvents) {
35756    from != null && this.seek(from, suppressEvents);
35757    return this.reversed(false).paused(false);
35758  };
35759
35760  _proto.reverse = function reverse(from, suppressEvents) {
35761    from != null && this.seek(from || this.totalDuration(), suppressEvents);
35762    return this.reversed(true).paused(false);
35763  };
35764
35765  _proto.pause = function pause(atTime, suppressEvents) {
35766    atTime != null && this.seek(atTime, suppressEvents);
35767    return this.paused(true);
35768  };
35769
35770  _proto.resume = function resume() {
35771    return this.paused(false);
35772  };
35773
35774  _proto.reversed = function reversed(value) {
35775    if (arguments.length) {
35776      !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0)); // in case timeScale is zero, reversing would have no effect so we use _tinyNum.
35777
35778      return this;
35779    }
35780
35781    return this._rts < 0;
35782  };
35783
35784  _proto.invalidate = function invalidate() {
35785    this._initted = this._act = 0;
35786    this._zTime = -_tinyNum;
35787    return this;
35788  };
35789
35790  _proto.isActive = function isActive() {
35791    var parent = this.parent || this._dp,
35792        start = this._start,
35793        rawTime;
35794    return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);
35795  };
35796
35797  _proto.eventCallback = function eventCallback(type, callback, params) {
35798    var vars = this.vars;
35799
35800    if (arguments.length > 1) {
35801      if (!callback) {
35802        delete vars[type];
35803      } else {
35804        vars[type] = callback;
35805        params && (vars[type + "Params"] = params);
35806        type === "onUpdate" && (this._onUpdate = callback);
35807      }
35808
35809      return this;
35810    }
35811
35812    return vars[type];
35813  };
35814
35815  _proto.then = function then(onFulfilled) {
35816    var self = this;
35817    return new Promise(function (resolve) {
35818      var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,
35819          _resolve = function _resolve() {
35820        var _then = self.then;
35821        self.then = null; // temporarily null the then() method to avoid an infinite loop (see https://github.com/greensock/GSAP/issues/322)
35822
35823        _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);
35824        resolve(f);
35825        self.then = _then;
35826      };
35827
35828      if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {
35829        _resolve();
35830      } else {
35831        self._prom = _resolve;
35832      }
35833    });
35834  };
35835
35836  _proto.kill = function kill() {
35837    _interrupt(this);
35838  };
35839
35840  return Animation;
35841}();
35842
35843_setDefaults(Animation.prototype, {
35844  _time: 0,
35845  _start: 0,
35846  _end: 0,
35847  _tTime: 0,
35848  _tDur: 0,
35849  _dirty: 0,
35850  _repeat: 0,
35851  _yoyo: false,
35852  parent: null,
35853  _initted: false,
35854  _rDelay: 0,
35855  _ts: 1,
35856  _dp: 0,
35857  ratio: 0,
35858  _zTime: -_tinyNum,
35859  _prom: 0,
35860  _ps: false,
35861  _rts: 1
35862});
35863/*
35864 * -------------------------------------------------
35865 * TIMELINE
35866 * -------------------------------------------------
35867 */
35868
35869
35870var Timeline = /*#__PURE__*/function (_Animation) {
35871  _inheritsLoose(Timeline, _Animation);
35872
35873  function Timeline(vars, position) {
35874    var _this;
35875
35876    if (vars === void 0) {
35877      vars = {};
35878    }
35879
35880    _this = _Animation.call(this, vars) || this;
35881    _this.labels = {};
35882    _this.smoothChildTiming = !!vars.smoothChildTiming;
35883    _this.autoRemoveChildren = !!vars.autoRemoveChildren;
35884    _this._sort = _isNotFalse(vars.sortChildren);
35885    _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position);
35886    vars.reversed && _this.reverse();
35887    vars.paused && _this.paused(true);
35888    vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);
35889    return _this;
35890  }
35891
35892  var _proto2 = Timeline.prototype;
35893
35894  _proto2.to = function to(targets, vars, position) {
35895    _createTweenType(0, arguments, this);
35896
35897    return this;
35898  };
35899
35900  _proto2.from = function from(targets, vars, position) {
35901    _createTweenType(1, arguments, this);
35902
35903    return this;
35904  };
35905
35906  _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {
35907    _createTweenType(2, arguments, this);
35908
35909    return this;
35910  };
35911
35912  _proto2.set = function set(targets, vars, position) {
35913    vars.duration = 0;
35914    vars.parent = this;
35915    _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);
35916    vars.immediateRender = !!vars.immediateRender;
35917    new Tween(targets, vars, _parsePosition(this, position), 1);
35918    return this;
35919  };
35920
35921  _proto2.call = function call(callback, params, position) {
35922    return _addToTimeline(this, Tween.delayedCall(0, callback, params), position);
35923  } //ONLY for backward compatibility! Maybe delete?
35924  ;
35925
35926  _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {
35927    vars.duration = duration;
35928    vars.stagger = vars.stagger || stagger;
35929    vars.onComplete = onCompleteAll;
35930    vars.onCompleteParams = onCompleteAllParams;
35931    vars.parent = this;
35932    new Tween(targets, vars, _parsePosition(this, position));
35933    return this;
35934  };
35935
35936  _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {
35937    vars.runBackwards = 1;
35938    _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);
35939    return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);
35940  };
35941
35942  _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {
35943    toVars.startAt = fromVars;
35944    _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);
35945    return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);
35946  };
35947
35948  _proto2.render = function render(totalTime, suppressEvents, force) {
35949    var prevTime = this._time,
35950        tDur = this._dirty ? this.totalDuration() : this._tDur,
35951        dur = this._dur,
35952        tTime = totalTime <= 0 ? 0 : _roundPrecise(totalTime),
35953        // if a paused timeline is resumed (or its _start is updated for another reason...which rounds it), that could result in the playhead shifting a **tiny** amount and a zero-duration child at that spot may get rendered at a different ratio, like its totalTime in render() may be 1e-17 instead of 0, for example.
35954    crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),
35955        time,
35956        child,
35957        next,
35958        iteration,
35959        cycleDuration,
35960        prevPaused,
35961        pauseTween,
35962        timeScale,
35963        prevStart,
35964        prevIteration,
35965        yoyo,
35966        isYoyo;
35967    this !== _globalTimeline && tTime > tDur && totalTime >= 0 && (tTime = tDur);
35968
35969    if (tTime !== this._tTime || force || crossingStart) {
35970      if (prevTime !== this._time && dur) {
35971        //if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).
35972        tTime += this._time - prevTime;
35973        totalTime += this._time - prevTime;
35974      }
35975
35976      time = tTime;
35977      prevStart = this._start;
35978      timeScale = this._ts;
35979      prevPaused = !timeScale;
35980
35981      if (crossingStart) {
35982        dur || (prevTime = this._zTime); //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.
35983
35984        (totalTime || !suppressEvents) && (this._zTime = totalTime);
35985      }
35986
35987      if (this._repeat) {
35988        //adjust the time for repeats and yoyos
35989        yoyo = this._yoyo;
35990        cycleDuration = dur + this._rDelay;
35991
35992        if (this._repeat < -1 && totalTime < 0) {
35993          return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);
35994        }
35995
35996        time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)
35997
35998        if (tTime === tDur) {
35999          // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)
36000          iteration = this._repeat;
36001          time = dur;
36002        } else {
36003          iteration = ~~(tTime / cycleDuration);
36004
36005          if (iteration && iteration === tTime / cycleDuration) {
36006            time = dur;
36007            iteration--;
36008          }
36009
36010          time > dur && (time = dur);
36011        }
36012
36013        prevIteration = _animationCycle(this._tTime, cycleDuration);
36014        !prevTime && this._tTime && prevIteration !== iteration && this._tTime - prevIteration * cycleDuration - this._dur <= 0 && (prevIteration = iteration); // edge case - if someone does addPause() at the very beginning of a repeating timeline, that pause is technically at the same spot as the end which causes this._time to get set to 0 when the totalTime would normally place the playhead at the end. See https://gsap.com/forums/topic/23823-closing-nav-animation-not-working-on-ie-and-iphone-6-maybe-other-older-browser/?tab=comments#comment-113005 also, this._tTime - prevIteration * cycleDuration - this._dur <= 0 just checks to make sure it wasn't previously in the "repeatDelay" portion
36015
36016        if (yoyo && iteration & 1) {
36017          time = dur - time;
36018          isYoyo = 1;
36019        }
36020        /*
36021        make sure children at the end/beginning of the timeline are rendered properly. If, for example,
36022        a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which
36023        would get translated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there
36024        could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So
36025        we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must
36026        ensure that zero-duration tweens at the very beginning or end of the Timeline work.
36027        */
36028
36029
36030        if (iteration !== prevIteration && !this._lock) {
36031          var rewinding = yoyo && prevIteration & 1,
36032              doesWrap = rewinding === (yoyo && iteration & 1);
36033          iteration < prevIteration && (rewinding = !rewinding);
36034          prevTime = rewinding ? 0 : tTime % dur ? dur : tTime; // if the playhead is landing exactly at the end of an iteration, use that totalTime rather than only the duration, otherwise it'll skip the 2nd render since it's effectively at the same time.
36035
36036          this._lock = 1;
36037          this.render(prevTime || (isYoyo ? 0 : _roundPrecise(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;
36038          this._tTime = tTime; // if a user gets the iteration() inside the onRepeat, for example, it should be accurate.
36039
36040          !suppressEvents && this.parent && _callback(this, "onRepeat");
36041          this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);
36042
36043          if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {
36044            // if prevTime is 0 and we render at the very end, _time will be the end, thus won't match. So in this edge case, prevTime won't match _time but that's okay. If it gets killed in the onRepeat, eject as well.
36045            return this;
36046          }
36047
36048          dur = this._dur; // in case the duration changed in the onRepeat
36049
36050          tDur = this._tDur;
36051
36052          if (doesWrap) {
36053            this._lock = 2;
36054            prevTime = rewinding ? dur : -0.0001;
36055            this.render(prevTime, true);
36056            this.vars.repeatRefresh && !isYoyo && this.invalidate();
36057          }
36058
36059          this._lock = 0;
36060
36061          if (!this._ts && !prevPaused) {
36062            return this;
36063          } //in order for yoyoEase to work properly when there's a stagger, we must swap out the ease in each sub-tween.
36064
36065
36066          _propagateYoyoEase(this, isYoyo);
36067        }
36068      }
36069
36070      if (this._hasPause && !this._forcing && this._lock < 2) {
36071        pauseTween = _findNextPauseTween(this, _roundPrecise(prevTime), _roundPrecise(time));
36072
36073        if (pauseTween) {
36074          tTime -= time - (time = pauseTween._start);
36075        }
36076      }
36077
36078      this._tTime = tTime;
36079      this._time = time;
36080      this._act = !timeScale; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.
36081
36082      if (!this._initted) {
36083        this._onUpdate = this.vars.onUpdate;
36084        this._initted = 1;
36085        this._zTime = totalTime;
36086        prevTime = 0; // upon init, the playhead should always go forward; someone could invalidate() a completed timeline and then if they restart(), that would make child tweens render in reverse order which could lock in the wrong starting values if they build on each other, like tl.to(obj, {x: 100}).to(obj, {x: 0}).
36087      }
36088
36089      if (!prevTime && time && !suppressEvents && !iteration) {
36090        _callback(this, "onStart");
36091
36092        if (this._tTime !== tTime) {
36093          // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.
36094          return this;
36095        }
36096      }
36097
36098      if (time >= prevTime && totalTime >= 0) {
36099        child = this._first;
36100
36101        while (child) {
36102          next = child._next;
36103
36104          if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {
36105            if (child.parent !== this) {
36106              // an extreme edge case - the child's render could do something like kill() the "next" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.
36107              return this.render(totalTime, suppressEvents, force);
36108            }
36109
36110            child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);
36111
36112            if (time !== this._time || !this._ts && !prevPaused) {
36113              //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete
36114              pauseTween = 0;
36115              next && (tTime += this._zTime = -_tinyNum); // it didn't finish rendering, so flag zTime as negative so that so that the next time render() is called it'll be forced (to render any remaining children)
36116
36117              break;
36118            }
36119          }
36120
36121          child = next;
36122        }
36123      } else {
36124        child = this._last;
36125        var adjustedTime = totalTime < 0 ? totalTime : time; //when the playhead goes backward beyond the start of this timeline, we must pass that information down to the child animations so that zero-duration tweens know whether to render their starting or ending values.
36126
36127        while (child) {
36128          next = child._prev;
36129
36130          if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {
36131            if (child.parent !== this) {
36132              // an extreme edge case - the child's render could do something like kill() the "next" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.
36133              return this.render(totalTime, suppressEvents, force);
36134            }
36135
36136            child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force || _reverting && (child._initted || child._startAt)); // if reverting, we should always force renders of initted tweens (but remember that .fromTo() or .from() may have a _startAt but not _initted yet). If, for example, a .fromTo() tween with a stagger (which creates an internal timeline) gets reverted BEFORE some of its child tweens render for the first time, it may not properly trigger them to revert.
36137
36138            if (time !== this._time || !this._ts && !prevPaused) {
36139              //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete
36140              pauseTween = 0;
36141              next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum); // it didn't finish rendering, so adjust zTime so that so that the next time render() is called it'll be forced (to render any remaining children)
36142
36143              break;
36144            }
36145          }
36146
36147          child = next;
36148        }
36149      }
36150
36151      if (pauseTween && !suppressEvents) {
36152        this.pause();
36153        pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;
36154
36155        if (this._ts) {
36156          //the callback resumed playback! So since we may have held back the playhead due to where the pause is positioned, go ahead and jump to where it's SUPPOSED to be (if no pause happened).
36157          this._start = prevStart; //if the pause was at an earlier time and the user resumed in the callback, it could reposition the timeline (changing its startTime), throwing things off slightly, so we make sure the _start doesn't shift.
36158
36159          _setEnd(this);
36160
36161          return this.render(totalTime, suppressEvents, force);
36162        }
36163      }
36164
36165      this._onUpdate && !suppressEvents && _callback(this, "onUpdate", true);
36166      if (tTime === tDur && this._tTime >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {
36167        // remember, a child's callback may alter this timeline's playhead or timeScale which is why we need to add some of these checks.
36168        (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.
36169
36170        if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {
36171          _callback(this, tTime === tDur && totalTime >= 0 ? "onComplete" : "onReverseComplete", true);
36172
36173          this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();
36174        }
36175      }
36176    }
36177
36178    return this;
36179  };
36180
36181  _proto2.add = function add(child, position) {
36182    var _this2 = this;
36183
36184    _isNumber(position) || (position = _parsePosition(this, position, child));
36185
36186    if (!(child instanceof Animation)) {
36187      if (_isArray(child)) {
36188        child.forEach(function (obj) {
36189          return _this2.add(obj, position);
36190        });
36191        return this;
36192      }
36193
36194      if (_isString(child)) {
36195        return this.addLabel(child, position);
36196      }
36197
36198      if (_isFunction(child)) {
36199        child = Tween.delayedCall(0, child);
36200      } else {
36201        return this;
36202      }
36203    }
36204
36205    return this !== child ? _addToTimeline(this, child, position) : this; //don't allow a timeline to be added to itself as a child!
36206  };
36207
36208  _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {
36209    if (nested === void 0) {
36210      nested = true;
36211    }
36212
36213    if (tweens === void 0) {
36214      tweens = true;
36215    }
36216
36217    if (timelines === void 0) {
36218      timelines = true;
36219    }
36220
36221    if (ignoreBeforeTime === void 0) {
36222      ignoreBeforeTime = -_bigNum;
36223    }
36224
36225    var a = [],
36226        child = this._first;
36227
36228    while (child) {
36229      if (child._start >= ignoreBeforeTime) {
36230        if (child instanceof Tween) {
36231          tweens && a.push(child);
36232        } else {
36233          timelines && a.push(child);
36234          nested && a.push.apply(a, child.getChildren(true, tweens, timelines));
36235        }
36236      }
36237
36238      child = child._next;
36239    }
36240
36241    return a;
36242  };
36243
36244  _proto2.getById = function getById(id) {
36245    var animations = this.getChildren(1, 1, 1),
36246        i = animations.length;
36247
36248    while (i--) {
36249      if (animations[i].vars.id === id) {
36250        return animations[i];
36251      }
36252    }
36253  };
36254
36255  _proto2.remove = function remove(child) {
36256    if (_isString(child)) {
36257      return this.removeLabel(child);
36258    }
36259
36260    if (_isFunction(child)) {
36261      return this.killTweensOf(child);
36262    }
36263
36264    _removeLinkedListItem(this, child);
36265
36266    if (child === this._recent) {
36267      this._recent = this._last;
36268    }
36269
36270    return _uncache(this);
36271  };
36272
36273  _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {
36274    if (!arguments.length) {
36275      return this._tTime;
36276    }
36277
36278    this._forcing = 1;
36279
36280    if (!this._dp && this._ts) {
36281      //special case for the global timeline (or any other that has no parent or detached parent).
36282      this._start = _roundPrecise(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));
36283    }
36284
36285    _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);
36286
36287    this._forcing = 0;
36288    return this;
36289  };
36290
36291  _proto2.addLabel = function addLabel(label, position) {
36292    this.labels[label] = _parsePosition(this, position);
36293    return this;
36294  };
36295
36296  _proto2.removeLabel = function removeLabel(label) {
36297    delete this.labels[label];
36298    return this;
36299  };
36300
36301  _proto2.addPause = function addPause(position, callback, params) {
36302    var t = Tween.delayedCall(0, callback || _emptyFunc, params);
36303    t.data = "isPause";
36304    this._hasPause = 1;
36305    return _addToTimeline(this, t, _parsePosition(this, position));
36306  };
36307
36308  _proto2.removePause = function removePause(position) {
36309    var child = this._first;
36310    position = _parsePosition(this, position);
36311
36312    while (child) {
36313      if (child._start === position && child.data === "isPause") {
36314        _removeFromParent(child);
36315      }
36316
36317      child = child._next;
36318    }
36319  };
36320
36321  _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {
36322    var tweens = this.getTweensOf(targets, onlyActive),
36323        i = tweens.length;
36324
36325    while (i--) {
36326      _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);
36327    }
36328
36329    return this;
36330  };
36331
36332  _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {
36333    var a = [],
36334        parsedTargets = toArray(targets),
36335        child = this._first,
36336        isGlobalTime = _isNumber(onlyActive),
36337        // a number is interpreted as a global time. If the animation spans
36338    children;
36339
36340    while (child) {
36341      if (child instanceof Tween) {
36342        if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {
36343          // note: if this is for overwriting, it should only be for tweens that aren't paused and are initted.
36344          a.push(child);
36345        }
36346      } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {
36347        a.push.apply(a, children);
36348      }
36349
36350      child = child._next;
36351    }
36352
36353    return a;
36354  } // potential future feature - targets() on timelines
36355  // targets() {
36356  // 	let result = [];
36357  // 	this.getChildren(true, true, false).forEach(t => result.push(...t.targets()));
36358  // 	return result.filter((v, i) => result.indexOf(v) === i);
36359  // }
36360  ;
36361
36362  _proto2.tweenTo = function tweenTo(position, vars) {
36363    vars = vars || {};
36364
36365    var tl = this,
36366        endTime = _parsePosition(tl, position),
36367        _vars = vars,
36368        startAt = _vars.startAt,
36369        _onStart = _vars.onStart,
36370        onStartParams = _vars.onStartParams,
36371        immediateRender = _vars.immediateRender,
36372        initted,
36373        tween = Tween.to(tl, _setDefaults({
36374      ease: vars.ease || "none",
36375      lazy: false,
36376      immediateRender: false,
36377      time: endTime,
36378      overwrite: "auto",
36379      duration: vars.duration || Math.abs((endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,
36380      onStart: function onStart() {
36381        tl.pause();
36382
36383        if (!initted) {
36384          var duration = vars.duration || Math.abs((endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale());
36385          tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);
36386          initted = 1;
36387        }
36388
36389        _onStart && _onStart.apply(tween, onStartParams || []); //in case the user had an onStart in the vars - we don't want to overwrite it.
36390      }
36391    }, vars));
36392
36393    return immediateRender ? tween.render(0) : tween;
36394  };
36395
36396  _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {
36397    return this.tweenTo(toPosition, _setDefaults({
36398      startAt: {
36399        time: _parsePosition(this, fromPosition)
36400      }
36401    }, vars));
36402  };
36403
36404  _proto2.recent = function recent() {
36405    return this._recent;
36406  };
36407
36408  _proto2.nextLabel = function nextLabel(afterTime) {
36409    if (afterTime === void 0) {
36410      afterTime = this._time;
36411    }
36412
36413    return _getLabelInDirection(this, _parsePosition(this, afterTime));
36414  };
36415
36416  _proto2.previousLabel = function previousLabel(beforeTime) {
36417    if (beforeTime === void 0) {
36418      beforeTime = this._time;
36419    }
36420
36421    return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);
36422  };
36423
36424  _proto2.currentLabel = function currentLabel(value) {
36425    return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);
36426  };
36427
36428  _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {
36429    if (ignoreBeforeTime === void 0) {
36430      ignoreBeforeTime = 0;
36431    }
36432
36433    var child = this._first,
36434        labels = this.labels,
36435        p;
36436
36437    while (child) {
36438      if (child._start >= ignoreBeforeTime) {
36439        child._start += amount;
36440        child._end += amount;
36441      }
36442
36443      child = child._next;
36444    }
36445
36446    if (adjustLabels) {
36447      for (p in labels) {
36448        if (labels[p] >= ignoreBeforeTime) {
36449          labels[p] += amount;
36450        }
36451      }
36452    }
36453
36454    return _uncache(this);
36455  };
36456
36457  _proto2.invalidate = function invalidate(soft) {
36458    var child = this._first;
36459    this._lock = 0;
36460
36461    while (child) {
36462      child.invalidate(soft);
36463      child = child._next;
36464    }
36465
36466    return _Animation.prototype.invalidate.call(this, soft);
36467  };
36468
36469  _proto2.clear = function clear(includeLabels) {
36470    if (includeLabels === void 0) {
36471      includeLabels = true;
36472    }
36473
36474    var child = this._first,
36475        next;
36476
36477    while (child) {
36478      next = child._next;
36479      this.remove(child);
36480      child = next;
36481    }
36482
36483    this._dp && (this._time = this._tTime = this._pTime = 0);
36484    includeLabels && (this.labels = {});
36485    return _uncache(this);
36486  };
36487
36488  _proto2.totalDuration = function totalDuration(value) {
36489    var max = 0,
36490        self = this,
36491        child = self._last,
36492        prevStart = _bigNum,
36493        prev,
36494        start,
36495        parent;
36496
36497    if (arguments.length) {
36498      return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));
36499    }
36500
36501    if (self._dirty) {
36502      parent = self.parent;
36503
36504      while (child) {
36505        prev = child._prev; //record it here in case the tween changes position in the sequence...
36506
36507        child._dirty && child.totalDuration(); //could change the tween._startTime, so make sure the animation's cache is clean before analyzing it.
36508
36509        start = child._start;
36510
36511        if (start > prevStart && self._sort && child._ts && !self._lock) {
36512          //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence
36513          self._lock = 1; //prevent endless recursive calls - there are methods that get triggered that check duration/totalDuration when we add().
36514
36515          _addToTimeline(self, child, start - child._delay, 1)._lock = 0;
36516        } else {
36517          prevStart = start;
36518        }
36519
36520        if (start < 0 && child._ts) {
36521          //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.
36522          max -= start;
36523
36524          if (!parent && !self._dp || parent && parent.smoothChildTiming) {
36525            self._start += start / self._ts;
36526            self._time -= start;
36527            self._tTime -= start;
36528          }
36529
36530          self.shiftChildren(-start, false, -1e999);
36531          prevStart = 0;
36532        }
36533
36534        child._end > max && child._ts && (max = child._end);
36535        child = prev;
36536      }
36537
36538      _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1);
36539
36540      self._dirty = 0;
36541    }
36542
36543    return self._tDur;
36544  };
36545
36546  Timeline.updateRoot = function updateRoot(time) {
36547    if (_globalTimeline._ts) {
36548      _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));
36549
36550      _lastRenderedFrame = _ticker.frame;
36551    }
36552
36553    if (_ticker.frame >= _nextGCFrame) {
36554      _nextGCFrame += _config.autoSleep || 120;
36555      var child = _globalTimeline._first;
36556      if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {
36557        while (child && !child._ts) {
36558          child = child._next;
36559        }
36560
36561        child || _ticker.sleep();
36562      }
36563    }
36564  };
36565
36566  return Timeline;
36567}(Animation);
36568
36569_setDefaults(Timeline.prototype, {
36570  _lock: 0,
36571  _hasPause: 0,
36572  _forcing: 0
36573});
36574
36575var _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {
36576  //note: we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus "this" would refer to the plugin.
36577  var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),
36578      index = 0,
36579      matchIndex = 0,
36580      result,
36581      startNums,
36582      color,
36583      endNum,
36584      chunk,
36585      startNum,
36586      hasRandom,
36587      a;
36588  pt.b = start;
36589  pt.e = end;
36590  start += ""; //ensure values are strings
36591
36592  end += "";
36593
36594  if (hasRandom = ~end.indexOf("random(")) {
36595    end = _replaceRandom(end);
36596  }
36597
36598  if (stringFilter) {
36599    a = [start, end];
36600    stringFilter(a, target, prop); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.
36601
36602    start = a[0];
36603    end = a[1];
36604  }
36605
36606  startNums = start.match(_complexStringNumExp) || [];
36607
36608  while (result = _complexStringNumExp.exec(end)) {
36609    endNum = result[0];
36610    chunk = end.substring(index, result.index);
36611
36612    if (color) {
36613      color = (color + 1) % 5;
36614    } else if (chunk.substr(-5) === "rgba(") {
36615      color = 1;
36616    }
36617
36618    if (endNum !== startNums[matchIndex++]) {
36619      startNum = parseFloat(startNums[matchIndex - 1]) || 0; //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.
36620
36621      pt._pt = {
36622        _next: pt._pt,
36623        p: chunk || matchIndex === 1 ? chunk : ",",
36624        //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.
36625        s: startNum,
36626        c: endNum.charAt(1) === "=" ? _parseRelative(startNum, endNum) - startNum : parseFloat(endNum) - startNum,
36627        m: color && color < 4 ? Math.round : 0
36628      };
36629      index = _complexStringNumExp.lastIndex;
36630    }
36631  }
36632
36633  pt.c = index < end.length ? end.substring(index, end.length) : ""; //we use the "c" of the PropTween to store the final part of the string (after the last number)
36634
36635  pt.fp = funcParam;
36636
36637  if (_relExp.test(end) || hasRandom) {
36638    pt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).
36639  }
36640
36641  this._pt = pt; //start the linked list with this new PropTween. Remember, we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus "this" would refer to the plugin.
36642
36643  return pt;
36644},
36645    _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam, optional) {
36646  _isFunction(end) && (end = end(index || 0, target, targets));
36647  var currentValue = target[prop],
36648      parsedStart = start !== "get" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf("set") || !_isFunction(target["get" + prop.substr(3)]) ? prop : "get" + prop.substr(3)](funcParam) : target[prop](),
36649      setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,
36650      pt;
36651
36652  if (_isString(end)) {
36653    if (~end.indexOf("random(")) {
36654      end = _replaceRandom(end);
36655    }
36656
36657    if (end.charAt(1) === "=") {
36658      pt = _parseRelative(parsedStart, end) + (getUnit(parsedStart) || 0);
36659
36660      if (pt || pt === 0) {
36661        // to avoid isNaN, like if someone passes in a value like "!= whatever"
36662        end = pt;
36663      }
36664    }
36665  }
36666
36667  if (!optional || parsedStart !== end || _forceAllPropTweens) {
36668    if (!isNaN(parsedStart * end) && end !== "") {
36669      // fun fact: any number multiplied by "" is evaluated as the number 0!
36670      pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === "boolean" ? _renderBoolean : _renderPlain, 0, setter);
36671      funcParam && (pt.fp = funcParam);
36672      modifier && pt.modifier(modifier, this, target);
36673      return this._pt = pt;
36674    }
36675
36676    !currentValue && !(prop in target) && _missingPlugin(prop, end);
36677    return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);
36678  }
36679},
36680    //creates a copy of the vars object and processes any function-based values (putting the resulting values directly into the copy) as well as strings with "random()" in them. It does NOT process relative values.
36681_processVars = function _processVars(vars, index, target, targets, tween) {
36682  _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));
36683
36684  if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {
36685    return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;
36686  }
36687
36688  var copy = {},
36689      p;
36690
36691  for (p in vars) {
36692    copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);
36693  }
36694
36695  return copy;
36696},
36697    _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {
36698  var plugin, pt, ptLookup, i;
36699
36700  if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {
36701    tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);
36702
36703    if (tween !== _quickTween) {
36704      ptLookup = tween._ptLookup[tween._targets.indexOf(target)]; //note: we can't use tween._ptLookup[index] because for staggered tweens, the index from the fullTargets array won't match what it is in each individual tween that spawns from the stagger.
36705
36706      i = plugin._props.length;
36707
36708      while (i--) {
36709        ptLookup[plugin._props[i]] = pt;
36710      }
36711    }
36712  }
36713
36714  return plugin;
36715},
36716    _overwritingTween,
36717    //store a reference temporarily so we can avoid overwriting itself.
36718_forceAllPropTweens,
36719    _initTween = function _initTween(tween, time, tTime) {
36720  var vars = tween.vars,
36721      ease = vars.ease,
36722      startAt = vars.startAt,
36723      immediateRender = vars.immediateRender,
36724      lazy = vars.lazy,
36725      onUpdate = vars.onUpdate,
36726      runBackwards = vars.runBackwards,
36727      yoyoEase = vars.yoyoEase,
36728      keyframes = vars.keyframes,
36729      autoRevert = vars.autoRevert,
36730      dur = tween._dur,
36731      prevStartAt = tween._startAt,
36732      targets = tween._targets,
36733      parent = tween.parent,
36734      fullTargets = parent && parent.data === "nested" ? parent.vars.targets : targets,
36735      autoOverwrite = tween._overwrite === "auto" && !_suppressOverwrites,
36736      tl = tween.timeline,
36737      cleanVars,
36738      i,
36739      p,
36740      pt,
36741      target,
36742      hasPriority,
36743      gsData,
36744      harness,
36745      plugin,
36746      ptLookup,
36747      index,
36748      harnessVars,
36749      overwritten;
36750  tl && (!keyframes || !ease) && (ease = "none");
36751  tween._ease = _parseEase(ease, _defaults.ease);
36752  tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;
36753
36754  if (yoyoEase && tween._yoyo && !tween._repeat) {
36755    //there must have been a parent timeline with yoyo:true that is currently in its yoyo phase, so flip the eases.
36756    yoyoEase = tween._yEase;
36757    tween._yEase = tween._ease;
36758    tween._ease = yoyoEase;
36759  }
36760
36761  tween._from = !tl && !!vars.runBackwards; //nested timelines should never run backwards - the backwards-ness is in the child tweens.
36762
36763  if (!tl || keyframes && !vars.stagger) {
36764    //if there's an internal timeline, skip all the parsing because we passed that task down the chain.
36765    harness = targets[0] ? _getCache(targets[0]).harness : 0;
36766    harnessVars = harness && vars[harness.prop]; //someone may need to specify CSS-specific values AND non-CSS values, like if the element has an "x" property plus it's a standard DOM element. We allow people to distinguish by wrapping plugin-specific stuff in a css:{} object for example.
36767
36768    cleanVars = _copyExcluding(vars, _reservedProps);
36769
36770    if (prevStartAt) {
36771      prevStartAt._zTime < 0 && prevStartAt.progress(1); // in case it's a lazy startAt that hasn't rendered yet.
36772
36773      time < 0 && runBackwards && immediateRender && !autoRevert ? prevStartAt.render(-1, true) : prevStartAt.revert(runBackwards && dur ? _revertConfigNoKill : _startAtRevertConfig); // if it's a "startAt" (not "from()" or runBackwards: true), we only need to do a shallow revert (keep transforms cached in CSSPlugin)
36774      // don't just _removeFromParent(prevStartAt.render(-1, true)) because that'll leave inline styles. We're creating a new _startAt for "startAt" tweens that re-capture things to ensure that if the pre-tween values changed since the tween was created, they're recorded.
36775
36776      prevStartAt._lazy = 0;
36777    }
36778
36779    if (startAt) {
36780      _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({
36781        data: "isStart",
36782        overwrite: false,
36783        parent: parent,
36784        immediateRender: true,
36785        lazy: !prevStartAt && _isNotFalse(lazy),
36786        startAt: null,
36787        delay: 0,
36788        onUpdate: onUpdate && function () {
36789          return _callback(tween, "onUpdate");
36790        },
36791        stagger: 0
36792      }, startAt))); //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, from, to).fromTo(e, to, from);
36793
36794
36795      tween._startAt._dp = 0; // don't allow it to get put back into root timeline! Like when revert() is called and totalTime() gets set.
36796
36797      tween._startAt._sat = tween; // used in globalTime(). _sat stands for _startAtTween
36798
36799      time < 0 && (_reverting || !immediateRender && !autoRevert) && tween._startAt.revert(_revertConfigNoKill); // rare edge case, like if a render is forced in the negative direction of a non-initted tween.
36800
36801      if (immediateRender) {
36802        if (dur && time <= 0 && tTime <= 0) {
36803          // check tTime here because in the case of a yoyo tween whose playhead gets pushed to the end like tween.progress(1), we should allow it through so that the onComplete gets fired properly.
36804          time && (tween._zTime = time);
36805          return; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a Timeline, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.
36806        }
36807      }
36808    } else if (runBackwards && dur) {
36809      //from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)
36810      if (!prevStartAt) {
36811        time && (immediateRender = false); //in rare cases (like if a from() tween runs and then is invalidate()-ed), immediateRender could be true but the initial forced-render gets skipped, so there's no need to force the render in this context when the _time is greater than 0
36812
36813        p = _setDefaults({
36814          overwrite: false,
36815          data: "isFromStart",
36816          //we tag the tween with as "isFromStart" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a "from()" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:"height", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.
36817          lazy: immediateRender && !prevStartAt && _isNotFalse(lazy),
36818          immediateRender: immediateRender,
36819          //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)
36820          stagger: 0,
36821          parent: parent //ensures that nested tweens that had a stagger are handled properly, like gsap.from(".class", {y: gsap.utils.wrap([-100,100]), stagger: 0.5})
36822
36823        }, cleanVars);
36824        harnessVars && (p[harness.prop] = harnessVars); // in case someone does something like .from(..., {css:{}})
36825
36826        _removeFromParent(tween._startAt = Tween.set(targets, p));
36827
36828        tween._startAt._dp = 0; // don't allow it to get put back into root timeline!
36829
36830        tween._startAt._sat = tween; // used in globalTime()
36831
36832        time < 0 && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween._startAt.render(-1, true));
36833        tween._zTime = time;
36834
36835        if (!immediateRender) {
36836          _initTween(tween._startAt, _tinyNum, _tinyNum); //ensures that the initial values are recorded
36837
36838        } else if (!time) {
36839          return;
36840        }
36841      }
36842    }
36843
36844    tween._pt = tween._ptCache = 0;
36845    lazy = dur && _isNotFalse(lazy) || lazy && !dur;
36846
36847    for (i = 0; i < targets.length; i++) {
36848      target = targets[i];
36849      gsData = target._gsap || _harness(targets)[i]._gsap;
36850      tween._ptLookup[i] = ptLookup = {};
36851      _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)
36852
36853      index = fullTargets === targets ? i : fullTargets.indexOf(target);
36854
36855      if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {
36856        tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);
36857
36858        plugin._props.forEach(function (name) {
36859          ptLookup[name] = pt;
36860        });
36861
36862        plugin.priority && (hasPriority = 1);
36863      }
36864
36865      if (!harness || harnessVars) {
36866        for (p in cleanVars) {
36867          if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {
36868            plugin.priority && (hasPriority = 1);
36869          } else {
36870            ptLookup[p] = pt = _addPropTween.call(tween, target, p, "get", cleanVars[p], index, fullTargets, 0, vars.stringFilter);
36871          }
36872        }
36873      }
36874
36875      tween._op && tween._op[i] && tween.kill(target, tween._op[i]);
36876
36877      if (autoOverwrite && tween._pt) {
36878        _overwritingTween = tween;
36879
36880        _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(time)); // make sure the overwriting doesn't overwrite THIS tween!!!
36881
36882
36883        overwritten = !tween.parent;
36884        _overwritingTween = 0;
36885      }
36886
36887      tween._pt && lazy && (_lazyLookup[gsData.id] = 1);
36888    }
36889
36890    hasPriority && _sortPropTweensByPriority(tween);
36891    tween._onInit && tween._onInit(tween); //plugins like RoundProps must wait until ALL of the PropTweens are instantiated. In the plugin's init() function, it sets the _onInit on the tween instance. May not be pretty/intuitive, but it's fast and keeps file size down.
36892  }
36893
36894  tween._onUpdate = onUpdate;
36895  tween._initted = (!tween._op || tween._pt) && !overwritten; // if overwrittenProps resulted in the entire tween being killed, do NOT flag it as initted or else it may render for one tick.
36896
36897  keyframes && time <= 0 && tl.render(_bigNum, true, true); // if there's a 0% keyframe, it'll render in the "before" state for any staggered/delayed animations thus when the following tween initializes, it'll use the "before" state instead of the "after" state as the initial values.
36898},
36899    _updatePropTweens = function _updatePropTweens(tween, property, value, start, startIsRelative, ratio, time, skipRecursion) {
36900  var ptCache = (tween._pt && tween._ptCache || (tween._ptCache = {}))[property],
36901      pt,
36902      rootPT,
36903      lookup,
36904      i;
36905
36906  if (!ptCache) {
36907    ptCache = tween._ptCache[property] = [];
36908    lookup = tween._ptLookup;
36909    i = tween._targets.length;
36910
36911    while (i--) {
36912      pt = lookup[i][property];
36913
36914      if (pt && pt.d && pt.d._pt) {
36915        // it's a plugin, so find the nested PropTween
36916        pt = pt.d._pt;
36917
36918        while (pt && pt.p !== property && pt.fp !== property) {
36919          // "fp" is functionParam for things like setting CSS variables which require .setProperty("--var-name", value)
36920          pt = pt._next;
36921        }
36922      }
36923
36924      if (!pt) {
36925        // there is no PropTween associated with that property, so we must FORCE one to be created and ditch out of this
36926        // if the tween has other properties that already rendered at new positions, we'd normally have to rewind to put them back like tween.render(0, true) before forcing an _initTween(), but that can create another edge case like tweening a timeline's progress would trigger onUpdates to fire which could move other things around. It's better to just inform users that .resetTo() should ONLY be used for tweens that already have that property. For example, you can't gsap.to(...{ y: 0 }) and then tween.restTo("x", 200) for example.
36927        _forceAllPropTweens = 1; // otherwise, when we _addPropTween() and it finds no change between the start and end values, it skips creating a PropTween (for efficiency...why tween when there's no difference?) but in this case we NEED that PropTween created so we can edit it.
36928
36929        tween.vars[property] = "+=0";
36930
36931        _initTween(tween, time);
36932
36933        _forceAllPropTweens = 0;
36934        return skipRecursion ? _warn(property + " not eligible for reset") : 1; // if someone tries to do a quickTo() on a special property like borderRadius which must get split into 4 different properties, that's not eligible for .resetTo().
36935      }
36936
36937      ptCache.push(pt);
36938    }
36939  }
36940
36941  i = ptCache.length;
36942
36943  while (i--) {
36944    rootPT = ptCache[i];
36945    pt = rootPT._pt || rootPT; // complex values may have nested PropTweens. We only accommodate the FIRST value.
36946
36947    pt.s = (start || start === 0) && !startIsRelative ? start : pt.s + (start || 0) + ratio * pt.c;
36948    pt.c = value - pt.s;
36949    rootPT.e && (rootPT.e = _round(value) + getUnit(rootPT.e)); // mainly for CSSPlugin (end value)
36950
36951    rootPT.b && (rootPT.b = pt.s + getUnit(rootPT.b)); // (beginning value)
36952  }
36953},
36954    _addAliasesToVars = function _addAliasesToVars(targets, vars) {
36955  var harness = targets[0] ? _getCache(targets[0]).harness : 0,
36956      propertyAliases = harness && harness.aliases,
36957      copy,
36958      p,
36959      i,
36960      aliases;
36961
36962  if (!propertyAliases) {
36963    return vars;
36964  }
36965
36966  copy = _merge({}, vars);
36967
36968  for (p in propertyAliases) {
36969    if (p in copy) {
36970      aliases = propertyAliases[p].split(",");
36971      i = aliases.length;
36972
36973      while (i--) {
36974        copy[aliases[i]] = copy[p];
36975      }
36976    }
36977  }
36978
36979  return copy;
36980},
36981    // parses multiple formats, like {"0%": {x: 100}, {"50%": {x: -20}} and { x: {"0%": 100, "50%": -20} }, and an "ease" can be set on any object. We populate an "allProps" object with an Array for each property, like {x: [{}, {}], y:[{}, {}]} with data for each property tween. The objects have a "t" (time), "v", (value), and "e" (ease) property. This allows us to piece together a timeline later.
36982_parseKeyframe = function _parseKeyframe(prop, obj, allProps, easeEach) {
36983  var ease = obj.ease || easeEach || "power1.inOut",
36984      p,
36985      a;
36986
36987  if (_isArray(obj)) {
36988    a = allProps[prop] || (allProps[prop] = []); // t = time (out of 100), v = value, e = ease
36989
36990    obj.forEach(function (value, i) {
36991      return a.push({
36992        t: i / (obj.length - 1) * 100,
36993        v: value,
36994        e: ease
36995      });
36996    });
36997  } else {
36998    for (p in obj) {
36999      a = allProps[p] || (allProps[p] = []);
37000      p === "ease" || a.push({
37001        t: parseFloat(prop),
37002        v: obj[p],
37003        e: ease
37004      });
37005    }
37006  }
37007},
37008    _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {
37009  return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf("random(") ? _replaceRandom(value) : value;
37010},
37011    _staggerTweenProps = _callbackNames + "repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert",
37012    _staggerPropsToSkip = {};
37013
37014_forEachName(_staggerTweenProps + ",id,stagger,delay,duration,paused,scrollTrigger", function (name) {
37015  return _staggerPropsToSkip[name] = 1;
37016});
37017/*
37018 * --------------------------------------------------------------------------------------
37019 * TWEEN
37020 * --------------------------------------------------------------------------------------
37021 */
37022
37023
37024var Tween = /*#__PURE__*/function (_Animation2) {
37025  _inheritsLoose(Tween, _Animation2);
37026
37027  function Tween(targets, vars, position, skipInherit) {
37028    var _this3;
37029
37030    if (typeof vars === "number") {
37031      position.duration = vars;
37032      vars = position;
37033      position = null;
37034    }
37035
37036    _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this;
37037    var _this3$vars = _this3.vars,
37038        duration = _this3$vars.duration,
37039        delay = _this3$vars.delay,
37040        immediateRender = _this3$vars.immediateRender,
37041        stagger = _this3$vars.stagger,
37042        overwrite = _this3$vars.overwrite,
37043        keyframes = _this3$vars.keyframes,
37044        defaults = _this3$vars.defaults,
37045        scrollTrigger = _this3$vars.scrollTrigger,
37046        yoyoEase = _this3$vars.yoyoEase,
37047        parent = vars.parent || _globalTimeline,
37048        parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : "length" in vars) ? [targets] : toArray(targets),
37049        tl,
37050        i,
37051        copy,
37052        l,
37053        p,
37054        curTarget,
37055        staggerFunc,
37056        staggerVarsToMerge;
37057    _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn("GSAP target " + targets + " not found. https://gsap.com", !_config.nullTargetWarn) || [];
37058    _this3._ptLookup = []; //PropTween lookup. An array containing an object for each target, having keys for each tweening property
37059
37060    _this3._overwrite = overwrite;
37061
37062    if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {
37063      vars = _this3.vars;
37064      tl = _this3.timeline = new Timeline({
37065        data: "nested",
37066        defaults: defaults || {},
37067        targets: parent && parent.data === "nested" ? parent.vars.targets : parsedTargets
37068      }); // we need to store the targets because for staggers and keyframes, we end up creating an individual tween for each but function-based values need to know the index and the whole Array of targets.
37069
37070      tl.kill();
37071      tl.parent = tl._dp = _assertThisInitialized(_this3);
37072      tl._start = 0;
37073
37074      if (stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {
37075        l = parsedTargets.length;
37076        staggerFunc = stagger && distribute(stagger);
37077
37078        if (_isObject(stagger)) {
37079          //users can pass in callbacks like onStart/onComplete in the stagger object. These should fire with each individual tween.
37080          for (p in stagger) {
37081            if (~_staggerTweenProps.indexOf(p)) {
37082              staggerVarsToMerge || (staggerVarsToMerge = {});
37083              staggerVarsToMerge[p] = stagger[p];
37084            }
37085          }
37086        }
37087
37088        for (i = 0; i < l; i++) {
37089          copy = _copyExcluding(vars, _staggerPropsToSkip);
37090          copy.stagger = 0;
37091          yoyoEase && (copy.yoyoEase = yoyoEase);
37092          staggerVarsToMerge && _merge(copy, staggerVarsToMerge);
37093          curTarget = parsedTargets[i]; //don't just copy duration or delay because if they're a string or function, we'd end up in an infinite loop because _isFuncOrString() would evaluate as true in the child tweens, entering this loop, etc. So we parse the value straight from vars and default to 0.
37094
37095          copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);
37096          copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;
37097
37098          if (!stagger && l === 1 && copy.delay) {
37099            // if someone does delay:"random(1, 5)", repeat:-1, for example, the delay shouldn't be inside the repeat.
37100            _this3._delay = delay = copy.delay;
37101            _this3._start += delay;
37102            copy.delay = 0;
37103          }
37104
37105          tl.to(curTarget, copy, staggerFunc ? staggerFunc(i, curTarget, parsedTargets) : 0);
37106          tl._ease = _easeMap.none;
37107        }
37108
37109        tl.duration() ? duration = delay = 0 : _this3.timeline = 0; // if the timeline's duration is 0, we don't need a timeline internally!
37110      } else if (keyframes) {
37111        _inheritDefaults(_setDefaults(tl.vars.defaults, {
37112          ease: "none"
37113        }));
37114
37115        tl._ease = _parseEase(keyframes.ease || vars.ease || "none");
37116        var time = 0,
37117            a,
37118            kf,
37119            v;
37120
37121        if (_isArray(keyframes)) {
37122          keyframes.forEach(function (frame) {
37123            return tl.to(parsedTargets, frame, ">");
37124          });
37125          tl.duration(); // to ensure tl._dur is cached because we tap into it for performance purposes in the render() method.
37126        } else {
37127          copy = {};
37128
37129          for (p in keyframes) {
37130            p === "ease" || p === "easeEach" || _parseKeyframe(p, keyframes[p], copy, keyframes.easeEach);
37131          }
37132
37133          for (p in copy) {
37134            a = copy[p].sort(function (a, b) {
37135              return a.t - b.t;
37136            });
37137            time = 0;
37138
37139            for (i = 0; i < a.length; i++) {
37140              kf = a[i];
37141              v = {
37142                ease: kf.e,
37143                duration: (kf.t - (i ? a[i - 1].t : 0)) / 100 * duration
37144              };
37145              v[p] = kf.v;
37146              tl.to(parsedTargets, v, time);
37147              time += v.duration;
37148            }
37149          }
37150
37151          tl.duration() < duration && tl.to({}, {
37152            duration: duration - tl.duration()
37153          }); // in case keyframes didn't go to 100%
37154        }
37155      }
37156
37157      duration || _this3.duration(duration = tl.duration());
37158    } else {
37159      _this3.timeline = 0; //speed optimization, faster lookups (no going up the prototype chain)
37160    }
37161
37162    if (overwrite === true && !_suppressOverwrites) {
37163      _overwritingTween = _assertThisInitialized(_this3);
37164
37165      _globalTimeline.killTweensOf(parsedTargets);
37166
37167      _overwritingTween = 0;
37168    }
37169
37170    _addToTimeline(parent, _assertThisInitialized(_this3), position);
37171
37172    vars.reversed && _this3.reverse();
37173    vars.paused && _this3.paused(true);
37174
37175    if (immediateRender || !duration && !keyframes && _this3._start === _roundPrecise(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== "nested") {
37176      _this3._tTime = -_tinyNum; //forces a render without having to set the render() "force" parameter to true because we want to allow lazying by default (using the "force" parameter always forces an immediate full render)
37177
37178      _this3.render(Math.max(0, -delay) || 0); //in case delay is negative
37179
37180    }
37181
37182    scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);
37183    return _this3;
37184  }
37185
37186  var _proto3 = Tween.prototype;
37187
37188  _proto3.render = function render(totalTime, suppressEvents, force) {
37189    var prevTime = this._time,
37190        tDur = this._tDur,
37191        dur = this._dur,
37192        isNegative = totalTime < 0,
37193        tTime = totalTime > tDur - _tinyNum && !isNegative ? tDur : totalTime < _tinyNum ? 0 : totalTime,
37194        time,
37195        pt,
37196        iteration,
37197        cycleDuration,
37198        prevIteration,
37199        isYoyo,
37200        ratio,
37201        timeline,
37202        yoyoEase;
37203
37204    if (!dur) {
37205      _renderZeroDurationTween(this, totalTime, suppressEvents, force);
37206    } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== isNegative) {
37207      //this senses if we're crossing over the start time, in which case we must record _zTime and force the render, but we do it in this lengthy conditional way for performance reasons (usually we can skip the calculations): this._initted && (this._zTime < 0) !== (totalTime < 0)
37208      time = tTime;
37209      timeline = this.timeline;
37210
37211      if (this._repeat) {
37212        //adjust the time for repeats and yoyos
37213        cycleDuration = dur + this._rDelay;
37214
37215        if (this._repeat < -1 && isNegative) {
37216          return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);
37217        }
37218
37219        time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)
37220
37221        if (tTime === tDur) {
37222          // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)
37223          iteration = this._repeat;
37224          time = dur;
37225        } else {
37226          iteration = ~~(tTime / cycleDuration);
37227
37228          if (iteration && iteration === _roundPrecise(tTime / cycleDuration)) {
37229            time = dur;
37230            iteration--;
37231          }
37232
37233          time > dur && (time = dur);
37234        }
37235
37236        isYoyo = this._yoyo && iteration & 1;
37237
37238        if (isYoyo) {
37239          yoyoEase = this._yEase;
37240          time = dur - time;
37241        }
37242
37243        prevIteration = _animationCycle(this._tTime, cycleDuration);
37244
37245        if (time === prevTime && !force && this._initted && iteration === prevIteration) {
37246          //could be during the repeatDelay part. No need to render and fire callbacks.
37247          this._tTime = tTime;
37248          return this;
37249        }
37250
37251        if (iteration !== prevIteration) {
37252          timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo); //repeatRefresh functionality
37253
37254          if (this.vars.repeatRefresh && !isYoyo && !this._lock && this._time !== cycleDuration && this._initted) {
37255            // this._time will === cycleDuration when we render at EXACTLY the end of an iteration. Without this condition, it'd often do the repeatRefresh render TWICE (again on the very next tick).
37256            this._lock = force = 1; //force, otherwise if lazy is true, the _attemptInitTween() will return and we'll jump out and get caught bouncing on each tick.
37257
37258            this.render(_roundPrecise(cycleDuration * iteration), true).invalidate()._lock = 0;
37259          }
37260        }
37261      }
37262
37263      if (!this._initted) {
37264        if (_attemptInitTween(this, isNegative ? totalTime : time, force, suppressEvents, tTime)) {
37265          this._tTime = 0; // in constructor if immediateRender is true, we set _tTime to -_tinyNum to have the playhead cross the starting point but we can't leave _tTime as a negative number.
37266
37267          return this;
37268        }
37269
37270        if (prevTime !== this._time && !(force && this.vars.repeatRefresh && iteration !== prevIteration)) {
37271          // rare edge case - during initialization, an onUpdate in the _startAt (.fromTo()) might force this tween to render at a different spot in which case we should ditch this render() call so that it doesn't revert the values. But we also don't want to dump if we're doing a repeatRefresh render!
37272          return this;
37273        }
37274
37275        if (dur !== this._dur) {
37276          // while initting, a plugin like InertiaPlugin might alter the duration, so rerun from the start to ensure everything renders as it should.
37277          return this.render(totalTime, suppressEvents, force);
37278        }
37279      }
37280
37281      this._tTime = tTime;
37282      this._time = time;
37283
37284      if (!this._act && this._ts) {
37285        this._act = 1; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.
37286
37287        this._lazy = 0;
37288      }
37289
37290      this.ratio = ratio = (yoyoEase || this._ease)(time / dur);
37291
37292      if (this._from) {
37293        this.ratio = ratio = 1 - ratio;
37294      }
37295
37296      if (time && !prevTime && !suppressEvents && !iteration) {
37297        _callback(this, "onStart");
37298
37299        if (this._tTime !== tTime) {
37300          // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.
37301          return this;
37302        }
37303      }
37304
37305      pt = this._pt;
37306
37307      while (pt) {
37308        pt.r(ratio, pt.d);
37309        pt = pt._next;
37310      }
37311
37312      timeline && timeline.render(totalTime < 0 ? totalTime : timeline._dur * timeline._ease(time / this._dur), suppressEvents, force) || this._startAt && (this._zTime = totalTime);
37313
37314      if (this._onUpdate && !suppressEvents) {
37315        isNegative && _rewindStartAt(this, totalTime, suppressEvents, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.
37316
37317        _callback(this, "onUpdate");
37318      }
37319
37320      this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, "onRepeat");
37321
37322      if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {
37323        isNegative && !this._onUpdate && _rewindStartAt(this, totalTime, true, true);
37324        (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if we're rendering at exactly a time of 0, as there could be autoRevert values that should get set on the next tick (if the playhead goes backward beyond the startTime, negative totalTime). Don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.
37325
37326        if (!suppressEvents && !(isNegative && !prevTime) && (tTime || prevTime || isYoyo)) {
37327          // if prevTime and tTime are zero, we shouldn't fire the onReverseComplete. This could happen if you gsap.to(... {paused:true}).play();
37328          _callback(this, tTime === tDur ? "onComplete" : "onReverseComplete", true);
37329
37330          this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();
37331        }
37332      }
37333    }
37334
37335    return this;
37336  };
37337
37338  _proto3.targets = function targets() {
37339    return this._targets;
37340  };
37341
37342  _proto3.invalidate = function invalidate(soft) {
37343    // "soft" gives us a way to clear out everything EXCEPT the recorded pre-"from" portion of from() tweens. Otherwise, for example, if you tween.progress(1).render(0, true true).invalidate(), the "from" values would persist and then on the next render, the from() tweens would initialize and the current value would match the "from" values, thus animate from the same value to the same value (no animation). We tap into this in ScrollTrigger's refresh() where we must push a tween to completion and then back again but honor its init state in case the tween is dependent on another tween further up on the page.
37344    (!soft || !this.vars.runBackwards) && (this._startAt = 0);
37345    this._pt = this._op = this._onUpdate = this._lazy = this.ratio = 0;
37346    this._ptLookup = [];
37347    this.timeline && this.timeline.invalidate(soft);
37348    return _Animation2.prototype.invalidate.call(this, soft);
37349  };
37350
37351  _proto3.resetTo = function resetTo(property, value, start, startIsRelative, skipRecursion) {
37352    _tickerActive || _ticker.wake();
37353    this._ts || this.play();
37354    var time = Math.min(this._dur, (this._dp._time - this._start) * this._ts),
37355        ratio;
37356    this._initted || _initTween(this, time);
37357    ratio = this._ease(time / this._dur); // don't just get tween.ratio because it may not have rendered yet.
37358    // possible future addition to allow an object with multiple values to update, like tween.resetTo({x: 100, y: 200}); At this point, it doesn't seem worth the added kb given the fact that most users will likely opt for the convenient gsap.quickTo() way of interacting with this method.
37359    // if (_isObject(property)) { // performance optimization
37360    // 	for (p in property) {
37361    // 		if (_updatePropTweens(this, p, property[p], value ? value[p] : null, start, ratio, time)) {
37362    // 			return this.resetTo(property, value, start, startIsRelative); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.
37363    // 		}
37364    // 	}
37365    // } else {
37366
37367    if (_updatePropTweens(this, property, value, start, startIsRelative, ratio, time, skipRecursion)) {
37368      return this.resetTo(property, value, start, startIsRelative, 1); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.
37369    } //}
37370
37371
37372    _alignPlayhead(this, 0);
37373
37374    this.parent || _addLinkedListItem(this._dp, this, "_first", "_last", this._dp._sort ? "_start" : 0);
37375    return this.render(0);
37376  };
37377
37378  _proto3.kill = function kill(targets, vars) {
37379    if (vars === void 0) {
37380      vars = "all";
37381    }
37382
37383    if (!targets && (!vars || vars === "all")) {
37384      this._lazy = this._pt = 0;
37385      return this.parent ? _interrupt(this) : this;
37386    }
37387
37388    if (this.timeline) {
37389      var tDur = this.timeline.totalDuration();
37390      this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this); // if nothing is left tweening, interrupt.
37391
37392      this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1); // if a nested tween is killed that changes the duration, it should affect this tween's duration. We must use the ratio, though, because sometimes the internal timeline is stretched like for keyframes where they don't all add up to whatever the parent tween's duration was set to.
37393
37394      return this;
37395    }
37396
37397    var parsedTargets = this._targets,
37398        killingTargets = targets ? toArray(targets) : parsedTargets,
37399        propTweenLookup = this._ptLookup,
37400        firstPT = this._pt,
37401        overwrittenProps,
37402        curLookup,
37403        curOverwriteProps,
37404        props,
37405        p,
37406        pt,
37407        i;
37408
37409    if ((!vars || vars === "all") && _arraysMatch(parsedTargets, killingTargets)) {
37410      vars === "all" && (this._pt = 0);
37411      return _interrupt(this);
37412    }
37413
37414    overwrittenProps = this._op = this._op || [];
37415
37416    if (vars !== "all") {
37417      //so people can pass in a comma-delimited list of property names
37418      if (_isString(vars)) {
37419        p = {};
37420
37421        _forEachName(vars, function (name) {
37422          return p[name] = 1;
37423        });
37424
37425        vars = p;
37426      }
37427
37428      vars = _addAliasesToVars(parsedTargets, vars);
37429    }
37430
37431    i = parsedTargets.length;
37432
37433    while (i--) {
37434      if (~killingTargets.indexOf(parsedTargets[i])) {
37435        curLookup = propTweenLookup[i];
37436
37437        if (vars === "all") {
37438          overwrittenProps[i] = vars;
37439          props = curLookup;
37440          curOverwriteProps = {};
37441        } else {
37442          curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};
37443          props = vars;
37444        }
37445
37446        for (p in props) {
37447          pt = curLookup && curLookup[p];
37448
37449          if (pt) {
37450            if (!("kill" in pt.d) || pt.d.kill(p) === true) {
37451              _removeLinkedListItem(this, pt, "_pt");
37452            }
37453
37454            delete curLookup[p];
37455          }
37456
37457          if (curOverwriteProps !== "all") {
37458            curOverwriteProps[p] = 1;
37459          }
37460        }
37461      }
37462    }
37463
37464    this._initted && !this._pt && firstPT && _interrupt(this); //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.
37465
37466    return this;
37467  };
37468
37469  Tween.to = function to(targets, vars) {
37470    return new Tween(targets, vars, arguments[2]);
37471  };
37472
37473  Tween.from = function from(targets, vars) {
37474    return _createTweenType(1, arguments);
37475  };
37476
37477  Tween.delayedCall = function delayedCall(delay, callback, params, scope) {
37478    return new Tween(callback, 0, {
37479      immediateRender: false,
37480      lazy: false,
37481      overwrite: false,
37482      delay: delay,
37483      onComplete: callback,
37484      onReverseComplete: callback,
37485      onCompleteParams: params,
37486      onReverseCompleteParams: params,
37487      callbackScope: scope
37488    }); // we must use onReverseComplete too for things like timeline.add(() => {...}) which should be triggered in BOTH directions (forward and reverse)
37489  };
37490
37491  Tween.fromTo = function fromTo(targets, fromVars, toVars) {
37492    return _createTweenType(2, arguments);
37493  };
37494
37495  Tween.set = function set(targets, vars) {
37496    vars.duration = 0;
37497    vars.repeatDelay || (vars.repeat = 0);
37498    return new Tween(targets, vars);
37499  };
37500
37501  Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {
37502    return _globalTimeline.killTweensOf(targets, props, onlyActive);
37503  };
37504
37505  return Tween;
37506}(Animation);
37507
37508_setDefaults(Tween.prototype, {
37509  _targets: [],
37510  _lazy: 0,
37511  _startAt: 0,
37512  _op: 0,
37513  _onInit: 0
37514}); //add the pertinent timeline methods to Tween instances so that users can chain conveniently and create a timeline automatically. (removed due to concerns that it'd ultimately add to more confusion especially for beginners)
37515// _forEachName("to,from,fromTo,set,call,add,addLabel,addPause", name => {
37516// 	Tween.prototype[name] = function() {
37517// 		let tl = new Timeline();
37518// 		return _addToTimeline(tl, this)[name].apply(tl, toArray(arguments));
37519// 	}
37520// });
37521//for backward compatibility. Leverage the timeline calls.
37522
37523
37524_forEachName("staggerTo,staggerFrom,staggerFromTo", function (name) {
37525  Tween[name] = function () {
37526    var tl = new Timeline(),
37527        params = _slice.call(arguments, 0);
37528
37529    params.splice(name === "staggerFromTo" ? 5 : 4, 0, 0);
37530    return tl[name].apply(tl, params);
37531  };
37532});
37533/*
37534 * --------------------------------------------------------------------------------------
37535 * PROPTWEEN
37536 * --------------------------------------------------------------------------------------
37537 */
37538
37539
37540var _setterPlain = function _setterPlain(target, property, value) {
37541  return target[property] = value;
37542},
37543    _setterFunc = function _setterFunc(target, property, value) {
37544  return target[property](value);
37545},
37546    _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {
37547  return target[property](data.fp, value);
37548},
37549    _setterAttribute = function _setterAttribute(target, property, value) {
37550  return target.setAttribute(property, value);
37551},
37552    _getSetter = function _getSetter(target, property) {
37553  return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;
37554},
37555    _renderPlain = function _renderPlain(ratio, data) {
37556  return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1000000) / 1000000, data);
37557},
37558    _renderBoolean = function _renderBoolean(ratio, data) {
37559  return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);
37560},
37561    _renderComplexString = function _renderComplexString(ratio, data) {
37562  var pt = data._pt,
37563      s = "";
37564
37565  if (!ratio && data.b) {
37566    //b = beginning string
37567    s = data.b;
37568  } else if (ratio === 1 && data.e) {
37569    //e = ending string
37570    s = data.e;
37571  } else {
37572    while (pt) {
37573      s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s; //we use the "p" property for the text inbetween (like a suffix). And in the context of a complex string, the modifier (m) is typically just Math.round(), like for RGB colors.
37574
37575      pt = pt._next;
37576    }
37577
37578    s += data.c; //we use the "c" of the PropTween to store the final chunk of non-numeric text.
37579  }
37580
37581  data.set(data.t, data.p, s, data);
37582},
37583    _renderPropTweens = function _renderPropTweens(ratio, data) {
37584  var pt = data._pt;
37585
37586  while (pt) {
37587    pt.r(ratio, pt.d);
37588    pt = pt._next;
37589  }
37590},
37591    _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {
37592  var pt = this._pt,
37593      next;
37594
37595  while (pt) {
37596    next = pt._next;
37597    pt.p === property && pt.modifier(modifier, tween, target);
37598    pt = next;
37599  }
37600},
37601    _killPropTweensOf = function _killPropTweensOf(property) {
37602  var pt = this._pt,
37603      hasNonDependentRemaining,
37604      next;
37605
37606  while (pt) {
37607    next = pt._next;
37608
37609    if (pt.p === property && !pt.op || pt.op === property) {
37610      _removeLinkedListItem(this, pt, "_pt");
37611    } else if (!pt.dep) {
37612      hasNonDependentRemaining = 1;
37613    }
37614
37615    pt = next;
37616  }
37617
37618  return !hasNonDependentRemaining;
37619},
37620    _setterWithModifier = function _setterWithModifier(target, property, value, data) {
37621  data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);
37622},
37623    _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {
37624  var pt = parent._pt,
37625      next,
37626      pt2,
37627      first,
37628      last; //sorts the PropTween linked list in order of priority because some plugins need to do their work after ALL of the PropTweens were created (like RoundPropsPlugin and ModifiersPlugin)
37629
37630  while (pt) {
37631    next = pt._next;
37632    pt2 = first;
37633
37634    while (pt2 && pt2.pr > pt.pr) {
37635      pt2 = pt2._next;
37636    }
37637
37638    if (pt._prev = pt2 ? pt2._prev : last) {
37639      pt._prev._next = pt;
37640    } else {
37641      first = pt;
37642    }
37643
37644    if (pt._next = pt2) {
37645      pt2._prev = pt;
37646    } else {
37647      last = pt;
37648    }
37649
37650    pt = next;
37651  }
37652
37653  parent._pt = first;
37654}; //PropTween key: t = target, p = prop, r = renderer, d = data, s = start, c = change, op = overwriteProperty (ONLY populated when it's different than p), pr = priority, _next/_prev for the linked list siblings, set = setter, m = modifier, mSet = modifierSetter (the original setter, before a modifier was added)
37655
37656
37657var PropTween = /*#__PURE__*/function () {
37658  function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {
37659    this.t = target;
37660    this.s = start;
37661    this.c = change;
37662    this.p = prop;
37663    this.r = renderer || _renderPlain;
37664    this.d = data || this;
37665    this.set = setter || _setterPlain;
37666    this.pr = priority || 0;
37667    this._next = next;
37668
37669    if (next) {
37670      next._prev = this;
37671    }
37672  }
37673
37674  var _proto4 = PropTween.prototype;
37675
37676  _proto4.modifier = function modifier(func, tween, target) {
37677    this.mSet = this.mSet || this.set; //in case it was already set (a PropTween can only have one modifier)
37678
37679    this.set = _setterWithModifier;
37680    this.m = func;
37681    this.mt = target; //modifier target
37682
37683    this.tween = tween;
37684  };
37685
37686  return PropTween;
37687}(); //Initialization tasks
37688
37689_forEachName(_callbackNames + "parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger", function (name) {
37690  return _reservedProps[name] = 1;
37691});
37692
37693_globals.TweenMax = _globals.TweenLite = Tween;
37694_globals.TimelineLite = _globals.TimelineMax = Timeline;
37695_globalTimeline = new Timeline({
37696  sortChildren: false,
37697  defaults: _defaults,
37698  autoRemoveChildren: true,
37699  id: "root",
37700  smoothChildTiming: true
37701});
37702_config.stringFilter = _colorStringFilter;
37703
37704var _media = [],
37705    _listeners = {},
37706    _emptyArray = [],
37707    _lastMediaTime = 0,
37708    _contextID = 0,
37709    _dispatch = function _dispatch(type) {
37710  return (_listeners[type] || _emptyArray).map(function (f) {
37711    return f();
37712  });
37713},
37714    _onMediaChange = function _onMediaChange() {
37715  var time = Date.now(),
37716      matches = [];
37717
37718  if (time - _lastMediaTime > 2) {
37719    _dispatch("matchMediaInit");
37720
37721    _media.forEach(function (c) {
37722      var queries = c.queries,
37723          conditions = c.conditions,
37724          match,
37725          p,
37726          anyMatch,
37727          toggled;
37728
37729      for (p in queries) {
37730        match = _win.matchMedia(queries[p]).matches; // Firefox doesn't update the "matches" property of the MediaQueryList object correctly - it only does so as it calls its change handler - so we must re-create a media query here to ensure it's accurate.
37731
37732        match && (anyMatch = 1);
37733
37734        if (match !== conditions[p]) {
37735          conditions[p] = match;
37736          toggled = 1;
37737        }
37738      }
37739
37740      if (toggled) {
37741        c.revert();
37742        anyMatch && matches.push(c);
37743      }
37744    });
37745
37746    _dispatch("matchMediaRevert");
37747
37748    matches.forEach(function (c) {
37749      return c.onMatch(c, function (func) {
37750        return c.add(null, func);
37751      });
37752    });
37753    _lastMediaTime = time;
37754
37755    _dispatch("matchMedia");
37756  }
37757};
37758
37759var Context = /*#__PURE__*/function () {
37760  function Context(func, scope) {
37761    this.selector = scope && selector(scope);
37762    this.data = [];
37763    this._r = []; // returned/cleanup functions
37764
37765    this.isReverted = false;
37766    this.id = _contextID++; // to work around issues that frameworks like Vue cause by making things into Proxies which make it impossible to do something like _media.indexOf(this) because "this" would no longer refer to the Context instance itself - it'd refer to a Proxy! We needed a way to identify the context uniquely
37767
37768    func && this.add(func);
37769  }
37770
37771  var _proto5 = Context.prototype;
37772
37773  _proto5.add = function add(name, func, scope) {
37774    // possible future addition if we need the ability to add() an animation to a context and for whatever reason cannot create that animation inside of a context.add(() => {...}) function.
37775    // if (name && _isFunction(name.revert)) {
37776    // 	this.data.push(name);
37777    // 	return (name._ctx = this);
37778    // }
37779    if (_isFunction(name)) {
37780      scope = func;
37781      func = name;
37782      name = _isFunction;
37783    }
37784
37785    var self = this,
37786        f = function f() {
37787      var prev = _context,
37788          prevSelector = self.selector,
37789          result;
37790      prev && prev !== self && prev.data.push(self);
37791      scope && (self.selector = selector(scope));
37792      _context = self;
37793      result = func.apply(self, arguments);
37794      _isFunction(result) && self._r.push(result);
37795      _context = prev;
37796      self.selector = prevSelector;
37797      self.isReverted = false;
37798      return result;
37799    };
37800
37801    self.last = f;
37802    return name === _isFunction ? f(self, function (func) {
37803      return self.add(null, func);
37804    }) : name ? self[name] = f : f;
37805  };
37806
37807  _proto5.ignore = function ignore(func) {
37808    var prev = _context;
37809    _context = null;
37810    func(this);
37811    _context = prev;
37812  };
37813
37814  _proto5.getTweens = function getTweens() {
37815    var a = [];
37816    this.data.forEach(function (e) {
37817      return e instanceof Context ? a.push.apply(a, e.getTweens()) : e instanceof Tween && !(e.parent && e.parent.data === "nested") && a.push(e);
37818    });
37819    return a;
37820  };
37821
37822  _proto5.clear = function clear() {
37823    this._r.length = this.data.length = 0;
37824  };
37825
37826  _proto5.kill = function kill(revert, matchMedia) {
37827    var _this4 = this;
37828
37829    if (revert) {
37830      (function () {
37831        var tweens = _this4.getTweens(),
37832            i = _this4.data.length,
37833            t;
37834
37835        while (i--) {
37836          // Flip plugin tweens are very different in that they should actually be pushed to their end. The plugin replaces the timeline's .revert() method to do exactly that. But we also need to remove any of those nested tweens inside the flip timeline so that they don't get individually reverted.
37837          t = _this4.data[i];
37838
37839          if (t.data === "isFlip") {
37840            t.revert();
37841            t.getChildren(true, true, false).forEach(function (tween) {
37842              return tweens.splice(tweens.indexOf(tween), 1);
37843            });
37844          }
37845        } // save as an object so that we can cache the globalTime for each tween to optimize performance during the sort
37846
37847
37848        tweens.map(function (t) {
37849          return {
37850            g: t._dur || t._delay || t._sat && !t._sat.vars.immediateRender ? t.globalTime(0) : -Infinity,
37851            t: t
37852          };
37853        }).sort(function (a, b) {
37854          return b.g - a.g || -Infinity;
37855        }).forEach(function (o) {
37856          return o.t.revert(revert);
37857        }); // note: all of the _startAt tweens should be reverted in reverse order that they were created, and they'll all have the same globalTime (-1) so the " || -1" in the sort keeps the order properly.
37858
37859        i = _this4.data.length;
37860
37861        while (i--) {
37862          // make sure we loop backwards so that, for example, SplitTexts that were created later on the same element get reverted first
37863          t = _this4.data[i];
37864
37865          if (t instanceof Timeline) {
37866            if (t.data !== "nested") {
37867              t.scrollTrigger && t.scrollTrigger.revert();
37868              t.kill(); // don't revert() the timeline because that's duplicating efforts since we already reverted all the tweens
37869            }
37870          } else {
37871            !(t instanceof Tween) && t.revert && t.revert(revert);
37872          }
37873        }
37874
37875        _this4._r.forEach(function (f) {
37876          return f(revert, _this4);
37877        });
37878
37879        _this4.isReverted = true;
37880      })();
37881    } else {
37882      this.data.forEach(function (e) {
37883        return e.kill && e.kill();
37884      });
37885    }
37886
37887    this.clear();
37888
37889    if (matchMedia) {
37890      var i = _media.length;
37891
37892      while (i--) {
37893        // previously, we checked _media.indexOf(this), but some frameworks like Vue enforce Proxy objects that make it impossible to get the proper result that way, so we must use a unique ID number instead.
37894        _media[i].id === this.id && _media.splice(i, 1);
37895      }
37896    }
37897  };
37898
37899  _proto5.revert = function revert(config) {
37900    this.kill(config || {});
37901  };
37902
37903  return Context;
37904}();
37905
37906var MatchMedia = /*#__PURE__*/function () {
37907  function MatchMedia(scope) {
37908    this.contexts = [];
37909    this.scope = scope;
37910    _context && _context.data.push(this);
37911  }
37912
37913  var _proto6 = MatchMedia.prototype;
37914
37915  _proto6.add = function add(conditions, func, scope) {
37916    _isObject(conditions) || (conditions = {
37917      matches: conditions
37918    });
37919    var context = new Context(0, scope || this.scope),
37920        cond = context.conditions = {},
37921        mq,
37922        p,
37923        active;
37924    _context && !context.selector && (context.selector = _context.selector); // in case a context is created inside a context. Like a gsap.matchMedia() that's inside a scoped gsap.context()
37925
37926    this.contexts.push(context);
37927    func = context.add("onMatch", func);
37928    context.queries = conditions;
37929
37930    for (p in conditions) {
37931      if (p === "all") {
37932        active = 1;
37933      } else {
37934        mq = _win.matchMedia(conditions[p]);
37935
37936        if (mq) {
37937          _media.indexOf(context) < 0 && _media.push(context);
37938          (cond[p] = mq.matches) && (active = 1);
37939          mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener("change", _onMediaChange);
37940        }
37941      }
37942    }
37943
37944    active && func(context, function (f) {
37945      return context.add(null, f);
37946    });
37947    return this;
37948  } // refresh() {
37949  // 	let time = _lastMediaTime,
37950  // 		media = _media;
37951  // 	_lastMediaTime = -1;
37952  // 	_media = this.contexts;
37953  // 	_onMediaChange();
37954  // 	_lastMediaTime = time;
37955  // 	_media = media;
37956  // }
37957  ;
37958
37959  _proto6.revert = function revert(config) {
37960    this.kill(config || {});
37961  };
37962
37963  _proto6.kill = function kill(revert) {
37964    this.contexts.forEach(function (c) {
37965      return c.kill(revert, true);
37966    });
37967  };
37968
37969  return MatchMedia;
37970}();
37971/*
37972 * --------------------------------------------------------------------------------------
37973 * GSAP
37974 * --------------------------------------------------------------------------------------
37975 */
37976
37977
37978var _gsap = {
37979  registerPlugin: function registerPlugin() {
37980    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
37981      args[_key2] = arguments[_key2];
37982    }
37983
37984    args.forEach(function (config) {
37985      return _createPlugin(config);
37986    });
37987  },
37988  timeline: function timeline(vars) {
37989    return new Timeline(vars);
37990  },
37991  getTweensOf: function getTweensOf(targets, onlyActive) {
37992    return _globalTimeline.getTweensOf(targets, onlyActive);
37993  },
37994  getProperty: function getProperty(target, property, unit, uncache) {
37995    _isString(target) && (target = toArray(target)[0]); //in case selector text or an array is passed in
37996
37997    var getter = _getCache(target || {}).get,
37998        format = unit ? _passThrough : _numericIfPossible;
37999
38000    unit === "native" && (unit = "");
38001    return !target ? target : !property ? function (property, unit, uncache) {
38002      return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));
38003    } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));
38004  },
38005  quickSetter: function quickSetter(target, property, unit) {
38006    target = toArray(target);
38007
38008    if (target.length > 1) {
38009      var setters = target.map(function (t) {
38010        return gsap.quickSetter(t, property, unit);
38011      }),
38012          l = setters.length;
38013      return function (value) {
38014        var i = l;
38015
38016        while (i--) {
38017          setters[i](value);
38018        }
38019      };
38020    }
38021
38022    target = target[0] || {};
38023
38024    var Plugin = _plugins[property],
38025        cache = _getCache(target),
38026        p = cache.harness && (cache.harness.aliases || {})[property] || property,
38027        // in case it's an alias, like "rotate" for "rotation".
38028    setter = Plugin ? function (value) {
38029      var p = new Plugin();
38030      _quickTween._pt = 0;
38031      p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);
38032      p.render(1, p);
38033      _quickTween._pt && _renderPropTweens(1, _quickTween);
38034    } : cache.set(target, p);
38035
38036    return Plugin ? setter : function (value) {
38037      return setter(target, p, unit ? value + unit : value, cache, 1);
38038    };
38039  },
38040  quickTo: function quickTo(target, property, vars) {
38041    var _merge2;
38042
38043    var tween = gsap.to(target, _merge((_merge2 = {}, _merge2[property] = "+=0.1", _merge2.paused = true, _merge2), vars || {})),
38044        func = function func(value, start, startIsRelative) {
38045      return tween.resetTo(property, value, start, startIsRelative);
38046    };
38047
38048    func.tween = tween;
38049    return func;
38050  },
38051  isTweening: function isTweening(targets) {
38052    return _globalTimeline.getTweensOf(targets, true).length > 0;
38053  },
38054  defaults: function defaults(value) {
38055    value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));
38056    return _mergeDeep(_defaults, value || {});
38057  },
38058  config: function config(value) {
38059    return _mergeDeep(_config, value || {});
38060  },
38061  registerEffect: function registerEffect(_ref3) {
38062    var name = _ref3.name,
38063        effect = _ref3.effect,
38064        plugins = _ref3.plugins,
38065        defaults = _ref3.defaults,
38066        extendTimeline = _ref3.extendTimeline;
38067    (plugins || "").split(",").forEach(function (pluginName) {
38068      return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + " effect requires " + pluginName + " plugin.");
38069    });
38070
38071    _effects[name] = function (targets, vars, tl) {
38072      return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);
38073    };
38074
38075    if (extendTimeline) {
38076      Timeline.prototype[name] = function (targets, vars, position) {
38077        return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);
38078      };
38079    }
38080  },
38081  registerEase: function registerEase(name, ease) {
38082    _easeMap[name] = _parseEase(ease);
38083  },
38084  parseEase: function parseEase(ease, defaultEase) {
38085    return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;
38086  },
38087  getById: function getById(id) {
38088    return _globalTimeline.getById(id);
38089  },
38090  exportRoot: function exportRoot(vars, includeDelayedCalls) {
38091    if (vars === void 0) {
38092      vars = {};
38093    }
38094
38095    var tl = new Timeline(vars),
38096        child,
38097        next;
38098    tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);
38099
38100    _globalTimeline.remove(tl);
38101
38102    tl._dp = 0; //otherwise it'll get re-activated when adding children and be re-introduced into _globalTimeline's linked list (then added to itself).
38103
38104    tl._time = tl._tTime = _globalTimeline._time;
38105    child = _globalTimeline._first;
38106
38107    while (child) {
38108      next = child._next;
38109
38110      if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {
38111        _addToTimeline(tl, child, child._start - child._delay);
38112      }
38113
38114      child = next;
38115    }
38116
38117    _addToTimeline(_globalTimeline, tl, 0);
38118
38119    return tl;
38120  },
38121  context: function context(func, scope) {
38122    return func ? new Context(func, scope) : _context;
38123  },
38124  matchMedia: function matchMedia(scope) {
38125    return new MatchMedia(scope);
38126  },
38127  matchMediaRefresh: function matchMediaRefresh() {
38128    return _media.forEach(function (c) {
38129      var cond = c.conditions,
38130          found,
38131          p;
38132
38133      for (p in cond) {
38134        if (cond[p]) {
38135          cond[p] = false;
38136          found = 1;
38137        }
38138      }
38139
38140      found && c.revert();
38141    }) || _onMediaChange();
38142  },
38143  addEventListener: function addEventListener(type, callback) {
38144    var a = _listeners[type] || (_listeners[type] = []);
38145    ~a.indexOf(callback) || a.push(callback);
38146  },
38147  removeEventListener: function removeEventListener(type, callback) {
38148    var a = _listeners[type],
38149        i = a && a.indexOf(callback);
38150    i >= 0 && a.splice(i, 1);
38151  },
38152  utils: {
38153    wrap: wrap,
38154    wrapYoyo: wrapYoyo,
38155    distribute: distribute,
38156    random: random,
38157    snap: snap,
38158    normalize: normalize,
38159    getUnit: getUnit,
38160    clamp: clamp,
38161    splitColor: splitColor,
38162    toArray: toArray,
38163    selector: selector,
38164    mapRange: mapRange,
38165    pipe: pipe,
38166    unitize: unitize,
38167    interpolate: interpolate,
38168    shuffle: shuffle
38169  },
38170  install: _install,
38171  effects: _effects,
38172  ticker: _ticker,
38173  updateRoot: Timeline.updateRoot,
38174  plugins: _plugins,
38175  globalTimeline: _globalTimeline,
38176  core: {
38177    PropTween: PropTween,
38178    globals: _addGlobal,
38179    Tween: Tween,
38180    Timeline: Timeline,
38181    Animation: Animation,
38182    getCache: _getCache,
38183    _removeLinkedListItem: _removeLinkedListItem,
38184    reverting: function reverting() {
38185      return _reverting;
38186    },
38187    context: function context(toAdd) {
38188      if (toAdd && _context) {
38189        _context.data.push(toAdd);
38190
38191        toAdd._ctx = _context;
38192      }
38193
38194      return _context;
38195    },
38196    suppressOverwrites: function suppressOverwrites(value) {
38197      return _suppressOverwrites = value;
38198    }
38199  }
38200};
38201
38202_forEachName("to,from,fromTo,delayedCall,set,killTweensOf", function (name) {
38203  return _gsap[name] = Tween[name];
38204});
38205
38206_ticker.add(Timeline.updateRoot);
38207
38208_quickTween = _gsap.to({}, {
38209  duration: 0
38210}); // ---- EXTRA PLUGINS --------------------------------------------------------
38211
38212var _getPluginPropTween = function _getPluginPropTween(plugin, prop) {
38213  var pt = plugin._pt;
38214
38215  while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {
38216    pt = pt._next;
38217  }
38218
38219  return pt;
38220},
38221    _addModifiers = function _addModifiers(tween, modifiers) {
38222  var targets = tween._targets,
38223      p,
38224      i,
38225      pt;
38226
38227  for (p in modifiers) {
38228    i = targets.length;
38229
38230    while (i--) {
38231      pt = tween._ptLookup[i][p];
38232
38233      if (pt && (pt = pt.d)) {
38234        if (pt._pt) {
38235          // is a plugin
38236          pt = _getPluginPropTween(pt, p);
38237        }
38238
38239        pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);
38240      }
38241    }
38242  }
38243},
38244    _buildModifierPlugin = function _buildModifierPlugin(name, modifier) {
38245  return {
38246    name: name,
38247    rawVars: 1,
38248    //don't pre-process function-based values or "random()" strings.
38249    init: function init(target, vars, tween) {
38250      tween._onInit = function (tween) {
38251        var temp, p;
38252
38253        if (_isString(vars)) {
38254          temp = {};
38255
38256          _forEachName(vars, function (name) {
38257            return temp[name] = 1;
38258          }); //if the user passes in a comma-delimited list of property names to roundProps, like "x,y", we round to whole numbers.
38259
38260
38261          vars = temp;
38262        }
38263
38264        if (modifier) {
38265          temp = {};
38266
38267          for (p in vars) {
38268            temp[p] = modifier(vars[p]);
38269          }
38270
38271          vars = temp;
38272        }
38273
38274        _addModifiers(tween, vars);
38275      };
38276    }
38277  };
38278}; //register core plugins
38279
38280
38281var gsap = _gsap.registerPlugin({
38282  name: "attr",
38283  init: function init(target, vars, tween, index, targets) {
38284    var p, pt, v;
38285    this.tween = tween;
38286
38287    for (p in vars) {
38288      v = target.getAttribute(p) || "";
38289      pt = this.add(target, "setAttribute", (v || 0) + "", vars[p], index, targets, 0, 0, p);
38290      pt.op = p;
38291      pt.b = v; // record the beginning value so we can revert()
38292
38293      this._props.push(p);
38294    }
38295  },
38296  render: function render(ratio, data) {
38297    var pt = data._pt;
38298
38299    while (pt) {
38300      _reverting ? pt.set(pt.t, pt.p, pt.b, pt) : pt.r(ratio, pt.d); // if reverting, go back to the original (pt.b)
38301
38302      pt = pt._next;
38303    }
38304  }
38305}, {
38306  name: "endArray",
38307  init: function init(target, value) {
38308    var i = value.length;
38309
38310    while (i--) {
38311      this.add(target, i, target[i] || 0, value[i], 0, 0, 0, 0, 0, 1);
38312    }
38313  }
38314}, _buildModifierPlugin("roundProps", _roundModifier), _buildModifierPlugin("modifiers"), _buildModifierPlugin("snap", snap)) || _gsap; //to prevent the core plugins from being dropped via aggressive tree shaking, we must include them in the variable declaration in this way.
38315
38316Tween.version = Timeline.version = gsap.version = "3.12.5";
38317_coreReady = 1;
38318_windowExists() && _wake();
38319var Power0 = _easeMap.Power0,
38320    Power1 = _easeMap.Power1,
38321    Power2 = _easeMap.Power2,
38322    Power3 = _easeMap.Power3,
38323    Power4 = _easeMap.Power4,
38324    Linear = _easeMap.Linear,
38325    Quad = _easeMap.Quad,
38326    Cubic = _easeMap.Cubic,
38327    Quart = _easeMap.Quart,
38328    Quint = _easeMap.Quint,
38329    Strong = _easeMap.Strong,
38330    Elastic = _easeMap.Elastic,
38331    Back = _easeMap.Back,
38332    SteppedEase = _easeMap.SteppedEase,
38333    Bounce = _easeMap.Bounce,
38334    Sine = _easeMap.Sine,
38335    Expo = _easeMap.Expo,
38336    Circ = _easeMap.Circ;
38337
38338 //export some internal methods/orojects for use in CSSPlugin so that we can externalize that file and allow custom builds that exclude it.
38339
38340
38341
38342/***/ }),
38343
vendor: 3,663 bytes, lines 38344-38389
38344/***/ "./node_modules/gsap/index.js":
38345/*!************************************!*\
38346  !*** ./node_modules/gsap/index.js ***!
38347  \************************************/
38348/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
38349
38350"use strict";
38351__webpack_require__.r(__webpack_exports__);
38352/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38353/* harmony export */   "Back": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Back),
38354/* harmony export */   "Bounce": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Bounce),
38355/* harmony export */   "CSSPlugin": () => (/* reexport safe */ _CSSPlugin_js__WEBPACK_IMPORTED_MODULE_1__.CSSPlugin),
38356/* harmony export */   "Circ": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Circ),
38357/* harmony export */   "Cubic": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Cubic),
38358/* harmony export */   "Elastic": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Elastic),
38359/* harmony export */   "Expo": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Expo),
38360/* harmony export */   "Linear": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Linear),
38361/* harmony export */   "Power0": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Power0),
38362/* harmony export */   "Power1": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Power1),
38363/* harmony export */   "Power2": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Power2),
38364/* harmony export */   "Power3": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Power3),
38365/* harmony export */   "Power4": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Power4),
38366/* harmony export */   "Quad": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Quad),
38367/* harmony export */   "Quart": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Quart),
38368/* harmony export */   "Quint": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Quint),
38369/* harmony export */   "Sine": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Sine),
38370/* harmony export */   "SteppedEase": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.SteppedEase),
38371/* harmony export */   "Strong": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.Strong),
38372/* harmony export */   "TimelineLite": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.TimelineLite),
38373/* harmony export */   "TimelineMax": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.TimelineMax),
38374/* harmony export */   "TweenLite": () => (/* reexport safe */ _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.TweenLite),
38375/* harmony export */   "TweenMax": () => (/* binding */ TweenMaxWithCSS),
38376/* harmony export */   "default": () => (/* binding */ gsapWithCSS),
38377/* harmony export */   "gsap": () => (/* binding */ gsapWithCSS)
38378/* harmony export */ });
38379/* harmony import */ var _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gsap-core.js */ "./node_modules/gsap/gsap-core.js");
38380/* harmony import */ var _CSSPlugin_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CSSPlugin.js */ "./node_modules/gsap/CSSPlugin.js");
38381
38382
38383var gsapWithCSS = _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.gsap.registerPlugin(_CSSPlugin_js__WEBPACK_IMPORTED_MODULE_1__.CSSPlugin) || _gsap_core_js__WEBPACK_IMPORTED_MODULE_0__.gsap,
38384    // to protect from tree shaking
38385TweenMaxWithCSS = gsapWithCSS.core.Tween;
38386
38387
38388/***/ }),
38389
vendor: 15,673 bytes, lines 38390-38829
38390/***/ "./node_modules/gsap/utils/matrix.js":
38391/*!*******************************************!*\
38392  !*** ./node_modules/gsap/utils/matrix.js ***!
38393  \*******************************************/
38394/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
38395
38396"use strict";
38397__webpack_require__.r(__webpack_exports__);
38398/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38399/* harmony export */   "Matrix2D": () => (/* binding */ Matrix2D),
38400/* harmony export */   "_getCTM": () => (/* binding */ _getCTM),
38401/* harmony export */   "_getDocScrollLeft": () => (/* binding */ _getDocScrollLeft),
38402/* harmony export */   "_getDocScrollTop": () => (/* binding */ _getDocScrollTop),
38403/* harmony export */   "_isFixed": () => (/* binding */ _isFixed),
38404/* harmony export */   "_setDoc": () => (/* binding */ _setDoc),
38405/* harmony export */   "getGlobalMatrix": () => (/* binding */ getGlobalMatrix)
38406/* harmony export */ });
38407/*!
38408 * matrix 3.12.5
38409 * https://gsap.com
38410 *
38411 * Copyright 2008-2024, GreenSock. All rights reserved.
38412 * Subject to the terms at https://gsap.com/standard-license or for
38413 * Club GSAP members, the agreement issued with that membership.
38414 * @author: Jack Doyle, [email protected]
38415*/
38416
38417/* eslint-disable */
38418var _doc,
38419    _win,
38420    _docElement,
38421    _body,
38422    _divContainer,
38423    _svgContainer,
38424    _identityMatrix,
38425    _gEl,
38426    _transformProp = "transform",
38427    _transformOriginProp = _transformProp + "Origin",
38428    _hasOffsetBug,
38429    _setDoc = function _setDoc(element) {
38430  var doc = element.ownerDocument || element;
38431
38432  if (!(_transformProp in element.style) && "msTransform" in element.style) {
38433    //to improve compatibility with old Microsoft browsers
38434    _transformProp = "msTransform";
38435    _transformOriginProp = _transformProp + "Origin";
38436  }
38437
38438  while (doc.parentNode && (doc = doc.parentNode)) {}
38439
38440  _win = window;
38441  _identityMatrix = new Matrix2D();
38442
38443  if (doc) {
38444    _doc = doc;
38445    _docElement = doc.documentElement;
38446    _body = doc.body;
38447    _gEl = _doc.createElementNS("http://www.w3.org/2000/svg", "g"); // prevent any existing CSS from transforming it
38448
38449    _gEl.style.transform = "none"; // now test for the offset reporting bug. Use feature detection instead of browser sniffing to make things more bulletproof and future-proof. Hopefully Safari will fix their bug soon.
38450
38451    var d1 = doc.createElement("div"),
38452        d2 = doc.createElement("div"),
38453        root = doc && (doc.body || doc.firstElementChild);
38454
38455    if (root && root.appendChild) {
38456      root.appendChild(d1);
38457      d1.appendChild(d2);
38458      d1.setAttribute("style", "position:static;transform:translate3d(0,0,1px)");
38459      _hasOffsetBug = d2.offsetParent !== d1;
38460      root.removeChild(d1);
38461    }
38462  }
38463
38464  return doc;
38465},
38466    _forceNonZeroScale = function _forceNonZeroScale(e) {
38467  // walks up the element's ancestors and finds any that had their scale set to 0 via GSAP, and changes them to 0.0001 to ensure that measurements work. Firefox has a bug that causes it to incorrectly report getBoundingClientRect() when scale is 0.
38468  var a, cache;
38469
38470  while (e && e !== _body) {
38471    cache = e._gsap;
38472    cache && cache.uncache && cache.get(e, "x"); // force re-parsing of transforms if necessary
38473
38474    if (cache && !cache.scaleX && !cache.scaleY && cache.renderTransform) {
38475      cache.scaleX = cache.scaleY = 1e-4;
38476      cache.renderTransform(1, cache);
38477      a ? a.push(cache) : a = [cache];
38478    }
38479
38480    e = e.parentNode;
38481  }
38482
38483  return a;
38484},
38485    // possible future addition: pass an element to _forceDisplay() and it'll walk up all its ancestors and make sure anything with display: none is set to display: block, and if there's no parentNode, it'll add it to the body. It returns an Array that you can then feed to _revertDisplay() to have it revert all the changes it made.
38486// _forceDisplay = e => {
38487// 	let a = [],
38488// 		parent;
38489// 	while (e && e !== _body) {
38490// 		parent = e.parentNode;
38491// 		(_win.getComputedStyle(e).display === "none" || !parent) && a.push(e, e.style.display, parent) && (e.style.display = "block");
38492// 		parent || _body.appendChild(e);
38493// 		e = parent;
38494// 	}
38495// 	return a;
38496// },
38497// _revertDisplay = a => {
38498// 	for (let i = 0; i < a.length; i+=3) {
38499// 		a[i+1] ? (a[i].style.display = a[i+1]) : a[i].style.removeProperty("display");
38500// 		a[i+2] || a[i].parentNode.removeChild(a[i]);
38501// 	}
38502// },
38503_svgTemps = [],
38504    //we create 3 elements for SVG, and 3 for other DOM elements and cache them for performance reasons. They get nested in _divContainer and _svgContainer so that just one element is added to the DOM on each successive attempt. Again, performance is key.
38505_divTemps = [],
38506    _getDocScrollTop = function _getDocScrollTop() {
38507  return _win.pageYOffset || _doc.scrollTop || _docElement.scrollTop || _body.scrollTop || 0;
38508},
38509    _getDocScrollLeft = function _getDocScrollLeft() {
38510  return _win.pageXOffset || _doc.scrollLeft || _docElement.scrollLeft || _body.scrollLeft || 0;
38511},
38512    _svgOwner = function _svgOwner(element) {
38513  return element.ownerSVGElement || ((element.tagName + "").toLowerCase() === "svg" ? element : null);
38514},
38515    _isFixed = function _isFixed(element) {
38516  if (_win.getComputedStyle(element).position === "fixed") {
38517    return true;
38518  }
38519
38520  element = element.parentNode;
38521
38522  if (element && element.nodeType === 1) {
38523    // avoid document fragments which will throw an error.
38524    return _isFixed(element);
38525  }
38526},
38527    _createSibling = function _createSibling(element, i) {
38528  if (element.parentNode && (_doc || _setDoc(element))) {
38529    var svg = _svgOwner(element),
38530        ns = svg ? svg.getAttribute("xmlns") || "http://www.w3.org/2000/svg" : "http://www.w3.org/1999/xhtml",
38531        type = svg ? i ? "rect" : "g" : "div",
38532        x = i !== 2 ? 0 : 100,
38533        y = i === 3 ? 100 : 0,
38534        css = "position:absolute;display:block;pointer-events:none;margin:0;padding:0;",
38535        e = _doc.createElementNS ? _doc.createElementNS(ns.replace(/^https/, "http"), type) : _doc.createElement(type);
38536
38537    if (i) {
38538      if (!svg) {
38539        if (!_divContainer) {
38540          _divContainer = _createSibling(element);
38541          _divContainer.style.cssText = css;
38542        }
38543
38544        e.style.cssText = css + "width:0.1px;height:0.1px;top:" + y + "px;left:" + x + "px";
38545
38546        _divContainer.appendChild(e);
38547      } else {
38548        _svgContainer || (_svgContainer = _createSibling(element));
38549        e.setAttribute("width", 0.01);
38550        e.setAttribute("height", 0.01);
38551        e.setAttribute("transform", "translate(" + x + "," + y + ")");
38552
38553        _svgContainer.appendChild(e);
38554      }
38555    }
38556
38557    return e;
38558  }
38559
38560  throw "Need document and parent.";
38561},
38562    _consolidate = function _consolidate(m) {
38563  // replaces SVGTransformList.consolidate() because a bug in Firefox causes it to break pointer events. See https://gsap.com/forums/topic/23248-touch-is-not-working-on-draggable-in-firefox-windows-v324/?tab=comments#comment-109800
38564  var c = new Matrix2D(),
38565      i = 0;
38566
38567  for (; i < m.numberOfItems; i++) {
38568    c.multiply(m.getItem(i).matrix);
38569  }
38570
38571  return c;
38572},
38573    _getCTM = function _getCTM(svg) {
38574  var m = svg.getCTM(),
38575      transform;
38576
38577  if (!m) {
38578    // Firefox returns null for getCTM() on root <svg> elements, so this is a workaround using a <g> that we temporarily append.
38579    transform = svg.style[_transformProp];
38580    svg.style[_transformProp] = "none"; // a bug in Firefox causes css transforms to contaminate the getCTM()
38581
38582    svg.appendChild(_gEl);
38583    m = _gEl.getCTM();
38584    svg.removeChild(_gEl);
38585    transform ? svg.style[_transformProp] = transform : svg.style.removeProperty(_transformProp.replace(/([A-Z])/g, "-$1").toLowerCase());
38586  }
38587
38588  return m || _identityMatrix.clone(); // Firefox will still return null if the <svg> has a width/height of 0 in the browser.
38589},
38590    _placeSiblings = function _placeSiblings(element, adjustGOffset) {
38591  var svg = _svgOwner(element),
38592      isRootSVG = element === svg,
38593      siblings = svg ? _svgTemps : _divTemps,
38594      parent = element.parentNode,
38595      container,
38596      m,
38597      b,
38598      x,
38599      y,
38600      cs;
38601
38602  if (element === _win) {
38603    return element;
38604  }
38605
38606  siblings.length || siblings.push(_createSibling(element, 1), _createSibling(element, 2), _createSibling(element, 3));
38607  container = svg ? _svgContainer : _divContainer;
38608
38609  if (svg) {
38610    if (isRootSVG) {
38611      b = _getCTM(element);
38612      x = -b.e / b.a;
38613      y = -b.f / b.d;
38614      m = _identityMatrix;
38615    } else if (element.getBBox) {
38616      b = element.getBBox();
38617      m = element.transform ? element.transform.baseVal : {}; // IE11 doesn't follow the spec.
38618
38619      m = !m.numberOfItems ? _identityMatrix : m.numberOfItems > 1 ? _consolidate(m) : m.getItem(0).matrix; // don't call m.consolidate().matrix because a bug in Firefox makes pointer events not work when consolidate() is called on the same tick as getBoundingClientRect()! See https://gsap.com/forums/topic/23248-touch-is-not-working-on-draggable-in-firefox-windows-v324/?tab=comments#comment-109800
38620
38621      x = m.a * b.x + m.c * b.y;
38622      y = m.b * b.x + m.d * b.y;
38623    } else {
38624      // may be a <mask> which has no getBBox() so just use defaults instead of throwing errors.
38625      m = new Matrix2D();
38626      x = y = 0;
38627    }
38628
38629    if (adjustGOffset && element.tagName.toLowerCase() === "g") {
38630      x = y = 0;
38631    }
38632
38633    (isRootSVG ? svg : parent).appendChild(container);
38634    container.setAttribute("transform", "matrix(" + m.a + "," + m.b + "," + m.c + "," + m.d + "," + (m.e + x) + "," + (m.f + y) + ")");
38635  } else {
38636    x = y = 0;
38637
38638    if (_hasOffsetBug) {
38639      // some browsers (like Safari) have a bug that causes them to misreport offset values. When an ancestor element has a transform applied, it's supposed to treat it as if it's position: relative (new context). Safari botches this, so we need to find the closest ancestor (between the element and its offsetParent) that has a transform applied and if one is found, grab its offsetTop/Left and subtract them to compensate.
38640      m = element.offsetParent;
38641      b = element;
38642
38643      while (b && (b = b.parentNode) && b !== m && b.parentNode) {
38644        if ((_win.getComputedStyle(b)[_transformProp] + "").length > 4) {
38645          x = b.offsetLeft;
38646          y = b.offsetTop;
38647          b = 0;
38648        }
38649      }
38650    }
38651
38652    cs = _win.getComputedStyle(element);
38653
38654    if (cs.position !== "absolute" && cs.position !== "fixed") {
38655      m = element.offsetParent;
38656
38657      while (parent && parent !== m) {
38658        // if there's an ancestor element between the element and its offsetParent that's scrolled, we must factor that in.
38659        x += parent.scrollLeft || 0;
38660        y += parent.scrollTop || 0;
38661        parent = parent.parentNode;
38662      }
38663    }
38664
38665    b = container.style;
38666    b.top = element.offsetTop - y + "px";
38667    b.left = element.offsetLeft - x + "px";
38668    b[_transformProp] = cs[_transformProp];
38669    b[_transformOriginProp] = cs[_transformOriginProp]; // b.border = m.border;
38670    // b.borderLeftStyle = m.borderLeftStyle;
38671    // b.borderTopStyle = m.borderTopStyle;
38672    // b.borderLeftWidth = m.borderLeftWidth;
38673    // b.borderTopWidth = m.borderTopWidth;
38674
38675    b.position = cs.position === "fixed" ? "fixed" : "absolute";
38676    element.parentNode.appendChild(container);
38677  }
38678
38679  return container;
38680},
38681    _setMatrix = function _setMatrix(m, a, b, c, d, e, f) {
38682  m.a = a;
38683  m.b = b;
38684  m.c = c;
38685  m.d = d;
38686  m.e = e;
38687  m.f = f;
38688  return m;
38689};
38690
38691var Matrix2D = /*#__PURE__*/function () {
38692  function Matrix2D(a, b, c, d, e, f) {
38693    if (a === void 0) {
38694      a = 1;
38695    }
38696
38697    if (b === void 0) {
38698      b = 0;
38699    }
38700
38701    if (c === void 0) {
38702      c = 0;
38703    }
38704
38705    if (d === void 0) {
38706      d = 1;
38707    }
38708
38709    if (e === void 0) {
38710      e = 0;
38711    }
38712
38713    if (f === void 0) {
38714      f = 0;
38715    }
38716
38717    _setMatrix(this, a, b, c, d, e, f);
38718  }
38719
38720  var _proto = Matrix2D.prototype;
38721
38722  _proto.inverse = function inverse() {
38723    var a = this.a,
38724        b = this.b,
38725        c = this.c,
38726        d = this.d,
38727        e = this.e,
38728        f = this.f,
38729        determinant = a * d - b * c || 1e-10;
38730    return _setMatrix(this, d / determinant, -b / determinant, -c / determinant, a / determinant, (c * f - d * e) / determinant, -(a * f - b * e) / determinant);
38731  };
38732
38733  _proto.multiply = function multiply(matrix) {
38734    var a = this.a,
38735        b = this.b,
38736        c = this.c,
38737        d = this.d,
38738        e = this.e,
38739        f = this.f,
38740        a2 = matrix.a,
38741        b2 = matrix.c,
38742        c2 = matrix.b,
38743        d2 = matrix.d,
38744        e2 = matrix.e,
38745        f2 = matrix.f;
38746    return _setMatrix(this, a2 * a + c2 * c, a2 * b + c2 * d, b2 * a + d2 * c, b2 * b + d2 * d, e + e2 * a + f2 * c, f + e2 * b + f2 * d);
38747  };
38748
38749  _proto.clone = function clone() {
38750    return new Matrix2D(this.a, this.b, this.c, this.d, this.e, this.f);
38751  };
38752
38753  _proto.equals = function equals(matrix) {
38754    var a = this.a,
38755        b = this.b,
38756        c = this.c,
38757        d = this.d,
38758        e = this.e,
38759        f = this.f;
38760    return a === matrix.a && b === matrix.b && c === matrix.c && d === matrix.d && e === matrix.e && f === matrix.f;
38761  };
38762
38763  _proto.apply = function apply(point, decoratee) {
38764    if (decoratee === void 0) {
38765      decoratee = {};
38766    }
38767
38768    var x = point.x,
38769        y = point.y,
38770        a = this.a,
38771        b = this.b,
38772        c = this.c,
38773        d = this.d,
38774        e = this.e,
38775        f = this.f;
38776    decoratee.x = x * a + y * c + e || 0;
38777    decoratee.y = x * b + y * d + f || 0;
38778    return decoratee;
38779  };
38780
38781  return Matrix2D;
38782}(); // Feed in an element and it'll return a 2D matrix (optionally inverted) so that you can translate between coordinate spaces.
38783// Inverting lets you translate a global point into a local coordinate space. No inverting lets you go the other way.
38784// We needed this to work around various browser bugs, like Firefox doesn't accurately report getScreenCTM() when there
38785// are transforms applied to ancestor elements.
38786// The matrix math to convert any x/y coordinate is as follows, which is wrapped in a convenient apply() method of Matrix2D above:
38787//     tx = m.a * x + m.c * y + m.e
38788//     ty = m.b * x + m.d * y + m.f
38789
38790function getGlobalMatrix(element, inverse, adjustGOffset, includeScrollInFixed) {
38791  // adjustGOffset is typically used only when grabbing an element's PARENT's global matrix, and it ignores the x/y offset of any SVG <g> elements because they behave in a special way.
38792  if (!element || !element.parentNode || (_doc || _setDoc(element)).documentElement === element) {
38793    return new Matrix2D();
38794  }
38795
38796  var zeroScales = _forceNonZeroScale(element),
38797      svg = _svgOwner(element),
38798      temps = svg ? _svgTemps : _divTemps,
38799      container = _placeSiblings(element, adjustGOffset),
38800      b1 = temps[0].getBoundingClientRect(),
38801      b2 = temps[1].getBoundingClientRect(),
38802      b3 = temps[2].getBoundingClientRect(),
38803      parent = container.parentNode,
38804      isFixed = !includeScrollInFixed && _isFixed(element),
38805      m = new Matrix2D((b2.left - b1.left) / 100, (b2.top - b1.top) / 100, (b3.left - b1.left) / 100, (b3.top - b1.top) / 100, b1.left + (isFixed ? 0 : _getDocScrollLeft()), b1.top + (isFixed ? 0 : _getDocScrollTop()));
38806
38807  parent.removeChild(container);
38808
38809  if (zeroScales) {
38810    b1 = zeroScales.length;
38811
38812    while (b1--) {
38813      b2 = zeroScales[b1];
38814      b2.scaleX = b2.scaleY = 0;
38815      b2.renderTransform(1, b2);
38816    }
38817  }
38818
38819  return inverse ? m.inverse() : m;
38820}
38821 // export function getMatrix(element) {
38822// 	_doc || _setDoc(element);
38823// 	let m = (_win.getComputedStyle(element)[_transformProp] + "").substr(7).match(/[-.]*\d+[.e\-+]*\d*[e\-\+]*\d*/g),
38824// 		is2D = m && m.length === 6;
38825// 	return !m || m.length < 6 ? new Matrix2D() : new Matrix2D(+m[0], +m[1], +m[is2D ? 2 : 4], +m[is2D ? 3 : 5], +m[is2D ? 4 : 12], +m[is2D ? 5 : 13]);
38826// }
38827
38828/***/ }),
38829
vendor: 49,609 bytes, lines 38830-40347
38830/***/ "./node_modules/gsap/utils/paths.js":
38831/*!******************************************!*\
38832  !*** ./node_modules/gsap/utils/paths.js ***!
38833  \******************************************/
38834/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
38835
38836"use strict";
38837__webpack_require__.r(__webpack_exports__);
38838/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38839/* harmony export */   "bezierToPoints": () => (/* binding */ bezierToPoints),
38840/* harmony export */   "cacheRawPathMeasurements": () => (/* binding */ cacheRawPathMeasurements),
38841/* harmony export */   "convertToPath": () => (/* binding */ convertToPath),
38842/* harmony export */   "copyRawPath": () => (/* binding */ copyRawPath),
38843/* harmony export */   "flatPointsToSegment": () => (/* binding */ flatPointsToSegment),
38844/* harmony export */   "getClosestData": () => (/* binding */ getClosestData),
38845/* harmony export */   "getPositionOnPath": () => (/* binding */ getPositionOnPath),
38846/* harmony export */   "getRawPath": () => (/* binding */ getRawPath),
38847/* harmony export */   "getRotationAtProgress": () => (/* binding */ getRotationAtProgress),
38848/* harmony export */   "pointsToSegment": () => (/* binding */ pointsToSegment),
38849/* harmony export */   "rawPathToString": () => (/* binding */ rawPathToString),
38850/* harmony export */   "reverseSegment": () => (/* binding */ reverseSegment),
38851/* harmony export */   "simplifyPoints": () => (/* binding */ simplifyPoints),
38852/* harmony export */   "sliceRawPath": () => (/* binding */ sliceRawPath),
38853/* harmony export */   "stringToRawPath": () => (/* binding */ stringToRawPath),
38854/* harmony export */   "subdivideSegment": () => (/* binding */ subdivideSegment),
38855/* harmony export */   "subdivideSegmentNear": () => (/* binding */ subdivideSegmentNear),
38856/* harmony export */   "transformRawPath": () => (/* binding */ transformRawPath)
38857/* harmony export */ });
38858/*!
38859 * paths 3.12.5
38860 * https://gsap.com
38861 *
38862 * Copyright 2008-2024, GreenSock. All rights reserved.
38863 * Subject to the terms at https://gsap.com/standard-license or for
38864 * Club GSAP members, the agreement issued with that membership.
38865 * @author: Jack Doyle, [email protected]
38866*/
38867
38868/* eslint-disable */
38869var _svgPathExp = /[achlmqstvz]|(-?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/ig,
38870    _numbersExp = /(?:(-)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/ig,
38871    _scientific = /[\+\-]?\d*\.?\d+e[\+\-]?\d+/ig,
38872    _selectorExp = /(^[#\.][a-z]|[a-y][a-z])/i,
38873    _DEG2RAD = Math.PI / 180,
38874    _RAD2DEG = 180 / Math.PI,
38875    _sin = Math.sin,
38876    _cos = Math.cos,
38877    _abs = Math.abs,
38878    _sqrt = Math.sqrt,
38879    _atan2 = Math.atan2,
38880    _largeNum = 1e8,
38881    _isString = function _isString(value) {
38882  return typeof value === "string";
38883},
38884    _isNumber = function _isNumber(value) {
38885  return typeof value === "number";
38886},
38887    _isUndefined = function _isUndefined(value) {
38888  return typeof value === "undefined";
38889},
38890    _temp = {},
38891    _temp2 = {},
38892    _roundingNum = 1e5,
38893    _wrapProgress = function _wrapProgress(progress) {
38894  return Math.round((progress + _largeNum) % 1 * _roundingNum) / _roundingNum || (progress < 0 ? 0 : 1);
38895},
38896    //if progress lands on 1, the % will make it 0 which is why we || 1, but not if it's negative because it makes more sense for motion to end at 0 in that case.
38897_round = function _round(value) {
38898  return Math.round(value * _roundingNum) / _roundingNum || 0;
38899},
38900    _roundPrecise = function _roundPrecise(value) {
38901  return Math.round(value * 1e10) / 1e10 || 0;
38902},
38903    _splitSegment = function _splitSegment(rawPath, segIndex, i, t) {
38904  var segment = rawPath[segIndex],
38905      shift = t === 1 ? 6 : subdivideSegment(segment, i, t);
38906
38907  if ((shift || !t) && shift + i + 2 < segment.length) {
38908    rawPath.splice(segIndex, 0, segment.slice(0, i + shift + 2));
38909    segment.splice(0, i + shift);
38910    return 1;
38911  }
38912},
38913    _getSampleIndex = function _getSampleIndex(samples, length, progress) {
38914  // slightly slower way than doing this (when there's no lookup): segment.lookup[progress < 1 ? ~~(length / segment.minLength) : segment.lookup.length - 1] || 0;
38915  var l = samples.length,
38916      i = ~~(progress * l);
38917
38918  if (samples[i] > length) {
38919    while (--i && samples[i] > length) {}
38920
38921    i < 0 && (i = 0);
38922  } else {
38923    while (samples[++i] < length && i < l) {}
38924  }
38925
38926  return i < l ? i : l - 1;
38927},
38928    _reverseRawPath = function _reverseRawPath(rawPath, skipOuter) {
38929  var i = rawPath.length;
38930  skipOuter || rawPath.reverse();
38931
38932  while (i--) {
38933    rawPath[i].reversed || reverseSegment(rawPath[i]);
38934  }
38935},
38936    _copyMetaData = function _copyMetaData(source, copy) {
38937  copy.totalLength = source.totalLength;
38938
38939  if (source.samples) {
38940    //segment
38941    copy.samples = source.samples.slice(0);
38942    copy.lookup = source.lookup.slice(0);
38943    copy.minLength = source.minLength;
38944    copy.resolution = source.resolution;
38945  } else if (source.totalPoints) {
38946    //rawPath
38947    copy.totalPoints = source.totalPoints;
38948  }
38949
38950  return copy;
38951},
38952    //pushes a new segment into a rawPath, but if its starting values match the ending values of the last segment, it'll merge it into that same segment (to reduce the number of segments)
38953_appendOrMerge = function _appendOrMerge(rawPath, segment) {
38954  var index = rawPath.length,
38955      prevSeg = rawPath[index - 1] || [],
38956      l = prevSeg.length;
38957
38958  if (index && segment[0] === prevSeg[l - 2] && segment[1] === prevSeg[l - 1]) {
38959    segment = prevSeg.concat(segment.slice(2));
38960    index--;
38961  }
38962
38963  rawPath[index] = segment;
38964},
38965    _bestDistance;
38966/* TERMINOLOGY
38967 - RawPath - an array of arrays, one for each Segment. A single RawPath could have multiple "M" commands, defining Segments (paths aren't always connected).
38968 - Segment - an array containing a sequence of Cubic Bezier coordinates in alternating x, y, x, y format. Starting anchor, then control point 1, control point 2, and ending anchor, then the next control point 1, control point 2, anchor, etc. Uses less memory than an array with a bunch of {x, y} points.
38969 - Bezier - a single cubic Bezier with a starting anchor, two control points, and an ending anchor.
38970 - the variable "t" is typically the position along an individual Bezier path (time) and it's NOT linear, meaning it could accelerate/decelerate based on the control points whereas the "p" or "progress" value is linearly mapped to the whole path, so it shouldn't really accelerate/decelerate based on control points. So a progress of 0.2 would be almost exactly 20% along the path. "t" is ONLY in an individual Bezier piece.
38971 */
38972//accepts basic selector text, a path instance, a RawPath instance, or a Segment and returns a RawPath (makes it easy to homogenize things). If an element or selector text is passed in, it'll also cache the value so that if it's queried again, it'll just take the path data from there instead of parsing it all over again (as long as the path data itself hasn't changed - it'll check).
38973
38974
38975function getRawPath(value) {
38976  value = _isString(value) && _selectorExp.test(value) ? document.querySelector(value) || value : value;
38977  var e = value.getAttribute ? value : 0,
38978      rawPath;
38979
38980  if (e && (value = value.getAttribute("d"))) {
38981    //implements caching
38982    if (!e._gsPath) {
38983      e._gsPath = {};
38984    }
38985
38986    rawPath = e._gsPath[value];
38987    return rawPath && !rawPath._dirty ? rawPath : e._gsPath[value] = stringToRawPath(value);
38988  }
38989
38990  return !value ? console.warn("Expecting a <path> element or an SVG path data string") : _isString(value) ? stringToRawPath(value) : _isNumber(value[0]) ? [value] : value;
38991} //copies a RawPath WITHOUT the length meta data (for speed)
38992
38993function copyRawPath(rawPath) {
38994  var a = [],
38995      i = 0;
38996
38997  for (; i < rawPath.length; i++) {
38998    a[i] = _copyMetaData(rawPath[i], rawPath[i].slice(0));
38999  }
39000
39001  return _copyMetaData(rawPath, a);
39002}
39003function reverseSegment(segment) {
39004  var i = 0,
39005      y;
39006  segment.reverse(); //this will invert the order y, x, y, x so we must flip it back.
39007
39008  for (; i < segment.length; i += 2) {
39009    y = segment[i];
39010    segment[i] = segment[i + 1];
39011    segment[i + 1] = y;
39012  }
39013
39014  segment.reversed = !segment.reversed;
39015}
39016
39017var _createPath = function _createPath(e, ignore) {
39018  var path = document.createElementNS("http://www.w3.org/2000/svg", "path"),
39019      attr = [].slice.call(e.attributes),
39020      i = attr.length,
39021      name;
39022  ignore = "," + ignore + ",";
39023
39024  while (--i > -1) {
39025    name = attr[i].nodeName.toLowerCase(); //in Microsoft Edge, if you don't set the attribute with a lowercase name, it doesn't render correctly! Super weird.
39026
39027    if (ignore.indexOf("," + name + ",") < 0) {
39028      path.setAttributeNS(null, name, attr[i].nodeValue);
39029    }
39030  }
39031
39032  return path;
39033},
39034    _typeAttrs = {
39035  rect: "rx,ry,x,y,width,height",
39036  circle: "r,cx,cy",
39037  ellipse: "rx,ry,cx,cy",
39038  line: "x1,x2,y1,y2"
39039},
39040    _attrToObj = function _attrToObj(e, attrs) {
39041  var props = attrs ? attrs.split(",") : [],
39042      obj = {},
39043      i = props.length;
39044
39045  while (--i > -1) {
39046    obj[props[i]] = +e.getAttribute(props[i]) || 0;
39047  }
39048
39049  return obj;
39050}; //converts an SVG shape like <circle>, <rect>, <polygon>, <polyline>, <ellipse>, etc. to a <path>, swapping it in and copying the attributes to match.
39051
39052
39053function convertToPath(element, swap) {
39054  var type = element.tagName.toLowerCase(),
39055      circ = 0.552284749831,
39056      data,
39057      x,
39058      y,
39059      r,
39060      ry,
39061      path,
39062      rcirc,
39063      rycirc,
39064      points,
39065      w,
39066      h,
39067      x2,
39068      x3,
39069      x4,
39070      x5,
39071      x6,
39072      y2,
39073      y3,
39074      y4,
39075      y5,
39076      y6,
39077      attr;
39078
39079  if (type === "path" || !element.getBBox) {
39080    return element;
39081  }
39082
39083  path = _createPath(element, "x,y,width,height,cx,cy,rx,ry,r,x1,x2,y1,y2,points");
39084  attr = _attrToObj(element, _typeAttrs[type]);
39085
39086  if (type === "rect") {
39087    r = attr.rx;
39088    ry = attr.ry || r;
39089    x = attr.x;
39090    y = attr.y;
39091    w = attr.width - r * 2;
39092    h = attr.height - ry * 2;
39093
39094    if (r || ry) {
39095      //if there are rounded corners, render cubic beziers
39096      x2 = x + r * (1 - circ);
39097      x3 = x + r;
39098      x4 = x3 + w;
39099      x5 = x4 + r * circ;
39100      x6 = x4 + r;
39101      y2 = y + ry * (1 - circ);
39102      y3 = y + ry;
39103      y4 = y3 + h;
39104      y5 = y4 + ry * circ;
39105      y6 = y4 + ry;
39106      data = "M" + x6 + "," + y3 + " V" + y4 + " C" + [x6, y5, x5, y6, x4, y6, x4 - (x4 - x3) / 3, y6, x3 + (x4 - x3) / 3, y6, x3, y6, x2, y6, x, y5, x, y4, x, y4 - (y4 - y3) / 3, x, y3 + (y4 - y3) / 3, x, y3, x, y2, x2, y, x3, y, x3 + (x4 - x3) / 3, y, x4 - (x4 - x3) / 3, y, x4, y, x5, y, x6, y2, x6, y3].join(",") + "z";
39107    } else {
39108      data = "M" + (x + w) + "," + y + " v" + h + " h" + -w + " v" + -h + " h" + w + "z";
39109    }
39110  } else if (type === "circle" || type === "ellipse") {
39111    if (type === "circle") {
39112      r = ry = attr.r;
39113      rycirc = r * circ;
39114    } else {
39115      r = attr.rx;
39116      ry = attr.ry;
39117      rycirc = ry * circ;
39118    }
39119
39120    x = attr.cx;
39121    y = attr.cy;
39122    rcirc = r * circ;
39123    data = "M" + (x + r) + "," + y + " C" + [x + r, y + rycirc, x + rcirc, y + ry, x, y + ry, x - rcirc, y + ry, x - r, y + rycirc, x - r, y, x - r, y - rycirc, x - rcirc, y - ry, x, y - ry, x + rcirc, y - ry, x + r, y - rycirc, x + r, y].join(",") + "z";
39124  } else if (type === "line") {
39125    data = "M" + attr.x1 + "," + attr.y1 + " L" + attr.x2 + "," + attr.y2; //previously, we just converted to "Mx,y Lx,y" but Safari has bugs that cause that not to render properly when using a stroke-dasharray that's not fully visible! Using a cubic bezier fixes that issue.
39126  } else if (type === "polyline" || type === "polygon") {
39127    points = (element.getAttribute("points") + "").match(_numbersExp) || [];
39128    x = points.shift();
39129    y = points.shift();
39130    data = "M" + x + "," + y + " L" + points.join(",");
39131
39132    if (type === "polygon") {
39133      data += "," + x + "," + y + "z";
39134    }
39135  }
39136
39137  path.setAttribute("d", rawPathToString(path._gsRawPath = stringToRawPath(data)));
39138
39139  if (swap && element.parentNode) {
39140    element.parentNode.insertBefore(path, element);
39141    element.parentNode.removeChild(element);
39142  }
39143
39144  return path;
39145} //returns the rotation (in degrees) at a particular progress on a rawPath (the slope of the tangent)
39146
39147function getRotationAtProgress(rawPath, progress) {
39148  var d = getProgressData(rawPath, progress >= 1 ? 1 - 1e-9 : progress ? progress : 1e-9);
39149  return getRotationAtBezierT(d.segment, d.i, d.t);
39150}
39151
39152function getRotationAtBezierT(segment, i, t) {
39153  var a = segment[i],
39154      b = segment[i + 2],
39155      c = segment[i + 4],
39156      x;
39157  a += (b - a) * t;
39158  b += (c - b) * t;
39159  a += (b - a) * t;
39160  x = b + (c + (segment[i + 6] - c) * t - b) * t - a;
39161  a = segment[i + 1];
39162  b = segment[i + 3];
39163  c = segment[i + 5];
39164  a += (b - a) * t;
39165  b += (c - b) * t;
39166  a += (b - a) * t;
39167  return _round(_atan2(b + (c + (segment[i + 7] - c) * t - b) * t - a, x) * _RAD2DEG);
39168}
39169
39170function sliceRawPath(rawPath, start, end) {
39171  end = _isUndefined(end) ? 1 : _roundPrecise(end) || 0; // we must round to avoid issues like 4.15 / 8 = 0.8300000000000001 instead of 0.83 or 2.8 / 5 = 0.5599999999999999 instead of 0.56 and if someone is doing a loop like start: 2.8 / 0.5, end: 2.8 / 0.5 + 1.
39172
39173  start = _roundPrecise(start) || 0;
39174  var loops = Math.max(0, ~~(_abs(end - start) - 1e-8)),
39175      path = copyRawPath(rawPath);
39176
39177  if (start > end) {
39178    start = 1 - start;
39179    end = 1 - end;
39180
39181    _reverseRawPath(path);
39182
39183    path.totalLength = 0;
39184  }
39185
39186  if (start < 0 || end < 0) {
39187    var offset = Math.abs(~~Math.min(start, end)) + 1;
39188    start += offset;
39189    end += offset;
39190  }
39191
39192  path.totalLength || cacheRawPathMeasurements(path);
39193  var wrap = end > 1,
39194      s = getProgressData(path, start, _temp, true),
39195      e = getProgressData(path, end, _temp2),
39196      eSeg = e.segment,
39197      sSeg = s.segment,
39198      eSegIndex = e.segIndex,
39199      sSegIndex = s.segIndex,
39200      ei = e.i,
39201      si = s.i,
39202      sameSegment = sSegIndex === eSegIndex,
39203      sameBezier = ei === si && sameSegment,
39204      wrapsBehind,
39205      sShift,
39206      eShift,
39207      i,
39208      copy,
39209      totalSegments,
39210      l,
39211      j;
39212
39213  if (wrap || loops) {
39214    wrapsBehind = eSegIndex < sSegIndex || sameSegment && ei < si || sameBezier && e.t < s.t;
39215
39216    if (_splitSegment(path, sSegIndex, si, s.t)) {
39217      sSegIndex++;
39218
39219      if (!wrapsBehind) {
39220        eSegIndex++;
39221
39222        if (sameBezier) {
39223          e.t = (e.t - s.t) / (1 - s.t);
39224          ei = 0;
39225        } else if (sameSegment) {
39226          ei -= si;
39227        }
39228      }
39229    }
39230
39231    if (Math.abs(1 - (end - start)) < 1e-5) {
39232      eSegIndex = sSegIndex - 1;
39233    } else if (!e.t && eSegIndex) {
39234      eSegIndex--;
39235    } else if (_splitSegment(path, eSegIndex, ei, e.t) && wrapsBehind) {
39236      sSegIndex++;
39237    }
39238
39239    if (s.t === 1) {
39240      sSegIndex = (sSegIndex + 1) % path.length;
39241    }
39242
39243    copy = [];
39244    totalSegments = path.length;
39245    l = 1 + totalSegments * loops;
39246    j = sSegIndex;
39247    l += (totalSegments - sSegIndex + eSegIndex) % totalSegments;
39248
39249    for (i = 0; i < l; i++) {
39250      _appendOrMerge(copy, path[j++ % totalSegments]);
39251    }
39252
39253    path = copy;
39254  } else {
39255    eShift = e.t === 1 ? 6 : subdivideSegment(eSeg, ei, e.t);
39256
39257    if (start !== end) {
39258      sShift = subdivideSegment(sSeg, si, sameBezier ? s.t / e.t : s.t);
39259      sameSegment && (eShift += sShift);
39260      eSeg.splice(ei + eShift + 2);
39261      (sShift || si) && sSeg.splice(0, si + sShift);
39262      i = path.length;
39263
39264      while (i--) {
39265        //chop off any extra segments
39266        (i < sSegIndex || i > eSegIndex) && path.splice(i, 1);
39267      }
39268    } else {
39269      eSeg.angle = getRotationAtBezierT(eSeg, ei + eShift, 0); //record the value before we chop because it'll be impossible to determine the angle after its length is 0!
39270
39271      ei += eShift;
39272      s = eSeg[ei];
39273      e = eSeg[ei + 1];
39274      eSeg.length = eSeg.totalLength = 0;
39275      eSeg.totalPoints = path.totalPoints = 8;
39276      eSeg.push(s, e, s, e, s, e, s, e);
39277    }
39278  }
39279
39280  path.totalLength = 0;
39281  return path;
39282} //measures a Segment according to its resolution (so if segment.resolution is 6, for example, it'll take 6 samples equally across each Bezier) and create/populate a "samples" Array that has the length up to each of those sample points (always increasing from the start) as well as a "lookup" array that's broken up according to the smallest distance between 2 samples. This gives us a very fast way of looking up a progress position rather than looping through all the points/Beziers. You can optionally have it only measure a subset, starting at startIndex and going for a specific number of beziers (remember, there are 3 x/y pairs each, for a total of 6 elements for each Bezier). It will also populate a "totalLength" property, but that's not generally super accurate because by default it'll only take 6 samples per Bezier. But for performance reasons, it's perfectly adequate for measuring progress values along the path. If you need a more accurate totalLength, either increase the resolution or use the more advanced bezierToPoints() method which keeps adding points until they don't deviate by more than a certain precision value.
39283
39284function measureSegment(segment, startIndex, bezierQty) {
39285  startIndex = startIndex || 0;
39286
39287  if (!segment.samples) {
39288    segment.samples = [];
39289    segment.lookup = [];
39290  }
39291
39292  var resolution = ~~segment.resolution || 12,
39293      inc = 1 / resolution,
39294      endIndex = bezierQty ? startIndex + bezierQty * 6 + 1 : segment.length,
39295      x1 = segment[startIndex],
39296      y1 = segment[startIndex + 1],
39297      samplesIndex = startIndex ? startIndex / 6 * resolution : 0,
39298      samples = segment.samples,
39299      lookup = segment.lookup,
39300      min = (startIndex ? segment.minLength : _largeNum) || _largeNum,
39301      prevLength = samples[samplesIndex + bezierQty * resolution - 1],
39302      length = startIndex ? samples[samplesIndex - 1] : 0,
39303      i,
39304      j,
39305      x4,
39306      x3,
39307      x2,
39308      xd,
39309      xd1,
39310      y4,
39311      y3,
39312      y2,
39313      yd,
39314      yd1,
39315      inv,
39316      t,
39317      lengthIndex,
39318      l,
39319      segLength;
39320  samples.length = lookup.length = 0;
39321
39322  for (j = startIndex + 2; j < endIndex; j += 6) {
39323    x4 = segment[j + 4] - x1;
39324    x3 = segment[j + 2] - x1;
39325    x2 = segment[j] - x1;
39326    y4 = segment[j + 5] - y1;
39327    y3 = segment[j + 3] - y1;
39328    y2 = segment[j + 1] - y1;
39329    xd = xd1 = yd = yd1 = 0;
39330
39331    if (_abs(x4) < .01 && _abs(y4) < .01 && _abs(x2) + _abs(y2) < .01) {
39332      //dump points that are sufficiently close (basically right on top of each other, making a bezier super tiny or 0 length)
39333      if (segment.length > 8) {
39334        segment.splice(j, 6);
39335        j -= 6;
39336        endIndex -= 6;
39337      }
39338    } else {
39339      for (i = 1; i <= resolution; i++) {
39340        t = inc * i;
39341        inv = 1 - t;
39342        xd = xd1 - (xd1 = (t * t * x4 + 3 * inv * (t * x3 + inv * x2)) * t);
39343        yd = yd1 - (yd1 = (t * t * y4 + 3 * inv * (t * y3 + inv * y2)) * t);
39344        l = _sqrt(yd * yd + xd * xd);
39345
39346        if (l < min) {
39347          min = l;
39348        }
39349
39350        length += l;
39351        samples[samplesIndex++] = length;
39352      }
39353    }
39354
39355    x1 += x4;
39356    y1 += y4;
39357  }
39358
39359  if (prevLength) {
39360    prevLength -= length;
39361
39362    for (; samplesIndex < samples.length; samplesIndex++) {
39363      samples[samplesIndex] += prevLength;
39364    }
39365  }
39366
39367  if (samples.length && min) {
39368    segment.totalLength = segLength = samples[samples.length - 1] || 0;
39369    segment.minLength = min;
39370
39371    if (segLength / min < 9999) {
39372      // if the lookup would require too many values (memory problem), we skip this and instead we use a loop to lookup values directly in the samples Array
39373      l = lengthIndex = 0;
39374
39375      for (i = 0; i < segLength; i += min) {
39376        lookup[l++] = samples[lengthIndex] < i ? ++lengthIndex : lengthIndex;
39377      }
39378    }
39379  } else {
39380    segment.totalLength = samples[0] = 0;
39381  }
39382
39383  return startIndex ? length - samples[startIndex / 2 - 1] : length;
39384}
39385
39386function cacheRawPathMeasurements(rawPath, resolution) {
39387  var pathLength, points, i;
39388
39389  for (i = pathLength = points = 0; i < rawPath.length; i++) {
39390    rawPath[i].resolution = ~~resolution || 12; //steps per Bezier curve (anchor, 2 control points, to anchor)
39391
39392    points += rawPath[i].length;
39393    pathLength += measureSegment(rawPath[i]);
39394  }
39395
39396  rawPath.totalPoints = points;
39397  rawPath.totalLength = pathLength;
39398  return rawPath;
39399} //divide segment[i] at position t (value between 0 and 1, progress along that particular cubic bezier segment that starts at segment[i]). Returns how many elements were spliced into the segment array (either 0 or 6)
39400
39401function subdivideSegment(segment, i, t) {
39402  if (t <= 0 || t >= 1) {
39403    return 0;
39404  }
39405
39406  var ax = segment[i],
39407      ay = segment[i + 1],
39408      cp1x = segment[i + 2],
39409      cp1y = segment[i + 3],
39410      cp2x = segment[i + 4],
39411      cp2y = segment[i + 5],
39412      bx = segment[i + 6],
39413      by = segment[i + 7],
39414      x1a = ax + (cp1x - ax) * t,
39415      x2 = cp1x + (cp2x - cp1x) * t,
39416      y1a = ay + (cp1y - ay) * t,
39417      y2 = cp1y + (cp2y - cp1y) * t,
39418      x1 = x1a + (x2 - x1a) * t,
39419      y1 = y1a + (y2 - y1a) * t,
39420      x2a = cp2x + (bx - cp2x) * t,
39421      y2a = cp2y + (by - cp2y) * t;
39422  x2 += (x2a - x2) * t;
39423  y2 += (y2a - y2) * t;
39424  segment.splice(i + 2, 4, _round(x1a), //first control point
39425  _round(y1a), _round(x1), //second control point
39426  _round(y1), _round(x1 + (x2 - x1) * t), //new fabricated anchor on line
39427  _round(y1 + (y2 - y1) * t), _round(x2), //third control point
39428  _round(y2), _round(x2a), //fourth control point
39429  _round(y2a));
39430  segment.samples && segment.samples.splice(i / 6 * segment.resolution | 0, 0, 0, 0, 0, 0, 0, 0);
39431  return 6;
39432} // returns an object {path, segment, segIndex, i, t}
39433
39434function getProgressData(rawPath, progress, decoratee, pushToNextIfAtEnd) {
39435  decoratee = decoratee || {};
39436  rawPath.totalLength || cacheRawPathMeasurements(rawPath);
39437
39438  if (progress < 0 || progress > 1) {
39439    progress = _wrapProgress(progress);
39440  }
39441
39442  var segIndex = 0,
39443      segment = rawPath[0],
39444      samples,
39445      resolution,
39446      length,
39447      min,
39448      max,
39449      i,
39450      t;
39451
39452  if (!progress) {
39453    t = i = segIndex = 0;
39454    segment = rawPath[0];
39455  } else if (progress === 1) {
39456    t = 1;
39457    segIndex = rawPath.length - 1;
39458    segment = rawPath[segIndex];
39459    i = segment.length - 8;
39460  } else {
39461    if (rawPath.length > 1) {
39462      //speed optimization: most of the time, there's only one segment so skip the recursion.
39463      length = rawPath.totalLength * progress;
39464      max = i = 0;
39465
39466      while ((max += rawPath[i++].totalLength) < length) {
39467        segIndex = i;
39468      }
39469
39470      segment = rawPath[segIndex];
39471      min = max - segment.totalLength;
39472      progress = (length - min) / (max - min) || 0;
39473    }
39474
39475    samples = segment.samples;
39476    resolution = segment.resolution; //how many samples per cubic bezier chunk
39477
39478    length = segment.totalLength * progress;
39479    i = segment.lookup.length ? segment.lookup[~~(length / segment.minLength)] || 0 : _getSampleIndex(samples, length, progress);
39480    min = i ? samples[i - 1] : 0;
39481    max = samples[i];
39482
39483    if (max < length) {
39484      min = max;
39485      max = samples[++i];
39486    }
39487
39488    t = 1 / resolution * ((length - min) / (max - min) + i % resolution);
39489    i = ~~(i / resolution) * 6;
39490
39491    if (pushToNextIfAtEnd && t === 1) {
39492      if (i + 6 < segment.length) {
39493        i += 6;
39494        t = 0;
39495      } else if (segIndex + 1 < rawPath.length) {
39496        i = t = 0;
39497        segment = rawPath[++segIndex];
39498      }
39499    }
39500  }
39501
39502  decoratee.t = t;
39503  decoratee.i = i;
39504  decoratee.path = rawPath;
39505  decoratee.segment = segment;
39506  decoratee.segIndex = segIndex;
39507  return decoratee;
39508}
39509
39510function getPositionOnPath(rawPath, progress, includeAngle, point) {
39511  var segment = rawPath[0],
39512      result = point || {},
39513      samples,
39514      resolution,
39515      length,
39516      min,
39517      max,
39518      i,
39519      t,
39520      a,
39521      inv;
39522
39523  if (progress < 0 || progress > 1) {
39524    progress = _wrapProgress(progress);
39525  }
39526
39527  segment.lookup || cacheRawPathMeasurements(rawPath);
39528
39529  if (rawPath.length > 1) {
39530    //speed optimization: most of the time, there's only one segment so skip the recursion.
39531    length = rawPath.totalLength * progress;
39532    max = i = 0;
39533
39534    while ((max += rawPath[i++].totalLength) < length) {
39535      segment = rawPath[i];
39536    }
39537
39538    min = max - segment.totalLength;
39539    progress = (length - min) / (max - min) || 0;
39540  }
39541
39542  samples = segment.samples;
39543  resolution = segment.resolution;
39544  length = segment.totalLength * progress;
39545  i = segment.lookup.length ? segment.lookup[progress < 1 ? ~~(length / segment.minLength) : segment.lookup.length - 1] || 0 : _getSampleIndex(samples, length, progress);
39546  min = i ? samples[i - 1] : 0;
39547  max = samples[i];
39548
39549  if (max < length) {
39550    min = max;
39551    max = samples[++i];
39552  }
39553
39554  t = 1 / resolution * ((length - min) / (max - min) + i % resolution) || 0;
39555  inv = 1 - t;
39556  i = ~~(i / resolution) * 6;
39557  a = segment[i];
39558  result.x = _round((t * t * (segment[i + 6] - a) + 3 * inv * (t * (segment[i + 4] - a) + inv * (segment[i + 2] - a))) * t + a);
39559  result.y = _round((t * t * (segment[i + 7] - (a = segment[i + 1])) + 3 * inv * (t * (segment[i + 5] - a) + inv * (segment[i + 3] - a))) * t + a);
39560
39561  if (includeAngle) {
39562    result.angle = segment.totalLength ? getRotationAtBezierT(segment, i, t >= 1 ? 1 - 1e-9 : t ? t : 1e-9) : segment.angle || 0;
39563  }
39564
39565  return result;
39566} //applies a matrix transform to RawPath (or a segment in a RawPath) and returns whatever was passed in (it transforms the values in the array(s), not a copy).
39567
39568function transformRawPath(rawPath, a, b, c, d, tx, ty) {
39569  var j = rawPath.length,
39570      segment,
39571      l,
39572      i,
39573      x,
39574      y;
39575
39576  while (--j > -1) {
39577    segment = rawPath[j];
39578    l = segment.length;
39579
39580    for (i = 0; i < l; i += 2) {
39581      x = segment[i];
39582      y = segment[i + 1];
39583      segment[i] = x * a + y * c + tx;
39584      segment[i + 1] = x * b + y * d + ty;
39585    }
39586  }
39587
39588  rawPath._dirty = 1;
39589  return rawPath;
39590} // translates SVG arc data into a segment (cubic beziers). Angle is in degrees.
39591
39592function arcToSegment(lastX, lastY, rx, ry, angle, largeArcFlag, sweepFlag, x, y) {
39593  if (lastX === x && lastY === y) {
39594    return;
39595  }
39596
39597  rx = _abs(rx);
39598  ry = _abs(ry);
39599
39600  var angleRad = angle % 360 * _DEG2RAD,
39601      cosAngle = _cos(angleRad),
39602      sinAngle = _sin(angleRad),
39603      PI = Math.PI,
39604      TWOPI = PI * 2,
39605      dx2 = (lastX - x) / 2,
39606      dy2 = (lastY - y) / 2,
39607      x1 = cosAngle * dx2 + sinAngle * dy2,
39608      y1 = -sinAngle * dx2 + cosAngle * dy2,
39609      x1_sq = x1 * x1,
39610      y1_sq = y1 * y1,
39611      radiiCheck = x1_sq / (rx * rx) + y1_sq / (ry * ry);
39612
39613  if (radiiCheck > 1) {
39614    rx = _sqrt(radiiCheck) * rx;
39615    ry = _sqrt(radiiCheck) * ry;
39616  }
39617
39618  var rx_sq = rx * rx,
39619      ry_sq = ry * ry,
39620      sq = (rx_sq * ry_sq - rx_sq * y1_sq - ry_sq * x1_sq) / (rx_sq * y1_sq + ry_sq * x1_sq);
39621
39622  if (sq < 0) {
39623    sq = 0;
39624  }
39625
39626  var coef = (largeArcFlag === sweepFlag ? -1 : 1) * _sqrt(sq),
39627      cx1 = coef * (rx * y1 / ry),
39628      cy1 = coef * -(ry * x1 / rx),
39629      sx2 = (lastX + x) / 2,
39630      sy2 = (lastY + y) / 2,
39631      cx = sx2 + (cosAngle * cx1 - sinAngle * cy1),
39632      cy = sy2 + (sinAngle * cx1 + cosAngle * cy1),
39633      ux = (x1 - cx1) / rx,
39634      uy = (y1 - cy1) / ry,
39635      vx = (-x1 - cx1) / rx,
39636      vy = (-y1 - cy1) / ry,
39637      temp = ux * ux + uy * uy,
39638      angleStart = (uy < 0 ? -1 : 1) * Math.acos(ux / _sqrt(temp)),
39639      angleExtent = (ux * vy - uy * vx < 0 ? -1 : 1) * Math.acos((ux * vx + uy * vy) / _sqrt(temp * (vx * vx + vy * vy)));
39640
39641  isNaN(angleExtent) && (angleExtent = PI); //rare edge case. Math.cos(-1) is NaN.
39642
39643  if (!sweepFlag && angleExtent > 0) {
39644    angleExtent -= TWOPI;
39645  } else if (sweepFlag && angleExtent < 0) {
39646    angleExtent += TWOPI;
39647  }
39648
39649  angleStart %= TWOPI;
39650  angleExtent %= TWOPI;
39651
39652  var segments = Math.ceil(_abs(angleExtent) / (TWOPI / 4)),
39653      rawPath = [],
39654      angleIncrement = angleExtent / segments,
39655      controlLength = 4 / 3 * _sin(angleIncrement / 2) / (1 + _cos(angleIncrement / 2)),
39656      ma = cosAngle * rx,
39657      mb = sinAngle * rx,
39658      mc = sinAngle * -ry,
39659      md = cosAngle * ry,
39660      i;
39661
39662  for (i = 0; i < segments; i++) {
39663    angle = angleStart + i * angleIncrement;
39664    x1 = _cos(angle);
39665    y1 = _sin(angle);
39666    ux = _cos(angle += angleIncrement);
39667    uy = _sin(angle);
39668    rawPath.push(x1 - controlLength * y1, y1 + controlLength * x1, ux + controlLength * uy, uy - controlLength * ux, ux, uy);
39669  } //now transform according to the actual size of the ellipse/arc (the beziers were noramlized, between 0 and 1 on a circle).
39670
39671
39672  for (i = 0; i < rawPath.length; i += 2) {
39673    x1 = rawPath[i];
39674    y1 = rawPath[i + 1];
39675    rawPath[i] = x1 * ma + y1 * mc + cx;
39676    rawPath[i + 1] = x1 * mb + y1 * md + cy;
39677  }
39678
39679  rawPath[i - 2] = x; //always set the end to exactly where it's supposed to be
39680
39681  rawPath[i - 1] = y;
39682  return rawPath;
39683} //Spits back a RawPath with absolute coordinates. Each segment starts with a "moveTo" command (x coordinate, then y) and then 2 control points (x, y, x, y), then anchor. The goal is to minimize memory and maximize speed.
39684
39685
39686function stringToRawPath(d) {
39687  var a = (d + "").replace(_scientific, function (m) {
39688    var n = +m;
39689    return n < 0.0001 && n > -0.0001 ? 0 : n;
39690  }).match(_svgPathExp) || [],
39691      //some authoring programs spit out very small numbers in scientific notation like "1e-5", so make sure we round that down to 0 first.
39692  path = [],
39693      relativeX = 0,
39694      relativeY = 0,
39695      twoThirds = 2 / 3,
39696      elements = a.length,
39697      points = 0,
39698      errorMessage = "ERROR: malformed path: " + d,
39699      i,
39700      j,
39701      x,
39702      y,
39703      command,
39704      isRelative,
39705      segment,
39706      startX,
39707      startY,
39708      difX,
39709      difY,
39710      beziers,
39711      prevCommand,
39712      flag1,
39713      flag2,
39714      line = function line(sx, sy, ex, ey) {
39715    difX = (ex - sx) / 3;
39716    difY = (ey - sy) / 3;
39717    segment.push(sx + difX, sy + difY, ex - difX, ey - difY, ex, ey);
39718  };
39719
39720  if (!d || !isNaN(a[0]) || isNaN(a[1])) {
39721    console.log(errorMessage);
39722    return path;
39723  }
39724
39725  for (i = 0; i < elements; i++) {
39726    prevCommand = command;
39727
39728    if (isNaN(a[i])) {
39729      command = a[i].toUpperCase();
39730      isRelative = command !== a[i]; //lower case means relative
39731    } else {
39732      //commands like "C" can be strung together without any new command characters between.
39733      i--;
39734    }
39735
39736    x = +a[i + 1];
39737    y = +a[i + 2];
39738
39739    if (isRelative) {
39740      x += relativeX;
39741      y += relativeY;
39742    }
39743
39744    if (!i) {
39745      startX = x;
39746      startY = y;
39747    } // "M" (move)
39748
39749
39750    if (command === "M") {
39751      if (segment) {
39752        if (segment.length < 8) {
39753          //if the path data was funky and just had a M with no actual drawing anywhere, skip it.
39754          path.length -= 1;
39755        } else {
39756          points += segment.length;
39757        }
39758      }
39759
39760      relativeX = startX = x;
39761      relativeY = startY = y;
39762      segment = [x, y];
39763      path.push(segment);
39764      i += 2;
39765      command = "L"; //an "M" with more than 2 values gets interpreted as "lineTo" commands ("L").
39766      // "C" (cubic bezier)
39767    } else if (command === "C") {
39768      if (!segment) {
39769        segment = [0, 0];
39770      }
39771
39772      if (!isRelative) {
39773        relativeX = relativeY = 0;
39774      } //note: "*1" is just a fast/short way to cast the value as a Number. WAAAY faster in Chrome, slightly slower in Firefox.
39775
39776
39777      segment.push(x, y, relativeX + a[i + 3] * 1, relativeY + a[i + 4] * 1, relativeX += a[i + 5] * 1, relativeY += a[i + 6] * 1);
39778      i += 6; // "S" (continuation of cubic bezier)
39779    } else if (command === "S") {
39780      difX = relativeX;
39781      difY = relativeY;
39782
39783      if (prevCommand === "C" || prevCommand === "S") {
39784        difX += relativeX - segment[segment.length - 4];
39785        difY += relativeY - segment[segment.length - 3];
39786      }
39787
39788      if (!isRelative) {
39789        relativeX = relativeY = 0;
39790      }
39791
39792      segment.push(difX, difY, x, y, relativeX += a[i + 3] * 1, relativeY += a[i + 4] * 1);
39793      i += 4; // "Q" (quadratic bezier)
39794    } else if (command === "Q") {
39795      difX = relativeX + (x - relativeX) * twoThirds;
39796      difY = relativeY + (y - relativeY) * twoThirds;
39797
39798      if (!isRelative) {
39799        relativeX = relativeY = 0;
39800      }
39801
39802      relativeX += a[i + 3] * 1;
39803      relativeY += a[i + 4] * 1;
39804      segment.push(difX, difY, relativeX + (x - relativeX) * twoThirds, relativeY + (y - relativeY) * twoThirds, relativeX, relativeY);
39805      i += 4; // "T" (continuation of quadratic bezier)
39806    } else if (command === "T") {
39807      difX = relativeX - segment[segment.length - 4];
39808      difY = relativeY - segment[segment.length - 3];
39809      segment.push(relativeX + difX, relativeY + difY, x + (relativeX + difX * 1.5 - x) * twoThirds, y + (relativeY + difY * 1.5 - y) * twoThirds, relativeX = x, relativeY = y);
39810      i += 2; // "H" (horizontal line)
39811    } else if (command === "H") {
39812      line(relativeX, relativeY, relativeX = x, relativeY);
39813      i += 1; // "V" (vertical line)
39814    } else if (command === "V") {
39815      //adjust values because the first (and only one) isn't x in this case, it's y.
39816      line(relativeX, relativeY, relativeX, relativeY = x + (isRelative ? relativeY - relativeX : 0));
39817      i += 1; // "L" (line) or "Z" (close)
39818    } else if (command === "L" || command === "Z") {
39819      if (command === "Z") {
39820        x = startX;
39821        y = startY;
39822        segment.closed = true;
39823      }
39824
39825      if (command === "L" || _abs(relativeX - x) > 0.5 || _abs(relativeY - y) > 0.5) {
39826        line(relativeX, relativeY, x, y);
39827
39828        if (command === "L") {
39829          i += 2;
39830        }
39831      }
39832
39833      relativeX = x;
39834      relativeY = y; // "A" (arc)
39835    } else if (command === "A") {
39836      flag1 = a[i + 4];
39837      flag2 = a[i + 5];
39838      difX = a[i + 6];
39839      difY = a[i + 7];
39840      j = 7;
39841
39842      if (flag1.length > 1) {
39843        // for cases when the flags are merged, like "a8 8 0 018 8" (the 0 and 1 flags are WITH the x value of 8, but it could also be "a8 8 0 01-8 8" so it may include x or not)
39844        if (flag1.length < 3) {
39845          difY = difX;
39846          difX = flag2;
39847          j--;
39848        } else {
39849          difY = flag2;
39850          difX = flag1.substr(2);
39851          j -= 2;
39852        }
39853
39854        flag2 = flag1.charAt(1);
39855        flag1 = flag1.charAt(0);
39856      }
39857
39858      beziers = arcToSegment(relativeX, relativeY, +a[i + 1], +a[i + 2], +a[i + 3], +flag1, +flag2, (isRelative ? relativeX : 0) + difX * 1, (isRelative ? relativeY : 0) + difY * 1);
39859      i += j;
39860
39861      if (beziers) {
39862        for (j = 0; j < beziers.length; j++) {
39863          segment.push(beziers[j]);
39864        }
39865      }
39866
39867      relativeX = segment[segment.length - 2];
39868      relativeY = segment[segment.length - 1];
39869    } else {
39870      console.log(errorMessage);
39871    }
39872  }
39873
39874  i = segment.length;
39875
39876  if (i < 6) {
39877    //in case there's odd SVG like a M0,0 command at the very end.
39878    path.pop();
39879    i = 0;
39880  } else if (segment[0] === segment[i - 2] && segment[1] === segment[i - 1]) {
39881    segment.closed = true;
39882  }
39883
39884  path.totalPoints = points + i;
39885  return path;
39886} //populates the points array in alternating x/y values (like [x, y, x, y...] instead of individual point objects [{x, y}, {x, y}...] to conserve memory and stay in line with how we're handling segment arrays
39887
39888function bezierToPoints(x1, y1, x2, y2, x3, y3, x4, y4, threshold, points, index) {
39889  var x12 = (x1 + x2) / 2,
39890      y12 = (y1 + y2) / 2,
39891      x23 = (x2 + x3) / 2,
39892      y23 = (y2 + y3) / 2,
39893      x34 = (x3 + x4) / 2,
39894      y34 = (y3 + y4) / 2,
39895      x123 = (x12 + x23) / 2,
39896      y123 = (y12 + y23) / 2,
39897      x234 = (x23 + x34) / 2,
39898      y234 = (y23 + y34) / 2,
39899      x1234 = (x123 + x234) / 2,
39900      y1234 = (y123 + y234) / 2,
39901      dx = x4 - x1,
39902      dy = y4 - y1,
39903      d2 = _abs((x2 - x4) * dy - (y2 - y4) * dx),
39904      d3 = _abs((x3 - x4) * dy - (y3 - y4) * dx),
39905      length;
39906
39907  if (!points) {
39908    points = [x1, y1, x4, y4];
39909    index = 2;
39910  }
39911
39912  points.splice(index || points.length - 2, 0, x1234, y1234);
39913
39914  if ((d2 + d3) * (d2 + d3) > threshold * (dx * dx + dy * dy)) {
39915    length = points.length;
39916    bezierToPoints(x1, y1, x12, y12, x123, y123, x1234, y1234, threshold, points, index);
39917    bezierToPoints(x1234, y1234, x234, y234, x34, y34, x4, y4, threshold, points, index + 2 + (points.length - length));
39918  }
39919
39920  return points;
39921}
39922/*
39923function getAngleBetweenPoints(x0, y0, x1, y1, x2, y2) { //angle between 3 points in radians
39924	var dx1 = x1 - x0,
39925		dy1 = y1 - y0,
39926		dx2 = x2 - x1,
39927		dy2 = y2 - y1,
39928		dx3 = x2 - x0,
39929		dy3 = y2 - y0,
39930		a = dx1 * dx1 + dy1 * dy1,
39931		b = dx2 * dx2 + dy2 * dy2,
39932		c = dx3 * dx3 + dy3 * dy3;
39933	return Math.acos( (a + b - c) / _sqrt(4 * a * b) );
39934},
39935*/
39936//pointsToSegment() doesn't handle flat coordinates (where y is always 0) the way we need (the resulting control points are always right on top of the anchors), so this function basically makes the control points go directly up and down, varying in length based on the curviness (more curvy, further control points)
39937
39938function flatPointsToSegment(points, curviness) {
39939  if (curviness === void 0) {
39940    curviness = 1;
39941  }
39942
39943  var x = points[0],
39944      y = 0,
39945      segment = [x, y],
39946      i = 2;
39947
39948  for (; i < points.length; i += 2) {
39949    segment.push(x, y, points[i], y = (points[i] - x) * curviness / 2, x = points[i], -y);
39950  }
39951
39952  return segment;
39953} //points is an array of x/y points, like [x, y, x, y, x, y]
39954
39955function pointsToSegment(points, curviness) {
39956  //points = simplifyPoints(points, tolerance);
39957  _abs(points[0] - points[2]) < 1e-4 && _abs(points[1] - points[3]) < 1e-4 && (points = points.slice(2)); // if the first two points are super close, dump the first one.
39958
39959  var l = points.length - 2,
39960      x = +points[0],
39961      y = +points[1],
39962      nextX = +points[2],
39963      nextY = +points[3],
39964      segment = [x, y, x, y],
39965      dx2 = nextX - x,
39966      dy2 = nextY - y,
39967      closed = Math.abs(points[l] - x) < 0.001 && Math.abs(points[l + 1] - y) < 0.001,
39968      prevX,
39969      prevY,
39970      i,
39971      dx1,
39972      dy1,
39973      r1,
39974      r2,
39975      r3,
39976      tl,
39977      mx1,
39978      mx2,
39979      mxm,
39980      my1,
39981      my2,
39982      mym;
39983
39984  if (closed) {
39985    // if the start and end points are basically on top of each other, close the segment by adding the 2nd point to the end, and the 2nd-to-last point to the beginning (we'll remove them at the end, but this allows the curvature to look perfect)
39986    points.push(nextX, nextY);
39987    nextX = x;
39988    nextY = y;
39989    x = points[l - 2];
39990    y = points[l - 1];
39991    points.unshift(x, y);
39992    l += 4;
39993  }
39994
39995  curviness = curviness || curviness === 0 ? +curviness : 1;
39996
39997  for (i = 2; i < l; i += 2) {
39998    prevX = x;
39999    prevY = y;
40000    x = nextX;
40001    y = nextY;
40002    nextX = +points[i + 2];
40003    nextY = +points[i + 3];
40004
40005    if (x === nextX && y === nextY) {
40006      continue;
40007    }
40008
40009    dx1 = dx2;
40010    dy1 = dy2;
40011    dx2 = nextX - x;
40012    dy2 = nextY - y;
40013    r1 = _sqrt(dx1 * dx1 + dy1 * dy1); // r1, r2, and r3 correlate x and y (and z in the future). Basically 2D or 3D hypotenuse
40014
40015    r2 = _sqrt(dx2 * dx2 + dy2 * dy2);
40016    r3 = _sqrt(Math.pow(dx2 / r2 + dx1 / r1, 2) + Math.pow(dy2 / r2 + dy1 / r1, 2));
40017    tl = (r1 + r2) * curviness * 0.25 / r3;
40018    mx1 = x - (x - prevX) * (r1 ? tl / r1 : 0);
40019    mx2 = x + (nextX - x) * (r2 ? tl / r2 : 0);
40020    mxm = x - (mx1 + ((mx2 - mx1) * (r1 * 3 / (r1 + r2) + 0.5) / 4 || 0));
40021    my1 = y - (y - prevY) * (r1 ? tl / r1 : 0);
40022    my2 = y + (nextY - y) * (r2 ? tl / r2 : 0);
40023    mym = y - (my1 + ((my2 - my1) * (r1 * 3 / (r1 + r2) + 0.5) / 4 || 0));
40024
40025    if (x !== prevX || y !== prevY) {
40026      segment.push(_round(mx1 + mxm), // first control point
40027      _round(my1 + mym), _round(x), // anchor
40028      _round(y), _round(mx2 + mxm), // second control point
40029      _round(my2 + mym));
40030    }
40031  }
40032
40033  x !== nextX || y !== nextY || segment.length < 4 ? segment.push(_round(nextX), _round(nextY), _round(nextX), _round(nextY)) : segment.length -= 2;
40034
40035  if (segment.length === 2) {
40036    // only one point!
40037    segment.push(x, y, x, y, x, y);
40038  } else if (closed) {
40039    segment.splice(0, 6);
40040    segment.length = segment.length - 6;
40041  }
40042
40043  return segment;
40044} //returns the squared distance between an x/y coordinate and a segment between x1/y1 and x2/y2
40045
40046function pointToSegDist(x, y, x1, y1, x2, y2) {
40047  var dx = x2 - x1,
40048      dy = y2 - y1,
40049      t;
40050
40051  if (dx || dy) {
40052    t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);
40053
40054    if (t > 1) {
40055      x1 = x2;
40056      y1 = y2;
40057    } else if (t > 0) {
40058      x1 += dx * t;
40059      y1 += dy * t;
40060    }
40061  }
40062
40063  return Math.pow(x - x1, 2) + Math.pow(y - y1, 2);
40064}
40065
40066function simplifyStep(points, first, last, tolerance, simplified) {
40067  var maxSqDist = tolerance,
40068      firstX = points[first],
40069      firstY = points[first + 1],
40070      lastX = points[last],
40071      lastY = points[last + 1],
40072      index,
40073      i,
40074      d;
40075
40076  for (i = first + 2; i < last; i += 2) {
40077    d = pointToSegDist(points[i], points[i + 1], firstX, firstY, lastX, lastY);
40078
40079    if (d > maxSqDist) {
40080      index = i;
40081      maxSqDist = d;
40082    }
40083  }
40084
40085  if (maxSqDist > tolerance) {
40086    index - first > 2 && simplifyStep(points, first, index, tolerance, simplified);
40087    simplified.push(points[index], points[index + 1]);
40088    last - index > 2 && simplifyStep(points, index, last, tolerance, simplified);
40089  }
40090} //points is an array of x/y values like [x, y, x, y, x, y]
40091
40092
40093function simplifyPoints(points, tolerance) {
40094  var prevX = parseFloat(points[0]),
40095      prevY = parseFloat(points[1]),
40096      temp = [prevX, prevY],
40097      l = points.length - 2,
40098      i,
40099      x,
40100      y,
40101      dx,
40102      dy,
40103      result,
40104      last;
40105  tolerance = Math.pow(tolerance || 1, 2);
40106
40107  for (i = 2; i < l; i += 2) {
40108    x = parseFloat(points[i]);
40109    y = parseFloat(points[i + 1]);
40110    dx = prevX - x;
40111    dy = prevY - y;
40112
40113    if (dx * dx + dy * dy > tolerance) {
40114      temp.push(x, y);
40115      prevX = x;
40116      prevY = y;
40117    }
40118  }
40119
40120  temp.push(parseFloat(points[l]), parseFloat(points[l + 1]));
40121  last = temp.length - 2;
40122  result = [temp[0], temp[1]];
40123  simplifyStep(temp, 0, last, tolerance, result);
40124  result.push(temp[last], temp[last + 1]);
40125  return result;
40126}
40127
40128function getClosestProgressOnBezier(iterations, px, py, start, end, slices, x0, y0, x1, y1, x2, y2, x3, y3) {
40129  var inc = (end - start) / slices,
40130      best = 0,
40131      t = start,
40132      x,
40133      y,
40134      d,
40135      dx,
40136      dy,
40137      inv;
40138  _bestDistance = _largeNum;
40139
40140  while (t <= end) {
40141    inv = 1 - t;
40142    x = inv * inv * inv * x0 + 3 * inv * inv * t * x1 + 3 * inv * t * t * x2 + t * t * t * x3;
40143    y = inv * inv * inv * y0 + 3 * inv * inv * t * y1 + 3 * inv * t * t * y2 + t * t * t * y3;
40144    dx = x - px;
40145    dy = y - py;
40146    d = dx * dx + dy * dy;
40147
40148    if (d < _bestDistance) {
40149      _bestDistance = d;
40150      best = t;
40151    }
40152
40153    t += inc;
40154  }
40155
40156  return iterations > 1 ? getClosestProgressOnBezier(iterations - 1, px, py, Math.max(best - inc, 0), Math.min(best + inc, 1), slices, x0, y0, x1, y1, x2, y2, x3, y3) : best;
40157}
40158
40159function getClosestData(rawPath, x, y, slices) {
40160  //returns an object with the closest j, i, and t (j is the segment index, i is the index of the point in that segment, and t is the time/progress along that bezier)
40161  var closest = {
40162    j: 0,
40163    i: 0,
40164    t: 0
40165  },
40166      bestDistance = _largeNum,
40167      i,
40168      j,
40169      t,
40170      segment;
40171
40172  for (j = 0; j < rawPath.length; j++) {
40173    segment = rawPath[j];
40174
40175    for (i = 0; i < segment.length; i += 6) {
40176      t = getClosestProgressOnBezier(1, x, y, 0, 1, slices || 20, segment[i], segment[i + 1], segment[i + 2], segment[i + 3], segment[i + 4], segment[i + 5], segment[i + 6], segment[i + 7]);
40177
40178      if (bestDistance > _bestDistance) {
40179        bestDistance = _bestDistance;
40180        closest.j = j;
40181        closest.i = i;
40182        closest.t = t;
40183      }
40184    }
40185  }
40186
40187  return closest;
40188} //subdivide a Segment closest to a specific x,y coordinate
40189
40190function subdivideSegmentNear(x, y, segment, slices, iterations) {
40191  var l = segment.length,
40192      bestDistance = _largeNum,
40193      bestT = 0,
40194      bestSegmentIndex = 0,
40195      t,
40196      i;
40197  slices = slices || 20;
40198  iterations = iterations || 3;
40199
40200  for (i = 0; i < l; i += 6) {
40201    t = getClosestProgressOnBezier(1, x, y, 0, 1, slices, segment[i], segment[i + 1], segment[i + 2], segment[i + 3], segment[i + 4], segment[i + 5], segment[i + 6], segment[i + 7]);
40202
40203    if (bestDistance > _bestDistance) {
40204      bestDistance = _bestDistance;
40205      bestT = t;
40206      bestSegmentIndex = i;
40207    }
40208  }
40209
40210  t = getClosestProgressOnBezier(iterations, x, y, bestT - 0.05, bestT + 0.05, slices, segment[bestSegmentIndex], segment[bestSegmentIndex + 1], segment[bestSegmentIndex + 2], segment[bestSegmentIndex + 3], segment[bestSegmentIndex + 4], segment[bestSegmentIndex + 5], segment[bestSegmentIndex + 6], segment[bestSegmentIndex + 7]);
40211  subdivideSegment(segment, bestSegmentIndex, t);
40212  return bestSegmentIndex + 6;
40213}
40214/*
40215Takes any of the following and converts it to an all Cubic Bezier SVG data string:
40216- A <path> data string like "M0,0 L2,4 v20,15 H100"
40217- A RawPath, like [[x, y, x, y, x, y, x, y][[x, y, x, y, x, y, x, y]]
40218- A Segment, like [x, y, x, y, x, y, x, y]
40219
40220Note: all numbers are rounded down to the closest 0.001 to minimize memory, maximize speed, and avoid odd numbers like 1e-13
40221*/
40222
40223function rawPathToString(rawPath) {
40224  if (_isNumber(rawPath[0])) {
40225    //in case a segment is passed in instead
40226    rawPath = [rawPath];
40227  }
40228
40229  var result = "",
40230      l = rawPath.length,
40231      sl,
40232      s,
40233      i,
40234      segment;
40235
40236  for (s = 0; s < l; s++) {
40237    segment = rawPath[s];
40238    result += "M" + _round(segment[0]) + "," + _round(segment[1]) + " C";
40239    sl = segment.length;
40240
40241    for (i = 2; i < sl; i++) {
40242      result += _round(segment[i++]) + "," + _round(segment[i++]) + " " + _round(segment[i++]) + "," + _round(segment[i++]) + " " + _round(segment[i++]) + "," + _round(segment[i]) + " ";
40243    }
40244
40245    if (segment.closed) {
40246      result += "z";
40247    }
40248  }
40249
40250  return result;
40251}
40252/*
40253// takes a segment with coordinates [x, y, x, y, ...] and converts the control points into angles and lengths [x, y, angle, length, angle, length, x, y, angle, length, ...] so that it animates more cleanly and avoids odd breaks/kinks. For example, if you animate from 1 o'clock to 6 o'clock, it'd just go directly/linearly rather than around. So the length would be very short in the middle of the tween.
40254export function cpCoordsToAngles(segment, copy) {
40255	var result = copy ? segment.slice(0) : segment,
40256		x, y, i;
40257	for (i = 0; i < segment.length; i+=6) {
40258		x = segment[i+2] - segment[i];
40259		y = segment[i+3] - segment[i+1];
40260		result[i+2] = Math.atan2(y, x);
40261		result[i+3] = Math.sqrt(x * x + y * y);
40262		x = segment[i+6] - segment[i+4];
40263		y = segment[i+7] - segment[i+5];
40264		result[i+4] = Math.atan2(y, x);
40265		result[i+5] = Math.sqrt(x * x + y * y);
40266	}
40267	return result;
40268}
40269
40270// takes a segment that was converted with cpCoordsToAngles() to have angles and lengths instead of coordinates for the control points, and converts it BACK into coordinates.
40271export function cpAnglesToCoords(segment, copy) {
40272	var result = copy ? segment.slice(0) : segment,
40273		length = segment.length,
40274		rnd = 1000,
40275		angle, l, i, j;
40276	for (i = 0; i < length; i+=6) {
40277		angle = segment[i+2];
40278		l = segment[i+3]; //length
40279		result[i+2] = (((segment[i] + Math.cos(angle) * l) * rnd) | 0) / rnd;
40280		result[i+3] = (((segment[i+1] + Math.sin(angle) * l) * rnd) | 0) / rnd;
40281		angle = segment[i+4];
40282		l = segment[i+5]; //length
40283		result[i+4] = (((segment[i+6] - Math.cos(angle) * l) * rnd) | 0) / rnd;
40284		result[i+5] = (((segment[i+7] - Math.sin(angle) * l) * rnd) | 0) / rnd;
40285	}
40286	return result;
40287}
40288
40289//adds an "isSmooth" array to each segment and populates it with a boolean value indicating whether or not it's smooth (the control points have basically the same slope). For any smooth control points, it converts the coordinates into angle (x, in radians) and length (y) and puts them into the same index value in a smoothData array.
40290export function populateSmoothData(rawPath) {
40291	let j = rawPath.length,
40292		smooth, segment, x, y, x2, y2, i, l, a, a2, isSmooth, smoothData;
40293	while (--j > -1) {
40294		segment = rawPath[j];
40295		isSmooth = segment.isSmooth = segment.isSmooth || [0, 0, 0, 0];
40296		smoothData = segment.smoothData = segment.smoothData || [0, 0, 0, 0];
40297		isSmooth.length = 4;
40298		l = segment.length - 2;
40299		for (i = 6; i < l; i += 6) {
40300			x = segment[i] - segment[i - 2];
40301			y = segment[i + 1] - segment[i - 1];
40302			x2 = segment[i + 2] - segment[i];
40303			y2 = segment[i + 3] - segment[i + 1];
40304			a = _atan2(y, x);
40305			a2 = _atan2(y2, x2);
40306			smooth = (Math.abs(a - a2) < 0.09);
40307			if (smooth) {
40308				smoothData[i - 2] = a;
40309				smoothData[i + 2] = a2;
40310				smoothData[i - 1] = _sqrt(x * x + y * y);
40311				smoothData[i + 3] = _sqrt(x2 * x2 + y2 * y2);
40312			}
40313			isSmooth.push(smooth, smooth, 0, 0, smooth, smooth);
40314		}
40315		//if the first and last points are identical, check to see if there's a smooth transition. We must handle this a bit differently due to their positions in the array.
40316		if (segment[l] === segment[0] && segment[l+1] === segment[1]) {
40317			x = segment[0] - segment[l-2];
40318			y = segment[1] - segment[l-1];
40319			x2 = segment[2] - segment[0];
40320			y2 = segment[3] - segment[1];
40321			a = _atan2(y, x);
40322			a2 = _atan2(y2, x2);
40323			if (Math.abs(a - a2) < 0.09) {
40324				smoothData[l-2] = a;
40325				smoothData[2] = a2;
40326				smoothData[l-1] = _sqrt(x * x + y * y);
40327				smoothData[3] = _sqrt(x2 * x2 + y2 * y2);
40328				isSmooth[l-2] = isSmooth[l-1] = true; //don't change indexes 2 and 3 because we'll trigger everything from the END, and this will optimize file size a bit.
40329			}
40330		}
40331	}
40332	return rawPath;
40333}
40334export function pointToScreen(svgElement, point) {
40335	if (arguments.length < 2) { //by default, take the first set of coordinates in the path as the point
40336		let rawPath = getRawPath(svgElement);
40337		point = svgElement.ownerSVGElement.createSVGPoint();
40338		point.x = rawPath[0][0];
40339		point.y = rawPath[0][1];
40340	}
40341	return point.matrixTransform(svgElement.getScreenCTM());
40342}
40343
40344*/
40345
40346/***/ }),
40347
vendor: 1,169 bytes, lines 40348-40383
40348/***/ "./node_modules/inputmask/dist/bindings/inputmask.binding.js":
40349/*!*******************************************************************!*\
40350  !*** ./node_modules/inputmask/dist/bindings/inputmask.binding.js ***!
40351  \*******************************************************************/
40352/***/ (() => {
40353
40354/*
40355 Input Mask plugin binding
40356 http://github.com/RobinHerbots/jquery.inputmask
40357 Copyright (c) Robin Herbots
40358 Licensed under the MIT license
40359 */
40360(function (factory) {
40361	factory(jQuery, window.Inputmask, window);
40362}
40363(function ($, Inputmask, window) {
40364	$(window.document).ajaxComplete(function (event, xmlHttpRequest, ajaxOptions) {
40365		if ($.inArray("html", ajaxOptions.dataTypes) !== -1) {
40366			$(".inputmask, [data-inputmask], [data-inputmask-mask], [data-inputmask-alias], [data-inputmask-regex]").each(function (ndx, lmnt) {
40367				if (lmnt.inputmask === undefined) {
40368					Inputmask().mask(lmnt);
40369				}
40370			});
40371		}
40372	}).ready(function () {
40373		$(".inputmask, [data-inputmask], [data-inputmask-mask], [data-inputmask-alias],[data-inputmask-regex]").each(function (ndx, lmnt) {
40374			if (lmnt.inputmask === undefined) {
40375				Inputmask().mask(lmnt);
40376			}
40377		});
40378	});
40379}));
40380
40381
40382/***/ }),
40383
vendor: 209,518 bytes, lines 40384-43641
40384/***/ "./node_modules/inputmask/dist/inputmask.js":
40385/*!**************************************************!*\
40386  !*** ./node_modules/inputmask/dist/inputmask.js ***!
40387  \**************************************************/
40388/***/ (function(module) {
40389
40390/*!
40391 * dist/inputmask
40392 * https://github.com/RobinHerbots/Inputmask
40393 * Copyright (c) 2010 - 2023 Robin Herbots
40394 * Licensed under the MIT license
40395 * Version: 5.0.8
40396 */
40397!function(e, t) {
40398    if (true) module.exports = t(); else { var n, i; }
40399}("undefined" != typeof self ? self : this, (function() {
40400    return function() {
40401        "use strict";
40402        var e = {
40403            8741: function(e, t) {
40404                Object.defineProperty(t, "__esModule", {
40405                    value: !0
40406                }), t.default = void 0;
40407                var i = !("undefined" == typeof window || !window.document || !window.document.createElement);
40408                t.default = i;
40409            },
40410            3976: function(e, t, i) {
40411                Object.defineProperty(t, "__esModule", {
40412                    value: !0
40413                }), t.default = void 0;
40414                var n = i(2839), a = {
40415                    _maxTestPos: 500,
40416                    placeholder: "_",
40417                    optionalmarker: [ "[", "]" ],
40418                    quantifiermarker: [ "{", "}" ],
40419                    groupmarker: [ "(", ")" ],
40420                    alternatormarker: "|",
40421                    escapeChar: "\\",
40422                    mask: null,
40423                    regex: null,
40424                    oncomplete: function() {},
40425                    onincomplete: function() {},
40426                    oncleared: function() {},
40427                    repeat: 0,
40428                    greedy: !1,
40429                    autoUnmask: !1,
40430                    removeMaskOnSubmit: !1,
40431                    clearMaskOnLostFocus: !0,
40432                    insertMode: !0,
40433                    insertModeVisual: !0,
40434                    clearIncomplete: !1,
40435                    alias: null,
40436                    onKeyDown: function() {},
40437                    onBeforeMask: null,
40438                    onBeforePaste: function(e, t) {
40439                        return "function" == typeof t.onBeforeMask ? t.onBeforeMask.call(this, e, t) : e;
40440                    },
40441                    onBeforeWrite: null,
40442                    onUnMask: null,
40443                    showMaskOnFocus: !0,
40444                    showMaskOnHover: !0,
40445                    onKeyValidation: function() {},
40446                    skipOptionalPartCharacter: " ",
40447                    numericInput: !1,
40448                    rightAlign: !1,
40449                    undoOnEscape: !0,
40450                    radixPoint: "",
40451                    _radixDance: !1,
40452                    groupSeparator: "",
40453                    keepStatic: null,
40454                    positionCaretOnTab: !0,
40455                    tabThrough: !1,
40456                    supportsInputType: [ "text", "tel", "url", "password", "search" ],
40457                    ignorables: [ n.keys.Backspace, n.keys.Tab, n.keys.Pause, n.keys.Escape, n.keys.PageUp, n.keys.PageDown, n.keys.End, n.keys.Home, n.keys.ArrowLeft, n.keys.ArrowUp, n.keys.ArrowRight, n.keys.ArrowDown, n.keys.Insert, n.keys.Delete, n.keys.ContextMenu, n.keys.F1, n.keys.F2, n.keys.F3, n.keys.F4, n.keys.F5, n.keys.F6, n.keys.F7, n.keys.F8, n.keys.F9, n.keys.F10, n.keys.F11, n.keys.F12, n.keys.Process, n.keys.Unidentified, n.keys.Shift, n.keys.Control, n.keys.Alt, n.keys.Tab, n.keys.AltGraph, n.keys.CapsLock ],
40458                    isComplete: null,
40459                    preValidation: null,
40460                    postValidation: null,
40461                    staticDefinitionSymbol: void 0,
40462                    jitMasking: !1,
40463                    nullable: !0,
40464                    inputEventOnly: !1,
40465                    noValuePatching: !1,
40466                    positionCaretOnClick: "lvp",
40467                    casing: null,
40468                    inputmode: "text",
40469                    importDataAttributes: !0,
40470                    shiftPositions: !0,
40471                    usePrototypeDefinitions: !0,
40472                    validationEventTimeOut: 3e3,
40473                    substitutes: {}
40474                };
40475                t.default = a;
40476            },
40477            7392: function(e, t) {
40478                Object.defineProperty(t, "__esModule", {
40479                    value: !0
40480                }), t.default = void 0;
40481                t.default = {
40482                    9: {
40483                        validator: "[0-9\uff10-\uff19]",
40484                        definitionSymbol: "*"
40485                    },
40486                    a: {
40487                        validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
40488                        definitionSymbol: "*"
40489                    },
40490                    "*": {
40491                        validator: "[0-9\uff10-\uff19A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]"
40492                    }
40493                };
40494            },
40495            253: function(e, t) {
40496                Object.defineProperty(t, "__esModule", {
40497                    value: !0
40498                }), t.default = function(e, t, i) {
40499                    if (void 0 === i) return e.__data ? e.__data[t] : null;
40500                    e.__data = e.__data || {}, e.__data[t] = i;
40501                };
40502            },
40503            3776: function(e, t, i) {
40504                Object.defineProperty(t, "__esModule", {
40505                    value: !0
40506                }), t.Event = void 0, t.off = function(e, t) {
40507                    var i, n;
40508                    f(this[0]) && e && (i = this[0].eventRegistry, n = this[0], e.split(" ").forEach((function(e) {
40509                        var a = l(e.split("."), 2);
40510                        (function(e, n) {
40511                            var a, r, o = [];
40512                            if (e.length > 0) if (void 0 === t) for (a = 0, r = i[e][n].length; a < r; a++) o.push({
40513                                ev: e,
40514                                namespace: n && n.length > 0 ? n : "global",
40515                                handler: i[e][n][a]
40516                            }); else o.push({
40517                                ev: e,
40518                                namespace: n && n.length > 0 ? n : "global",
40519                                handler: t
40520                            }); else if (n.length > 0) for (var s in i) for (var l in i[s]) if (l === n) if (void 0 === t) for (a = 0, 
40521                            r = i[s][l].length; a < r; a++) o.push({
40522                                ev: s,
40523                                namespace: l,
40524                                handler: i[s][l][a]
40525                            }); else o.push({
40526                                ev: s,
40527                                namespace: l,
40528                                handler: t
40529                            });
40530                            return o;
40531                        })(a[0], a[1]).forEach((function(e) {
40532                            var t = e.ev, a = e.handler;
40533                            !function(e, t, a) {
40534                                if (e in i == 1) if (n.removeEventListener ? n.removeEventListener(e, a, !1) : n.detachEvent && n.detachEvent("on".concat(e), a), 
40535                                "global" === t) for (var r in i[e]) i[e][r].splice(i[e][r].indexOf(a), 1); else i[e][t].splice(i[e][t].indexOf(a), 1);
40536                            }(t, e.namespace, a);
40537                        }));
40538                    })));
40539                    return this;
40540                }, t.on = function(e, t) {
40541                    if (f(this[0])) {
40542                        var i = this[0].eventRegistry, n = this[0];
40543                        e.split(" ").forEach((function(e) {
40544                            var a = l(e.split("."), 2), r = a[0], o = a[1];
40545                            !function(e, a) {
40546                                n.addEventListener ? n.addEventListener(e, t, !1) : n.attachEvent && n.attachEvent("on".concat(e), t), 
40547                                i[e] = i[e] || {}, i[e][a] = i[e][a] || [], i[e][a].push(t);
40548                            }(r, void 0 === o ? "global" : o);
40549                        }));
40550                    }
40551                    return this;
40552                }, t.trigger = function(e) {
40553                    var t = arguments;
40554                    if (f(this[0])) for (var i = this[0].eventRegistry, n = this[0], r = "string" == typeof e ? e.split(" ") : [ e.type ], s = 0; s < r.length; s++) {
40555                        var l = r[s].split("."), c = l[0], u = l[1] || "global";
40556                        if (void 0 !== document && "global" === u) {
40557                            var d, p = {
40558                                bubbles: !0,
40559                                cancelable: !0,
40560                                composed: !0,
40561                                detail: arguments[1]
40562                            };
40563                            if (document.createEvent) {
40564                                try {
40565                                    if ("input" === c) p.inputType = "insertText", d = new InputEvent(c, p); else d = new CustomEvent(c, p);
40566                                } catch (e) {
40567                                    (d = document.createEvent("CustomEvent")).initCustomEvent(c, p.bubbles, p.cancelable, p.detail);
40568                                }
40569                                e.type && (0, a.default)(d, e), n.dispatchEvent(d);
40570                            } else (d = document.createEventObject()).eventType = c, d.detail = arguments[1], 
40571                            e.type && (0, a.default)(d, e), n.fireEvent("on" + d.eventType, d);
40572                        } else if (void 0 !== i[c]) {
40573                            arguments[0] = arguments[0].type ? arguments[0] : o.default.Event(arguments[0]), 
40574                            arguments[0].detail = arguments.slice(1);
40575                            var h = i[c];
40576                            ("global" === u ? Object.values(h).flat() : h[u]).forEach((function(e) {
40577                                return e.apply(n, t);
40578                            }));
40579                        }
40580                    }
40581                    return this;
40582                };
40583                var n, a = u(i(600)), r = u(i(9380)), o = u(i(4963)), s = u(i(8741));
40584                function l(e, t) {
40585                    return function(e) {
40586                        if (Array.isArray(e)) return e;
40587                    }(e) || function(e, t) {
40588                        var i = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
40589                        if (null != i) {
40590                            var n, a, r, o, s = [], l = !0, c = !1;
40591                            try {
40592                                if (r = (i = i.call(e)).next, 0 === t) {
40593                                    if (Object(i) !== i) return;
40594                                    l = !1;
40595                                } else for (;!(l = (n = r.call(i)).done) && (s.push(n.value), s.length !== t); l = !0) ;
40596                            } catch (e) {
40597                                c = !0, a = e;
40598                            } finally {
40599                                try {
40600                                    if (!l && null != i.return && (o = i.return(), Object(o) !== o)) return;
40601                                } finally {
40602                                    if (c) throw a;
40603                                }
40604                            }
40605                            return s;
40606                        }
40607                    }(e, t) || function(e, t) {
40608                        if (!e) return;
40609                        if ("string" == typeof e) return c(e, t);
40610                        var i = Object.prototype.toString.call(e).slice(8, -1);
40611                        "Object" === i && e.constructor && (i = e.constructor.name);
40612                        if ("Map" === i || "Set" === i) return Array.from(e);
40613                        if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return c(e, t);
40614                    }(e, t) || function() {
40615                        throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
40616                    }();
40617                }
40618                function c(e, t) {
40619                    (null == t || t > e.length) && (t = e.length);
40620                    for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];
40621                    return n;
40622                }
40623                function u(e) {
40624                    return e && e.__esModule ? e : {
40625                        default: e
40626                    };
40627                }
40628                function f(e) {
40629                    return e instanceof Element;
40630                }
40631                t.Event = n, "function" == typeof r.default.CustomEvent ? t.Event = n = r.default.CustomEvent : s.default && (t.Event = n = function(e, t) {
40632                    t = t || {
40633                        bubbles: !1,
40634                        cancelable: !1,
40635                        composed: !0,
40636                        detail: void 0
40637                    };
40638                    var i = document.createEvent("CustomEvent");
40639                    return i.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), i;
40640                }, n.prototype = r.default.Event.prototype);
40641            },
40642            600: function(e, t) {
40643                function i(e) {
40644                    return i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
40645                        return typeof e;
40646                    } : function(e) {
40647                        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
40648                    }, i(e);
40649                }
40650                Object.defineProperty(t, "__esModule", {
40651                    value: !0
40652                }), t.default = function e() {
40653                    var t, n, a, r, o, s, l = arguments[0] || {}, c = 1, u = arguments.length, f = !1;
40654                    "boolean" == typeof l && (f = l, l = arguments[c] || {}, c++);
40655                    "object" !== i(l) && "function" != typeof l && (l = {});
40656                    for (;c < u; c++) if (null != (t = arguments[c])) for (n in t) a = l[n], l !== (r = t[n]) && (f && r && ("[object Object]" === Object.prototype.toString.call(r) || (o = Array.isArray(r))) ? (o ? (o = !1, 
40657                    s = a && Array.isArray(a) ? a : []) : s = a && "[object Object]" === Object.prototype.toString.call(a) ? a : {}, 
40658                    l[n] = e(f, s, r)) : void 0 !== r && (l[n] = r));
40659                    return l;
40660                };
40661            },
40662            4963: function(e, t, i) {
40663                Object.defineProperty(t, "__esModule", {
40664                    value: !0
40665                }), t.default = void 0;
40666                var n = s(i(600)), a = s(i(9380)), r = s(i(253)), o = i(3776);
40667                function s(e) {
40668                    return e && e.__esModule ? e : {
40669                        default: e
40670                    };
40671                }
40672                var l = a.default.document;
40673                function c(e) {
40674                    return e instanceof c ? e : this instanceof c ? void (null != e && e !== a.default && (this[0] = e.nodeName ? e : void 0 !== e[0] && e[0].nodeName ? e[0] : l.querySelector(e), 
40675                    void 0 !== this[0] && null !== this[0] && (this[0].eventRegistry = this[0].eventRegistry || {}))) : new c(e);
40676                }
40677                c.prototype = {
40678                    on: o.on,
40679                    off: o.off,
40680                    trigger: o.trigger
40681                }, c.extend = n.default, c.data = r.default, c.Event = o.Event;
40682                var u = c;
40683                t.default = u;
40684            },
40685            9845: function(e, t, i) {
40686                Object.defineProperty(t, "__esModule", {
40687                    value: !0
40688                }), t.mobile = t.iphone = t.ie = void 0;
40689                var n, a = (n = i(9380)) && n.__esModule ? n : {
40690                    default: n
40691                };
40692                var r = a.default.navigator && a.default.navigator.userAgent || "", o = r.indexOf("MSIE ") > 0 || r.indexOf("Trident/") > 0, s = navigator.userAgentData && navigator.userAgentData.mobile || a.default.navigator && a.default.navigator.maxTouchPoints || "ontouchstart" in a.default, l = /iphone/i.test(r);
40693                t.iphone = l, t.mobile = s, t.ie = o;
40694            },
40695            7184: function(e, t) {
40696                Object.defineProperty(t, "__esModule", {
40697                    value: !0
40698                }), t.default = function(e) {
40699                    return e.replace(i, "\\$1");
40700                };
40701                var i = new RegExp("(\\" + [ "/", ".", "*", "+", "?", "|", "(", ")", "[", "]", "{", "}", "\\", "$", "^" ].join("|\\") + ")", "gim");
40702            },
40703            6030: function(e, t, i) {
40704                Object.defineProperty(t, "__esModule", {
40705                    value: !0
40706                }), t.EventHandlers = void 0;
40707                var n = i(8711), a = i(2839), r = i(9845), o = i(7215), s = i(7760), l = i(4713);
40708                function c(e, t) {
40709                    var i = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
40710                    if (!i) {
40711                        if (Array.isArray(e) || (i = function(e, t) {
40712                            if (!e) return;
40713                            if ("string" == typeof e) return u(e, t);
40714                            var i = Object.prototype.toString.call(e).slice(8, -1);
40715                            "Object" === i && e.constructor && (i = e.constructor.name);
40716                            if ("Map" === i || "Set" === i) return Array.from(e);
40717                            if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return u(e, t);
40718                        }(e)) || t && e && "number" == typeof e.length) {
40719                            i && (e = i);
40720                            var n = 0, a = function() {};
40721                            return {
40722                                s: a,
40723                                n: function() {
40724                                    return n >= e.length ? {
40725                                        done: !0
40726                                    } : {
40727                                        done: !1,
40728                                        value: e[n++]
40729                                    };
40730                                },
40731                                e: function(e) {
40732                                    throw e;
40733                                },
40734                                f: a
40735                            };
40736                        }
40737                        throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
40738                    }
40739                    var r, o = !0, s = !1;
40740                    return {
40741                        s: function() {
40742                            i = i.call(e);
40743                        },
40744                        n: function() {
40745                            var e = i.next();
40746                            return o = e.done, e;
40747                        },
40748                        e: function(e) {
40749                            s = !0, r = e;
40750                        },
40751                        f: function() {
40752                            try {
40753                                o || null == i.return || i.return();
40754                            } finally {
40755                                if (s) throw r;
40756                            }
40757                        }
40758                    };
40759                }
40760                function u(e, t) {
40761                    (null == t || t > e.length) && (t = e.length);
40762                    for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];
40763                    return n;
40764                }
40765                var f = {
40766                    keyEvent: function(e, t, i, c, u) {
40767                        var d = this.inputmask, p = d.opts, h = d.dependencyLib, v = d.maskset, m = this, g = h(m), y = e.key, k = n.caret.call(d, m), b = p.onKeyDown.call(this, e, n.getBuffer.call(d), k, p);
40768                        if (void 0 !== b) return b;
40769                        if (y === a.keys.Backspace || y === a.keys.Delete || r.iphone && y === a.keys.BACKSPACE_SAFARI || e.ctrlKey && y === a.keys.x && !("oncut" in m)) e.preventDefault(), 
40770                        o.handleRemove.call(d, m, y, k), (0, s.writeBuffer)(m, n.getBuffer.call(d, !0), v.p, e, m.inputmask._valueGet() !== n.getBuffer.call(d).join("")); else if (y === a.keys.End || y === a.keys.PageDown) {
40771                            e.preventDefault();
40772                            var x = n.seekNext.call(d, n.getLastValidPosition.call(d));
40773                            n.caret.call(d, m, e.shiftKey ? k.begin : x, x, !0);
40774                        } else y === a.keys.Home && !e.shiftKey || y === a.keys.PageUp ? (e.preventDefault(), 
40775                        n.caret.call(d, m, 0, e.shiftKey ? k.begin : 0, !0)) : p.undoOnEscape && y === a.keys.Escape && !0 !== e.altKey ? ((0, 
40776                        s.checkVal)(m, !0, !1, d.undoValue.split("")), g.trigger("click")) : y !== a.keys.Insert || e.shiftKey || e.ctrlKey || void 0 !== d.userOptions.insertMode ? !0 === p.tabThrough && y === a.keys.Tab ? !0 === e.shiftKey ? (k.end = n.seekPrevious.call(d, k.end, !0), 
40777                        !0 === l.getTest.call(d, k.end - 1).match.static && k.end--, k.begin = n.seekPrevious.call(d, k.end, !0), 
40778                        k.begin >= 0 && k.end > 0 && (e.preventDefault(), n.caret.call(d, m, k.begin, k.end))) : (k.begin = n.seekNext.call(d, k.begin, !0), 
40779                        k.end = n.seekNext.call(d, k.begin, !0), k.end < v.maskLength && k.end--, k.begin <= v.maskLength && (e.preventDefault(), 
40780                        n.caret.call(d, m, k.begin, k.end))) : e.shiftKey || p.insertModeVisual && !1 === p.insertMode && (y === a.keys.ArrowRight ? setTimeout((function() {
40781                            var e = n.caret.call(d, m);
40782                            n.caret.call(d, m, e.begin);
40783                        }), 0) : y === a.keys.ArrowLeft && setTimeout((function() {
40784                            var e = n.translatePosition.call(d, m.inputmask.caretPos.begin);
40785                            n.translatePosition.call(d, m.inputmask.caretPos.end);
40786                            d.isRTL ? n.caret.call(d, m, e + (e === v.maskLength ? 0 : 1)) : n.caret.call(d, m, e - (0 === e ? 0 : 1));
40787                        }), 0)) : o.isSelection.call(d, k) ? p.insertMode = !p.insertMode : (p.insertMode = !p.insertMode, 
40788                        n.caret.call(d, m, k.begin, k.begin));
40789                        return d.isComposing = y == a.keys.Process || y == a.keys.Unidentified, d.ignorable = p.ignorables.includes(y), 
40790                        f.keypressEvent.call(this, e, t, i, c, u);
40791                    },
40792                    keypressEvent: function(e, t, i, r, l) {
40793                        var c = this.inputmask || this, u = c.opts, f = c.dependencyLib, d = c.maskset, p = c.el, h = f(p), v = e.key;
40794                        if (!0 === t || e.ctrlKey && e.altKey || !(e.ctrlKey || e.metaKey || c.ignorable)) {
40795                            if (v) {
40796                                var m, g = t ? {
40797                                    begin: l,
40798                                    end: l
40799                                } : n.caret.call(c, p);
40800                                v = u.substitutes[v] || v, d.writeOutBuffer = !0;
40801                                var y = o.isValid.call(c, g, v, r, void 0, void 0, void 0, t);
40802                                if (!1 !== y && (n.resetMaskSet.call(c, !0), m = void 0 !== y.caret ? y.caret : n.seekNext.call(c, y.pos.begin ? y.pos.begin : y.pos), 
40803                                d.p = m), m = u.numericInput && void 0 === y.caret ? n.seekPrevious.call(c, m) : m, 
40804                                !1 !== i && (setTimeout((function() {
40805                                    u.onKeyValidation.call(p, v, y);
40806                                }), 0), d.writeOutBuffer && !1 !== y)) {
40807                                    var k = n.getBuffer.call(c);
40808                                    (0, s.writeBuffer)(p, k, m, e, !0 !== t);
40809                                }
40810                                if (e.preventDefault(), t) return !1 !== y && (y.forwardPosition = m), y;
40811                            }
40812                        } else v === a.keys.Enter && c.undoValue !== c._valueGet(!0) && (c.undoValue = c._valueGet(!0), 
40813                        setTimeout((function() {
40814                            h.trigger("change");
40815                        }), 0));
40816                    },
40817                    pasteEvent: function(e) {
40818                        var t, i = this.inputmask, a = i.opts, r = i._valueGet(!0), o = n.caret.call(i, this);
40819                        i.isRTL && (t = o.end, o.end = n.translatePosition.call(i, o.begin), o.begin = n.translatePosition.call(i, t));
40820                        var l = r.substr(0, o.begin), u = r.substr(o.end, r.length);
40821                        if (l == (i.isRTL ? n.getBufferTemplate.call(i).slice().reverse() : n.getBufferTemplate.call(i)).slice(0, o.begin).join("") && (l = ""), 
40822                        u == (i.isRTL ? n.getBufferTemplate.call(i).slice().reverse() : n.getBufferTemplate.call(i)).slice(o.end).join("") && (u = ""), 
40823                        window.clipboardData && window.clipboardData.getData) r = l + window.clipboardData.getData("Text") + u; else {
40824                            if (!e.clipboardData || !e.clipboardData.getData) return !0;
40825                            r = l + e.clipboardData.getData("text/plain") + u;
40826                        }
40827                        var f = r;
40828                        if (i.isRTL) {
40829                            f = f.split("");
40830                            var d, p = c(n.getBufferTemplate.call(i));
40831                            try {
40832                                for (p.s(); !(d = p.n()).done; ) {
40833                                    var h = d.value;
40834                                    f[0] === h && f.shift();
40835                                }
40836                            } catch (e) {
40837                                p.e(e);
40838                            } finally {
40839                                p.f();
40840                            }
40841                            f = f.join("");
40842                        }
40843                        if ("function" == typeof a.onBeforePaste) {
40844                            if (!1 === (f = a.onBeforePaste.call(i, f, a))) return !1;
40845                            f || (f = r);
40846                        }
40847                        (0, s.checkVal)(this, !0, !1, f.toString().split(""), e), e.preventDefault();
40848                    },
40849                    inputFallBackEvent: function(e) {
40850                        var t = this.inputmask, i = t.opts, o = t.dependencyLib;
40851                        var c, u = this, d = u.inputmask._valueGet(!0), p = (t.isRTL ? n.getBuffer.call(t).slice().reverse() : n.getBuffer.call(t)).join(""), h = n.caret.call(t, u, void 0, void 0, !0);
40852                        if (p !== d) {
40853                            if (c = function(e, a, r) {
40854                                for (var o, s, c, u = e.substr(0, r.begin).split(""), f = e.substr(r.begin).split(""), d = a.substr(0, r.begin).split(""), p = a.substr(r.begin).split(""), h = u.length >= d.length ? u.length : d.length, v = f.length >= p.length ? f.length : p.length, m = "", g = [], y = "~"; u.length < h; ) u.push(y);
40855                                for (;d.length < h; ) d.push(y);
40856                                for (;f.length < v; ) f.unshift(y);
40857                                for (;p.length < v; ) p.unshift(y);
40858                                var k = u.concat(f), b = d.concat(p);
40859                                for (s = 0, o = k.length; s < o; s++) switch (c = l.getPlaceholder.call(t, n.translatePosition.call(t, s)), 
40860                                m) {
40861                                  case "insertText":
40862                                    b[s - 1] === k[s] && r.begin == k.length - 1 && g.push(k[s]), s = o;
40863                                    break;
40864
40865                                  case "insertReplacementText":
40866                                  case "deleteContentBackward":
40867                                    k[s] === y ? r.end++ : s = o;
40868                                    break;
40869
40870                                  default:
40871                                    k[s] !== b[s] && (k[s + 1] !== y && k[s + 1] !== c && void 0 !== k[s + 1] || (b[s] !== c || b[s + 1] !== y) && b[s] !== y ? b[s + 1] === y && b[s] === k[s + 1] ? (m = "insertText", 
40872                                    g.push(k[s]), r.begin--, r.end--) : k[s] !== c && k[s] !== y && (k[s + 1] === y || b[s] !== k[s] && b[s + 1] === k[s + 1]) ? (m = "insertReplacementText", 
40873                                    g.push(k[s]), r.begin--) : k[s] === y ? (m = "deleteContentBackward", (n.isMask.call(t, n.translatePosition.call(t, s), !0) || b[s] === i.radixPoint) && r.end++) : s = o : (m = "insertText", 
40874                                    g.push(k[s]), r.begin--, r.end--));
40875                                }
40876                                return {
40877                                    action: m,
40878                                    data: g,
40879                                    caret: r
40880                                };
40881                            }(d, p, h), (u.inputmask.shadowRoot || u.ownerDocument).activeElement !== u && u.focus(), 
40882                            (0, s.writeBuffer)(u, n.getBuffer.call(t)), n.caret.call(t, u, h.begin, h.end, !0), 
40883                            !r.mobile && t.skipNextInsert && "insertText" === e.inputType && "insertText" === c.action && t.isComposing) return !1;
40884                            switch ("insertCompositionText" === e.inputType && "insertText" === c.action && t.isComposing ? t.skipNextInsert = !0 : t.skipNextInsert = !1, 
40885                            c.action) {
40886                              case "insertText":
40887                              case "insertReplacementText":
40888                                c.data.forEach((function(e, i) {
40889                                    var n = new o.Event("keypress");
40890                                    n.key = e, t.ignorable = !1, f.keypressEvent.call(u, n);
40891                                })), setTimeout((function() {
40892                                    t.$el.trigger("keyup");
40893                                }), 0);
40894                                break;
40895
40896                              case "deleteContentBackward":
40897                                var v = new o.Event("keydown");
40898                                v.key = a.keys.Backspace, f.keyEvent.call(u, v);
40899                                break;
40900
40901                              default:
40902                                (0, s.applyInputValue)(u, d), n.caret.call(t, u, h.begin, h.end, !0);
40903                            }
40904                            e.preventDefault();
40905                        }
40906                    },
40907                    setValueEvent: function(e) {
40908                        var t = this.inputmask, i = this, a = e && e.detail ? e.detail[0] : arguments[1];
40909                        void 0 === a && (a = i.inputmask._valueGet(!0)), (0, s.applyInputValue)(i, a), (e.detail && void 0 !== e.detail[1] || void 0 !== arguments[2]) && n.caret.call(t, i, e.detail ? e.detail[1] : arguments[2]);
40910                    },
40911                    focusEvent: function(e) {
40912                        var t = this.inputmask, i = t.opts, a = null == t ? void 0 : t._valueGet();
40913                        i.showMaskOnFocus && a !== n.getBuffer.call(t).join("") && (0, s.writeBuffer)(this, n.getBuffer.call(t), n.seekNext.call(t, n.getLastValidPosition.call(t))), 
40914                        !0 !== i.positionCaretOnTab || !1 !== t.mouseEnter || o.isComplete.call(t, n.getBuffer.call(t)) && -1 !== n.getLastValidPosition.call(t) || f.clickEvent.apply(this, [ e, !0 ]), 
40915                        t.undoValue = null == t ? void 0 : t._valueGet(!0);
40916                    },
40917                    invalidEvent: function(e) {
40918                        this.inputmask.validationEvent = !0;
40919                    },
40920                    mouseleaveEvent: function() {
40921                        var e = this.inputmask, t = e.opts, i = this;
40922                        e.mouseEnter = !1, t.clearMaskOnLostFocus && (i.inputmask.shadowRoot || i.ownerDocument).activeElement !== i && (0, 
40923                        s.HandleNativePlaceholder)(i, e.originalPlaceholder);
40924                    },
40925                    clickEvent: function(e, t) {
40926                        var i = this.inputmask;
40927                        i.clicked++;
40928                        var a = this;
40929                        if ((a.inputmask.shadowRoot || a.ownerDocument).activeElement === a) {
40930                            var r = n.determineNewCaretPosition.call(i, n.caret.call(i, a), t);
40931                            void 0 !== r && n.caret.call(i, a, r);
40932                        }
40933                    },
40934                    cutEvent: function(e) {
40935                        var t = this.inputmask, i = t.maskset, r = this, l = n.caret.call(t, r), c = t.isRTL ? n.getBuffer.call(t).slice(l.end, l.begin) : n.getBuffer.call(t).slice(l.begin, l.end), u = t.isRTL ? c.reverse().join("") : c.join("");
40936                        window.navigator.clipboard ? window.navigator.clipboard.writeText(u) : window.clipboardData && window.clipboardData.getData && window.clipboardData.setData("Text", u), 
40937                        o.handleRemove.call(t, r, a.keys.Delete, l), (0, s.writeBuffer)(r, n.getBuffer.call(t), i.p, e, t.undoValue !== t._valueGet(!0));
40938                    },
40939                    blurEvent: function(e) {
40940                        var t = this.inputmask, i = t.opts, a = t.dependencyLib;
40941                        t.clicked = 0;
40942                        var r = a(this), l = this;
40943                        if (l.inputmask) {
40944                            (0, s.HandleNativePlaceholder)(l, t.originalPlaceholder);
40945                            var c = l.inputmask._valueGet(), u = n.getBuffer.call(t).slice();
40946                            "" !== c && (i.clearMaskOnLostFocus && (-1 === n.getLastValidPosition.call(t) && c === n.getBufferTemplate.call(t).join("") ? u = [] : s.clearOptionalTail.call(t, u)), 
40947                            !1 === o.isComplete.call(t, u) && (setTimeout((function() {
40948                                r.trigger("incomplete");
40949                            }), 0), i.clearIncomplete && (n.resetMaskSet.call(t), u = i.clearMaskOnLostFocus ? [] : n.getBufferTemplate.call(t).slice())), 
40950                            (0, s.writeBuffer)(l, u, void 0, e)), t.undoValue !== t._valueGet(!0) && (t.undoValue = t._valueGet(!0), 
40951                            r.trigger("change"));
40952                        }
40953                    },
40954                    mouseenterEvent: function() {
40955                        var e = this.inputmask, t = e.opts.showMaskOnHover, i = this;
40956                        if (e.mouseEnter = !0, (i.inputmask.shadowRoot || i.ownerDocument).activeElement !== i) {
40957                            var a = (e.isRTL ? n.getBufferTemplate.call(e).slice().reverse() : n.getBufferTemplate.call(e)).join("");
40958                            t && (0, s.HandleNativePlaceholder)(i, a);
40959                        }
40960                    },
40961                    submitEvent: function() {
40962                        var e = this.inputmask, t = e.opts;
40963                        e.undoValue !== e._valueGet(!0) && e.$el.trigger("change"), -1 === n.getLastValidPosition.call(e) && e._valueGet && e._valueGet() === n.getBufferTemplate.call(e).join("") && e._valueSet(""), 
40964                        t.clearIncomplete && !1 === o.isComplete.call(e, n.getBuffer.call(e)) && e._valueSet(""), 
40965                        t.removeMaskOnSubmit && (e._valueSet(e.unmaskedvalue(), !0), setTimeout((function() {
40966                            (0, s.writeBuffer)(e.el, n.getBuffer.call(e));
40967                        }), 0));
40968                    },
40969                    resetEvent: function() {
40970                        var e = this.inputmask;
40971                        e.refreshValue = !0, setTimeout((function() {
40972                            (0, s.applyInputValue)(e.el, e._valueGet(!0));
40973                        }), 0);
40974                    }
40975                };
40976                t.EventHandlers = f;
40977            },
40978            9716: function(e, t, i) {
40979                Object.defineProperty(t, "__esModule", {
40980                    value: !0
40981                }), t.EventRuler = void 0;
40982                var n, a = (n = i(2394)) && n.__esModule ? n : {
40983                    default: n
40984                }, r = i(2839), o = i(8711), s = i(7760);
40985                var l = {
40986                    on: function(e, t, i) {
40987                        var n = e.inputmask.dependencyLib, l = function(t) {
40988                            t.originalEvent && (t = t.originalEvent || t, arguments[0] = t);
40989                            var l, c = this, u = c.inputmask, f = u ? u.opts : void 0;
40990                            if (void 0 === u && "FORM" !== this.nodeName) {
40991                                var d = n.data(c, "_inputmask_opts");
40992                                n(c).off(), d && new a.default(d).mask(c);
40993                            } else {
40994                                if ([ "submit", "reset", "setvalue" ].includes(t.type) || "FORM" === this.nodeName || !(c.disabled || c.readOnly && !("keydown" === t.type && t.ctrlKey && t.key === r.keys.c || !1 === f.tabThrough && t.key === r.keys.Tab))) {
40995                                    switch (t.type) {
40996                                      case "input":
40997                                        if (!0 === u.skipInputEvent) return u.skipInputEvent = !1, t.preventDefault();
40998                                        break;
40999
41000                                      case "click":
41001                                      case "focus":
41002                                        return u.validationEvent ? (u.validationEvent = !1, e.blur(), (0, s.HandleNativePlaceholder)(e, (u.isRTL ? o.getBufferTemplate.call(u).slice().reverse() : o.getBufferTemplate.call(u)).join("")), 
41003                                        setTimeout((function() {
41004                                            e.focus();
41005                                        }), f.validationEventTimeOut), !1) : (l = arguments, void setTimeout((function() {
41006                                            e.inputmask && i.apply(c, l);
41007                                        }), 0));
41008                                    }
41009                                    var p = i.apply(c, arguments);
41010                                    return !1 === p && (t.preventDefault(), t.stopPropagation()), p;
41011                                }
41012                                t.preventDefault();
41013                            }
41014                        };
41015                        [ "submit", "reset" ].includes(t) ? (l = l.bind(e), null !== e.form && n(e.form).on(t, l)) : n(e).on(t, l), 
41016                        e.inputmask.events[t] = e.inputmask.events[t] || [], e.inputmask.events[t].push(l);
41017                    },
41018                    off: function(e, t) {
41019                        if (e.inputmask && e.inputmask.events) {
41020                            var i = e.inputmask.dependencyLib, n = e.inputmask.events;
41021                            for (var a in t && ((n = [])[t] = e.inputmask.events[t]), n) {
41022                                for (var r = n[a]; r.length > 0; ) {
41023                                    var o = r.pop();
41024                                    [ "submit", "reset" ].includes(a) ? null !== e.form && i(e.form).off(a, o) : i(e).off(a, o);
41025                                }
41026                                delete e.inputmask.events[a];
41027                            }
41028                        }
41029                    }
41030                };
41031                t.EventRuler = l;
41032            },
41033            219: function(e, t, i) {
41034                var n = d(i(2394)), a = i(2839), r = d(i(7184)), o = i(8711), s = i(4713);
41035                function l(e, t) {
41036                    return function(e) {
41037                        if (Array.isArray(e)) return e;
41038                    }(e) || function(e, t) {
41039                        var i = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
41040                        if (null != i) {
41041                            var n, a, r, o, s = [], l = !0, c = !1;
41042                            try {
41043                                if (r = (i = i.call(e)).next, 0 === t) {
41044                                    if (Object(i) !== i) return;
41045                                    l = !1;
41046                                } else for (;!(l = (n = r.call(i)).done) && (s.push(n.value), s.length !== t); l = !0) ;
41047                            } catch (e) {
41048                                c = !0, a = e;
41049                            } finally {
41050                                try {
41051                                    if (!l && null != i.return && (o = i.return(), Object(o) !== o)) return;
41052                                } finally {
41053                                    if (c) throw a;
41054                                }
41055                            }
41056                            return s;
41057                        }
41058                    }(e, t) || function(e, t) {
41059                        if (!e) return;
41060                        if ("string" == typeof e) return c(e, t);
41061                        var i = Object.prototype.toString.call(e).slice(8, -1);
41062                        "Object" === i && e.constructor && (i = e.constructor.name);
41063                        if ("Map" === i || "Set" === i) return Array.from(e);
41064                        if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return c(e, t);
41065                    }(e, t) || function() {
41066                        throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
41067                    }();
41068                }
41069                function c(e, t) {
41070                    (null == t || t > e.length) && (t = e.length);
41071                    for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];
41072                    return n;
41073                }
41074                function u(e) {
41075                    return u = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
41076                        return typeof e;
41077                    } : function(e) {
41078                        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
41079                    }, u(e);
41080                }
41081                function f(e, t) {
41082                    for (var i = 0; i < t.length; i++) {
41083                        var n = t[i];
41084                        n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), 
41085                        Object.defineProperty(e, (a = n.key, r = void 0, r = function(e, t) {
41086                            if ("object" !== u(e) || null === e) return e;
41087                            var i = e[Symbol.toPrimitive];
41088                            if (void 0 !== i) {
41089                                var n = i.call(e, t || "default");
41090                                if ("object" !== u(n)) return n;
41091                                throw new TypeError("@@toPrimitive must return a primitive value.");
41092                            }
41093                            return ("string" === t ? String : Number)(e);
41094                        }(a, "string"), "symbol" === u(r) ? r : String(r)), n);
41095                    }
41096                    var a, r;
41097                }
41098                function d(e) {
41099                    return e && e.__esModule ? e : {
41100                        default: e
41101                    };
41102                }
41103                var p = n.default.dependencyLib, h = function() {
41104                    function e(t, i, n) {
41105                        !function(e, t) {
41106                            if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
41107                        }(this, e), this.mask = t, this.format = i, this.opts = n, this._date = new Date(1, 0, 1), 
41108                        this.initDateObject(t, this.opts);
41109                    }
41110                    var t, i, n;
41111                    return t = e, (i = [ {
41112                        key: "date",
41113                        get: function() {
41114                            return void 0 === this._date && (this._date = new Date(1, 0, 1), this.initDateObject(void 0, this.opts)), 
41115                            this._date;
41116                        }
41117                    }, {
41118                        key: "initDateObject",
41119                        value: function(e, t) {
41120                            var i;
41121                            for (P(t).lastIndex = 0; i = P(t).exec(this.format); ) {
41122                                var n = new RegExp("\\d+$").exec(i[0]), a = n ? i[0][0] + "x" : i[0], r = void 0;
41123                                if (void 0 !== e) {
41124                                    if (n) {
41125                                        var o = P(t).lastIndex, s = E(i.index, t);
41126                                        P(t).lastIndex = o, r = e.slice(0, e.indexOf(s.nextMatch[0]));
41127                                    } else r = e.slice(0, g[a] && g[a][4] || a.length);
41128                                    e = e.slice(r.length);
41129                                }
41130                                Object.prototype.hasOwnProperty.call(g, a) && this.setValue(this, r, a, g[a][2], g[a][1]);
41131                            }
41132                        }
41133                    }, {
41134                        key: "setValue",
41135                        value: function(e, t, i, n, a) {
41136                            if (void 0 !== t && (e[n] = "ampm" === n ? t : t.replace(/[^0-9]/g, "0"), e["raw" + n] = t.replace(/\s/g, "_")), 
41137                            void 0 !== a) {
41138                                var r = e[n];
41139                                ("day" === n && 29 === parseInt(r) || "month" === n && 2 === parseInt(r)) && (29 !== parseInt(e.day) || 2 !== parseInt(e.month) || "" !== e.year && void 0 !== e.year || e._date.setFullYear(2012, 1, 29)), 
41140                                "day" === n && (m = !0, 0 === parseInt(r) && (r = 1)), "month" === n && (m = !0), 
41141                                "year" === n && (m = !0, r.length < 4 && (r = M(r, 4, !0))), "" === r || isNaN(r) || a.call(e._date, r), 
41142                                "ampm" === n && a.call(e._date, r);
41143                            }
41144                        }
41145                    }, {
41146                        key: "reset",
41147                        value: function() {
41148                            this._date = new Date(1, 0, 1);
41149                        }
41150                    }, {
41151                        key: "reInit",
41152                        value: function() {
41153                            this._date = void 0, this.date;
41154                        }
41155                    } ]) && f(t.prototype, i), n && f(t, n), Object.defineProperty(t, "prototype", {
41156                        writable: !1
41157                    }), e;
41158                }(), v = (new Date).getFullYear(), m = !1, g = {
41159                    d: [ "[1-9]|[12][0-9]|3[01]", Date.prototype.setDate, "day", Date.prototype.getDate ],
41160                    dd: [ "0[1-9]|[12][0-9]|3[01]", Date.prototype.setDate, "day", function() {
41161                        return M(Date.prototype.getDate.call(this), 2);
41162                    } ],
41163                    ddd: [ "" ],
41164                    dddd: [ "" ],
41165                    m: [ "[1-9]|1[012]", function(e) {
41166                        var t = e ? parseInt(e) : 0;
41167                        return t > 0 && t--, Date.prototype.setMonth.call(this, t);
41168                    }, "month", function() {
41169                        return Date.prototype.getMonth.call(this) + 1;
41170                    } ],
41171                    mm: [ "0[1-9]|1[012]", function(e) {
41172                        var t = e ? parseInt(e) : 0;
41173                        return t > 0 && t--, Date.prototype.setMonth.call(this, t);
41174                    }, "month", function() {
41175                        return M(Date.prototype.getMonth.call(this) + 1, 2);
41176                    } ],
41177                    mmm: [ "" ],
41178                    mmmm: [ "" ],
41179                    yy: [ "[0-9]{2}", Date.prototype.setFullYear, "year", function() {
41180                        return M(Date.prototype.getFullYear.call(this), 2);
41181                    } ],
41182                    yyyy: [ "[0-9]{4}", Date.prototype.setFullYear, "year", function() {
41183                        return M(Date.prototype.getFullYear.call(this), 4);
41184                    } ],
41185                    h: [ "[1-9]|1[0-2]", Date.prototype.setHours, "hours", Date.prototype.getHours ],
41186                    hh: [ "0[1-9]|1[0-2]", Date.prototype.setHours, "hours", function() {
41187                        return M(Date.prototype.getHours.call(this), 2);
41188                    } ],
41189                    hx: [ function(e) {
41190                        return "[0-9]{".concat(e, "}");
41191                    }, Date.prototype.setHours, "hours", function(e) {
41192                        return Date.prototype.getHours;
41193                    } ],
41194                    H: [ "1?[0-9]|2[0-3]", Date.prototype.setHours, "hours", Date.prototype.getHours ],
41195                    HH: [ "0[0-9]|1[0-9]|2[0-3]", Date.prototype.setHours, "hours", function() {
41196                        return M(Date.prototype.getHours.call(this), 2);
41197                    } ],
41198                    Hx: [ function(e) {
41199                        return "[0-9]{".concat(e, "}");
41200                    }, Date.prototype.setHours, "hours", function(e) {
41201                        return function() {
41202                            return M(Date.prototype.getHours.call(this), e);
41203                        };
41204                    } ],
41205                    M: [ "[1-5]?[0-9]", Date.prototype.setMinutes, "minutes", Date.prototype.getMinutes ],
41206                    MM: [ "0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]", Date.prototype.setMinutes, "minutes", function() {
41207                        return M(Date.prototype.getMinutes.call(this), 2);
41208                    } ],
41209                    s: [ "[1-5]?[0-9]", Date.prototype.setSeconds, "seconds", Date.prototype.getSeconds ],
41210                    ss: [ "0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]", Date.prototype.setSeconds, "seconds", function() {
41211                        return M(Date.prototype.getSeconds.call(this), 2);
41212                    } ],
41213                    l: [ "[0-9]{3}", Date.prototype.setMilliseconds, "milliseconds", function() {
41214                        return M(Date.prototype.getMilliseconds.call(this), 3);
41215                    }, 3 ],
41216                    L: [ "[0-9]{2}", Date.prototype.setMilliseconds, "milliseconds", function() {
41217                        return M(Date.prototype.getMilliseconds.call(this), 2);
41218                    }, 2 ],
41219                    t: [ "[ap]", k, "ampm", b, 1 ],
41220                    tt: [ "[ap]m", k, "ampm", b, 2 ],
41221                    T: [ "[AP]", k, "ampm", b, 1 ],
41222                    TT: [ "[AP]M", k, "ampm", b, 2 ],
41223                    Z: [ ".*", void 0, "Z", function() {
41224                        var e = this.toString().match(/\((.+)\)/)[1];
41225                        e.includes(" ") && (e = (e = e.replace("-", " ").toUpperCase()).split(" ").map((function(e) {
41226                            return l(e, 1)[0];
41227                        })).join(""));
41228                        return e;
41229                    } ],
41230                    o: [ "" ],
41231                    S: [ "" ]
41232                }, y = {
41233                    isoDate: "yyyy-mm-dd",
41234                    isoTime: "HH:MM:ss",
41235                    isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",
41236                    isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
41237                };
41238                function k(e) {
41239                    var t = this.getHours();
41240                    e.toLowerCase().includes("p") ? this.setHours(t + 12) : e.toLowerCase().includes("a") && t >= 12 && this.setHours(t - 12);
41241                }
41242                function b() {
41243                    var e = this.getHours();
41244                    return (e = e || 12) >= 12 ? "PM" : "AM";
41245                }
41246                function x(e) {
41247                    var t = new RegExp("\\d+$").exec(e[0]);
41248                    if (t && void 0 !== t[0]) {
41249                        var i = g[e[0][0] + "x"].slice("");
41250                        return i[0] = i[0](t[0]), i[3] = i[3](t[0]), i;
41251                    }
41252                    if (g[e[0]]) return g[e[0]];
41253                }
41254                function P(e) {
41255                    if (!e.tokenizer) {
41256                        var t = [], i = [];
41257                        for (var n in g) if (/\.*x$/.test(n)) {
41258                            var a = n[0] + "\\d+";
41259                            -1 === i.indexOf(a) && i.push(a);
41260                        } else -1 === t.indexOf(n[0]) && t.push(n[0]);
41261                        e.tokenizer = "(" + (i.length > 0 ? i.join("|") + "|" : "") + t.join("+|") + ")+?|.", 
41262                        e.tokenizer = new RegExp(e.tokenizer, "g");
41263                    }
41264                    return e.tokenizer;
41265                }
41266                function w(e, t, i) {
41267                    if (!m) return !0;
41268                    if (void 0 === e.rawday || !isFinite(e.rawday) && new Date(e.date.getFullYear(), isFinite(e.rawmonth) ? e.month : e.date.getMonth() + 1, 0).getDate() >= e.day || "29" == e.day && (!isFinite(e.rawyear) || void 0 === e.rawyear || "" === e.rawyear) || new Date(e.date.getFullYear(), isFinite(e.rawmonth) ? e.month : e.date.getMonth() + 1, 0).getDate() >= e.day) return t;
41269                    if ("29" == e.day) {
41270                        var n = E(t.pos, i);
41271                        if ("yyyy" === n.targetMatch[0] && t.pos - n.targetMatchIndex == 2) return t.remove = t.pos + 1, 
41272                        t;
41273                    } else if ("02" == e.month && "30" == e.day && void 0 !== t.c) return e.day = "03", 
41274                    e.date.setDate(3), e.date.setMonth(1), t.insert = [ {
41275                        pos: t.pos,
41276                        c: "0"
41277                    }, {
41278                        pos: t.pos + 1,
41279                        c: t.c
41280                    } ], t.caret = o.seekNext.call(this, t.pos + 1), t;
41281                    return !1;
41282                }
41283                function S(e, t, i, n) {
41284                    var a, o, s = "";
41285                    for (P(i).lastIndex = 0; a = P(i).exec(e); ) {
41286                        if (void 0 === t) if (o = x(a)) s += "(" + o[0] + ")"; else switch (a[0]) {
41287                          case "[":
41288                            s += "(";
41289                            break;
41290
41291                          case "]":
41292                            s += ")?";
41293                            break;
41294
41295                          default:
41296                            s += (0, r.default)(a[0]);
41297                        } else if (o = x(a)) if (!0 !== n && o[3]) s += o[3].call(t.date); else o[2] ? s += t["raw" + o[2]] : s += a[0]; else s += a[0];
41298                    }
41299                    return s;
41300                }
41301                function M(e, t, i) {
41302                    for (e = String(e), t = t || 2; e.length < t; ) e = i ? e + "0" : "0" + e;
41303                    return e;
41304                }
41305                function _(e, t, i) {
41306                    return "string" == typeof e ? new h(e, t, i) : e && "object" === u(e) && Object.prototype.hasOwnProperty.call(e, "date") ? e : void 0;
41307                }
41308                function O(e, t) {
41309                    return S(t.inputFormat, {
41310                        date: e
41311                    }, t);
41312                }
41313                function E(e, t) {
41314                    var i, n, a = 0, r = 0;
41315                    for (P(t).lastIndex = 0; n = P(t).exec(t.inputFormat); ) {
41316                        var o = new RegExp("\\d+$").exec(n[0]);
41317                        if ((a += r = o ? parseInt(o[0]) : n[0].length) >= e + 1) {
41318                            i = n, n = P(t).exec(t.inputFormat);
41319                            break;
41320                        }
41321                    }
41322                    return {
41323                        targetMatchIndex: a - r,
41324                        nextMatch: n,
41325                        targetMatch: i
41326                    };
41327                }
41328                n.default.extendAliases({
41329                    datetime: {
41330                        mask: function(e) {
41331                            return e.numericInput = !1, g.S = e.i18n.ordinalSuffix.join("|"), e.inputFormat = y[e.inputFormat] || e.inputFormat, 
41332                            e.displayFormat = y[e.displayFormat] || e.displayFormat || e.inputFormat, e.outputFormat = y[e.outputFormat] || e.outputFormat || e.inputFormat, 
41333                            e.placeholder = "" !== e.placeholder ? e.placeholder : e.inputFormat.replace(/[[\]]/, ""), 
41334                            e.regex = S(e.inputFormat, void 0, e), e.min = _(e.min, e.inputFormat, e), e.max = _(e.max, e.inputFormat, e), 
41335                            null;
41336                        },
41337                        placeholder: "",
41338                        inputFormat: "isoDateTime",
41339                        displayFormat: null,
41340                        outputFormat: null,
41341                        min: null,
41342                        max: null,
41343                        skipOptionalPartCharacter: "",
41344                        i18n: {
41345                            dayNames: [ "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ],
41346                            monthNames: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ],
41347                            ordinalSuffix: [ "st", "nd", "rd", "th" ]
41348                        },
41349                        preValidation: function(e, t, i, n, a, r, o, s) {
41350                            if (s) return !0;
41351                            if (isNaN(i) && e[t] !== i) {
41352                                var l = E(t, a);
41353                                if (l.nextMatch && l.nextMatch[0] === i && l.targetMatch[0].length > 1) {
41354                                    var c = g[l.targetMatch[0]][0];
41355                                    if (new RegExp(c).test("0" + e[t - 1])) return e[t] = e[t - 1], e[t - 1] = "0", 
41356                                    {
41357                                        fuzzy: !0,
41358                                        buffer: e,
41359                                        refreshFromBuffer: {
41360                                            start: t - 1,
41361                                            end: t + 1
41362                                        },
41363                                        pos: t + 1
41364                                    };
41365                                }
41366                            }
41367                            return !0;
41368                        },
41369                        postValidation: function(e, t, i, n, a, r, o, l) {
41370                            var c, u;
41371                            if (o) return !0;
41372                            if (!1 === n && (((c = E(t + 1, a)).targetMatch && c.targetMatchIndex === t && c.targetMatch[0].length > 1 && void 0 !== g[c.targetMatch[0]] || (c = E(t + 2, a)).targetMatch && c.targetMatchIndex === t + 1 && c.targetMatch[0].length > 1 && void 0 !== g[c.targetMatch[0]]) && (u = g[c.targetMatch[0]][0]), 
41373                            void 0 !== u && (void 0 !== r.validPositions[t + 1] && new RegExp(u).test(i + "0") ? (e[t] = i, 
41374                            e[t + 1] = "0", n = {
41375                                pos: t + 2,
41376                                caret: t
41377                            }) : new RegExp(u).test("0" + i) && (e[t] = "0", e[t + 1] = i, n = {
41378                                pos: t + 2
41379                            })), !1 === n)) return n;
41380                            if (n.fuzzy && (e = n.buffer, t = n.pos), (c = E(t, a)).targetMatch && c.targetMatch[0] && void 0 !== g[c.targetMatch[0]]) {
41381                                var f = g[c.targetMatch[0]];
41382                                u = f[0];
41383                                var d = e.slice(c.targetMatchIndex, c.targetMatchIndex + c.targetMatch[0].length);
41384                                if (!1 === new RegExp(u).test(d.join("")) && 2 === c.targetMatch[0].length && r.validPositions[c.targetMatchIndex] && r.validPositions[c.targetMatchIndex + 1] && (r.validPositions[c.targetMatchIndex + 1].input = "0"), 
41385                                "year" == f[2]) for (var p = s.getMaskTemplate.call(this, !1, 1, void 0, !0), h = t + 1; h < e.length; h++) e[h] = p[h], 
41386                                delete r.validPositions[h];
41387                            }
41388                            var m = n, y = _(e.join(""), a.inputFormat, a);
41389                            return m && !isNaN(y.date.getTime()) && (a.prefillYear && (m = function(e, t, i) {
41390                                if (e.year !== e.rawyear) {
41391                                    var n = v.toString(), a = e.rawyear.replace(/[^0-9]/g, ""), r = n.slice(0, a.length), o = n.slice(a.length);
41392                                    if (2 === a.length && a === r) {
41393                                        var s = new Date(v, e.month - 1, e.day);
41394                                        e.day == s.getDate() && (!i.max || i.max.date.getTime() >= s.getTime()) && (e.date.setFullYear(v), 
41395                                        e.year = n, t.insert = [ {
41396                                            pos: t.pos + 1,
41397                                            c: o[0]
41398                                        }, {
41399                                            pos: t.pos + 2,
41400                                            c: o[1]
41401                                        } ]);
41402                                    }
41403                                }
41404                                return t;
41405                            }(y, m, a)), m = function(e, t, i, n, a) {
41406                                if (!t) return t;
41407                                if (t && i.min && !isNaN(i.min.date.getTime())) {
41408                                    var r;
41409                                    for (e.reset(), P(i).lastIndex = 0; r = P(i).exec(i.inputFormat); ) {
41410                                        var o;
41411                                        if ((o = x(r)) && o[3]) {
41412                                            for (var s = o[1], l = e[o[2]], c = i.min[o[2]], u = i.max ? i.max[o[2]] : c, f = [], d = !1, p = 0; p < c.length; p++) void 0 !== n.validPositions[p + r.index] || d ? (f[p] = l[p], 
41413                                            d = d || l[p] > c[p]) : (f[p] = c[p], "year" === o[2] && l.length - 1 == p && c != u && (f = (parseInt(f.join("")) + 1).toString().split("")), 
41414                                            "ampm" === o[2] && c != u && i.min.date.getTime() > e.date.getTime() && (f[p] = u[p]));
41415                                            s.call(e._date, f.join(""));
41416                                        }
41417                                    }
41418                                    t = i.min.date.getTime() <= e.date.getTime(), e.reInit();
41419                                }
41420                                return t && i.max && (isNaN(i.max.date.getTime()) || (t = i.max.date.getTime() >= e.date.getTime())), 
41421                                t;
41422                            }(y, m = w.call(this, y, m, a), a, r)), void 0 !== t && m && n.pos !== t ? {
41423                                buffer: S(a.inputFormat, y, a).split(""),
41424                                refreshFromBuffer: {
41425                                    start: t,
41426                                    end: n.pos
41427                                },
41428                                pos: n.caret || n.pos
41429                            } : m;
41430                        },
41431                        onKeyDown: function(e, t, i, n) {
41432                            e.ctrlKey && e.key === a.keys.ArrowRight && (this.inputmask._valueSet(O(new Date, n)), 
41433                            p(this).trigger("setvalue"));
41434                        },
41435                        onUnMask: function(e, t, i) {
41436                            return t ? S(i.outputFormat, _(e, i.inputFormat, i), i, !0) : t;
41437                        },
41438                        casing: function(e, t, i, n) {
41439                            return 0 == t.nativeDef.indexOf("[ap]") ? e.toLowerCase() : 0 == t.nativeDef.indexOf("[AP]") ? e.toUpperCase() : e;
41440                        },
41441                        onBeforeMask: function(e, t) {
41442                            return "[object Date]" === Object.prototype.toString.call(e) && (e = O(e, t)), e;
41443                        },
41444                        insertMode: !1,
41445                        insertModeVisual: !1,
41446                        shiftPositions: !1,
41447                        keepStatic: !1,
41448                        inputmode: "numeric",
41449                        prefillYear: !0
41450                    }
41451                });
41452            },
41453            3851: function(e, t, i) {
41454                var n, a = (n = i(2394)) && n.__esModule ? n : {
41455                    default: n
41456                }, r = i(8711), o = i(4713);
41457                a.default.extendDefinitions({
41458                    A: {
41459                        validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
41460                        casing: "upper"
41461                    },
41462                    "&": {
41463                        validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
41464                        casing: "upper"
41465                    },
41466                    "#": {
41467                        validator: "[0-9A-Fa-f]",
41468                        casing: "upper"
41469                    }
41470                });
41471                var s = new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]");
41472                function l(e, t, i, n, a) {
41473                    return i - 1 > -1 && "." !== t.buffer[i - 1] ? (e = t.buffer[i - 1] + e, e = i - 2 > -1 && "." !== t.buffer[i - 2] ? t.buffer[i - 2] + e : "0" + e) : e = "00" + e, 
41474                    s.test(e);
41475                }
41476                a.default.extendAliases({
41477                    cssunit: {
41478                        regex: "[+-]?[0-9]+\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)"
41479                    },
41480                    url: {
41481                        regex: "(https?|ftp)://.*",
41482                        autoUnmask: !1,
41483                        keepStatic: !1,
41484                        tabThrough: !0
41485                    },
41486                    ip: {
41487                        mask: "i{1,3}.j{1,3}.k{1,3}.l{1,3}",
41488                        definitions: {
41489                            i: {
41490                                validator: l
41491                            },
41492                            j: {
41493                                validator: l
41494                            },
41495                            k: {
41496                                validator: l
41497                            },
41498                            l: {
41499                                validator: l
41500                            }
41501                        },
41502                        onUnMask: function(e, t, i) {
41503                            return e;
41504                        },
41505                        inputmode: "decimal",
41506                        substitutes: {
41507                            ",": "."
41508                        }
41509                    },
41510                    email: {
41511                        mask: function(e) {
41512                            var t = e.separator, i = e.quantifier, n = "*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]", a = n;
41513                            if (t) for (var r = 0; r < i; r++) a += "[".concat(t).concat(n, "]");
41514                            return a;
41515                        },
41516                        greedy: !1,
41517                        casing: "lower",
41518                        separator: null,
41519                        quantifier: 5,
41520                        skipOptionalPartCharacter: "",
41521                        onBeforePaste: function(e, t) {
41522                            return (e = e.toLowerCase()).replace("mailto:", "");
41523                        },
41524                        definitions: {
41525                            "*": {
41526                                validator: "[0-9\uff11-\uff19A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5!#$%&'*+/=?^_`{|}~-]"
41527                            },
41528                            "-": {
41529                                validator: "[0-9A-Za-z-]"
41530                            }
41531                        },
41532                        onUnMask: function(e, t, i) {
41533                            return e;
41534                        },
41535                        inputmode: "email"
41536                    },
41537                    mac: {
41538                        mask: "##:##:##:##:##:##"
41539                    },
41540                    vin: {
41541                        mask: "V{13}9{4}",
41542                        definitions: {
41543                            V: {
41544                                validator: "[A-HJ-NPR-Za-hj-npr-z\\d]",
41545                                casing: "upper"
41546                            }
41547                        },
41548                        clearIncomplete: !0,
41549                        autoUnmask: !0
41550                    },
41551                    ssn: {
41552                        mask: "999-99-9999",
41553                        postValidation: function(e, t, i, n, a, s, l) {
41554                            var c = o.getMaskTemplate.call(this, !0, r.getLastValidPosition.call(this), !0, !0);
41555                            return /^(?!219-09-9999|078-05-1120)(?!666|000|9.{2}).{3}-(?!00).{2}-(?!0{4}).{4}$/.test(c.join(""));
41556                        }
41557                    }
41558                });
41559            },
41560            207: function(e, t, i) {
41561                var n = s(i(2394)), a = s(i(7184)), r = i(8711), o = i(2839);
41562                function s(e) {
41563                    return e && e.__esModule ? e : {
41564                        default: e
41565                    };
41566                }
41567                var l = n.default.dependencyLib;
41568                function c(e, t) {
41569                    for (var i = "", a = 0; a < e.length; a++) n.default.prototype.definitions[e.charAt(a)] || t.definitions[e.charAt(a)] || t.optionalmarker[0] === e.charAt(a) || t.optionalmarker[1] === e.charAt(a) || t.quantifiermarker[0] === e.charAt(a) || t.quantifiermarker[1] === e.charAt(a) || t.groupmarker[0] === e.charAt(a) || t.groupmarker[1] === e.charAt(a) || t.alternatormarker === e.charAt(a) ? i += "\\" + e.charAt(a) : i += e.charAt(a);
41570                    return i;
41571                }
41572                function u(e, t, i, n) {
41573                    if (e.length > 0 && t > 0 && (!i.digitsOptional || n)) {
41574                        var a = e.indexOf(i.radixPoint), r = !1;
41575                        i.negationSymbol.back === e[e.length - 1] && (r = !0, e.length--), -1 === a && (e.push(i.radixPoint), 
41576                        a = e.length - 1);
41577                        for (var o = 1; o <= t; o++) isFinite(e[a + o]) || (e[a + o] = "0");
41578                    }
41579                    return r && e.push(i.negationSymbol.back), e;
41580                }
41581                function f(e, t) {
41582                    var i = 0;
41583                    for (var n in "+" === e && (i = r.seekNext.call(this, t.validPositions.length - 1)), 
41584                    t.tests) if ((n = parseInt(n)) >= i) for (var a = 0, o = t.tests[n].length; a < o; a++) if ((void 0 === t.validPositions[n] || "-" === e) && t.tests[n][a].match.def === e) return n + (void 0 !== t.validPositions[n] && "-" !== e ? 1 : 0);
41585                    return i;
41586                }
41587                function d(e, t) {
41588                    for (var i = -1, n = 0, a = t.validPositions.length; n < a; n++) {
41589                        var r = t.validPositions[n];
41590                        if (r && r.match.def === e) {
41591                            i = n;
41592                            break;
41593                        }
41594                    }
41595                    return i;
41596                }
41597                function p(e, t, i, n, a) {
41598                    var r = t.buffer ? t.buffer.indexOf(a.radixPoint) : -1, o = (-1 !== r || n && a.jitMasking) && new RegExp(a.definitions[9].validator).test(e);
41599                    return a._radixDance && -1 !== r && o && null == t.validPositions[r] ? {
41600                        insert: {
41601                            pos: r === i ? r + 1 : r,
41602                            c: a.radixPoint
41603                        },
41604                        pos: i
41605                    } : o;
41606                }
41607                n.default.extendAliases({
41608                    numeric: {
41609                        mask: function(e) {
41610                            e.repeat = 0, e.groupSeparator === e.radixPoint && e.digits && "0" !== e.digits && ("." === e.radixPoint ? e.groupSeparator = "," : "," === e.radixPoint ? e.groupSeparator = "." : e.groupSeparator = ""), 
41611                            " " === e.groupSeparator && (e.skipOptionalPartCharacter = void 0), e.placeholder.length > 1 && (e.placeholder = e.placeholder.charAt(0)), 
41612                            "radixFocus" === e.positionCaretOnClick && "" === e.placeholder && (e.positionCaretOnClick = "lvp");
41613                            var t = "0", i = e.radixPoint;
41614                            !0 === e.numericInput && void 0 === e.__financeInput ? (t = "1", e.positionCaretOnClick = "radixFocus" === e.positionCaretOnClick ? "lvp" : e.positionCaretOnClick, 
41615                            e.digitsOptional = !1, isNaN(e.digits) && (e.digits = 2), e._radixDance = !1, i = "," === e.radixPoint ? "?" : "!", 
41616                            "" !== e.radixPoint && void 0 === e.definitions[i] && (e.definitions[i] = {}, e.definitions[i].validator = "[" + e.radixPoint + "]", 
41617                            e.definitions[i].placeholder = e.radixPoint, e.definitions[i].static = !0, e.definitions[i].generated = !0)) : (e.__financeInput = !1, 
41618                            e.numericInput = !0);
41619                            var n, r = "[+]";
41620                            if (r += c(e.prefix, e), "" !== e.groupSeparator ? (void 0 === e.definitions[e.groupSeparator] && (e.definitions[e.groupSeparator] = {}, 
41621                            e.definitions[e.groupSeparator].validator = "[" + e.groupSeparator + "]", e.definitions[e.groupSeparator].placeholder = e.groupSeparator, 
41622                            e.definitions[e.groupSeparator].static = !0, e.definitions[e.groupSeparator].generated = !0), 
41623                            r += e._mask(e)) : r += "9{+}", void 0 !== e.digits && 0 !== e.digits) {
41624                                var o = e.digits.toString().split(",");
41625                                isFinite(o[0]) && o[1] && isFinite(o[1]) ? r += i + t + "{" + e.digits + "}" : (isNaN(e.digits) || parseInt(e.digits) > 0) && (e.digitsOptional || e.jitMasking ? (n = r + i + t + "{0," + e.digits + "}", 
41626                                e.keepStatic = !0) : r += i + t + "{" + e.digits + "}");
41627                            } else e.inputmode = "numeric";
41628                            return r += c(e.suffix, e), r += "[-]", n && (r = [ n + c(e.suffix, e) + "[-]", r ]), 
41629                            e.greedy = !1, function(e) {
41630                                void 0 === e.parseMinMaxOptions && (null !== e.min && (e.min = e.min.toString().replace(new RegExp((0, 
41631                                a.default)(e.groupSeparator), "g"), ""), "," === e.radixPoint && (e.min = e.min.replace(e.radixPoint, ".")), 
41632                                e.min = isFinite(e.min) ? parseFloat(e.min) : NaN, isNaN(e.min) && (e.min = Number.MIN_VALUE)), 
41633                                null !== e.max && (e.max = e.max.toString().replace(new RegExp((0, a.default)(e.groupSeparator), "g"), ""), 
41634                                "," === e.radixPoint && (e.max = e.max.replace(e.radixPoint, ".")), e.max = isFinite(e.max) ? parseFloat(e.max) : NaN, 
41635                                isNaN(e.max) && (e.max = Number.MAX_VALUE)), e.parseMinMaxOptions = "done");
41636                            }(e), "" !== e.radixPoint && e.substituteRadixPoint && (e.substitutes["." == e.radixPoint ? "," : "."] = e.radixPoint), 
41637                            r;
41638                        },
41639                        _mask: function(e) {
41640                            return "(" + e.groupSeparator + "999){+|1}";
41641                        },
41642                        digits: "*",
41643                        digitsOptional: !0,
41644                        enforceDigitsOnBlur: !1,
41645                        radixPoint: ".",
41646                        positionCaretOnClick: "radixFocus",
41647                        _radixDance: !0,
41648                        groupSeparator: "",
41649                        allowMinus: !0,
41650                        negationSymbol: {
41651                            front: "-",
41652                            back: ""
41653                        },
41654                        prefix: "",
41655                        suffix: "",
41656                        min: null,
41657                        max: null,
41658                        SetMaxOnOverflow: !1,
41659                        step: 1,
41660                        inputType: "text",
41661                        unmaskAsNumber: !1,
41662                        roundingFN: Math.round,
41663                        inputmode: "decimal",
41664                        shortcuts: {
41665                            k: "1000",
41666                            m: "1000000"
41667                        },
41668                        placeholder: "0",
41669                        greedy: !1,
41670                        rightAlign: !0,
41671                        insertMode: !0,
41672                        autoUnmask: !1,
41673                        skipOptionalPartCharacter: "",
41674                        usePrototypeDefinitions: !1,
41675                        stripLeadingZeroes: !0,
41676                        substituteRadixPoint: !0,
41677                        definitions: {
41678                            0: {
41679                                validator: p
41680                            },
41681                            1: {
41682                                validator: p,
41683                                definitionSymbol: "9"
41684                            },
41685                            9: {
41686                                validator: "[0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]",
41687                                definitionSymbol: "*"
41688                            },
41689                            "+": {
41690                                validator: function(e, t, i, n, a) {
41691                                    return a.allowMinus && ("-" === e || e === a.negationSymbol.front);
41692                                }
41693                            },
41694                            "-": {
41695                                validator: function(e, t, i, n, a) {
41696                                    return a.allowMinus && e === a.negationSymbol.back;
41697                                }
41698                            }
41699                        },
41700                        preValidation: function(e, t, i, n, a, r, o, s) {
41701                            if (!1 !== a.__financeInput && i === a.radixPoint) return !1;
41702                            var l = e.indexOf(a.radixPoint), c = t;
41703                            if (t = function(e, t, i, n, a) {
41704                                return a._radixDance && a.numericInput && t !== a.negationSymbol.back && e <= i && (i > 0 || t == a.radixPoint) && (void 0 === n.validPositions[e - 1] || n.validPositions[e - 1].input !== a.negationSymbol.back) && (e -= 1), 
41705                                e;
41706                            }(t, i, l, r, a), "-" === i || i === a.negationSymbol.front) {
41707                                if (!0 !== a.allowMinus) return !1;
41708                                var u = !1, p = d("+", r), h = d("-", r);
41709                                return -1 !== p && (u = [ p, h ]), !1 !== u ? {
41710                                    remove: u,
41711                                    caret: c - a.negationSymbol.back.length
41712                                } : {
41713                                    insert: [ {
41714                                        pos: f.call(this, "+", r),
41715                                        c: a.negationSymbol.front,
41716                                        fromIsValid: !0
41717                                    }, {
41718                                        pos: f.call(this, "-", r),
41719                                        c: a.negationSymbol.back,
41720                                        fromIsValid: void 0
41721                                    } ],
41722                                    caret: c + a.negationSymbol.back.length
41723                                };
41724                            }
41725                            if (i === a.groupSeparator) return {
41726                                caret: c
41727                            };
41728                            if (s) return !0;
41729                            if (-1 !== l && !0 === a._radixDance && !1 === n && i === a.radixPoint && void 0 !== a.digits && (isNaN(a.digits) || parseInt(a.digits) > 0) && l !== t) return {
41730                                caret: a._radixDance && t === l - 1 ? l + 1 : l
41731                            };
41732                            if (!1 === a.__financeInput) if (n) {
41733                                if (a.digitsOptional) return {
41734                                    rewritePosition: o.end
41735                                };
41736                                if (!a.digitsOptional) {
41737                                    if (o.begin > l && o.end <= l) return i === a.radixPoint ? {
41738                                        insert: {
41739                                            pos: l + 1,
41740                                            c: "0",
41741                                            fromIsValid: !0
41742                                        },
41743                                        rewritePosition: l
41744                                    } : {
41745                                        rewritePosition: l + 1
41746                                    };
41747                                    if (o.begin < l) return {
41748                                        rewritePosition: o.begin - 1
41749                                    };
41750                                }
41751                            } else if (!a.showMaskOnHover && !a.showMaskOnFocus && !a.digitsOptional && a.digits > 0 && "" === this.__valueGet.call(this.el)) return {
41752                                rewritePosition: l
41753                            };
41754                            return {
41755                                rewritePosition: t
41756                            };
41757                        },
41758                        postValidation: function(e, t, i, n, a, r, o) {
41759                            if (!1 === n) return n;
41760                            if (o) return !0;
41761                            if (null !== a.min || null !== a.max) {
41762                                var s = a.onUnMask(e.slice().reverse().join(""), void 0, l.extend({}, a, {
41763                                    unmaskAsNumber: !0
41764                                }));
41765                                if (null !== a.min && s < a.min && (s.toString().length > a.min.toString().length || s < 0)) return !1;
41766                                if (null !== a.max && s > a.max) return !!a.SetMaxOnOverflow && {
41767                                    refreshFromBuffer: !0,
41768                                    buffer: u(a.max.toString().replace(".", a.radixPoint).split(""), a.digits, a).reverse()
41769                                };
41770                            }
41771                            return n;
41772                        },
41773                        onUnMask: function(e, t, i) {
41774                            if ("" === t && !0 === i.nullable) return t;
41775                            var n = e.replace(i.prefix, "");
41776                            return n = (n = n.replace(i.suffix, "")).replace(new RegExp((0, a.default)(i.groupSeparator), "g"), ""), 
41777                            "" !== i.placeholder.charAt(0) && (n = n.replace(new RegExp(i.placeholder.charAt(0), "g"), "0")), 
41778                            i.unmaskAsNumber ? ("" !== i.radixPoint && -1 !== n.indexOf(i.radixPoint) && (n = n.replace(a.default.call(this, i.radixPoint), ".")), 
41779                            n = (n = n.replace(new RegExp("^" + (0, a.default)(i.negationSymbol.front)), "-")).replace(new RegExp((0, 
41780                            a.default)(i.negationSymbol.back) + "$"), ""), Number(n)) : n;
41781                        },
41782                        isComplete: function(e, t) {
41783                            var i = (t.numericInput ? e.slice().reverse() : e).join("");
41784                            return i = (i = (i = (i = (i = i.replace(new RegExp("^" + (0, a.default)(t.negationSymbol.front)), "-")).replace(new RegExp((0, 
41785                            a.default)(t.negationSymbol.back) + "$"), "")).replace(t.prefix, "")).replace(t.suffix, "")).replace(new RegExp((0, 
41786                            a.default)(t.groupSeparator) + "([0-9]{3})", "g"), "$1"), "," === t.radixPoint && (i = i.replace((0, 
41787                            a.default)(t.radixPoint), ".")), isFinite(i);
41788                        },
41789                        onBeforeMask: function(e, t) {
41790                            var i = t.radixPoint || ",";
41791                            isFinite(t.digits) && (t.digits = parseInt(t.digits)), "number" != typeof e && "number" !== t.inputType || "" === i || (e = e.toString().replace(".", i));
41792                            var n = "-" === e.charAt(0) || e.charAt(0) === t.negationSymbol.front, r = e.split(i), o = r[0].replace(/[^\-0-9]/g, ""), s = r.length > 1 ? r[1].replace(/[^0-9]/g, "") : "", l = r.length > 1;
41793                            e = o + ("" !== s ? i + s : s);
41794                            var c = 0;
41795                            if ("" !== i && (c = t.digitsOptional ? t.digits < s.length ? t.digits : s.length : t.digits, 
41796                            "" !== s || !t.digitsOptional)) {
41797                                var f = Math.pow(10, c || 1);
41798                                e = e.replace((0, a.default)(i), "."), isNaN(parseFloat(e)) || (e = (t.roundingFN(parseFloat(e) * f) / f).toFixed(c)), 
41799                                e = e.toString().replace(".", i);
41800                            }
41801                            if (0 === t.digits && -1 !== e.indexOf(i) && (e = e.substring(0, e.indexOf(i))), 
41802                            null !== t.min || null !== t.max) {
41803                                var d = e.toString().replace(i, ".");
41804                                null !== t.min && d < t.min ? e = t.min.toString().replace(".", i) : null !== t.max && d > t.max && (e = t.max.toString().replace(".", i));
41805                            }
41806                            return n && "-" !== e.charAt(0) && (e = "-" + e), u(e.toString().split(""), c, t, l).join("");
41807                        },
41808                        onBeforeWrite: function(e, t, i, n) {
41809                            function r(e, t) {
41810                                if (!1 !== n.__financeInput || t) {
41811                                    var i = e.indexOf(n.radixPoint);
41812                                    -1 !== i && e.splice(i, 1);
41813                                }
41814                                if ("" !== n.groupSeparator) for (;-1 !== (i = e.indexOf(n.groupSeparator)); ) e.splice(i, 1);
41815                                return e;
41816                            }
41817                            var o, s;
41818                            if (n.stripLeadingZeroes && (s = function(e, t) {
41819                                var i = new RegExp("(^" + ("" !== t.negationSymbol.front ? (0, a.default)(t.negationSymbol.front) + "?" : "") + (0, 
41820                                a.default)(t.prefix) + ")(.*)(" + (0, a.default)(t.suffix) + ("" != t.negationSymbol.back ? (0, 
41821                                a.default)(t.negationSymbol.back) + "?" : "") + "$)").exec(e.slice().reverse().join("")), n = i ? i[2] : "", r = !1;
41822                                return n && (n = n.split(t.radixPoint.charAt(0))[0], r = new RegExp("^[0" + t.groupSeparator + "]*").exec(n)), 
41823                                !(!r || !(r[0].length > 1 || r[0].length > 0 && r[0].length < n.length)) && r;
41824                            }(t, n))) for (var c = t.join("").lastIndexOf(s[0].split("").reverse().join("")) - (s[0] == s.input ? 0 : 1), f = s[0] == s.input ? 1 : 0, d = s[0].length - f; d > 0; d--) delete this.maskset.validPositions[c + d], 
41825                            delete t[c + d];
41826                            if (e) switch (e.type) {
41827                              case "blur":
41828                              case "checkval":
41829                                if (null !== n.min) {
41830                                    var p = n.onUnMask(t.slice().reverse().join(""), void 0, l.extend({}, n, {
41831                                        unmaskAsNumber: !0
41832                                    }));
41833                                    if (null !== n.min && p < n.min) return {
41834                                        refreshFromBuffer: !0,
41835                                        buffer: u(n.min.toString().replace(".", n.radixPoint).split(""), n.digits, n).reverse()
41836                                    };
41837                                }
41838                                if (t[t.length - 1] === n.negationSymbol.front) {
41839                                    var h = new RegExp("(^" + ("" != n.negationSymbol.front ? (0, a.default)(n.negationSymbol.front) + "?" : "") + (0, 
41840                                    a.default)(n.prefix) + ")(.*)(" + (0, a.default)(n.suffix) + ("" != n.negationSymbol.back ? (0, 
41841                                    a.default)(n.negationSymbol.back) + "?" : "") + "$)").exec(r(t.slice(), !0).reverse().join(""));
41842                                    0 == (h ? h[2] : "") && (o = {
41843                                        refreshFromBuffer: !0,
41844                                        buffer: [ 0 ]
41845                                    });
41846                                } else if ("" !== n.radixPoint) {
41847                                    t.indexOf(n.radixPoint) === n.suffix.length && (o && o.buffer ? o.buffer.splice(0, 1 + n.suffix.length) : (t.splice(0, 1 + n.suffix.length), 
41848                                    o = {
41849                                        refreshFromBuffer: !0,
41850                                        buffer: r(t)
41851                                    }));
41852                                }
41853                                if (n.enforceDigitsOnBlur) {
41854                                    var v = (o = o || {}) && o.buffer || t.slice().reverse();
41855                                    o.refreshFromBuffer = !0, o.buffer = u(v, n.digits, n, !0).reverse();
41856                                }
41857                            }
41858                            return o;
41859                        },
41860                        onKeyDown: function(e, t, i, n) {
41861                            var a, r = l(this);
41862                            if (3 != e.location) {
41863                                var s, c = e.key;
41864                                if ((s = n.shortcuts && n.shortcuts[c]) && s.length > 1) return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) * parseInt(s)), 
41865                                r.trigger("setvalue"), !1;
41866                            }
41867                            if (e.ctrlKey) switch (e.key) {
41868                              case o.keys.ArrowUp:
41869                                return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) + parseInt(n.step)), 
41870                                r.trigger("setvalue"), !1;
41871
41872                              case o.keys.ArrowDown:
41873                                return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) - parseInt(n.step)), 
41874                                r.trigger("setvalue"), !1;
41875                            }
41876                            if (!e.shiftKey && (e.key === o.keys.Delete || e.key === o.keys.Backspace || e.key === o.keys.BACKSPACE_SAFARI) && i.begin !== t.length) {
41877                                if (t[e.key === o.keys.Delete ? i.begin - 1 : i.end] === n.negationSymbol.front) return a = t.slice().reverse(), 
41878                                "" !== n.negationSymbol.front && a.shift(), "" !== n.negationSymbol.back && a.pop(), 
41879                                r.trigger("setvalue", [ a.join(""), i.begin ]), !1;
41880                                if (!0 === n._radixDance) {
41881                                    var f = t.indexOf(n.radixPoint);
41882                                    if (n.digitsOptional) {
41883                                        if (0 === f) return (a = t.slice().reverse()).pop(), r.trigger("setvalue", [ a.join(""), i.begin >= a.length ? a.length : i.begin ]), 
41884                                        !1;
41885                                    } else if (-1 !== f && (i.begin < f || i.end < f || e.key === o.keys.Delete && (i.begin === f || i.begin - 1 === f))) {
41886                                        var d = void 0;
41887                                        return i.begin === i.end && (e.key === o.keys.Backspace || e.key === o.keys.BACKSPACE_SAFARI ? i.begin++ : e.key === o.keys.Delete && i.begin - 1 === f && (d = l.extend({}, i), 
41888                                        i.begin--, i.end--)), (a = t.slice().reverse()).splice(a.length - i.begin, i.begin - i.end + 1), 
41889                                        a = u(a, n.digits, n).join(""), d && (i = d), r.trigger("setvalue", [ a, i.begin >= a.length ? f + 1 : i.begin ]), 
41890                                        !1;
41891                                    }
41892                                }
41893                            }
41894                        }
41895                    },
41896                    currency: {
41897                        prefix: "",
41898                        groupSeparator: ",",
41899                        alias: "numeric",
41900                        digits: 2,
41901                        digitsOptional: !1
41902                    },
41903                    decimal: {
41904                        alias: "numeric"
41905                    },
41906                    integer: {
41907                        alias: "numeric",
41908                        inputmode: "numeric",
41909                        digits: 0
41910                    },
41911                    percentage: {
41912                        alias: "numeric",
41913                        min: 0,
41914                        max: 100,
41915                        suffix: " %",
41916                        digits: 0,
41917                        allowMinus: !1
41918                    },
41919                    indianns: {
41920                        alias: "numeric",
41921                        _mask: function(e) {
41922                            return "(" + e.groupSeparator + "99){*|1}(" + e.groupSeparator + "999){1|1}";
41923                        },
41924                        groupSeparator: ",",
41925                        radixPoint: ".",
41926                        placeholder: "0",
41927                        digits: 2,
41928                        digitsOptional: !1
41929                    }
41930                });
41931            },
41932            9380: function(e, t, i) {
41933                var n;
41934                Object.defineProperty(t, "__esModule", {
41935                    value: !0
41936                }), t.default = void 0;
41937                var a = ((n = i(8741)) && n.__esModule ? n : {
41938                    default: n
41939                }).default ? window : {};
41940                t.default = a;
41941            },
41942            7760: function(e, t, i) {
41943                Object.defineProperty(t, "__esModule", {
41944                    value: !0
41945                }), t.HandleNativePlaceholder = function(e, t) {
41946                    var i = e ? e.inputmask : this;
41947                    if (s.ie) {
41948                        if (e.inputmask._valueGet() !== t && (e.placeholder !== t || "" === e.placeholder)) {
41949                            var n = r.getBuffer.call(i).slice(), a = e.inputmask._valueGet();
41950                            if (a !== t) {
41951                                var o = r.getLastValidPosition.call(i);
41952                                -1 === o && a === r.getBufferTemplate.call(i).join("") ? n = [] : -1 !== o && u.call(i, n), 
41953                                d(e, n);
41954                            }
41955                        }
41956                    } else e.placeholder !== t && (e.placeholder = t, "" === e.placeholder && e.removeAttribute("placeholder"));
41957                }, t.applyInputValue = c, t.checkVal = f, t.clearOptionalTail = u, t.unmaskedvalue = function(e) {
41958                    var t = e ? e.inputmask : this, i = t.opts, n = t.maskset;
41959                    if (e) {
41960                        if (void 0 === e.inputmask) return e.value;
41961                        e.inputmask && e.inputmask.refreshValue && c(e, e.inputmask._valueGet(!0));
41962                    }
41963                    for (var a = [], o = n.validPositions, s = 0, l = o.length; s < l; s++) o[s] && o[s].match && (1 != o[s].match.static || Array.isArray(n.metadata) && !0 !== o[s].generatedInput) && a.push(o[s].input);
41964                    var u = 0 === a.length ? "" : (t.isRTL ? a.reverse() : a).join("");
41965                    if ("function" == typeof i.onUnMask) {
41966                        var f = (t.isRTL ? r.getBuffer.call(t).slice().reverse() : r.getBuffer.call(t)).join("");
41967                        u = i.onUnMask.call(t, f, u, i);
41968                    }
41969                    return u;
41970                }, t.writeBuffer = d;
41971                var n = i(2839), a = i(4713), r = i(8711), o = i(7215), s = i(9845), l = i(6030);
41972                function c(e, t) {
41973                    var i = e ? e.inputmask : this, n = i.opts;
41974                    e.inputmask.refreshValue = !1, "function" == typeof n.onBeforeMask && (t = n.onBeforeMask.call(i, t, n) || t), 
41975                    f(e, !0, !1, t = (t || "").toString().split("")), i.undoValue = i._valueGet(!0), 
41976                    (n.clearMaskOnLostFocus || n.clearIncomplete) && e.inputmask._valueGet() === r.getBufferTemplate.call(i).join("") && -1 === r.getLastValidPosition.call(i) && e.inputmask._valueSet("");
41977                }
41978                function u(e) {
41979                    e.length = 0;
41980                    for (var t, i = a.getMaskTemplate.call(this, !0, 0, !0, void 0, !0); void 0 !== (t = i.shift()); ) e.push(t);
41981                    return e;
41982                }
41983                function f(e, t, i, n, s) {
41984                    var c = e ? e.inputmask : this, u = c.maskset, f = c.opts, p = c.dependencyLib, h = n.slice(), v = "", m = -1, g = void 0, y = f.skipOptionalPartCharacter;
41985                    f.skipOptionalPartCharacter = "", r.resetMaskSet.call(c), u.tests = {}, m = f.radixPoint ? r.determineNewCaretPosition.call(c, {
41986                        begin: 0,
41987                        end: 0
41988                    }, !1, !1 === f.__financeInput ? "radixFocus" : void 0).begin : 0, u.p = m, c.caretPos = {
41989                        begin: m
41990                    };
41991                    var k = [], b = c.caretPos;
41992                    if (h.forEach((function(e, t) {
41993                        if (void 0 !== e) {
41994                            var n = new p.Event("_checkval");
41995                            n.key = e, v += e;
41996                            var o = r.getLastValidPosition.call(c, void 0, !0);
41997                            !function(e, t) {
41998                                for (var i = a.getMaskTemplate.call(c, !0, 0).slice(e, r.seekNext.call(c, e, !1, !1)).join("").replace(/'/g, ""), n = i.indexOf(t); n > 0 && " " === i[n - 1]; ) n--;
41999                                var o = 0 === n && !r.isMask.call(c, e) && (a.getTest.call(c, e).match.nativeDef === t.charAt(0) || !0 === a.getTest.call(c, e).match.static && a.getTest.call(c, e).match.nativeDef === "'" + t.charAt(0) || " " === a.getTest.call(c, e).match.nativeDef && (a.getTest.call(c, e + 1).match.nativeDef === t.charAt(0) || !0 === a.getTest.call(c, e + 1).match.static && a.getTest.call(c, e + 1).match.nativeDef === "'" + t.charAt(0)));
42000                                if (!o && n > 0 && !r.isMask.call(c, e, !1, !0)) {
42001                                    var s = r.seekNext.call(c, e);
42002                                    c.caretPos.begin < s && (c.caretPos = {
42003                                        begin: s
42004                                    });
42005                                }
42006                                return o;
42007                            }(m, v) ? (g = l.EventHandlers.keypressEvent.call(c, n, !0, !1, i, c.caretPos.begin)) && (m = c.caretPos.begin + 1, 
42008                            v = "") : g = l.EventHandlers.keypressEvent.call(c, n, !0, !1, i, o + 1), g ? (void 0 !== g.pos && u.validPositions[g.pos] && !0 === u.validPositions[g.pos].match.static && void 0 === u.validPositions[g.pos].alternation && (k.push(g.pos), 
42009                            c.isRTL || (g.forwardPosition = g.pos + 1)), d.call(c, void 0, r.getBuffer.call(c), g.forwardPosition, n, !1), 
42010                            c.caretPos = {
42011                                begin: g.forwardPosition,
42012                                end: g.forwardPosition
42013                            }, b = c.caretPos) : void 0 === u.validPositions[t] && h[t] === a.getPlaceholder.call(c, t) && r.isMask.call(c, t, !0) ? c.caretPos.begin++ : c.caretPos = b;
42014                        }
42015                    })), k.length > 0) {
42016                        var x, P, w = r.seekNext.call(c, -1, void 0, !1);
42017                        if (!o.isComplete.call(c, r.getBuffer.call(c)) && k.length <= w || o.isComplete.call(c, r.getBuffer.call(c)) && k.length > 0 && k.length !== w && 0 === k[0]) for (var S = w; void 0 !== (x = k.shift()); ) {
42018                            var M = new p.Event("_checkval");
42019                            if ((P = u.validPositions[x]).generatedInput = !0, M.key = P.input, (g = l.EventHandlers.keypressEvent.call(c, M, !0, !1, i, S)) && void 0 !== g.pos && g.pos !== x && u.validPositions[g.pos] && !0 === u.validPositions[g.pos].match.static) k.push(g.pos); else if (!g) break;
42020                            S++;
42021                        }
42022                    }
42023                    t && d.call(c, e, r.getBuffer.call(c), g ? g.forwardPosition : c.caretPos.begin, s || new p.Event("checkval"), s && ("input" === s.type && c.undoValue !== r.getBuffer.call(c).join("") || "paste" === s.type)), 
42024                    f.skipOptionalPartCharacter = y;
42025                }
42026                function d(e, t, i, a, s) {
42027                    var l = e ? e.inputmask : this, c = l.opts, u = l.dependencyLib;
42028                    if (a && "function" == typeof c.onBeforeWrite) {
42029                        var f = c.onBeforeWrite.call(l, a, t, i, c);
42030                        if (f) {
42031                            if (f.refreshFromBuffer) {
42032                                var d = f.refreshFromBuffer;
42033                                o.refreshFromBuffer.call(l, !0 === d ? d : d.start, d.end, f.buffer || t), t = r.getBuffer.call(l, !0);
42034                            }
42035                            void 0 !== i && (i = void 0 !== f.caret ? f.caret : i);
42036                        }
42037                    }
42038                    if (void 0 !== e && (e.inputmask._valueSet(t.join("")), void 0 === i || void 0 !== a && "blur" === a.type || r.caret.call(l, e, i, void 0, void 0, void 0 !== a && "keydown" === a.type && (a.key === n.keys.Delete || a.key === n.keys.Backspace)), 
42039                    !0 === s)) {
42040                        var p = u(e), h = e.inputmask._valueGet();
42041                        e.inputmask.skipInputEvent = !0, p.trigger("input"), setTimeout((function() {
42042                            h === r.getBufferTemplate.call(l).join("") ? p.trigger("cleared") : !0 === o.isComplete.call(l, t) && p.trigger("complete");
42043                        }), 0);
42044                    }
42045                }
42046            },
42047            2394: function(e, t, i) {
42048                Object.defineProperty(t, "__esModule", {
42049                    value: !0
42050                }), t.default = void 0;
42051                var n = i(157), a = m(i(4963)), r = m(i(9380)), o = i(2391), s = i(4713), l = i(8711), c = i(7215), u = i(7760), f = i(9716), d = m(i(7392)), p = m(i(3976)), h = m(i(8741));
42052                function v(e) {
42053                    return v = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
42054                        return typeof e;
42055                    } : function(e) {
42056                        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
42057                    }, v(e);
42058                }
42059                function m(e) {
42060                    return e && e.__esModule ? e : {
42061                        default: e
42062                    };
42063                }
42064                var g = r.default.document, y = "_inputmask_opts";
42065                function k(e, t, i) {
42066                    if (h.default) {
42067                        if (!(this instanceof k)) return new k(e, t, i);
42068                        this.dependencyLib = a.default, this.el = void 0, this.events = {}, this.maskset = void 0, 
42069                        !0 !== i && ("[object Object]" === Object.prototype.toString.call(e) ? t = e : (t = t || {}, 
42070                        e && (t.alias = e)), this.opts = a.default.extend(!0, {}, this.defaults, t), this.noMasksCache = t && void 0 !== t.definitions, 
42071                        this.userOptions = t || {}, b(this.opts.alias, t, this.opts)), this.refreshValue = !1, 
42072                        this.undoValue = void 0, this.$el = void 0, this.skipInputEvent = !1, this.validationEvent = !1, 
42073                        this.ignorable = !1, this.maxLength, this.mouseEnter = !1, this.clicked = 0, this.originalPlaceholder = void 0, 
42074                        this.isComposing = !1, this.hasAlternator = !1;
42075                    }
42076                }
42077                function b(e, t, i) {
42078                    var n = k.prototype.aliases[e];
42079                    return n ? (n.alias && b(n.alias, void 0, i), a.default.extend(!0, i, n), a.default.extend(!0, i, t), 
42080                    !0) : (null === i.mask && (i.mask = e), !1);
42081                }
42082                k.prototype = {
42083                    dataAttribute: "data-inputmask",
42084                    defaults: p.default,
42085                    definitions: d.default,
42086                    aliases: {},
42087                    masksCache: {},
42088                    get isRTL() {
42089                        return this.opts.isRTL || this.opts.numericInput;
42090                    },
42091                    mask: function(e) {
42092                        var t = this;
42093                        return "string" == typeof e && (e = g.getElementById(e) || g.querySelectorAll(e)), 
42094                        (e = e.nodeName ? [ e ] : Array.isArray(e) ? e : [].slice.call(e)).forEach((function(e, i) {
42095                            var s = a.default.extend(!0, {}, t.opts);
42096                            if (function(e, t, i, n) {
42097                                function o(t, a) {
42098                                    var o = "" === n ? t : n + "-" + t;
42099                                    null !== (a = void 0 !== a ? a : e.getAttribute(o)) && ("string" == typeof a && (0 === t.indexOf("on") ? a = r.default[a] : "false" === a ? a = !1 : "true" === a && (a = !0)), 
42100                                    i[t] = a);
42101                                }
42102                                if (!0 === t.importDataAttributes) {
42103                                    var s, l, c, u, f = e.getAttribute(n);
42104                                    if (f && "" !== f && (f = f.replace(/'/g, '"'), l = JSON.parse("{" + f + "}")), 
42105                                    l) for (u in c = void 0, l) if ("alias" === u.toLowerCase()) {
42106                                        c = l[u];
42107                                        break;
42108                                    }
42109                                    for (s in o("alias", c), i.alias && b(i.alias, i, t), t) {
42110                                        if (l) for (u in c = void 0, l) if (u.toLowerCase() === s.toLowerCase()) {
42111                                            c = l[u];
42112                                            break;
42113                                        }
42114                                        o(s, c);
42115                                    }
42116                                }
42117                                a.default.extend(!0, t, i), ("rtl" === e.dir || t.rightAlign) && (e.style.textAlign = "right");
42118                                ("rtl" === e.dir || t.numericInput) && (e.dir = "ltr", e.removeAttribute("dir"), 
42119                                t.isRTL = !0);
42120                                return Object.keys(i).length;
42121                            }(e, s, a.default.extend(!0, {}, t.userOptions), t.dataAttribute)) {
42122                                var l = (0, o.generateMaskSet)(s, t.noMasksCache);
42123                                void 0 !== l && (void 0 !== e.inputmask && (e.inputmask.opts.autoUnmask = !0, e.inputmask.remove()), 
42124                                e.inputmask = new k(void 0, void 0, !0), e.inputmask.opts = s, e.inputmask.noMasksCache = t.noMasksCache, 
42125                                e.inputmask.userOptions = a.default.extend(!0, {}, t.userOptions), e.inputmask.el = e, 
42126                                e.inputmask.$el = (0, a.default)(e), e.inputmask.maskset = l, a.default.data(e, y, t.userOptions), 
42127                                n.mask.call(e.inputmask));
42128                            }
42129                        })), e && e[0] && e[0].inputmask || this;
42130                    },
42131                    option: function(e, t) {
42132                        return "string" == typeof e ? this.opts[e] : "object" === v(e) ? (a.default.extend(this.userOptions, e), 
42133                        this.el && !0 !== t && this.mask(this.el), this) : void 0;
42134                    },
42135                    unmaskedvalue: function(e) {
42136                        if (this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), 
42137                        void 0 === this.el || void 0 !== e) {
42138                            var t = ("function" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split("");
42139                            u.checkVal.call(this, void 0, !1, !1, t), "function" == typeof this.opts.onBeforeWrite && this.opts.onBeforeWrite.call(this, void 0, l.getBuffer.call(this), 0, this.opts);
42140                        }
42141                        return u.unmaskedvalue.call(this, this.el);
42142                    },
42143                    remove: function() {
42144                        if (this.el) {
42145                            a.default.data(this.el, y, null);
42146                            var e = this.opts.autoUnmask ? (0, u.unmaskedvalue)(this.el) : this._valueGet(this.opts.autoUnmask);
42147                            e !== l.getBufferTemplate.call(this).join("") ? this._valueSet(e, this.opts.autoUnmask) : this._valueSet(""), 
42148                            f.EventRuler.off(this.el), Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(this.el), "value") && this.__valueGet && Object.defineProperty(this.el, "value", {
42149                                get: this.__valueGet,
42150                                set: this.__valueSet,
42151                                configurable: !0
42152                            }) : g.__lookupGetter__ && this.el.__lookupGetter__("value") && this.__valueGet && (this.el.__defineGetter__("value", this.__valueGet), 
42153                            this.el.__defineSetter__("value", this.__valueSet)), this.el.inputmask = void 0;
42154                        }
42155                        return this.el;
42156                    },
42157                    getemptymask: function() {
42158                        return this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), 
42159                        (this.isRTL ? l.getBufferTemplate.call(this).reverse() : l.getBufferTemplate.call(this)).join("");
42160                    },
42161                    hasMaskedValue: function() {
42162                        return !this.opts.autoUnmask;
42163                    },
42164                    isComplete: function() {
42165                        return this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), 
42166                        c.isComplete.call(this, l.getBuffer.call(this));
42167                    },
42168                    getmetadata: function() {
42169                        if (this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), 
42170                        Array.isArray(this.maskset.metadata)) {
42171                            var e = s.getMaskTemplate.call(this, !0, 0, !1).join("");
42172                            return this.maskset.metadata.forEach((function(t) {
42173                                return t.mask !== e || (e = t, !1);
42174                            })), e;
42175                        }
42176                        return this.maskset.metadata;
42177                    },
42178                    isValid: function(e) {
42179                        if (this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), 
42180                        e) {
42181                            var t = ("function" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split("");
42182                            u.checkVal.call(this, void 0, !0, !1, t);
42183                        } else e = this.isRTL ? l.getBuffer.call(this).slice().reverse().join("") : l.getBuffer.call(this).join("");
42184                        for (var i = l.getBuffer.call(this), n = l.determineLastRequiredPosition.call(this), a = i.length - 1; a > n && !l.isMask.call(this, a); a--) ;
42185                        return i.splice(n, a + 1 - n), c.isComplete.call(this, i) && e === (this.isRTL ? l.getBuffer.call(this).slice().reverse().join("") : l.getBuffer.call(this).join(""));
42186                    },
42187                    format: function(e, t) {
42188                        this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache);
42189                        var i = ("function" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split("");
42190                        u.checkVal.call(this, void 0, !0, !1, i);
42191                        var n = this.isRTL ? l.getBuffer.call(this).slice().reverse().join("") : l.getBuffer.call(this).join("");
42192                        return t ? {
42193                            value: n,
42194                            metadata: this.getmetadata()
42195                        } : n;
42196                    },
42197                    setValue: function(e) {
42198                        this.el && (0, a.default)(this.el).trigger("setvalue", [ e ]);
42199                    },
42200                    analyseMask: o.analyseMask
42201                }, k.extendDefaults = function(e) {
42202                    a.default.extend(!0, k.prototype.defaults, e);
42203                }, k.extendDefinitions = function(e) {
42204                    a.default.extend(!0, k.prototype.definitions, e);
42205                }, k.extendAliases = function(e) {
42206                    a.default.extend(!0, k.prototype.aliases, e);
42207                }, k.format = function(e, t, i) {
42208                    return k(t).format(e, i);
42209                }, k.unmask = function(e, t) {
42210                    return k(t).unmaskedvalue(e);
42211                }, k.isValid = function(e, t) {
42212                    return k(t).isValid(e);
42213                }, k.remove = function(e) {
42214                    "string" == typeof e && (e = g.getElementById(e) || g.querySelectorAll(e)), (e = e.nodeName ? [ e ] : e).forEach((function(e) {
42215                        e.inputmask && e.inputmask.remove();
42216                    }));
42217                }, k.setValue = function(e, t) {
42218                    "string" == typeof e && (e = g.getElementById(e) || g.querySelectorAll(e)), (e = e.nodeName ? [ e ] : e).forEach((function(e) {
42219                        e.inputmask ? e.inputmask.setValue(t) : (0, a.default)(e).trigger("setvalue", [ t ]);
42220                    }));
42221                }, k.dependencyLib = a.default, r.default.Inputmask = k;
42222                var x = k;
42223                t.default = x;
42224            },
42225            5296: function(e, t, i) {
42226                function n(e) {
42227                    return n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
42228                        return typeof e;
42229                    } : function(e) {
42230                        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
42231                    }, n(e);
42232                }
42233                var a = h(i(9380)), r = h(i(2394)), o = h(i(8741));
42234                function s(e, t) {
42235                    for (var i = 0; i < t.length; i++) {
42236                        var a = t[i];
42237                        a.enumerable = a.enumerable || !1, a.configurable = !0, "value" in a && (a.writable = !0), 
42238                        Object.defineProperty(e, (r = a.key, o = void 0, o = function(e, t) {
42239                            if ("object" !== n(e) || null === e) return e;
42240                            var i = e[Symbol.toPrimitive];
42241                            if (void 0 !== i) {
42242                                var a = i.call(e, t || "default");
42243                                if ("object" !== n(a)) return a;
42244                                throw new TypeError("@@toPrimitive must return a primitive value.");
42245                            }
42246                            return ("string" === t ? String : Number)(e);
42247                        }(r, "string"), "symbol" === n(o) ? o : String(o)), a);
42248                    }
42249                    var r, o;
42250                }
42251                function l(e) {
42252                    var t = f();
42253                    return function() {
42254                        var i, a = p(e);
42255                        if (t) {
42256                            var r = p(this).constructor;
42257                            i = Reflect.construct(a, arguments, r);
42258                        } else i = a.apply(this, arguments);
42259                        return function(e, t) {
42260                            if (t && ("object" === n(t) || "function" == typeof t)) return t;
42261                            if (void 0 !== t) throw new TypeError("Derived constructors may only return object or undefined");
42262                            return function(e) {
42263                                if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
42264                                return e;
42265                            }(e);
42266                        }(this, i);
42267                    };
42268                }
42269                function c(e) {
42270                    var t = "function" == typeof Map ? new Map : void 0;
42271                    return c = function(e) {
42272                        if (null === e || (i = e, -1 === Function.toString.call(i).indexOf("[native code]"))) return e;
42273                        var i;
42274                        if ("function" != typeof e) throw new TypeError("Super expression must either be null or a function");
42275                        if (void 0 !== t) {
42276                            if (t.has(e)) return t.get(e);
42277                            t.set(e, n);
42278                        }
42279                        function n() {
42280                            return u(e, arguments, p(this).constructor);
42281                        }
42282                        return n.prototype = Object.create(e.prototype, {
42283                            constructor: {
42284                                value: n,
42285                                enumerable: !1,
42286                                writable: !0,
42287                                configurable: !0
42288                            }
42289                        }), d(n, e);
42290                    }, c(e);
42291                }
42292                function u(e, t, i) {
42293                    return u = f() ? Reflect.construct.bind() : function(e, t, i) {
42294                        var n = [ null ];
42295                        n.push.apply(n, t);
42296                        var a = new (Function.bind.apply(e, n));
42297                        return i && d(a, i.prototype), a;
42298                    }, u.apply(null, arguments);
42299                }
42300                function f() {
42301                    if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
42302                    if (Reflect.construct.sham) return !1;
42303                    if ("function" == typeof Proxy) return !0;
42304                    try {
42305                        return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {}))), 
42306                        !0;
42307                    } catch (e) {
42308                        return !1;
42309                    }
42310                }
42311                function d(e, t) {
42312                    return d = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
42313                        return e.__proto__ = t, e;
42314                    }, d(e, t);
42315                }
42316                function p(e) {
42317                    return p = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
42318                        return e.__proto__ || Object.getPrototypeOf(e);
42319                    }, p(e);
42320                }
42321                function h(e) {
42322                    return e && e.__esModule ? e : {
42323                        default: e
42324                    };
42325                }
42326                var v = a.default.document;
42327                if (o.default && v && v.head && v.head.attachShadow && a.default.customElements && void 0 === a.default.customElements.get("input-mask")) {
42328                    var m = function(e) {
42329                        !function(e, t) {
42330                            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
42331                            e.prototype = Object.create(t && t.prototype, {
42332                                constructor: {
42333                                    value: e,
42334                                    writable: !0,
42335                                    configurable: !0
42336                                }
42337                            }), Object.defineProperty(e, "prototype", {
42338                                writable: !1
42339                            }), t && d(e, t);
42340                        }(o, e);
42341                        var t, i, n, a = l(o);
42342                        function o() {
42343                            var e;
42344                            !function(e, t) {
42345                                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
42346                            }(this, o);
42347                            var t = (e = a.call(this)).getAttributeNames(), i = e.attachShadow({
42348                                mode: "closed"
42349                            }), n = v.createElement("input");
42350                            for (var s in n.type = "text", i.appendChild(n), t) Object.prototype.hasOwnProperty.call(t, s) && n.setAttribute(t[s], e.getAttribute(t[s]));
42351                            var l = new r.default;
42352                            return l.dataAttribute = "", l.mask(n), n.inputmask.shadowRoot = i, e;
42353                        }
42354                        return t = o, i && s(t.prototype, i), n && s(t, n), Object.defineProperty(t, "prototype", {
42355                            writable: !1
42356                        }), t;
42357                    }(c(HTMLElement));
42358                    a.default.customElements.define("input-mask", m);
42359                }
42360            },
42361            2839: function(e, t) {
42362                function i(e, t) {
42363                    return function(e) {
42364                        if (Array.isArray(e)) return e;
42365                    }(e) || function(e, t) {
42366                        var i = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
42367                        if (null != i) {
42368                            var n, a, r, o, s = [], l = !0, c = !1;
42369                            try {
42370                                if (r = (i = i.call(e)).next, 0 === t) {
42371                                    if (Object(i) !== i) return;
42372                                    l = !1;
42373                                } else for (;!(l = (n = r.call(i)).done) && (s.push(n.value), s.length !== t); l = !0) ;
42374                            } catch (e) {
42375                                c = !0, a = e;
42376                            } finally {
42377                                try {
42378                                    if (!l && null != i.return && (o = i.return(), Object(o) !== o)) return;
42379                                } finally {
42380                                    if (c) throw a;
42381                                }
42382                            }
42383                            return s;
42384                        }
42385                    }(e, t) || function(e, t) {
42386                        if (!e) return;
42387                        if ("string" == typeof e) return n(e, t);
42388                        var i = Object.prototype.toString.call(e).slice(8, -1);
42389                        "Object" === i && e.constructor && (i = e.constructor.name);
42390                        if ("Map" === i || "Set" === i) return Array.from(e);
42391                        if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return n(e, t);
42392                    }(e, t) || function() {
42393                        throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
42394                    }();
42395                }
42396                function n(e, t) {
42397                    (null == t || t > e.length) && (t = e.length);
42398                    for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];
42399                    return n;
42400                }
42401                Object.defineProperty(t, "__esModule", {
42402                    value: !0
42403                }), t.keys = t.keyCode = void 0, t.toKey = function(e, t) {
42404                    return r[e] || (t ? String.fromCharCode(e) : String.fromCharCode(e).toLowerCase());
42405                }, t.toKeyCode = function(e) {
42406                    return a[e];
42407                };
42408                var a = {
42409                    AltGraph: 18,
42410                    ArrowDown: 40,
42411                    ArrowLeft: 37,
42412                    ArrowRight: 39,
42413                    ArrowUp: 38,
42414                    Backspace: 8,
42415                    BACKSPACE_SAFARI: 127,
42416                    CapsLock: 20,
42417                    Delete: 46,
42418                    End: 35,
42419                    Enter: 13,
42420                    Escape: 27,
42421                    Home: 36,
42422                    Insert: 45,
42423                    PageDown: 34,
42424                    PageUp: 33,
42425                    Space: 32,
42426                    Tab: 9,
42427                    c: 67,
42428                    x: 88,
42429                    z: 90,
42430                    Shift: 16,
42431                    Control: 17,
42432                    Alt: 18,
42433                    Pause: 19,
42434                    Meta_LEFT: 91,
42435                    Meta_RIGHT: 92,
42436                    ContextMenu: 93,
42437                    Process: 229,
42438                    Unidentified: 229,
42439                    F1: 112,
42440                    F2: 113,
42441                    F3: 114,
42442                    F4: 115,
42443                    F5: 116,
42444                    F6: 117,
42445                    F7: 118,
42446                    F8: 119,
42447                    F9: 120,
42448                    F10: 121,
42449                    F11: 122,
42450                    F12: 123
42451                };
42452                t.keyCode = a;
42453                var r = Object.entries(a).reduce((function(e, t) {
42454                    var n = i(t, 2), a = n[0], r = n[1];
42455                    return e[r] = void 0 === e[r] ? a : e[r], e;
42456                }), {}), o = Object.entries(a).reduce((function(e, t) {
42457                    var n = i(t, 2), a = n[0];
42458                    n[1];
42459                    return e[a] = "Space" === a ? " " : a, e;
42460                }), {});
42461                t.keys = o;
42462            },
42463            2391: function(e, t, i) {
42464                Object.defineProperty(t, "__esModule", {
42465                    value: !0
42466                }), t.analyseMask = function(e, t, i) {
42467                    var n, o, s, l, c, u, f = /(?:[?*+]|\{[0-9+*]+(?:,[0-9+*]*)?(?:\|[0-9+*]*)?\})|[^.?*+^${[]()|\\]+|./g, d = /\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g, p = !1, h = new a.default, v = [], m = [], g = !1;
42468                    function y(e, n, a) {
42469                        a = void 0 !== a ? a : e.matches.length;
42470                        var o = e.matches[a - 1];
42471                        if (t) {
42472                            if (0 === n.indexOf("[") || p && /\\d|\\s|\\w|\\p/i.test(n) || "." === n) {
42473                                var s = i.casing ? "i" : "";
42474                                /^\\p\{.*}$/i.test(n) && (s += "u"), e.matches.splice(a++, 0, {
42475                                    fn: new RegExp(n, s),
42476                                    static: !1,
42477                                    optionality: !1,
42478                                    newBlockMarker: void 0 === o ? "master" : o.def !== n,
42479                                    casing: null,
42480                                    def: n,
42481                                    placeholder: void 0,
42482                                    nativeDef: n
42483                                });
42484                            } else p && (n = n[n.length - 1]), n.split("").forEach((function(t, n) {
42485                                o = e.matches[a - 1], e.matches.splice(a++, 0, {
42486                                    fn: /[a-z]/i.test(i.staticDefinitionSymbol || t) ? new RegExp("[" + (i.staticDefinitionSymbol || t) + "]", i.casing ? "i" : "") : null,
42487                                    static: !0,
42488                                    optionality: !1,
42489                                    newBlockMarker: void 0 === o ? "master" : o.def !== t && !0 !== o.static,
42490                                    casing: null,
42491                                    def: i.staticDefinitionSymbol || t,
42492                                    placeholder: void 0 !== i.staticDefinitionSymbol ? t : void 0,
42493                                    nativeDef: (p ? "'" : "") + t
42494                                });
42495                            }));
42496                            p = !1;
42497                        } else {
42498                            var l = i.definitions && i.definitions[n] || i.usePrototypeDefinitions && r.default.prototype.definitions[n];
42499                            l && !p ? e.matches.splice(a++, 0, {
42500                                fn: l.validator ? "string" == typeof l.validator ? new RegExp(l.validator, i.casing ? "i" : "") : new function() {
42501                                    this.test = l.validator;
42502                                } : new RegExp("."),
42503                                static: l.static || !1,
42504                                optionality: l.optional || !1,
42505                                defOptionality: l.optional || !1,
42506                                newBlockMarker: void 0 === o || l.optional ? "master" : o.def !== (l.definitionSymbol || n),
42507                                casing: l.casing,
42508                                def: l.definitionSymbol || n,
42509                                placeholder: l.placeholder,
42510                                nativeDef: n,
42511                                generated: l.generated
42512                            }) : (e.matches.splice(a++, 0, {
42513                                fn: /[a-z]/i.test(i.staticDefinitionSymbol || n) ? new RegExp("[" + (i.staticDefinitionSymbol || n) + "]", i.casing ? "i" : "") : null,
42514                                static: !0,
42515                                optionality: !1,
42516                                newBlockMarker: void 0 === o ? "master" : o.def !== n && !0 !== o.static,
42517                                casing: null,
42518                                def: i.staticDefinitionSymbol || n,
42519                                placeholder: void 0 !== i.staticDefinitionSymbol ? n : void 0,
42520                                nativeDef: (p ? "'" : "") + n
42521                            }), p = !1);
42522                        }
42523                    }
42524                    function k() {
42525                        if (v.length > 0) {
42526                            if (y(l = v[v.length - 1], o), l.isAlternator) {
42527                                c = v.pop();
42528                                for (var e = 0; e < c.matches.length; e++) c.matches[e].isGroup && (c.matches[e].isGroup = !1);
42529                                v.length > 0 ? (l = v[v.length - 1]).matches.push(c) : h.matches.push(c);
42530                            }
42531                        } else y(h, o);
42532                    }
42533                    function b(e) {
42534                        var t = new a.default(!0);
42535                        return t.openGroup = !1, t.matches = e, t;
42536                    }
42537                    function x() {
42538                        if ((s = v.pop()).openGroup = !1, void 0 !== s) if (v.length > 0) {
42539                            if ((l = v[v.length - 1]).matches.push(s), l.isAlternator) {
42540                                for (var e = (c = v.pop()).matches[0].matches ? c.matches[0].matches.length : 1, t = 0; t < c.matches.length; t++) c.matches[t].isGroup = !1, 
42541                                c.matches[t].alternatorGroup = !1, null === i.keepStatic && e < (c.matches[t].matches ? c.matches[t].matches.length : 1) && (i.keepStatic = !0), 
42542                                e = c.matches[t].matches ? c.matches[t].matches.length : 1;
42543                                v.length > 0 ? (l = v[v.length - 1]).matches.push(c) : h.matches.push(c);
42544                            }
42545                        } else h.matches.push(s); else k();
42546                    }
42547                    function P(e) {
42548                        var t = e.pop();
42549                        return t.isQuantifier && (t = b([ e.pop(), t ])), t;
42550                    }
42551                    t && (i.optionalmarker[0] = void 0, i.optionalmarker[1] = void 0);
42552                    for (;n = t ? d.exec(e) : f.exec(e); ) {
42553                        if (o = n[0], t) {
42554                            switch (o.charAt(0)) {
42555                              case "?":
42556                                o = "{0,1}";
42557                                break;
42558
42559                              case "+":
42560                              case "*":
42561                                o = "{" + o + "}";
42562                                break;
42563
42564                              case "|":
42565                                if (0 === v.length) {
42566                                    var w = b(h.matches);
42567                                    w.openGroup = !0, v.push(w), h.matches = [], g = !0;
42568                                }
42569                            }
42570                            switch (o) {
42571                              case "\\d":
42572                                o = "[0-9]";
42573                                break;
42574
42575                              case "\\p":
42576                                o += d.exec(e)[0], o += d.exec(e)[0];
42577                            }
42578                        }
42579                        if (p) k(); else switch (o.charAt(0)) {
42580                          case "$":
42581                          case "^":
42582                            t || k();
42583                            break;
42584
42585                          case i.escapeChar:
42586                            p = !0, t && k();
42587                            break;
42588
42589                          case i.optionalmarker[1]:
42590                          case i.groupmarker[1]:
42591                            x();
42592                            break;
42593
42594                          case i.optionalmarker[0]:
42595                            v.push(new a.default(!1, !0));
42596                            break;
42597
42598                          case i.groupmarker[0]:
42599                            v.push(new a.default(!0));
42600                            break;
42601
42602                          case i.quantifiermarker[0]:
42603                            var S = new a.default(!1, !1, !0), M = (o = o.replace(/[{}?]/g, "")).split("|"), _ = M[0].split(","), O = isNaN(_[0]) ? _[0] : parseInt(_[0]), E = 1 === _.length ? O : isNaN(_[1]) ? _[1] : parseInt(_[1]), T = isNaN(M[1]) ? M[1] : parseInt(M[1]);
42604                            "*" !== O && "+" !== O || (O = "*" === E ? 0 : 1), S.quantifier = {
42605                                min: O,
42606                                max: E,
42607                                jit: T
42608                            };
42609                            var j = v.length > 0 ? v[v.length - 1].matches : h.matches;
42610                            (n = j.pop()).isGroup || (n = b([ n ])), j.push(n), j.push(S);
42611                            break;
42612
42613                          case i.alternatormarker:
42614                            if (v.length > 0) {
42615                                var A = (l = v[v.length - 1]).matches[l.matches.length - 1];
42616                                u = l.openGroup && (void 0 === A.matches || !1 === A.isGroup && !1 === A.isAlternator) ? v.pop() : P(l.matches);
42617                            } else u = P(h.matches);
42618                            if (u.isAlternator) v.push(u); else if (u.alternatorGroup ? (c = v.pop(), u.alternatorGroup = !1) : c = new a.default(!1, !1, !1, !0), 
42619                            c.matches.push(u), v.push(c), u.openGroup) {
42620                                u.openGroup = !1;
42621                                var D = new a.default(!0);
42622                                D.alternatorGroup = !0, v.push(D);
42623                            }
42624                            break;
42625
42626                          default:
42627                            k();
42628                        }
42629                    }
42630                    g && x();
42631                    for (;v.length > 0; ) s = v.pop(), h.matches.push(s);
42632                    h.matches.length > 0 && (!function e(n) {
42633                        n && n.matches && n.matches.forEach((function(a, r) {
42634                            var o = n.matches[r + 1];
42635                            (void 0 === o || void 0 === o.matches || !1 === o.isQuantifier) && a && a.isGroup && (a.isGroup = !1, 
42636                            t || (y(a, i.groupmarker[0], 0), !0 !== a.openGroup && y(a, i.groupmarker[1]))), 
42637                            e(a);
42638                        }));
42639                    }(h), m.push(h));
42640                    (i.numericInput || i.isRTL) && function e(t) {
42641                        for (var n in t.matches = t.matches.reverse(), t.matches) if (Object.prototype.hasOwnProperty.call(t.matches, n)) {
42642                            var a = parseInt(n);
42643                            if (t.matches[n].isQuantifier && t.matches[a + 1] && t.matches[a + 1].isGroup) {
42644                                var r = t.matches[n];
42645                                t.matches.splice(n, 1), t.matches.splice(a + 1, 0, r);
42646                            }
42647                            void 0 !== t.matches[n].matches ? t.matches[n] = e(t.matches[n]) : t.matches[n] = ((o = t.matches[n]) === i.optionalmarker[0] ? o = i.optionalmarker[1] : o === i.optionalmarker[1] ? o = i.optionalmarker[0] : o === i.groupmarker[0] ? o = i.groupmarker[1] : o === i.groupmarker[1] && (o = i.groupmarker[0]), 
42648                            o);
42649                        }
42650                        var o;
42651                        return t;
42652                    }(m[0]);
42653                    return m;
42654                }, t.generateMaskSet = function(e, t) {
42655                    var i;
42656                    function a(e, t) {
42657                        var i = t.repeat, n = t.groupmarker, a = t.quantifiermarker, r = t.keepStatic;
42658                        if (i > 0 || "*" === i || "+" === i) {
42659                            var l = "*" === i ? 0 : "+" === i ? 1 : i;
42660                            e = n[0] + e + n[1] + a[0] + l + "," + i + a[1];
42661                        }
42662                        if (!0 === r) {
42663                            var c = e.match(new RegExp("(.)\\[([^\\]]*)\\]", "g"));
42664                            c && c.forEach((function(t, i) {
42665                                var n = function(e, t) {
42666                                    return function(e) {
42667                                        if (Array.isArray(e)) return e;
42668                                    }(e) || function(e, t) {
42669                                        var i = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
42670                                        if (null != i) {
42671                                            var n, a, r, o, s = [], l = !0, c = !1;
42672                                            try {
42673                                                if (r = (i = i.call(e)).next, 0 === t) {
42674                                                    if (Object(i) !== i) return;
42675                                                    l = !1;
42676                                                } else for (;!(l = (n = r.call(i)).done) && (s.push(n.value), s.length !== t); l = !0) ;
42677                                            } catch (e) {
42678                                                c = !0, a = e;
42679                                            } finally {
42680                                                try {
42681                                                    if (!l && null != i.return && (o = i.return(), Object(o) !== o)) return;
42682                                                } finally {
42683                                                    if (c) throw a;
42684                                                }
42685                                            }
42686                                            return s;
42687                                        }
42688                                    }(e, t) || function(e, t) {
42689                                        if (!e) return;
42690                                        if ("string" == typeof e) return s(e, t);
42691                                        var i = Object.prototype.toString.call(e).slice(8, -1);
42692                                        "Object" === i && e.constructor && (i = e.constructor.name);
42693                                        if ("Map" === i || "Set" === i) return Array.from(e);
42694                                        if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return s(e, t);
42695                                    }(e, t) || function() {
42696                                        throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
42697                                    }();
42698                                }(t.split("["), 2), a = n[0], r = n[1];
42699                                r = r.replace("]", ""), e = e.replace(new RegExp("".concat((0, o.default)(a), "\\[").concat((0, 
42700                                o.default)(r), "\\]")), a.charAt(0) === r.charAt(0) ? "(".concat(a, "|").concat(a).concat(r, ")") : "".concat(a, "[").concat(r, "]"));
42701                            }));
42702                        }
42703                        return e;
42704                    }
42705                    function l(e, i, o) {
42706                        var s, l, c = !1;
42707                        return null !== e && "" !== e || ((c = null !== o.regex) ? e = (e = o.regex).replace(/^(\^)(.*)(\$)$/, "$2") : (c = !0, 
42708                        e = ".*")), 1 === e.length && !1 === o.greedy && 0 !== o.repeat && (o.placeholder = ""), 
42709                        e = a(e, o), l = c ? "regex_" + o.regex : o.numericInput ? e.split("").reverse().join("") : e, 
42710                        null !== o.keepStatic && (l = "ks_" + o.keepStatic + l), void 0 === r.default.prototype.masksCache[l] || !0 === t ? (s = {
42711                            mask: e,
42712                            maskToken: r.default.prototype.analyseMask(e, c, o),
42713                            validPositions: [],
42714                            _buffer: void 0,
42715                            buffer: void 0,
42716                            tests: {},
42717                            excludes: {},
42718                            metadata: i,
42719                            maskLength: void 0,
42720                            jitOffset: {}
42721                        }, !0 !== t && (r.default.prototype.masksCache[l] = s, s = n.default.extend(!0, {}, r.default.prototype.masksCache[l]))) : s = n.default.extend(!0, {}, r.default.prototype.masksCache[l]), 
42722                        s;
42723                    }
42724                    "function" == typeof e.mask && (e.mask = e.mask(e));
42725                    if (Array.isArray(e.mask)) {
42726                        if (e.mask.length > 1) {
42727                            null === e.keepStatic && (e.keepStatic = !0);
42728                            var c = e.groupmarker[0];
42729                            return (e.isRTL ? e.mask.reverse() : e.mask).forEach((function(t) {
42730                                c.length > 1 && (c += e.alternatormarker), void 0 !== t.mask && "function" != typeof t.mask ? c += t.mask : c += t;
42731                            })), l(c += e.groupmarker[1], e.mask, e);
42732                        }
42733                        e.mask = e.mask.pop();
42734                    }
42735                    i = e.mask && void 0 !== e.mask.mask && "function" != typeof e.mask.mask ? l(e.mask.mask, e.mask, e) : l(e.mask, e.mask, e);
42736                    null === e.keepStatic && (e.keepStatic = !1);
42737                    return i;
42738                };
42739                var n = l(i(4963)), a = l(i(9695)), r = l(i(2394)), o = l(i(7184));
42740                function s(e, t) {
42741                    (null == t || t > e.length) && (t = e.length);
42742                    for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];
42743                    return n;
42744                }
42745                function l(e) {
42746                    return e && e.__esModule ? e : {
42747                        default: e
42748                    };
42749                }
42750            },
42751            157: function(e, t, i) {
42752                Object.defineProperty(t, "__esModule", {
42753                    value: !0
42754                }), t.mask = function() {
42755                    var e = this, t = this.opts, i = this.el, u = this.dependencyLib;
42756                    o.EventRuler.off(i);
42757                    var f = function(t, i) {
42758                        "textarea" !== t.tagName.toLowerCase() && i.ignorables.push(n.keys.Enter);
42759                        var s = t.getAttribute("type"), l = "input" === t.tagName.toLowerCase() && i.supportsInputType.includes(s) || t.isContentEditable || "textarea" === t.tagName.toLowerCase();
42760                        if (!l) if ("input" === t.tagName.toLowerCase()) {
42761                            var c = document.createElement("input");
42762                            c.setAttribute("type", s), l = "text" === c.type, c = null;
42763                        } else l = "partial";
42764                        return !1 !== l ? function(t) {
42765                            var n, s;
42766                            function l() {
42767                                return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== a.getLastValidPosition.call(e) || !0 !== i.nullable ? (this.inputmask.shadowRoot || this.ownerDocument).activeElement === this && i.clearMaskOnLostFocus ? (e.isRTL ? r.clearOptionalTail.call(e, a.getBuffer.call(e).slice()).reverse() : r.clearOptionalTail.call(e, a.getBuffer.call(e).slice())).join("") : n.call(this) : "" : n.call(this);
42768                            }
42769                            function c(e) {
42770                                s.call(this, e), this.inputmask && (0, r.applyInputValue)(this, e);
42771                            }
42772                            if (!t.inputmask.__valueGet) {
42773                                if (!0 !== i.noValuePatching) {
42774                                    if (Object.getOwnPropertyDescriptor) {
42775                                        var f = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(t), "value") : void 0;
42776                                        f && f.get && f.set ? (n = f.get, s = f.set, Object.defineProperty(t, "value", {
42777                                            get: l,
42778                                            set: c,
42779                                            configurable: !0
42780                                        })) : "input" !== t.tagName.toLowerCase() && (n = function() {
42781                                            return this.textContent;
42782                                        }, s = function(e) {
42783                                            this.textContent = e;
42784                                        }, Object.defineProperty(t, "value", {
42785                                            get: l,
42786                                            set: c,
42787                                            configurable: !0
42788                                        }));
42789                                    } else document.__lookupGetter__ && t.__lookupGetter__("value") && (n = t.__lookupGetter__("value"), 
42790                                    s = t.__lookupSetter__("value"), t.__defineGetter__("value", l), t.__defineSetter__("value", c));
42791                                    t.inputmask.__valueGet = n, t.inputmask.__valueSet = s;
42792                                }
42793                                t.inputmask._valueGet = function(t) {
42794                                    return e.isRTL && !0 !== t ? n.call(this.el).split("").reverse().join("") : n.call(this.el);
42795                                }, t.inputmask._valueSet = function(t, i) {
42796                                    s.call(this.el, null == t ? "" : !0 !== i && e.isRTL ? t.split("").reverse().join("") : t);
42797                                }, void 0 === n && (n = function() {
42798                                    return this.value;
42799                                }, s = function(e) {
42800                                    this.value = e;
42801                                }, function(t) {
42802                                    if (u.valHooks && (void 0 === u.valHooks[t] || !0 !== u.valHooks[t].inputmaskpatch)) {
42803                                        var n = u.valHooks[t] && u.valHooks[t].get ? u.valHooks[t].get : function(e) {
42804                                            return e.value;
42805                                        }, o = u.valHooks[t] && u.valHooks[t].set ? u.valHooks[t].set : function(e, t) {
42806                                            return e.value = t, e;
42807                                        };
42808                                        u.valHooks[t] = {
42809                                            get: function(t) {
42810                                                if (t.inputmask) {
42811                                                    if (t.inputmask.opts.autoUnmask) return t.inputmask.unmaskedvalue();
42812                                                    var r = n(t);
42813                                                    return -1 !== a.getLastValidPosition.call(e, void 0, void 0, t.inputmask.maskset.validPositions) || !0 !== i.nullable ? r : "";
42814                                                }
42815                                                return n(t);
42816                                            },
42817                                            set: function(e, t) {
42818                                                var i = o(e, t);
42819                                                return e.inputmask && (0, r.applyInputValue)(e, t), i;
42820                                            },
42821                                            inputmaskpatch: !0
42822                                        };
42823                                    }
42824                                }(t.type), function(e) {
42825                                    o.EventRuler.on(e, "mouseenter", (function() {
42826                                        var e = this, t = e.inputmask._valueGet(!0);
42827                                        t != (e.inputmask.isRTL ? a.getBuffer.call(e.inputmask).slice().reverse() : a.getBuffer.call(e.inputmask)).join("") && (0, 
42828                                        r.applyInputValue)(e, t);
42829                                    }));
42830                                }(t));
42831                            }
42832                        }(t) : t.inputmask = void 0, l;
42833                    }(i, t);
42834                    if (!1 !== f) {
42835                        e.originalPlaceholder = i.placeholder, e.maxLength = void 0 !== i ? i.maxLength : void 0, 
42836                        -1 === e.maxLength && (e.maxLength = void 0), "inputMode" in i && null === i.getAttribute("inputmode") && (i.inputMode = t.inputmode, 
42837                        i.setAttribute("inputmode", t.inputmode)), !0 === f && (t.showMaskOnFocus = t.showMaskOnFocus && -1 === [ "cc-number", "cc-exp" ].indexOf(i.autocomplete), 
42838                        s.iphone && (t.insertModeVisual = !1, i.setAttribute("autocorrect", "off")), o.EventRuler.on(i, "submit", c.EventHandlers.submitEvent), 
42839                        o.EventRuler.on(i, "reset", c.EventHandlers.resetEvent), o.EventRuler.on(i, "blur", c.EventHandlers.blurEvent), 
42840                        o.EventRuler.on(i, "focus", c.EventHandlers.focusEvent), o.EventRuler.on(i, "invalid", c.EventHandlers.invalidEvent), 
42841                        o.EventRuler.on(i, "click", c.EventHandlers.clickEvent), o.EventRuler.on(i, "mouseleave", c.EventHandlers.mouseleaveEvent), 
42842                        o.EventRuler.on(i, "mouseenter", c.EventHandlers.mouseenterEvent), o.EventRuler.on(i, "paste", c.EventHandlers.pasteEvent), 
42843                        o.EventRuler.on(i, "cut", c.EventHandlers.cutEvent), o.EventRuler.on(i, "complete", t.oncomplete), 
42844                        o.EventRuler.on(i, "incomplete", t.onincomplete), o.EventRuler.on(i, "cleared", t.oncleared), 
42845                        !0 !== t.inputEventOnly && o.EventRuler.on(i, "keydown", c.EventHandlers.keyEvent), 
42846                        (s.mobile || t.inputEventOnly) && i.removeAttribute("maxLength"), o.EventRuler.on(i, "input", c.EventHandlers.inputFallBackEvent)), 
42847                        o.EventRuler.on(i, "setvalue", c.EventHandlers.setValueEvent), a.getBufferTemplate.call(e).join(""), 
42848                        e.undoValue = e._valueGet(!0);
42849                        var d = (i.inputmask.shadowRoot || i.ownerDocument).activeElement;
42850                        if ("" !== i.inputmask._valueGet(!0) || !1 === t.clearMaskOnLostFocus || d === i) {
42851                            (0, r.applyInputValue)(i, i.inputmask._valueGet(!0), t);
42852                            var p = a.getBuffer.call(e).slice();
42853                            !1 === l.isComplete.call(e, p) && t.clearIncomplete && a.resetMaskSet.call(e), t.clearMaskOnLostFocus && d !== i && (-1 === a.getLastValidPosition.call(e) ? p = [] : r.clearOptionalTail.call(e, p)), 
42854                            (!1 === t.clearMaskOnLostFocus || t.showMaskOnFocus && d === i || "" !== i.inputmask._valueGet(!0)) && (0, 
42855                            r.writeBuffer)(i, p), d === i && a.caret.call(e, i, a.seekNext.call(e, a.getLastValidPosition.call(e)));
42856                        }
42857                    }
42858                };
42859                var n = i(2839), a = i(8711), r = i(7760), o = i(9716), s = i(9845), l = i(7215), c = i(6030);
42860            },
42861            9695: function(e, t) {
42862                Object.defineProperty(t, "__esModule", {
42863                    value: !0
42864                }), t.default = function(e, t, i, n) {
42865                    this.matches = [], this.openGroup = e || !1, this.alternatorGroup = !1, this.isGroup = e || !1, 
42866                    this.isOptional = t || !1, this.isQuantifier = i || !1, this.isAlternator = n || !1, 
42867                    this.quantifier = {
42868                        min: 1,
42869                        max: 1
42870                    };
42871                };
42872            },
42873            3194: function() {
42874                Array.prototype.includes || Object.defineProperty(Array.prototype, "includes", {
42875                    value: function(e, t) {
42876                        if (null == this) throw new TypeError('"this" is null or not defined');
42877                        var i = Object(this), n = i.length >>> 0;
42878                        if (0 === n) return !1;
42879                        for (var a = 0 | t, r = Math.max(a >= 0 ? a : n - Math.abs(a), 0); r < n; ) {
42880                            if (i[r] === e) return !0;
42881                            r++;
42882                        }
42883                        return !1;
42884                    }
42885                });
42886            },
42887            9302: function() {
42888                var e = Function.bind.call(Function.call, Array.prototype.reduce), t = Function.bind.call(Function.call, Object.prototype.propertyIsEnumerable), i = Function.bind.call(Function.call, Array.prototype.concat), n = Object.keys;
42889                Object.entries || (Object.entries = function(a) {
42890                    return e(n(a), (function(e, n) {
42891                        return i(e, "string" == typeof n && t(a, n) ? [ [ n, a[n] ] ] : []);
42892                    }), []);
42893                });
42894            },
42895            7149: function() {
42896                function e(t) {
42897                    return e = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
42898                        return typeof e;
42899                    } : function(e) {
42900                        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
42901                    }, e(t);
42902                }
42903                "function" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = "object" === e("test".__proto__) ? function(e) {
42904                    return e.__proto__;
42905                } : function(e) {
42906                    return e.constructor.prototype;
42907                });
42908            },
42909            4013: function() {
42910                String.prototype.includes || (String.prototype.includes = function(e, t) {
42911                    return "number" != typeof t && (t = 0), !(t + e.length > this.length) && -1 !== this.indexOf(e, t);
42912                });
42913            },
42914            8711: function(e, t, i) {
42915                Object.defineProperty(t, "__esModule", {
42916                    value: !0
42917                }), t.caret = function(e, t, i, n, a) {
42918                    var r, o = this, s = this.opts;
42919                    if (void 0 === t) return "selectionStart" in e && "selectionEnd" in e ? (t = e.selectionStart, 
42920                    i = e.selectionEnd) : window.getSelection ? (r = window.getSelection().getRangeAt(0)).commonAncestorContainer.parentNode !== e && r.commonAncestorContainer !== e || (t = r.startOffset, 
42921                    i = r.endOffset) : document.selection && document.selection.createRange && (i = (t = 0 - (r = document.selection.createRange()).duplicate().moveStart("character", -e.inputmask._valueGet().length)) + r.text.length), 
42922                    {
42923                        begin: n ? t : c.call(o, t),
42924                        end: n ? i : c.call(o, i)
42925                    };
42926                    if (Array.isArray(t) && (i = o.isRTL ? t[0] : t[1], t = o.isRTL ? t[1] : t[0]), 
42927                    void 0 !== t.begin && (i = o.isRTL ? t.begin : t.end, t = o.isRTL ? t.end : t.begin), 
42928                    "number" == typeof t) {
42929                        t = n ? t : c.call(o, t), i = "number" == typeof (i = n ? i : c.call(o, i)) ? i : t;
42930                        var l = parseInt(((e.ownerDocument.defaultView || window).getComputedStyle ? (e.ownerDocument.defaultView || window).getComputedStyle(e, null) : e.currentStyle).fontSize) * i;
42931                        if (e.scrollLeft = l > e.scrollWidth ? l : 0, e.inputmask.caretPos = {
42932                            begin: t,
42933                            end: i
42934                        }, s.insertModeVisual && !1 === s.insertMode && t === i && (a || i++), e === (e.inputmask.shadowRoot || e.ownerDocument).activeElement) if ("setSelectionRange" in e) e.setSelectionRange(t, i); else if (window.getSelection) {
42935                            if (r = document.createRange(), void 0 === e.firstChild || null === e.firstChild) {
42936                                var u = document.createTextNode("");
42937                                e.appendChild(u);
42938                            }
42939                            r.setStart(e.firstChild, t < e.inputmask._valueGet().length ? t : e.inputmask._valueGet().length), 
42940                            r.setEnd(e.firstChild, i < e.inputmask._valueGet().length ? i : e.inputmask._valueGet().length), 
42941                            r.collapse(!0);
42942                            var f = window.getSelection();
42943                            f.removeAllRanges(), f.addRange(r);
42944                        } else e.createTextRange && ((r = e.createTextRange()).collapse(!0), r.moveEnd("character", i), 
42945                        r.moveStart("character", t), r.select());
42946                    }
42947                }, t.determineLastRequiredPosition = function(e) {
42948                    var t, i, r = this, s = r.maskset, l = r.dependencyLib, c = n.getMaskTemplate.call(r, !0, o.call(r), !0, !0), u = c.length, f = o.call(r), d = {}, p = s.validPositions[f], h = void 0 !== p ? p.locator.slice() : void 0;
42949                    for (t = f + 1; t < c.length; t++) h = (i = n.getTestTemplate.call(r, t, h, t - 1)).locator.slice(), 
42950                    d[t] = l.extend(!0, {}, i);
42951                    var v = p && void 0 !== p.alternation ? p.locator[p.alternation] : void 0;
42952                    for (t = u - 1; t > f && (((i = d[t]).match.optionality || i.match.optionalQuantifier && i.match.newBlockMarker || v && (v !== d[t].locator[p.alternation] && 1 != i.match.static || !0 === i.match.static && i.locator[p.alternation] && a.checkAlternationMatch.call(r, i.locator[p.alternation].toString().split(","), v.toString().split(",")) && "" !== n.getTests.call(r, t)[0].def)) && c[t] === n.getPlaceholder.call(r, t, i.match)); t--) u--;
42953                    return e ? {
42954                        l: u,
42955                        def: d[u] ? d[u].match : void 0
42956                    } : u;
42957                }, t.determineNewCaretPosition = function(e, t, i) {
42958                    var a = this, c = a.maskset, u = a.opts;
42959                    t && (a.isRTL ? e.end = e.begin : e.begin = e.end);
42960                    if (e.begin === e.end) {
42961                        switch (i = i || u.positionCaretOnClick) {
42962                          case "none":
42963                            break;
42964
42965                          case "select":
42966                            e = {
42967                                begin: 0,
42968                                end: r.call(a).length
42969                            };
42970                            break;
42971
42972                          case "ignore":
42973                            e.end = e.begin = l.call(a, o.call(a));
42974                            break;
42975
42976                          case "radixFocus":
42977                            if (a.clicked > 1 && 0 == c.validPositions.length) break;
42978                            if (function(e) {
42979                                if ("" !== u.radixPoint && 0 !== u.digits) {
42980                                    var t = c.validPositions;
42981                                    if (void 0 === t[e] || t[e].input === n.getPlaceholder.call(a, e)) {
42982                                        if (e < l.call(a, -1)) return !0;
42983                                        var i = r.call(a).indexOf(u.radixPoint);
42984                                        if (-1 !== i) {
42985                                            for (var o = 0, s = t.length; o < s; o++) if (t[o] && i < o && t[o].input !== n.getPlaceholder.call(a, o)) return !1;
42986                                            return !0;
42987                                        }
42988                                    }
42989                                }
42990                                return !1;
42991                            }(e.begin)) {
42992                                var f = r.call(a).join("").indexOf(u.radixPoint);
42993                                e.end = e.begin = u.numericInput ? l.call(a, f) : f;
42994                                break;
42995                            }
42996
42997                          default:
42998                            var d = e.begin, p = o.call(a, d, !0), h = l.call(a, -1 !== p || s.call(a, 0) ? p : -1);
42999                            if (d <= h) e.end = e.begin = s.call(a, d, !1, !0) ? d : l.call(a, d); else {
43000                                var v = c.validPositions[p], m = n.getTestTemplate.call(a, h, v ? v.match.locator : void 0, v), g = n.getPlaceholder.call(a, h, m.match);
43001                                if ("" !== g && r.call(a)[h] !== g && !0 !== m.match.optionalQuantifier && !0 !== m.match.newBlockMarker || !s.call(a, h, u.keepStatic, !0) && m.match.def === g) {
43002                                    var y = l.call(a, h);
43003                                    (d >= y || d === h) && (h = y);
43004                                }
43005                                e.end = e.begin = h;
43006                            }
43007                        }
43008                        return e;
43009                    }
43010                }, t.getBuffer = r, t.getBufferTemplate = function() {
43011                    var e = this.maskset;
43012                    void 0 === e._buffer && (e._buffer = n.getMaskTemplate.call(this, !1, 1), void 0 === e.buffer && (e.buffer = e._buffer.slice()));
43013                    return e._buffer;
43014                }, t.getLastValidPosition = o, t.isMask = s, t.resetMaskSet = function(e) {
43015                    var t = this.maskset;
43016                    t.buffer = void 0, !0 !== e && (t.validPositions = [], t.p = 0);
43017                }, t.seekNext = l, t.seekPrevious = function(e, t) {
43018                    var i = this, a = e - 1;
43019                    if (e <= 0) return 0;
43020                    for (;a > 0 && (!0 === t && (!0 !== n.getTest.call(i, a).match.newBlockMarker || !s.call(i, a, void 0, !0)) || !0 !== t && !s.call(i, a, void 0, !0)); ) a--;
43021                    return a;
43022                }, t.translatePosition = c;
43023                var n = i(4713), a = i(7215);
43024                function r(e) {
43025                    var t = this, i = t.maskset;
43026                    return void 0 !== i.buffer && !0 !== e || (i.buffer = n.getMaskTemplate.call(t, !0, o.call(t), !0), 
43027                    void 0 === i._buffer && (i._buffer = i.buffer.slice())), i.buffer;
43028                }
43029                function o(e, t, i) {
43030                    var n = this.maskset, a = -1, r = -1, o = i || n.validPositions;
43031                    void 0 === e && (e = -1);
43032                    for (var s = 0, l = o.length; s < l; s++) o[s] && (t || !0 !== o[s].generatedInput) && (s <= e && (a = s), 
43033                    s >= e && (r = s));
43034                    return -1 === a || a == e ? r : -1 == r || e - a < r - e ? a : r;
43035                }
43036                function s(e, t, i) {
43037                    var a = this, r = this.maskset, o = n.getTestTemplate.call(a, e).match;
43038                    if ("" === o.def && (o = n.getTest.call(a, e).match), !0 !== o.static) return o.fn;
43039                    if (!0 === i && void 0 !== r.validPositions[e] && !0 !== r.validPositions[e].generatedInput) return !0;
43040                    if (!0 !== t && e > -1) {
43041                        if (i) {
43042                            var s = n.getTests.call(a, e);
43043                            return s.length > 1 + ("" === s[s.length - 1].match.def ? 1 : 0);
43044                        }
43045                        var l = n.determineTestTemplate.call(a, e, n.getTests.call(a, e)), c = n.getPlaceholder.call(a, e, l.match);
43046                        return l.match.def !== c;
43047                    }
43048                    return !1;
43049                }
43050                function l(e, t, i) {
43051                    var a = this;
43052                    void 0 === i && (i = !0);
43053                    for (var r = e + 1; "" !== n.getTest.call(a, r).match.def && (!0 === t && (!0 !== n.getTest.call(a, r).match.newBlockMarker || !s.call(a, r, void 0, !0)) || !0 !== t && !s.call(a, r, void 0, i)); ) r++;
43054                    return r;
43055                }
43056                function c(e) {
43057                    var t = this.opts, i = this.el;
43058                    return !this.isRTL || "number" != typeof e || t.greedy && "" === t.placeholder || !i || (e = this._valueGet().length - e) < 0 && (e = 0), 
43059                    e;
43060                }
43061            },
43062            4713: function(e, t, i) {
43063                Object.defineProperty(t, "__esModule", {
43064                    value: !0
43065                }), t.determineTestTemplate = c, t.getDecisionTaker = o, t.getMaskTemplate = function(e, t, i, n, a) {
43066                    var r = this, o = this.opts, u = this.maskset, f = o.greedy;
43067                    a && o.greedy && (o.greedy = !1, r.maskset.tests = {});
43068                    t = t || 0;
43069                    var p, h, v, m, g = [], y = 0;
43070                    do {
43071                        if (!0 === e && u.validPositions[y]) h = (v = a && u.validPositions[y].match.optionality && void 0 === u.validPositions[y + 1] && (!0 === u.validPositions[y].generatedInput || u.validPositions[y].input == o.skipOptionalPartCharacter && y > 0) ? c.call(r, y, d.call(r, y, p, y - 1)) : u.validPositions[y]).match, 
43072                        p = v.locator.slice(), g.push(!0 === i ? v.input : !1 === i ? h.nativeDef : s.call(r, y, h)); else {
43073                            h = (v = l.call(r, y, p, y - 1)).match, p = v.locator.slice();
43074                            var k = !0 !== n && (!1 !== o.jitMasking ? o.jitMasking : h.jit);
43075                            (m = (m && h.static && h.def !== o.groupSeparator && null === h.fn || u.validPositions[y - 1] && h.static && h.def !== o.groupSeparator && null === h.fn) && u.tests[y]) || !1 === k || void 0 === k || "number" == typeof k && isFinite(k) && k > y ? g.push(!1 === i ? h.nativeDef : s.call(r, g.length, h)) : m = !1;
43076                        }
43077                        y++;
43078                    } while (!0 !== h.static || "" !== h.def || t > y);
43079                    "" === g[g.length - 1] && g.pop();
43080                    !1 === i && void 0 !== u.maskLength || (u.maskLength = y - 1);
43081                    return o.greedy = f, g;
43082                }, t.getPlaceholder = s, t.getTest = u, t.getTestTemplate = l, t.getTests = d, t.isSubsetOf = f;
43083                var n, a = (n = i(2394)) && n.__esModule ? n : {
43084                    default: n
43085                };
43086                function r(e, t) {
43087                    var i = (null != e.alternation ? e.mloc[o(e)] : e.locator).join("");
43088                    if ("" !== i) for (;i.length < t; ) i += "0";
43089                    return i;
43090                }
43091                function o(e) {
43092                    var t = e.locator[e.alternation];
43093                    return "string" == typeof t && t.length > 0 && (t = t.split(",")[0]), void 0 !== t ? t.toString() : "";
43094                }
43095                function s(e, t, i) {
43096                    var n = this.opts, a = this.maskset;
43097                    if (void 0 !== (t = t || u.call(this, e).match).placeholder || !0 === i) return "function" == typeof t.placeholder ? t.placeholder(n) : t.placeholder;
43098                    if (!0 === t.static) {
43099                        if (e > -1 && void 0 === a.validPositions[e]) {
43100                            var r, o = d.call(this, e), s = [];
43101                            if (o.length > 1 + ("" === o[o.length - 1].match.def ? 1 : 0)) for (var l = 0; l < o.length; l++) if ("" !== o[l].match.def && !0 !== o[l].match.optionality && !0 !== o[l].match.optionalQuantifier && (!0 === o[l].match.static || void 0 === r || !1 !== o[l].match.fn.test(r.match.def, a, e, !0, n)) && (s.push(o[l]), 
43102                            !0 === o[l].match.static && (r = o[l]), s.length > 1 && /[0-9a-bA-Z]/.test(s[0].match.def))) return n.placeholder.charAt(e % n.placeholder.length);
43103                        }
43104                        return t.def;
43105                    }
43106                    return n.placeholder.charAt(e % n.placeholder.length);
43107                }
43108                function l(e, t, i) {
43109                    return this.maskset.validPositions[e] || c.call(this, e, d.call(this, e, t ? t.slice() : t, i));
43110                }
43111                function c(e, t) {
43112                    var i = this.opts, n = 0, a = function(e, t) {
43113                        var i = 0, n = !1;
43114                        t.forEach((function(e) {
43115                            e.match.optionality && (0 !== i && i !== e.match.optionality && (n = !0), (0 === i || i > e.match.optionality) && (i = e.match.optionality));
43116                        })), i && (0 == e || 1 == t.length ? i = 0 : n || (i = 0));
43117                        return i;
43118                    }(e, t);
43119                    e = e > 0 ? e - 1 : 0;
43120                    var o, s, l, c = r(u.call(this, e));
43121                    i.greedy && t.length > 1 && "" === t[t.length - 1].match.def && (n = 1);
43122                    for (var f = 0; f < t.length - n; f++) {
43123                        var d = t[f];
43124                        o = r(d, c.length);
43125                        var p = Math.abs(o - c);
43126                        (void 0 === s || "" !== o && p < s || l && !i.greedy && l.match.optionality && l.match.optionality - a > 0 && "master" === l.match.newBlockMarker && (!d.match.optionality || d.match.optionality - a < 1 || !d.match.newBlockMarker) || l && !i.greedy && l.match.optionalQuantifier && !d.match.optionalQuantifier) && (s = p, 
43127                        l = d);
43128                    }
43129                    return l;
43130                }
43131                function u(e, t) {
43132                    var i = this.maskset;
43133                    return i.validPositions[e] ? i.validPositions[e] : (t || d.call(this, e))[0];
43134                }
43135                function f(e, t, i) {
43136                    function n(e) {
43137                        for (var t, i = [], n = -1, a = 0, r = e.length; a < r; a++) if ("-" === e.charAt(a)) for (t = e.charCodeAt(a + 1); ++n < t; ) i.push(String.fromCharCode(n)); else n = e.charCodeAt(a), 
43138                        i.push(e.charAt(a));
43139                        return i.join("");
43140                    }
43141                    return e.match.def === t.match.nativeDef || !(!(i.regex || e.match.fn instanceof RegExp && t.match.fn instanceof RegExp) || !0 === e.match.static || !0 === t.match.static) && -1 !== n(t.match.fn.toString().replace(/[[\]/]/g, "")).indexOf(n(e.match.fn.toString().replace(/[[\]/]/g, "")));
43142                }
43143                function d(e, t, i) {
43144                    var n, r, o = this, s = this.dependencyLib, l = this.maskset, u = this.opts, d = this.el, p = l.maskToken, h = t ? i : 0, v = t ? t.slice() : [ 0 ], m = [], g = !1, y = t ? t.join("") : "";
43145                    function k(t, i, r, s) {
43146                        function c(r, s, p) {
43147                            function v(e, t) {
43148                                var i = 0 === t.matches.indexOf(e);
43149                                return i || t.matches.every((function(n, a) {
43150                                    return !0 === n.isQuantifier ? i = v(e, t.matches[a - 1]) : Object.prototype.hasOwnProperty.call(n, "matches") && (i = v(e, n)), 
43151                                    !i;
43152                                })), i;
43153                            }
43154                            function x(e, t, i) {
43155                                var n, a;
43156                                if ((l.tests[e] || l.validPositions[e]) && (l.tests[e] || [ l.validPositions[e] ]).every((function(e, r) {
43157                                    if (e.mloc[t]) return n = e, !1;
43158                                    var o = void 0 !== i ? i : e.alternation, s = void 0 !== e.locator[o] ? e.locator[o].toString().indexOf(t) : -1;
43159                                    return (void 0 === a || s < a) && -1 !== s && (n = e, a = s), !0;
43160                                })), n) {
43161                                    var r = n.locator[n.alternation];
43162                                    return (n.mloc[t] || n.mloc[r] || n.locator).slice((void 0 !== i ? i : n.alternation) + 1);
43163                                }
43164                                return void 0 !== i ? x(e, t) : void 0;
43165                            }
43166                            function P(e, t) {
43167                                var i = e.alternation, n = void 0 === t || i === t.alternation && -1 === e.locator[i].toString().indexOf(t.locator[i]);
43168                                if (!n && i > t.alternation) for (var a = t.alternation; a < i; a++) if (e.locator[a] !== t.locator[a]) {
43169                                    i = a, n = !0;
43170                                    break;
43171                                }
43172                                if (n) {
43173                                    e.mloc = e.mloc || {};
43174                                    var r = e.locator[i];
43175                                    if (void 0 !== r) {
43176                                        if ("string" == typeof r && (r = r.split(",")[0]), void 0 === e.mloc[r] && (e.mloc[r] = e.locator.slice()), 
43177                                        void 0 !== t) {
43178                                            for (var o in t.mloc) "string" == typeof o && (o = o.split(",")[0]), void 0 === e.mloc[o] && (e.mloc[o] = t.mloc[o]);
43179                                            e.locator[i] = Object.keys(e.mloc).join(",");
43180                                        }
43181                                        return !0;
43182                                    }
43183                                    e.alternation = void 0;
43184                                }
43185                                return !1;
43186                            }
43187                            function w(e, t) {
43188                                if (e.locator.length !== t.locator.length) return !1;
43189                                for (var i = e.alternation + 1; i < e.locator.length; i++) if (e.locator[i] !== t.locator[i]) return !1;
43190                                return !0;
43191                            }
43192                            if (h > e + u._maxTestPos) throw "Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. " + l.mask;
43193                            if (h === e && void 0 === r.matches) {
43194                                if (m.push({
43195                                    match: r,
43196                                    locator: s.reverse(),
43197                                    cd: y,
43198                                    mloc: {}
43199                                }), !r.optionality || void 0 !== p || !(u.definitions && u.definitions[r.nativeDef] && u.definitions[r.nativeDef].optional || a.default.prototype.definitions[r.nativeDef] && a.default.prototype.definitions[r.nativeDef].optional)) return !0;
43200                                g = !0, h = e;
43201                            } else if (void 0 !== r.matches) {
43202                                if (r.isGroup && p !== r) return function() {
43203                                    if (r = c(t.matches[t.matches.indexOf(r) + 1], s, p)) return !0;
43204                                }();
43205                                if (r.isOptional) return function() {
43206                                    var t = r, a = m.length;
43207                                    if (r = k(r, i, s, p), m.length > 0) {
43208                                        if (m.forEach((function(e, t) {
43209                                            t >= a && (e.match.optionality = e.match.optionality ? e.match.optionality + 1 : 1);
43210                                        })), n = m[m.length - 1].match, void 0 !== p || !v(n, t)) return r;
43211                                        g = !0, h = e;
43212                                    }
43213                                }();
43214                                if (r.isAlternator) return function() {
43215                                    o.hasAlternator = !0;
43216                                    var n, a, v, y = r, k = [], b = m.slice(), S = s.length, M = !1, _ = i.length > 0 ? i.shift() : -1;
43217                                    if (-1 === _ || "string" == typeof _) {
43218                                        var O, E = h, T = i.slice(), j = [];
43219                                        if ("string" == typeof _) j = _.split(","); else for (O = 0; O < y.matches.length; O++) j.push(O.toString());
43220                                        if (void 0 !== l.excludes[e]) {
43221                                            for (var A = j.slice(), D = 0, B = l.excludes[e].length; D < B; D++) {
43222                                                var C = l.excludes[e][D].toString().split(":");
43223                                                s.length == C[1] && j.splice(j.indexOf(C[0]), 1);
43224                                            }
43225                                            0 === j.length && (delete l.excludes[e], j = A);
43226                                        }
43227                                        (!0 === u.keepStatic || isFinite(parseInt(u.keepStatic)) && E >= u.keepStatic) && (j = j.slice(0, 1));
43228                                        for (var R = 0; R < j.length; R++) {
43229                                            O = parseInt(j[R]), m = [], i = "string" == typeof _ && x(h, O, S) || T.slice();
43230                                            var L = y.matches[O];
43231                                            if (L && c(L, [ O ].concat(s), p)) r = !0; else if (0 === R && (M = !0), L && L.matches && L.matches.length > y.matches[0].matches.length) break;
43232                                            n = m.slice(), h = E, m = [];
43233                                            for (var F = 0; F < n.length; F++) {
43234                                                var I = n[F], N = !1;
43235                                                I.match.jit = I.match.jit || M, I.alternation = I.alternation || S, P(I);
43236                                                for (var V = 0; V < k.length; V++) {
43237                                                    var G = k[V];
43238                                                    if ("string" != typeof _ || void 0 !== I.alternation && j.includes(I.locator[I.alternation].toString())) {
43239                                                        if (I.match.nativeDef === G.match.nativeDef) {
43240                                                            N = !0, P(G, I);
43241                                                            break;
43242                                                        }
43243                                                        if (f(I, G, u)) {
43244                                                            P(I, G) && (N = !0, k.splice(k.indexOf(G), 0, I));
43245                                                            break;
43246                                                        }
43247                                                        if (f(G, I, u)) {
43248                                                            P(G, I);
43249                                                            break;
43250                                                        }
43251                                                        if (v = G, !0 === (a = I).match.static && !0 !== v.match.static && v.match.fn.test(a.match.def, l, e, !1, u, !1)) {
43252                                                            w(I, G) || void 0 !== d.inputmask.userOptions.keepStatic ? P(I, G) && (N = !0, k.splice(k.indexOf(G), 0, I)) : u.keepStatic = !0;
43253                                                            break;
43254                                                        }
43255                                                    }
43256                                                }
43257                                                N || k.push(I);
43258                                            }
43259                                        }
43260                                        m = b.concat(k), h = e, g = m.length > 0, r = k.length > 0, i = T.slice();
43261                                    } else r = c(y.matches[_] || t.matches[_], [ _ ].concat(s), p);
43262                                    if (r) return !0;
43263                                }();
43264                                if (r.isQuantifier && p !== t.matches[t.matches.indexOf(r) - 1]) return function() {
43265                                    for (var a = r, o = !1, f = i.length > 0 ? i.shift() : 0; f < (isNaN(a.quantifier.max) ? f + 1 : a.quantifier.max) && h <= e; f++) {
43266                                        var d = t.matches[t.matches.indexOf(a) - 1];
43267                                        if (r = c(d, [ f ].concat(s), d)) {
43268                                            if (m.forEach((function(t, i) {
43269                                                (n = b(d, t.match) ? t.match : m[m.length - 1].match).optionalQuantifier = f >= a.quantifier.min, 
43270                                                n.jit = (f + 1) * (d.matches.indexOf(n) + 1) > a.quantifier.jit, n.optionalQuantifier && v(n, d) && (g = !0, 
43271                                                h = e, u.greedy && null == l.validPositions[e - 1] && f > a.quantifier.min && -1 != [ "*", "+" ].indexOf(a.quantifier.max) && (m.pop(), 
43272                                                y = void 0), o = !0, r = !1), !o && n.jit && (l.jitOffset[e] = d.matches.length - d.matches.indexOf(n));
43273                                            })), o) break;
43274                                            return !0;
43275                                        }
43276                                    }
43277                                }();
43278                                if (r = k(r, i, s, p)) return !0;
43279                            } else h++;
43280                        }
43281                        for (var p = i.length > 0 ? i.shift() : 0; p < t.matches.length; p++) if (!0 !== t.matches[p].isQuantifier) {
43282                            var v = c(t.matches[p], [ p ].concat(r), s);
43283                            if (v && h === e) return v;
43284                            if (h > e) break;
43285                        }
43286                    }
43287                    function b(e, t) {
43288                        var i = -1 != e.matches.indexOf(t);
43289                        return i || e.matches.forEach((function(e, n) {
43290                            void 0 === e.matches || i || (i = b(e, t));
43291                        })), i;
43292                    }
43293                    if (e > -1) {
43294                        if (void 0 === t) {
43295                            for (var x, P = e - 1; void 0 === (x = l.validPositions[P] || l.tests[P]) && P > -1; ) P--;
43296                            void 0 !== x && P > -1 && (v = function(e, t) {
43297                                var i, n = [];
43298                                return Array.isArray(t) || (t = [ t ]), t.length > 0 && (void 0 === t[0].alternation || !0 === u.keepStatic ? 0 === (n = c.call(o, e, t.slice()).locator.slice()).length && (n = t[0].locator.slice()) : t.forEach((function(e) {
43299                                    "" !== e.def && (0 === n.length ? (i = e.alternation, n = e.locator.slice()) : e.locator[i] && -1 === n[i].toString().indexOf(e.locator[i]) && (n[i] += "," + e.locator[i]));
43300                                }))), n;
43301                            }(P, x), y = v.join(""), h = P);
43302                        }
43303                        if (l.tests[e] && l.tests[e][0].cd === y) return l.tests[e];
43304                        for (var w = v.shift(); w < p.length; w++) {
43305                            if (k(p[w], v, [ w ]) && h === e || h > e) break;
43306                        }
43307                    }
43308                    return (0 === m.length || g) && m.push({
43309                        match: {
43310                            fn: null,
43311                            static: !0,
43312                            optionality: !1,
43313                            casing: null,
43314                            def: "",
43315                            placeholder: ""
43316                        },
43317                        locator: [],
43318                        mloc: {},
43319                        cd: y
43320                    }), void 0 !== t && l.tests[e] ? r = s.extend(!0, [], m) : (l.tests[e] = s.extend(!0, [], m), 
43321                    r = l.tests[e]), m.forEach((function(e) {
43322                        e.match.optionality = e.match.defOptionality || !1;
43323                    })), r;
43324                }
43325            },
43326            7215: function(e, t, i) {
43327                Object.defineProperty(t, "__esModule", {
43328                    value: !0
43329                }), t.alternate = s, t.checkAlternationMatch = function(e, t, i) {
43330                    for (var n, a = this.opts.greedy ? t : t.slice(0, 1), r = !1, o = void 0 !== i ? i.split(",") : [], s = 0; s < o.length; s++) -1 !== (n = e.indexOf(o[s])) && e.splice(n, 1);
43331                    for (var l = 0; l < e.length; l++) if (a.includes(e[l])) {
43332                        r = !0;
43333                        break;
43334                    }
43335                    return r;
43336                }, t.handleRemove = function(e, t, i, o, l) {
43337                    var c = this, u = this.maskset, f = this.opts;
43338                    if ((f.numericInput || c.isRTL) && (t === a.keys.Backspace ? t = a.keys.Delete : t === a.keys.Delete && (t = a.keys.Backspace), 
43339                    c.isRTL)) {
43340                        var d = i.end;
43341                        i.end = i.begin, i.begin = d;
43342                    }
43343                    var p, h = r.getLastValidPosition.call(c, void 0, !0);
43344                    i.end >= r.getBuffer.call(c).length && h >= i.end && (i.end = h + 1);
43345                    t === a.keys.Backspace ? i.end - i.begin < 1 && (i.begin = r.seekPrevious.call(c, i.begin)) : t === a.keys.Delete && i.begin === i.end && (i.end = r.isMask.call(c, i.end, !0, !0) ? i.end + 1 : r.seekNext.call(c, i.end) + 1);
43346                    if (!1 !== (p = v.call(c, i))) {
43347                        if (!0 !== o && !1 !== f.keepStatic || null !== f.regex && -1 !== n.getTest.call(c, i.begin).match.def.indexOf("|")) {
43348                            var m = s.call(c, !0);
43349                            if (m) {
43350                                var g = void 0 !== m.caret ? m.caret : m.pos ? r.seekNext.call(c, m.pos.begin ? m.pos.begin : m.pos) : r.getLastValidPosition.call(c, -1, !0);
43351                                (t !== a.keys.Delete || i.begin > g) && i.begin;
43352                            }
43353                        }
43354                        !0 !== o && (u.p = t === a.keys.Delete ? i.begin + p : i.begin, u.p = r.determineNewCaretPosition.call(c, {
43355                            begin: u.p,
43356                            end: u.p
43357                        }, !1, !1 === f.insertMode && t === a.keys.Backspace ? "none" : void 0).begin);
43358                    }
43359                }, t.isComplete = c, t.isSelection = u, t.isValid = f, t.refreshFromBuffer = p, 
43360                t.revalidateMask = v;
43361                var n = i(4713), a = i(2839), r = i(8711), o = i(6030);
43362                function s(e, t, i, a, o, l) {
43363                    var c, u, d, p, h, v, m, g, y, k, b, x = this, P = this.dependencyLib, w = this.opts, S = x.maskset, M = P.extend(!0, [], S.validPositions), _ = P.extend(!0, {}, S.tests), O = !1, E = !1, T = void 0 !== o ? o : r.getLastValidPosition.call(x);
43364                    if (l && (k = l.begin, b = l.end, l.begin > l.end && (k = l.end, b = l.begin)), 
43365                    -1 === T && void 0 === o) c = 0, u = (p = n.getTest.call(x, c)).alternation; else for (;T >= 0; T--) if ((d = S.validPositions[T]) && void 0 !== d.alternation) {
43366                        if (T <= (e || 0) && p && p.locator[d.alternation] !== d.locator[d.alternation]) break;
43367                        c = T, u = S.validPositions[c].alternation, p = d;
43368                    }
43369                    if (void 0 !== u) {
43370                        m = parseInt(c), S.excludes[m] = S.excludes[m] || [], !0 !== e && S.excludes[m].push((0, 
43371                        n.getDecisionTaker)(p) + ":" + p.alternation);
43372                        var j = [], A = -1;
43373                        for (h = m; h < r.getLastValidPosition.call(x, void 0, !0) + 1; h++) -1 === A && e <= h && void 0 !== t && (j.push(t), 
43374                        A = j.length - 1), (v = S.validPositions[h]) && !0 !== v.generatedInput && (void 0 === l || h < k || h >= b) && j.push(v.input), 
43375                        delete S.validPositions[h];
43376                        for (-1 === A && void 0 !== t && (j.push(t), A = j.length - 1); void 0 !== S.excludes[m] && S.excludes[m].length < 10; ) {
43377                            for (S.tests = {}, r.resetMaskSet.call(x, !0), O = !0, h = 0; h < j.length && (g = O.caret || r.getLastValidPosition.call(x, void 0, !0) + 1, 
43378                            y = j[h], O = f.call(x, g, y, !1, a, !0)); h++) h === A && (E = O), 1 == e && O && (E = {
43379                                caretPos: h
43380                            });
43381                            if (O) break;
43382                            if (r.resetMaskSet.call(x), p = n.getTest.call(x, m), S.validPositions = P.extend(!0, [], M), 
43383                            S.tests = P.extend(!0, {}, _), !S.excludes[m]) {
43384                                E = s.call(x, e, t, i, a, m - 1, l);
43385                                break;
43386                            }
43387                            var D = (0, n.getDecisionTaker)(p);
43388                            if (-1 !== S.excludes[m].indexOf(D + ":" + p.alternation)) {
43389                                E = s.call(x, e, t, i, a, m - 1, l);
43390                                break;
43391                            }
43392                            for (S.excludes[m].push(D + ":" + p.alternation), h = m; h < r.getLastValidPosition.call(x, void 0, !0) + 1; h++) delete S.validPositions[h];
43393                        }
43394                    }
43395                    return E && !1 === w.keepStatic || delete S.excludes[m], E;
43396                }
43397                function l(e, t, i) {
43398                    var n = this.opts, r = this.maskset;
43399                    switch (n.casing || t.casing) {
43400                      case "upper":
43401                        e = e.toUpperCase();
43402                        break;
43403
43404                      case "lower":
43405                        e = e.toLowerCase();
43406                        break;
43407
43408                      case "title":
43409                        var o = r.validPositions[i - 1];
43410                        e = 0 === i || o && o.input === String.fromCharCode(a.keyCode.Space) ? e.toUpperCase() : e.toLowerCase();
43411                        break;
43412
43413                      default:
43414                        if ("function" == typeof n.casing) {
43415                            var s = Array.prototype.slice.call(arguments);
43416                            s.push(r.validPositions), e = n.casing.apply(this, s);
43417                        }
43418                    }
43419                    return e;
43420                }
43421                function c(e) {
43422                    var t = this, i = this.opts, a = this.maskset;
43423                    if ("function" == typeof i.isComplete) return i.isComplete(e, i);
43424                    if ("*" !== i.repeat) {
43425                        var o = !1, s = r.determineLastRequiredPosition.call(t, !0), l = r.seekPrevious.call(t, s.l);
43426                        if (void 0 === s.def || s.def.newBlockMarker || s.def.optionality || s.def.optionalQuantifier) {
43427                            o = !0;
43428                            for (var c = 0; c <= l; c++) {
43429                                var u = n.getTestTemplate.call(t, c).match;
43430                                if (!0 !== u.static && void 0 === a.validPositions[c] && !0 !== u.optionality && !0 !== u.optionalQuantifier || !0 === u.static && e[c] !== n.getPlaceholder.call(t, c, u)) {
43431                                    o = !1;
43432                                    break;
43433                                }
43434                            }
43435                        }
43436                        return o;
43437                    }
43438                }
43439                function u(e) {
43440                    var t = this.opts.insertMode ? 0 : 1;
43441                    return this.isRTL ? e.begin - e.end > t : e.end - e.begin > t;
43442                }
43443                function f(e, t, i, a, o, d, m) {
43444                    var g = this, y = this.dependencyLib, k = this.opts, b = g.maskset;
43445                    i = !0 === i;
43446                    var x = e;
43447                    function P(e) {
43448                        if (void 0 !== e) {
43449                            if (void 0 !== e.remove && (Array.isArray(e.remove) || (e.remove = [ e.remove ]), 
43450                            e.remove.sort((function(e, t) {
43451                                return g.isRTL ? e.pos - t.pos : t.pos - e.pos;
43452                            })).forEach((function(e) {
43453                                v.call(g, {
43454                                    begin: e,
43455                                    end: e + 1
43456                                });
43457                            })), e.remove = void 0), void 0 !== e.insert && (Array.isArray(e.insert) || (e.insert = [ e.insert ]), 
43458                            e.insert.sort((function(e, t) {
43459                                return g.isRTL ? t.pos - e.pos : e.pos - t.pos;
43460                            })).forEach((function(e) {
43461                                "" !== e.c && f.call(g, e.pos, e.c, void 0 === e.strict || e.strict, void 0 !== e.fromIsValid ? e.fromIsValid : a);
43462                            })), e.insert = void 0), e.refreshFromBuffer && e.buffer) {
43463                                var t = e.refreshFromBuffer;
43464                                p.call(g, !0 === t ? t : t.start, t.end, e.buffer), e.refreshFromBuffer = void 0;
43465                            }
43466                            void 0 !== e.rewritePosition && (x = e.rewritePosition, e = !0);
43467                        }
43468                        return e;
43469                    }
43470                    function w(t, i, o) {
43471                        var s = !1;
43472                        return n.getTests.call(g, t).every((function(c, f) {
43473                            var d = c.match;
43474                            if (r.getBuffer.call(g, !0), !1 !== (s = (!d.jit || void 0 !== b.validPositions[r.seekPrevious.call(g, t)]) && (null != d.fn ? d.fn.test(i, b, t, o, k, u.call(g, e)) : (i === d.def || i === k.skipOptionalPartCharacter) && "" !== d.def && {
43475                                c: n.getPlaceholder.call(g, t, d, !0) || d.def,
43476                                pos: t
43477                            }))) {
43478                                var p = void 0 !== s.c ? s.c : i, h = t;
43479                                return p = p === k.skipOptionalPartCharacter && !0 === d.static ? n.getPlaceholder.call(g, t, d, !0) || d.def : p, 
43480                                !0 !== (s = P(s)) && void 0 !== s.pos && s.pos !== t && (h = s.pos), !0 !== s && void 0 === s.pos && void 0 === s.c ? !1 : (!1 === v.call(g, e, y.extend({}, c, {
43481                                    input: l.call(g, p, d, h)
43482                                }), a, h) && (s = !1), !1);
43483                            }
43484                            return !0;
43485                        })), s;
43486                    }
43487                    void 0 !== e.begin && (x = g.isRTL ? e.end : e.begin);
43488                    var S = !0, M = y.extend(!0, {}, b.validPositions);
43489                    if (!1 === k.keepStatic && void 0 !== b.excludes[x] && !0 !== o && !0 !== a) for (var _ = x; _ < (g.isRTL ? e.begin : e.end); _++) void 0 !== b.excludes[_] && (b.excludes[_] = void 0, 
43490                    delete b.tests[_]);
43491                    if ("function" == typeof k.preValidation && !0 !== a && !0 !== d && (S = P(S = k.preValidation.call(g, r.getBuffer.call(g), x, t, u.call(g, e), k, b, e, i || o))), 
43492                    !0 === S) {
43493                        if (S = w(x, t, i), (!i || !0 === a) && !1 === S && !0 !== d) {
43494                            var O = b.validPositions[x];
43495                            if (!O || !0 !== O.match.static || O.match.def !== t && t !== k.skipOptionalPartCharacter) {
43496                                if (k.insertMode || void 0 === b.validPositions[r.seekNext.call(g, x)] || e.end > x) {
43497                                    var E = !1;
43498                                    if (b.jitOffset[x] && void 0 === b.validPositions[r.seekNext.call(g, x)] && !1 !== (S = f.call(g, x + b.jitOffset[x], t, !0, !0)) && (!0 !== o && (S.caret = x), 
43499                                    E = !0), e.end > x && (b.validPositions[x] = void 0), !E && !r.isMask.call(g, x, k.keepStatic && 0 === x)) for (var T = x + 1, j = r.seekNext.call(g, x, !1, 0 !== x); T <= j; T++) if (!1 !== (S = w(T, t, i))) {
43500                                        S = h.call(g, x, void 0 !== S.pos ? S.pos : T) || S, x = T;
43501                                        break;
43502                                    }
43503                                }
43504                            } else S = {
43505                                caret: r.seekNext.call(g, x)
43506                            };
43507                        }
43508                        g.hasAlternator && !0 !== o && !i && (!1 === S && k.keepStatic && (c.call(g, r.getBuffer.call(g)) || 0 === x) ? S = s.call(g, x, t, i, a, void 0, e) : (u.call(g, e) && b.tests[x] && b.tests[x].length > 1 && k.keepStatic || 1 == S && !0 !== k.numericInput && b.tests[x] && b.tests[x].length > 1 && r.getLastValidPosition.call(g, void 0, !0) > x) && (S = s.call(g, !0))), 
43509                        !0 === S && (S = {
43510                            pos: x
43511                        });
43512                    }
43513                    if ("function" == typeof k.postValidation && !0 !== a && !0 !== d) {
43514                        var A = k.postValidation.call(g, r.getBuffer.call(g, !0), void 0 !== e.begin ? g.isRTL ? e.end : e.begin : e, t, S, k, b, i, m);
43515                        void 0 !== A && (S = !0 === A ? S : A);
43516                    }
43517                    S && void 0 === S.pos && (S.pos = x), !1 === S || !0 === d ? (r.resetMaskSet.call(g, !0), 
43518                    b.validPositions = y.extend(!0, [], M)) : h.call(g, void 0, x, !0);
43519                    var D = P(S);
43520                    void 0 !== g.maxLength && (r.getBuffer.call(g).length > g.maxLength && !a && (r.resetMaskSet.call(g, !0), 
43521                    b.validPositions = y.extend(!0, [], M), D = !1));
43522                    return D;
43523                }
43524                function d(e, t, i) {
43525                    for (var a = this.maskset, r = !1, o = n.getTests.call(this, e), s = 0; s < o.length; s++) {
43526                        if (o[s].match && (o[s].match.nativeDef === t.match[i.shiftPositions ? "def" : "nativeDef"] && (!i.shiftPositions || !t.match.static) || o[s].match.nativeDef === t.match.nativeDef || i.regex && !o[s].match.static && o[s].match.fn.test(t.input, a, e, !1, i))) {
43527                            r = !0;
43528                            break;
43529                        }
43530                        if (o[s].match && o[s].match.def === t.match.nativeDef) {
43531                            r = void 0;
43532                            break;
43533                        }
43534                    }
43535                    return !1 === r && void 0 !== a.jitOffset[e] && (r = d.call(this, e + a.jitOffset[e], t, i)), 
43536                    r;
43537                }
43538                function p(e, t, i) {
43539                    var n, a, s = this, l = this.maskset, c = this.opts, u = this.dependencyLib, f = c.skipOptionalPartCharacter, d = s.isRTL ? i.slice().reverse() : i;
43540                    if (c.skipOptionalPartCharacter = "", !0 === e) r.resetMaskSet.call(s), l.tests = {}, 
43541                    e = 0, t = i.length, a = r.determineNewCaretPosition.call(s, {
43542                        begin: 0,
43543                        end: 0
43544                    }, !1).begin; else {
43545                        for (n = e; n < t; n++) delete l.validPositions[n];
43546                        a = e;
43547                    }
43548                    var p = new u.Event("keypress");
43549                    for (n = e; n < t; n++) {
43550                        p.key = d[n].toString(), s.ignorable = !1;
43551                        var h = o.EventHandlers.keypressEvent.call(s, p, !0, !1, !1, a);
43552                        !1 !== h && void 0 !== h && (a = h.forwardPosition);
43553                    }
43554                    c.skipOptionalPartCharacter = f;
43555                }
43556                function h(e, t, i) {
43557                    var a = this, o = this.maskset, s = this.dependencyLib;
43558                    if (void 0 === e) for (e = t - 1; e > 0 && !o.validPositions[e]; e--) ;
43559                    for (var l = e; l < t; l++) {
43560                        if (void 0 === o.validPositions[l] && !r.isMask.call(a, l, !1)) if (0 == l ? n.getTest.call(a, l) : o.validPositions[l - 1]) {
43561                            var c = n.getTests.call(a, l).slice();
43562                            "" === c[c.length - 1].match.def && c.pop();
43563                            var u, d = n.determineTestTemplate.call(a, l, c);
43564                            if (d && (!0 !== d.match.jit || "master" === d.match.newBlockMarker && (u = o.validPositions[l + 1]) && !0 === u.match.optionalQuantifier) && ((d = s.extend({}, d, {
43565                                input: n.getPlaceholder.call(a, l, d.match, !0) || d.match.def
43566                            })).generatedInput = !0, v.call(a, l, d, !0), !0 !== i)) {
43567                                var p = o.validPositions[t].input;
43568                                return o.validPositions[t] = void 0, f.call(a, t, p, !0, !0);
43569                            }
43570                        }
43571                    }
43572                }
43573                function v(e, t, i, a) {
43574                    var o = this, s = this.maskset, l = this.opts, c = this.dependencyLib;
43575                    function u(e, t, i) {
43576                        var n = t[e];
43577                        if (void 0 !== n && !0 === n.match.static && !0 !== n.match.optionality && (void 0 === t[0] || void 0 === t[0].alternation)) {
43578                            var a = i.begin <= e - 1 ? t[e - 1] && !0 === t[e - 1].match.static && t[e - 1] : t[e - 1], r = i.end > e + 1 ? t[e + 1] && !0 === t[e + 1].match.static && t[e + 1] : t[e + 1];
43579                            return a && r;
43580                        }
43581                        return !1;
43582                    }
43583                    var p = 0, h = void 0 !== e.begin ? e.begin : e, v = void 0 !== e.end ? e.end : e, m = !0;
43584                    if (e.begin > e.end && (h = e.end, v = e.begin), a = void 0 !== a ? a : h, void 0 === i && (h !== v || l.insertMode && void 0 !== s.validPositions[a] || void 0 === t || t.match.optionalQuantifier || t.match.optionality)) {
43585                        var g, y = c.extend(!0, {}, s.validPositions), k = r.getLastValidPosition.call(o, void 0, !0);
43586                        for (s.p = h, g = k; g >= h; g--) delete s.validPositions[g], void 0 === t && delete s.tests[g + 1];
43587                        var b, x, P = a, w = P;
43588                        for (t && (s.validPositions[a] = c.extend(!0, {}, t), w++, P++), g = t ? v : v - 1; g <= k; g++) {
43589                            if (void 0 !== (b = y[g]) && !0 !== b.generatedInput && (g >= v || g >= h && u(g, y, {
43590                                begin: h,
43591                                end: v
43592                            }))) {
43593                                for (;"" !== n.getTest.call(o, w).match.def; ) {
43594                                    if (!1 !== (x = d.call(o, w, b, l)) || "+" === b.match.def) {
43595                                        "+" === b.match.def && r.getBuffer.call(o, !0);
43596                                        var S = f.call(o, w, b.input, "+" !== b.match.def, !0);
43597                                        if (m = !1 !== S, P = (S.pos || w) + 1, !m && x) break;
43598                                    } else m = !1;
43599                                    if (m) {
43600                                        void 0 === t && b.match.static && g === e.begin && p++;
43601                                        break;
43602                                    }
43603                                    if (!m && r.getBuffer.call(o), w > s.maskLength) break;
43604                                    w++;
43605                                }
43606                                "" == n.getTest.call(o, w).match.def && (m = !1), w = P;
43607                            }
43608                            if (!m) break;
43609                        }
43610                        if (!m) return s.validPositions = c.extend(!0, [], y), r.resetMaskSet.call(o, !0), 
43611                        !1;
43612                    } else t && n.getTest.call(o, a).match.cd === t.match.cd && (s.validPositions[a] = c.extend(!0, {}, t));
43613                    return r.resetMaskSet.call(o, !0), p;
43614                }
43615            }
43616        }, t = {};
43617        function i(n) {
43618            var a = t[n];
43619            if (void 0 !== a) return a.exports;
43620            var r = t[n] = {
43621                exports: {}
43622            };
43623            return e[n](r, r.exports, i), r.exports;
43624        }
43625        var n = {};
43626        return function() {
43627            var e, t = n;
43628            Object.defineProperty(t, "__esModule", {
43629                value: !0
43630            }), t.default = void 0, i(7149), i(3194), i(9302), i(4013), i(3851), i(219), i(207), 
43631            i(5296);
43632            var a = ((e = i(2394)) && e.__esModule ? e : {
43633                default: e
43634            }).default;
43635            t.default = a;
43636        }(), n;
43637    }();
43638}));
43639
43640/***/ }),
43641
vendor: 285,755 bytes, lines 43642-54368
43642/***/ "./node_modules/jquery/dist/jquery.js":
43643/*!********************************************!*\
43644  !*** ./node_modules/jquery/dist/jquery.js ***!
43645  \********************************************/
43646/***/ (function(module, exports) {
43647
43648var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
43649 * jQuery JavaScript Library v3.7.1
43650 * https://jquery.com/
43651 *
43652 * Copyright OpenJS Foundation and other contributors
43653 * Released under the MIT license
43654 * https://jquery.org/license
43655 *
43656 * Date: 2023-08-28T13:37Z
43657 */
43658( function( global, factory ) {
43659
43660	"use strict";
43661
43662	if (  true && typeof module.exports === "object" ) {
43663
43664		// For CommonJS and CommonJS-like environments where a proper `window`
43665		// is present, execute the factory and get jQuery.
43666		// For environments that do not have a `window` with a `document`
43667		// (such as Node.js), expose a factory as module.exports.
43668		// This accentuates the need for the creation of a real `window`.
43669		// e.g. var jQuery = require("jquery")(window);
43670		// See ticket trac-14549 for more info.
43671		module.exports = global.document ?
43672			factory( global, true ) :
43673			function( w ) {
43674				if ( !w.document ) {
43675					throw new Error( "jQuery requires a window with a document" );
43676				}
43677				return factory( w );
43678			};
43679	} else {
43680		factory( global );
43681	}
43682
43683// Pass this if window is not defined yet
43684} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
43685
43686// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
43687// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
43688// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
43689// enough that all such attempts are guarded in a try block.
43690"use strict";
43691
43692var arr = [];
43693
43694var getProto = Object.getPrototypeOf;
43695
43696var slice = arr.slice;
43697
43698var flat = arr.flat ? function( array ) {
43699	return arr.flat.call( array );
43700} : function( array ) {
43701	return arr.concat.apply( [], array );
43702};
43703
43704
43705var push = arr.push;
43706
43707var indexOf = arr.indexOf;
43708
43709var class2type = {};
43710
43711var toString = class2type.toString;
43712
43713var hasOwn = class2type.hasOwnProperty;
43714
43715var fnToString = hasOwn.toString;
43716
43717var ObjectFunctionString = fnToString.call( Object );
43718
43719var support = {};
43720
43721var isFunction = function isFunction( obj ) {
43722
43723		// Support: Chrome <=57, Firefox <=52
43724		// In some browsers, typeof returns "function" for HTML <object> elements
43725		// (i.e., `typeof document.createElement( "object" ) === "function"`).
43726		// We don't want to classify *any* DOM node as a function.
43727		// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
43728		// Plus for old WebKit, typeof returns "function" for HTML collections
43729		// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
43730		return typeof obj === "function" && typeof obj.nodeType !== "number" &&
43731			typeof obj.item !== "function";
43732	};
43733
43734
43735var isWindow = function isWindow( obj ) {
43736		return obj != null && obj === obj.window;
43737	};
43738
43739
43740var document = window.document;
43741
43742
43743
43744	var preservedScriptAttributes = {
43745		type: true,
43746		src: true,
43747		nonce: true,
43748		noModule: true
43749	};
43750
43751	function DOMEval( code, node, doc ) {
43752		doc = doc || document;
43753
43754		var i, val,
43755			script = doc.createElement( "script" );
43756
43757		script.text = code;
43758		if ( node ) {
43759			for ( i in preservedScriptAttributes ) {
43760
43761				// Support: Firefox 64+, Edge 18+
43762				// Some browsers don't support the "nonce" property on scripts.
43763				// On the other hand, just using `getAttribute` is not enough as
43764				// the `nonce` attribute is reset to an empty string whenever it
43765				// becomes browsing-context connected.
43766				// See https://github.com/whatwg/html/issues/2369
43767				// See https://html.spec.whatwg.org/#nonce-attributes
43768				// The `node.getAttribute` check was added for the sake of
43769				// `jQuery.globalEval` so that it can fake a nonce-containing node
43770				// via an object.
43771				val = node[ i ] || node.getAttribute && node.getAttribute( i );
43772				if ( val ) {
43773					script.setAttribute( i, val );
43774				}
43775			}
43776		}
43777		doc.head.appendChild( script ).parentNode.removeChild( script );
43778	}
43779
43780
43781function toType( obj ) {
43782	if ( obj == null ) {
43783		return obj + "";
43784	}
43785
43786	// Support: Android <=2.3 only (functionish RegExp)
43787	return typeof obj === "object" || typeof obj === "function" ?
43788		class2type[ toString.call( obj ) ] || "object" :
43789		typeof obj;
43790}
43791/* global Symbol */
43792// Defining this global in .eslintrc.json would create a danger of using the global
43793// unguarded in another place, it seems safer to define global only for this module
43794
43795
43796
43797var version = "3.7.1",
43798
43799	rhtmlSuffix = /HTML$/i,
43800
43801	// Define a local copy of jQuery
43802	jQuery = function( selector, context ) {
43803
43804		// The jQuery object is actually just the init constructor 'enhanced'
43805		// Need init if jQuery is called (just allow error to be thrown if not included)
43806		return new jQuery.fn.init( selector, context );
43807	};
43808
43809jQuery.fn = jQuery.prototype = {
43810
43811	// The current version of jQuery being used
43812	jquery: version,
43813
43814	constructor: jQuery,
43815
43816	// The default length of a jQuery object is 0
43817	length: 0,
43818
43819	toArray: function() {
43820		return slice.call( this );
43821	},
43822
43823	// Get the Nth element in the matched element set OR
43824	// Get the whole matched element set as a clean array
43825	get: function( num ) {
43826
43827		// Return all the elements in a clean array
43828		if ( num == null ) {
43829			return slice.call( this );
43830		}
43831
43832		// Return just the one element from the set
43833		return num < 0 ? this[ num + this.length ] : this[ num ];
43834	},
43835
43836	// Take an array of elements and push it onto the stack
43837	// (returning the new matched element set)
43838	pushStack: function( elems ) {
43839
43840		// Build a new jQuery matched element set
43841		var ret = jQuery.merge( this.constructor(), elems );
43842
43843		// Add the old object onto the stack (as a reference)
43844		ret.prevObject = this;
43845
43846		// Return the newly-formed element set
43847		return ret;
43848	},
43849
43850	// Execute a callback for every element in the matched set.
43851	each: function( callback ) {
43852		return jQuery.each( this, callback );
43853	},
43854
43855	map: function( callback ) {
43856		return this.pushStack( jQuery.map( this, function( elem, i ) {
43857			return callback.call( elem, i, elem );
43858		} ) );
43859	},
43860
43861	slice: function() {
43862		return this.pushStack( slice.apply( this, arguments ) );
43863	},
43864
43865	first: function() {
43866		return this.eq( 0 );
43867	},
43868
43869	last: function() {
43870		return this.eq( -1 );
43871	},
43872
43873	even: function() {
43874		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
43875			return ( i + 1 ) % 2;
43876		} ) );
43877	},
43878
43879	odd: function() {
43880		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
43881			return i % 2;
43882		} ) );
43883	},
43884
43885	eq: function( i ) {
43886		var len = this.length,
43887			j = +i + ( i < 0 ? len : 0 );
43888		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
43889	},
43890
43891	end: function() {
43892		return this.prevObject || this.constructor();
43893	},
43894
43895	// For internal use only.
43896	// Behaves like an Array's method, not like a jQuery method.
43897	push: push,
43898	sort: arr.sort,
43899	splice: arr.splice
43900};
43901
43902jQuery.extend = jQuery.fn.extend = function() {
43903	var options, name, src, copy, copyIsArray, clone,
43904		target = arguments[ 0 ] || {},
43905		i = 1,
43906		length = arguments.length,
43907		deep = false;
43908
43909	// Handle a deep copy situation
43910	if ( typeof target === "boolean" ) {
43911		deep = target;
43912
43913		// Skip the boolean and the target
43914		target = arguments[ i ] || {};
43915		i++;
43916	}
43917
43918	// Handle case when target is a string or something (possible in deep copy)
43919	if ( typeof target !== "object" && !isFunction( target ) ) {
43920		target = {};
43921	}
43922
43923	// Extend jQuery itself if only one argument is passed
43924	if ( i === length ) {
43925		target = this;
43926		i--;
43927	}
43928
43929	for ( ; i < length; i++ ) {
43930
43931		// Only deal with non-null/undefined values
43932		if ( ( options = arguments[ i ] ) != null ) {
43933
43934			// Extend the base object
43935			for ( name in options ) {
43936				copy = options[ name ];
43937
43938				// Prevent Object.prototype pollution
43939				// Prevent never-ending loop
43940				if ( name === "__proto__" || target === copy ) {
43941					continue;
43942				}
43943
43944				// Recurse if we're merging plain objects or arrays
43945				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
43946					( copyIsArray = Array.isArray( copy ) ) ) ) {
43947					src = target[ name ];
43948
43949					// Ensure proper type for the source value
43950					if ( copyIsArray && !Array.isArray( src ) ) {
43951						clone = [];
43952					} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
43953						clone = {};
43954					} else {
43955						clone = src;
43956					}
43957					copyIsArray = false;
43958
43959					// Never move original objects, clone them
43960					target[ name ] = jQuery.extend( deep, clone, copy );
43961
43962				// Don't bring in undefined values
43963				} else if ( copy !== undefined ) {
43964					target[ name ] = copy;
43965				}
43966			}
43967		}
43968	}
43969
43970	// Return the modified object
43971	return target;
43972};
43973
43974jQuery.extend( {
43975
43976	// Unique for each copy of jQuery on the page
43977	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
43978
43979	// Assume jQuery is ready without the ready module
43980	isReady: true,
43981
43982	error: function( msg ) {
43983		throw new Error( msg );
43984	},
43985
43986	noop: function() {},
43987
43988	isPlainObject: function( obj ) {
43989		var proto, Ctor;
43990
43991		// Detect obvious negatives
43992		// Use toString instead of jQuery.type to catch host objects
43993		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
43994			return false;
43995		}
43996
43997		proto = getProto( obj );
43998
43999		// Objects with no prototype (e.g., `Object.create( null )`) are plain
44000		if ( !proto ) {
44001			return true;
44002		}
44003
44004		// Objects with prototype are plain iff they were constructed by a global Object function
44005		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
44006		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
44007	},
44008
44009	isEmptyObject: function( obj ) {
44010		var name;
44011
44012		for ( name in obj ) {
44013			return false;
44014		}
44015		return true;
44016	},
44017
44018	// Evaluates a script in a provided context; falls back to the global one
44019	// if not specified.
44020	globalEval: function( code, options, doc ) {
44021		DOMEval( code, { nonce: options && options.nonce }, doc );
44022	},
44023
44024	each: function( obj, callback ) {
44025		var length, i = 0;
44026
44027		if ( isArrayLike( obj ) ) {
44028			length = obj.length;
44029			for ( ; i < length; i++ ) {
44030				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
44031					break;
44032				}
44033			}
44034		} else {
44035			for ( i in obj ) {
44036				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
44037					break;
44038				}
44039			}
44040		}
44041
44042		return obj;
44043	},
44044
44045
44046	// Retrieve the text value of an array of DOM nodes
44047	text: function( elem ) {
44048		var node,
44049			ret = "",
44050			i = 0,
44051			nodeType = elem.nodeType;
44052
44053		if ( !nodeType ) {
44054
44055			// If no nodeType, this is expected to be an array
44056			while ( ( node = elem[ i++ ] ) ) {
44057
44058				// Do not traverse comment nodes
44059				ret += jQuery.text( node );
44060			}
44061		}
44062		if ( nodeType === 1 || nodeType === 11 ) {
44063			return elem.textContent;
44064		}
44065		if ( nodeType === 9 ) {
44066			return elem.documentElement.textContent;
44067		}
44068		if ( nodeType === 3 || nodeType === 4 ) {
44069			return elem.nodeValue;
44070		}
44071
44072		// Do not include comment or processing instruction nodes
44073
44074		return ret;
44075	},
44076
44077	// results is for internal usage only
44078	makeArray: function( arr, results ) {
44079		var ret = results || [];
44080
44081		if ( arr != null ) {
44082			if ( isArrayLike( Object( arr ) ) ) {
44083				jQuery.merge( ret,
44084					typeof arr === "string" ?
44085						[ arr ] : arr
44086				);
44087			} else {
44088				push.call( ret, arr );
44089			}
44090		}
44091
44092		return ret;
44093	},
44094
44095	inArray: function( elem, arr, i ) {
44096		return arr == null ? -1 : indexOf.call( arr, elem, i );
44097	},
44098
44099	isXMLDoc: function( elem ) {
44100		var namespace = elem && elem.namespaceURI,
44101			docElem = elem && ( elem.ownerDocument || elem ).documentElement;
44102
44103		// Assume HTML when documentElement doesn't yet exist, such as inside
44104		// document fragments.
44105		return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" );
44106	},
44107
44108	// Support: Android <=4.0 only, PhantomJS 1 only
44109	// push.apply(_, arraylike) throws on ancient WebKit
44110	merge: function( first, second ) {
44111		var len = +second.length,
44112			j = 0,
44113			i = first.length;
44114
44115		for ( ; j < len; j++ ) {
44116			first[ i++ ] = second[ j ];
44117		}
44118
44119		first.length = i;
44120
44121		return first;
44122	},
44123
44124	grep: function( elems, callback, invert ) {
44125		var callbackInverse,
44126			matches = [],
44127			i = 0,
44128			length = elems.length,
44129			callbackExpect = !invert;
44130
44131		// Go through the array, only saving the items
44132		// that pass the validator function
44133		for ( ; i < length; i++ ) {
44134			callbackInverse = !callback( elems[ i ], i );
44135			if ( callbackInverse !== callbackExpect ) {
44136				matches.push( elems[ i ] );
44137			}
44138		}
44139
44140		return matches;
44141	},
44142
44143	// arg is for internal usage only
44144	map: function( elems, callback, arg ) {
44145		var length, value,
44146			i = 0,
44147			ret = [];
44148
44149		// Go through the array, translating each of the items to their new values
44150		if ( isArrayLike( elems ) ) {
44151			length = elems.length;
44152			for ( ; i < length; i++ ) {
44153				value = callback( elems[ i ], i, arg );
44154
44155				if ( value != null ) {
44156					ret.push( value );
44157				}
44158			}
44159
44160		// Go through every key on the object,
44161		} else {
44162			for ( i in elems ) {
44163				value = callback( elems[ i ], i, arg );
44164
44165				if ( value != null ) {
44166					ret.push( value );
44167				}
44168			}
44169		}
44170
44171		// Flatten any nested arrays
44172		return flat( ret );
44173	},
44174
44175	// A global GUID counter for objects
44176	guid: 1,
44177
44178	// jQuery.support is not used in Core but other projects attach their
44179	// properties to it so it needs to exist.
44180	support: support
44181} );
44182
44183if ( typeof Symbol === "function" ) {
44184	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
44185}
44186
44187// Populate the class2type map
44188jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
44189	function( _i, name ) {
44190		class2type[ "[object " + name + "]" ] = name.toLowerCase();
44191	} );
44192
44193function isArrayLike( obj ) {
44194
44195	// Support: real iOS 8.2 only (not reproducible in simulator)
44196	// `in` check used to prevent JIT error (gh-2145)
44197	// hasOwn isn't used here due to false negatives
44198	// regarding Nodelist length in IE
44199	var length = !!obj && "length" in obj && obj.length,
44200		type = toType( obj );
44201
44202	if ( isFunction( obj ) || isWindow( obj ) ) {
44203		return false;
44204	}
44205
44206	return type === "array" || length === 0 ||
44207		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
44208}
44209
44210
44211function nodeName( elem, name ) {
44212
44213	return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
44214
44215}
44216var pop = arr.pop;
44217
44218
44219var sort = arr.sort;
44220
44221
44222var splice = arr.splice;
44223
44224
44225var whitespace = "[\\x20\\t\\r\\n\\f]";
44226
44227
44228var rtrimCSS = new RegExp(
44229	"^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
44230	"g"
44231);
44232
44233
44234
44235
44236// Note: an element does not contain itself
44237jQuery.contains = function( a, b ) {
44238	var bup = b && b.parentNode;
44239
44240	return a === bup || !!( bup && bup.nodeType === 1 && (
44241
44242		// Support: IE 9 - 11+
44243		// IE doesn't have `contains` on SVG.
44244		a.contains ?
44245			a.contains( bup ) :
44246			a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
44247	) );
44248};
44249
44250
44251
44252
44253// CSS string/identifier serialization
44254// https://drafts.csswg.org/cssom/#common-serializing-idioms
44255var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
44256
44257function fcssescape( ch, asCodePoint ) {
44258	if ( asCodePoint ) {
44259
44260		// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
44261		if ( ch === "\0" ) {
44262			return "\uFFFD";
44263		}
44264
44265		// Control characters and (dependent upon position) numbers get escaped as code points
44266		return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
44267	}
44268
44269	// Other potentially-special ASCII characters get backslash-escaped
44270	return "\\" + ch;
44271}
44272
44273jQuery.escapeSelector = function( sel ) {
44274	return ( sel + "" ).replace( rcssescape, fcssescape );
44275};
44276
44277
44278
44279
44280var preferredDoc = document,
44281	pushNative = push;
44282
44283( function() {
44284
44285var i,
44286	Expr,
44287	outermostContext,
44288	sortInput,
44289	hasDuplicate,
44290	push = pushNative,
44291
44292	// Local document vars
44293	document,
44294	documentElement,
44295	documentIsHTML,
44296	rbuggyQSA,
44297	matches,
44298
44299	// Instance-specific data
44300	expando = jQuery.expando,
44301	dirruns = 0,
44302	done = 0,
44303	classCache = createCache(),
44304	tokenCache = createCache(),
44305	compilerCache = createCache(),
44306	nonnativeSelectorCache = createCache(),
44307	sortOrder = function( a, b ) {
44308		if ( a === b ) {
44309			hasDuplicate = true;
44310		}
44311		return 0;
44312	},
44313
44314	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" +
44315		"loop|multiple|open|readonly|required|scoped",
44316
44317	// Regular expressions
44318
44319	// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
44320	identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
44321		"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
44322
44323	// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors
44324	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
44325
44326		// Operator (capture 2)
44327		"*([*^$|!~]?=)" + whitespace +
44328
44329		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
44330		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
44331		whitespace + "*\\]",
44332
44333	pseudos = ":(" + identifier + ")(?:\\((" +
44334
44335		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
44336		// 1. quoted (capture 3; capture 4 or capture 5)
44337		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
44338
44339		// 2. simple (capture 6)
44340		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
44341
44342		// 3. anything else (capture 2)
44343		".*" +
44344		")\\)|)",
44345
44346	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
44347	rwhitespace = new RegExp( whitespace + "+", "g" ),
44348
44349	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
44350	rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" +
44351		whitespace + "*" ),
44352	rdescend = new RegExp( whitespace + "|>" ),
44353
44354	rpseudo = new RegExp( pseudos ),
44355	ridentifier = new RegExp( "^" + identifier + "$" ),
44356
44357	matchExpr = {
44358		ID: new RegExp( "^#(" + identifier + ")" ),
44359		CLASS: new RegExp( "^\\.(" + identifier + ")" ),
44360		TAG: new RegExp( "^(" + identifier + "|[*])" ),
44361		ATTR: new RegExp( "^" + attributes ),
44362		PSEUDO: new RegExp( "^" + pseudos ),
44363		CHILD: new RegExp(
44364			"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
44365				whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
44366				whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
44367		bool: new RegExp( "^(?:" + booleans + ")$", "i" ),
44368
44369		// For use in libraries implementing .is()
44370		// We use this for POS matching in `select`
44371		needsContext: new RegExp( "^" + whitespace +
44372			"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
44373			"*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
44374	},
44375
44376	rinputs = /^(?:input|select|textarea|button)$/i,
44377	rheader = /^h\d$/i,
44378
44379	// Easily-parseable/retrievable ID or TAG or CLASS selectors
44380	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
44381
44382	rsibling = /[+~]/,
44383
44384	// CSS escapes
44385	// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters
44386	runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace +
44387		"?|\\\\([^\\r\\n\\f])", "g" ),
44388	funescape = function( escape, nonHex ) {
44389		var high = "0x" + escape.slice( 1 ) - 0x10000;
44390
44391		if ( nonHex ) {
44392
44393			// Strip the backslash prefix from a non-hex escape sequence
44394			return nonHex;
44395		}
44396
44397		// Replace a hexadecimal escape sequence with the encoded Unicode code point
44398		// Support: IE <=11+
44399		// For values outside the Basic Multilingual Plane (BMP), manually construct a
44400		// surrogate pair
44401		return high < 0 ?
44402			String.fromCharCode( high + 0x10000 ) :
44403			String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
44404	},
44405
44406	// Used for iframes; see `setDocument`.
44407	// Support: IE 9 - 11+, Edge 12 - 18+
44408	// Removing the function wrapper causes a "Permission Denied"
44409	// error in IE/Edge.
44410	unloadHandler = function() {
44411		setDocument();
44412	},
44413
44414	inDisabledFieldset = addCombinator(
44415		function( elem ) {
44416			return elem.disabled === true && nodeName( elem, "fieldset" );
44417		},
44418		{ dir: "parentNode", next: "legend" }
44419	);
44420
44421// Support: IE <=9 only
44422// Accessing document.activeElement can throw unexpectedly
44423// https://bugs.jquery.com/ticket/13393
44424function safeActiveElement() {
44425	try {
44426		return document.activeElement;
44427	} catch ( err ) { }
44428}
44429
44430// Optimize for push.apply( _, NodeList )
44431try {
44432	push.apply(
44433		( arr = slice.call( preferredDoc.childNodes ) ),
44434		preferredDoc.childNodes
44435	);
44436
44437	// Support: Android <=4.0
44438	// Detect silently failing push.apply
44439	// eslint-disable-next-line no-unused-expressions
44440	arr[ preferredDoc.childNodes.length ].nodeType;
44441} catch ( e ) {
44442	push = {
44443		apply: function( target, els ) {
44444			pushNative.apply( target, slice.call( els ) );
44445		},
44446		call: function( target ) {
44447			pushNative.apply( target, slice.call( arguments, 1 ) );
44448		}
44449	};
44450}
44451
44452function find( selector, context, results, seed ) {
44453	var m, i, elem, nid, match, groups, newSelector,
44454		newContext = context && context.ownerDocument,
44455
44456		// nodeType defaults to 9, since context defaults to document
44457		nodeType = context ? context.nodeType : 9;
44458
44459	results = results || [];
44460
44461	// Return early from calls with invalid selector or context
44462	if ( typeof selector !== "string" || !selector ||
44463		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
44464
44465		return results;
44466	}
44467
44468	// Try to shortcut find operations (as opposed to filters) in HTML documents
44469	if ( !seed ) {
44470		setDocument( context );
44471		context = context || document;
44472
44473		if ( documentIsHTML ) {
44474
44475			// If the selector is sufficiently simple, try using a "get*By*" DOM method
44476			// (excepting DocumentFragment context, where the methods don't exist)
44477			if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
44478
44479				// ID selector
44480				if ( ( m = match[ 1 ] ) ) {
44481
44482					// Document context
44483					if ( nodeType === 9 ) {
44484						if ( ( elem = context.getElementById( m ) ) ) {
44485
44486							// Support: IE 9 only
44487							// getElementById can match elements by name instead of ID
44488							if ( elem.id === m ) {
44489								push.call( results, elem );
44490								return results;
44491							}
44492						} else {
44493							return results;
44494						}
44495
44496					// Element context
44497					} else {
44498
44499						// Support: IE 9 only
44500						// getElementById can match elements by name instead of ID
44501						if ( newContext && ( elem = newContext.getElementById( m ) ) &&
44502							find.contains( context, elem ) &&
44503							elem.id === m ) {
44504
44505							push.call( results, elem );
44506							return results;
44507						}
44508					}
44509
44510				// Type selector
44511				} else if ( match[ 2 ] ) {
44512					push.apply( results, context.getElementsByTagName( selector ) );
44513					return results;
44514
44515				// Class selector
44516				} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {
44517					push.apply( results, context.getElementsByClassName( m ) );
44518					return results;
44519				}
44520			}
44521
44522			// Take advantage of querySelectorAll
44523			if ( !nonnativeSelectorCache[ selector + " " ] &&
44524				( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {
44525
44526				newSelector = selector;
44527				newContext = context;
44528
44529				// qSA considers elements outside a scoping root when evaluating child or
44530				// descendant combinators, which is not what we want.
44531				// In such cases, we work around the behavior by prefixing every selector in the
44532				// list with an ID selector referencing the scope context.
44533				// The technique has to be used as well when a leading combinator is used
44534				// as such selectors are not recognized by querySelectorAll.
44535				// Thanks to Andrew Dupont for this technique.
44536				if ( nodeType === 1 &&
44537					( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {
44538
44539					// Expand context for sibling selectors
44540					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
44541						context;
44542
44543					// We can use :scope instead of the ID hack if the browser
44544					// supports it & if we're not changing the context.
44545					// Support: IE 11+, Edge 17 - 18+
44546					// IE/Edge sometimes throw a "Permission denied" error when
44547					// strict-comparing two documents; shallow comparisons work.
44548					// eslint-disable-next-line eqeqeq
44549					if ( newContext != context || !support.scope ) {
44550
44551						// Capture the context ID, setting it first if necessary
44552						if ( ( nid = context.getAttribute( "id" ) ) ) {
44553							nid = jQuery.escapeSelector( nid );
44554						} else {
44555							context.setAttribute( "id", ( nid = expando ) );
44556						}
44557					}
44558
44559					// Prefix every selector in the list
44560					groups = tokenize( selector );
44561					i = groups.length;
44562					while ( i-- ) {
44563						groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
44564							toSelector( groups[ i ] );
44565					}
44566					newSelector = groups.join( "," );
44567				}
44568
44569				try {
44570					push.apply( results,
44571						newContext.querySelectorAll( newSelector )
44572					);
44573					return results;
44574				} catch ( qsaError ) {
44575					nonnativeSelectorCache( selector, true );
44576				} finally {
44577					if ( nid === expando ) {
44578						context.removeAttribute( "id" );
44579					}
44580				}
44581			}
44582		}
44583	}
44584
44585	// All others
44586	return select( selector.replace( rtrimCSS, "$1" ), context, results, seed );
44587}
44588
44589/**
44590 * Create key-value caches of limited size
44591 * @returns {function(string, object)} Returns the Object data after storing it on itself with
44592 *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
44593 *	deleting the oldest entry
44594 */
44595function createCache() {
44596	var keys = [];
44597
44598	function cache( key, value ) {
44599
44600		// Use (key + " ") to avoid collision with native prototype properties
44601		// (see https://github.com/jquery/sizzle/issues/157)
44602		if ( keys.push( key + " " ) > Expr.cacheLength ) {
44603
44604			// Only keep the most recent entries
44605			delete cache[ keys.shift() ];
44606		}
44607		return ( cache[ key + " " ] = value );
44608	}
44609	return cache;
44610}
44611
44612/**
44613 * Mark a function for special use by jQuery selector module
44614 * @param {Function} fn The function to mark
44615 */
44616function markFunction( fn ) {
44617	fn[ expando ] = true;
44618	return fn;
44619}
44620
44621/**
44622 * Support testing using an element
44623 * @param {Function} fn Passed the created element and returns a boolean result
44624 */
44625function assert( fn ) {
44626	var el = document.createElement( "fieldset" );
44627
44628	try {
44629		return !!fn( el );
44630	} catch ( e ) {
44631		return false;
44632	} finally {
44633
44634		// Remove from its parent by default
44635		if ( el.parentNode ) {
44636			el.parentNode.removeChild( el );
44637		}
44638
44639		// release memory in IE
44640		el = null;
44641	}
44642}
44643
44644/**
44645 * Returns a function to use in pseudos for input types
44646 * @param {String} type
44647 */
44648function createInputPseudo( type ) {
44649	return function( elem ) {
44650		return nodeName( elem, "input" ) && elem.type === type;
44651	};
44652}
44653
44654/**
44655 * Returns a function to use in pseudos for buttons
44656 * @param {String} type
44657 */
44658function createButtonPseudo( type ) {
44659	return function( elem ) {
44660		return ( nodeName( elem, "input" ) || nodeName( elem, "button" ) ) &&
44661			elem.type === type;
44662	};
44663}
44664
44665/**
44666 * Returns a function to use in pseudos for :enabled/:disabled
44667 * @param {Boolean} disabled true for :disabled; false for :enabled
44668 */
44669function createDisabledPseudo( disabled ) {
44670
44671	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
44672	return function( elem ) {
44673
44674		// Only certain elements can match :enabled or :disabled
44675		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
44676		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
44677		if ( "form" in elem ) {
44678
44679			// Check for inherited disabledness on relevant non-disabled elements:
44680			// * listed form-associated elements in a disabled fieldset
44681			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
44682			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
44683			// * option elements in a disabled optgroup
44684			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
44685			// All such elements have a "form" property.
44686			if ( elem.parentNode && elem.disabled === false ) {
44687
44688				// Option elements defer to a parent optgroup if present
44689				if ( "label" in elem ) {
44690					if ( "label" in elem.parentNode ) {
44691						return elem.parentNode.disabled === disabled;
44692					} else {
44693						return elem.disabled === disabled;
44694					}
44695				}
44696
44697				// Support: IE 6 - 11+
44698				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
44699				return elem.isDisabled === disabled ||
44700
44701					// Where there is no isDisabled, check manually
44702					elem.isDisabled !== !disabled &&
44703						inDisabledFieldset( elem ) === disabled;
44704			}
44705
44706			return elem.disabled === disabled;
44707
44708		// Try to winnow out elements that can't be disabled before trusting the disabled property.
44709		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
44710		// even exist on them, let alone have a boolean value.
44711		} else if ( "label" in elem ) {
44712			return elem.disabled === disabled;
44713		}
44714
44715		// Remaining elements are neither :enabled nor :disabled
44716		return false;
44717	};
44718}
44719
44720/**
44721 * Returns a function to use in pseudos for positionals
44722 * @param {Function} fn
44723 */
44724function createPositionalPseudo( fn ) {
44725	return markFunction( function( argument ) {
44726		argument = +argument;
44727		return markFunction( function( seed, matches ) {
44728			var j,
44729				matchIndexes = fn( [], seed.length, argument ),
44730				i = matchIndexes.length;
44731
44732			// Match elements found at the specified indexes
44733			while ( i-- ) {
44734				if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
44735					seed[ j ] = !( matches[ j ] = seed[ j ] );
44736				}
44737			}
44738		} );
44739	} );
44740}
44741
44742/**
44743 * Checks a node for validity as a jQuery selector context
44744 * @param {Element|Object=} context
44745 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
44746 */
44747function testContext( context ) {
44748	return context && typeof context.getElementsByTagName !== "undefined" && context;
44749}
44750
44751/**
44752 * Sets document-related variables once based on the current document
44753 * @param {Element|Object} [node] An element or document object to use to set the document
44754 * @returns {Object} Returns the current document
44755 */
44756function setDocument( node ) {
44757	var subWindow,
44758		doc = node ? node.ownerDocument || node : preferredDoc;
44759
44760	// Return early if doc is invalid or already selected
44761	// Support: IE 11+, Edge 17 - 18+
44762	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
44763	// two documents; shallow comparisons work.
44764	// eslint-disable-next-line eqeqeq
44765	if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
44766		return document;
44767	}
44768
44769	// Update global variables
44770	document = doc;
44771	documentElement = document.documentElement;
44772	documentIsHTML = !jQuery.isXMLDoc( document );
44773
44774	// Support: iOS 7 only, IE 9 - 11+
44775	// Older browsers didn't support unprefixed `matches`.
44776	matches = documentElement.matches ||
44777		documentElement.webkitMatchesSelector ||
44778		documentElement.msMatchesSelector;
44779
44780	// Support: IE 9 - 11+, Edge 12 - 18+
44781	// Accessing iframe documents after unload throws "permission denied" errors
44782	// (see trac-13936).
44783	// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,
44784	// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.
44785	if ( documentElement.msMatchesSelector &&
44786
44787		// Support: IE 11+, Edge 17 - 18+
44788		// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
44789		// two documents; shallow comparisons work.
44790		// eslint-disable-next-line eqeqeq
44791		preferredDoc != document &&
44792		( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
44793
44794		// Support: IE 9 - 11+, Edge 12 - 18+
44795		subWindow.addEventListener( "unload", unloadHandler );
44796	}
44797
44798	// Support: IE <10
44799	// Check if getElementById returns elements by name
44800	// The broken getElementById methods don't pick up programmatically-set names,
44801	// so use a roundabout getElementsByName test
44802	support.getById = assert( function( el ) {
44803		documentElement.appendChild( el ).id = jQuery.expando;
44804		return !document.getElementsByName ||
44805			!document.getElementsByName( jQuery.expando ).length;
44806	} );
44807
44808	// Support: IE 9 only
44809	// Check to see if it's possible to do matchesSelector
44810	// on a disconnected node.
44811	support.disconnectedMatch = assert( function( el ) {
44812		return matches.call( el, "*" );
44813	} );
44814
44815	// Support: IE 9 - 11+, Edge 12 - 18+
44816	// IE/Edge don't support the :scope pseudo-class.
44817	support.scope = assert( function() {
44818		return document.querySelectorAll( ":scope" );
44819	} );
44820
44821	// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only
44822	// Make sure the `:has()` argument is parsed unforgivingly.
44823	// We include `*` in the test to detect buggy implementations that are
44824	// _selectively_ forgiving (specifically when the list includes at least
44825	// one valid selector).
44826	// Note that we treat complete lack of support for `:has()` as if it were
44827	// spec-compliant support, which is fine because use of `:has()` in such
44828	// environments will fail in the qSA path and fall back to jQuery traversal
44829	// anyway.
44830	support.cssHas = assert( function() {
44831		try {
44832			document.querySelector( ":has(*,:jqfake)" );
44833			return false;
44834		} catch ( e ) {
44835			return true;
44836		}
44837	} );
44838
44839	// ID filter and find
44840	if ( support.getById ) {
44841		Expr.filter.ID = function( id ) {
44842			var attrId = id.replace( runescape, funescape );
44843			return function( elem ) {
44844				return elem.getAttribute( "id" ) === attrId;
44845			};
44846		};
44847		Expr.find.ID = function( id, context ) {
44848			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
44849				var elem = context.getElementById( id );
44850				return elem ? [ elem ] : [];
44851			}
44852		};
44853	} else {
44854		Expr.filter.ID =  function( id ) {
44855			var attrId = id.replace( runescape, funescape );
44856			return function( elem ) {
44857				var node = typeof elem.getAttributeNode !== "undefined" &&
44858					elem.getAttributeNode( "id" );
44859				return node && node.value === attrId;
44860			};
44861		};
44862
44863		// Support: IE 6 - 7 only
44864		// getElementById is not reliable as a find shortcut
44865		Expr.find.ID = function( id, context ) {
44866			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
44867				var node, i, elems,
44868					elem = context.getElementById( id );
44869
44870				if ( elem ) {
44871
44872					// Verify the id attribute
44873					node = elem.getAttributeNode( "id" );
44874					if ( node && node.value === id ) {
44875						return [ elem ];
44876					}
44877
44878					// Fall back on getElementsByName
44879					elems = context.getElementsByName( id );
44880					i = 0;
44881					while ( ( elem = elems[ i++ ] ) ) {
44882						node = elem.getAttributeNode( "id" );
44883						if ( node && node.value === id ) {
44884							return [ elem ];
44885						}
44886					}
44887				}
44888
44889				return [];
44890			}
44891		};
44892	}
44893
44894	// Tag
44895	Expr.find.TAG = function( tag, context ) {
44896		if ( typeof context.getElementsByTagName !== "undefined" ) {
44897			return context.getElementsByTagName( tag );
44898
44899		// DocumentFragment nodes don't have gEBTN
44900		} else {
44901			return context.querySelectorAll( tag );
44902		}
44903	};
44904
44905	// Class
44906	Expr.find.CLASS = function( className, context ) {
44907		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
44908			return context.getElementsByClassName( className );
44909		}
44910	};
44911
44912	/* QSA/matchesSelector
44913	---------------------------------------------------------------------- */
44914
44915	// QSA and matchesSelector support
44916
44917	rbuggyQSA = [];
44918
44919	// Build QSA regex
44920	// Regex strategy adopted from Diego Perini
44921	assert( function( el ) {
44922
44923		var input;
44924
44925		documentElement.appendChild( el ).innerHTML =
44926			"<a id='" + expando + "' href='' disabled='disabled'></a>" +
44927			"<select id='" + expando + "-\r\\' disabled='disabled'>" +
44928			"<option selected=''></option></select>";
44929
44930		// Support: iOS <=7 - 8 only
44931		// Boolean attributes and "value" are not treated correctly in some XML documents
44932		if ( !el.querySelectorAll( "[selected]" ).length ) {
44933			rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
44934		}
44935
44936		// Support: iOS <=7 - 8 only
44937		if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
44938			rbuggyQSA.push( "~=" );
44939		}
44940
44941		// Support: iOS 8 only
44942		// https://bugs.webkit.org/show_bug.cgi?id=136851
44943		// In-page `selector#id sibling-combinator selector` fails
44944		if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
44945			rbuggyQSA.push( ".#.+[+~]" );
44946		}
44947
44948		// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
44949		// In some of the document kinds, these selectors wouldn't work natively.
44950		// This is probably OK but for backwards compatibility we want to maintain
44951		// handling them through jQuery traversal in jQuery 3.x.
44952		if ( !el.querySelectorAll( ":checked" ).length ) {
44953			rbuggyQSA.push( ":checked" );
44954		}
44955
44956		// Support: Windows 8 Native Apps
44957		// The type and name attributes are restricted during .innerHTML assignment
44958		input = document.createElement( "input" );
44959		input.setAttribute( "type", "hidden" );
44960		el.appendChild( input ).setAttribute( "name", "D" );
44961
44962		// Support: IE 9 - 11+
44963		// IE's :disabled selector does not pick up the children of disabled fieldsets
44964		// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
44965		// In some of the document kinds, these selectors wouldn't work natively.
44966		// This is probably OK but for backwards compatibility we want to maintain
44967		// handling them through jQuery traversal in jQuery 3.x.
44968		documentElement.appendChild( el ).disabled = true;
44969		if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
44970			rbuggyQSA.push( ":enabled", ":disabled" );
44971		}
44972
44973		// Support: IE 11+, Edge 15 - 18+
44974		// IE 11/Edge don't find elements on a `[name='']` query in some cases.
44975		// Adding a temporary attribute to the document before the selection works
44976		// around the issue.
44977		// Interestingly, IE 10 & older don't seem to have the issue.
44978		input = document.createElement( "input" );
44979		input.setAttribute( "name", "" );
44980		el.appendChild( input );
44981		if ( !el.querySelectorAll( "[name='']" ).length ) {
44982			rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
44983				whitespace + "*(?:''|\"\")" );
44984		}
44985	} );
44986
44987	if ( !support.cssHas ) {
44988
44989		// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+
44990		// Our regular `try-catch` mechanism fails to detect natively-unsupported
44991		// pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`)
44992		// in browsers that parse the `:has()` argument as a forgiving selector list.
44993		// https://drafts.csswg.org/selectors/#relational now requires the argument
44994		// to be parsed unforgivingly, but browsers have not yet fully adjusted.
44995		rbuggyQSA.push( ":has" );
44996	}
44997
44998	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
44999
45000	/* Sorting
45001	---------------------------------------------------------------------- */
45002
45003	// Document order sorting
45004	sortOrder = function( a, b ) {
45005
45006		// Flag for duplicate removal
45007		if ( a === b ) {
45008			hasDuplicate = true;
45009			return 0;
45010		}
45011
45012		// Sort on method existence if only one input has compareDocumentPosition
45013		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
45014		if ( compare ) {
45015			return compare;
45016		}
45017
45018		// Calculate position if both inputs belong to the same document
45019		// Support: IE 11+, Edge 17 - 18+
45020		// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
45021		// two documents; shallow comparisons work.
45022		// eslint-disable-next-line eqeqeq
45023		compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
45024			a.compareDocumentPosition( b ) :
45025
45026			// Otherwise we know they are disconnected
45027			1;
45028
45029		// Disconnected nodes
45030		if ( compare & 1 ||
45031			( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
45032
45033			// Choose the first element that is related to our preferred document
45034			// Support: IE 11+, Edge 17 - 18+
45035			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
45036			// two documents; shallow comparisons work.
45037			// eslint-disable-next-line eqeqeq
45038			if ( a === document || a.ownerDocument == preferredDoc &&
45039				find.contains( preferredDoc, a ) ) {
45040				return -1;
45041			}
45042
45043			// Support: IE 11+, Edge 17 - 18+
45044			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
45045			// two documents; shallow comparisons work.
45046			// eslint-disable-next-line eqeqeq
45047			if ( b === document || b.ownerDocument == preferredDoc &&
45048				find.contains( preferredDoc, b ) ) {
45049				return 1;
45050			}
45051
45052			// Maintain original order
45053			return sortInput ?
45054				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
45055				0;
45056		}
45057
45058		return compare & 4 ? -1 : 1;
45059	};
45060
45061	return document;
45062}
45063
45064find.matches = function( expr, elements ) {
45065	return find( expr, null, null, elements );
45066};
45067
45068find.matchesSelector = function( elem, expr ) {
45069	setDocument( elem );
45070
45071	if ( documentIsHTML &&
45072		!nonnativeSelectorCache[ expr + " " ] &&
45073		( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
45074
45075		try {
45076			var ret = matches.call( elem, expr );
45077
45078			// IE 9's matchesSelector returns false on disconnected nodes
45079			if ( ret || support.disconnectedMatch ||
45080
45081					// As well, disconnected nodes are said to be in a document
45082					// fragment in IE 9
45083					elem.document && elem.document.nodeType !== 11 ) {
45084				return ret;
45085			}
45086		} catch ( e ) {
45087			nonnativeSelectorCache( expr, true );
45088		}
45089	}
45090
45091	return find( expr, document, null, [ elem ] ).length > 0;
45092};
45093
45094find.contains = function( context, elem ) {
45095
45096	// Set document vars if needed
45097	// Support: IE 11+, Edge 17 - 18+
45098	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
45099	// two documents; shallow comparisons work.
45100	// eslint-disable-next-line eqeqeq
45101	if ( ( context.ownerDocument || context ) != document ) {
45102		setDocument( context );
45103	}
45104	return jQuery.contains( context, elem );
45105};
45106
45107
45108find.attr = function( elem, name ) {
45109
45110	// Set document vars if needed
45111	// Support: IE 11+, Edge 17 - 18+
45112	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
45113	// two documents; shallow comparisons work.
45114	// eslint-disable-next-line eqeqeq
45115	if ( ( elem.ownerDocument || elem ) != document ) {
45116		setDocument( elem );
45117	}
45118
45119	var fn = Expr.attrHandle[ name.toLowerCase() ],
45120
45121		// Don't get fooled by Object.prototype properties (see trac-13807)
45122		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
45123			fn( elem, name, !documentIsHTML ) :
45124			undefined;
45125
45126	if ( val !== undefined ) {
45127		return val;
45128	}
45129
45130	return elem.getAttribute( name );
45131};
45132
45133find.error = function( msg ) {
45134	throw new Error( "Syntax error, unrecognized expression: " + msg );
45135};
45136
45137/**
45138 * Document sorting and removing duplicates
45139 * @param {ArrayLike} results
45140 */
45141jQuery.uniqueSort = function( results ) {
45142	var elem,
45143		duplicates = [],
45144		j = 0,
45145		i = 0;
45146
45147	// Unless we *know* we can detect duplicates, assume their presence
45148	//
45149	// Support: Android <=4.0+
45150	// Testing for detecting duplicates is unpredictable so instead assume we can't
45151	// depend on duplicate detection in all browsers without a stable sort.
45152	hasDuplicate = !support.sortStable;
45153	sortInput = !support.sortStable && slice.call( results, 0 );
45154	sort.call( results, sortOrder );
45155
45156	if ( hasDuplicate ) {
45157		while ( ( elem = results[ i++ ] ) ) {
45158			if ( elem === results[ i ] ) {
45159				j = duplicates.push( i );
45160			}
45161		}
45162		while ( j-- ) {
45163			splice.call( results, duplicates[ j ], 1 );
45164		}
45165	}
45166
45167	// Clear input after sorting to release objects
45168	// See https://github.com/jquery/sizzle/pull/225
45169	sortInput = null;
45170
45171	return results;
45172};
45173
45174jQuery.fn.uniqueSort = function() {
45175	return this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );
45176};
45177
45178Expr = jQuery.expr = {
45179
45180	// Can be adjusted by the user
45181	cacheLength: 50,
45182
45183	createPseudo: markFunction,
45184
45185	match: matchExpr,
45186
45187	attrHandle: {},
45188
45189	find: {},
45190
45191	relative: {
45192		">": { dir: "parentNode", first: true },
45193		" ": { dir: "parentNode" },
45194		"+": { dir: "previousSibling", first: true },
45195		"~": { dir: "previousSibling" }
45196	},
45197
45198	preFilter: {
45199		ATTR: function( match ) {
45200			match[ 1 ] = match[ 1 ].replace( runescape, funescape );
45201
45202			// Move the given value to match[3] whether quoted or unquoted
45203			match[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || "" )
45204				.replace( runescape, funescape );
45205
45206			if ( match[ 2 ] === "~=" ) {
45207				match[ 3 ] = " " + match[ 3 ] + " ";
45208			}
45209
45210			return match.slice( 0, 4 );
45211		},
45212
45213		CHILD: function( match ) {
45214
45215			/* matches from matchExpr["CHILD"]
45216				1 type (only|nth|...)
45217				2 what (child|of-type)
45218				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
45219				4 xn-component of xn+y argument ([+-]?\d*n|)
45220				5 sign of xn-component
45221				6 x of xn-component
45222				7 sign of y-component
45223				8 y of y-component
45224			*/
45225			match[ 1 ] = match[ 1 ].toLowerCase();
45226
45227			if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
45228
45229				// nth-* requires argument
45230				if ( !match[ 3 ] ) {
45231					find.error( match[ 0 ] );
45232				}
45233
45234				// numeric x and y parameters for Expr.filter.CHILD
45235				// remember that false/true cast respectively to 0/1
45236				match[ 4 ] = +( match[ 4 ] ?
45237					match[ 5 ] + ( match[ 6 ] || 1 ) :
45238					2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" )
45239				);
45240				match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
45241
45242			// other types prohibit arguments
45243			} else if ( match[ 3 ] ) {
45244				find.error( match[ 0 ] );
45245			}
45246
45247			return match;
45248		},
45249
45250		PSEUDO: function( match ) {
45251			var excess,
45252				unquoted = !match[ 6 ] && match[ 2 ];
45253
45254			if ( matchExpr.CHILD.test( match[ 0 ] ) ) {
45255				return null;
45256			}
45257
45258			// Accept quoted arguments as-is
45259			if ( match[ 3 ] ) {
45260				match[ 2 ] = match[ 4 ] || match[ 5 ] || "";
45261
45262			// Strip excess characters from unquoted arguments
45263			} else if ( unquoted && rpseudo.test( unquoted ) &&
45264
45265				// Get excess from tokenize (recursively)
45266				( excess = tokenize( unquoted, true ) ) &&
45267
45268				// advance to the next closing parenthesis
45269				( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {
45270
45271				// excess is a negative index
45272				match[ 0 ] = match[ 0 ].slice( 0, excess );
45273				match[ 2 ] = unquoted.slice( 0, excess );
45274			}
45275
45276			// Return only captures needed by the pseudo filter method (type and argument)
45277			return match.slice( 0, 3 );
45278		}
45279	},
45280
45281	filter: {
45282
45283		TAG: function( nodeNameSelector ) {
45284			var expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
45285			return nodeNameSelector === "*" ?
45286				function() {
45287					return true;
45288				} :
45289				function( elem ) {
45290					return nodeName( elem, expectedNodeName );
45291				};
45292		},
45293
45294		CLASS: function( className ) {
45295			var pattern = classCache[ className + " " ];
45296
45297			return pattern ||
45298				( pattern = new RegExp( "(^|" + whitespace + ")" + className +
45299					"(" + whitespace + "|$)" ) ) &&
45300				classCache( className, function( elem ) {
45301					return pattern.test(
45302						typeof elem.className === "string" && elem.className ||
45303							typeof elem.getAttribute !== "undefined" &&
45304								elem.getAttribute( "class" ) ||
45305							""
45306					);
45307				} );
45308		},
45309
45310		ATTR: function( name, operator, check ) {
45311			return function( elem ) {
45312				var result = find.attr( elem, name );
45313
45314				if ( result == null ) {
45315					return operator === "!=";
45316				}
45317				if ( !operator ) {
45318					return true;
45319				}
45320
45321				result += "";
45322
45323				if ( operator === "=" ) {
45324					return result === check;
45325				}
45326				if ( operator === "!=" ) {
45327					return result !== check;
45328				}
45329				if ( operator === "^=" ) {
45330					return check && result.indexOf( check ) === 0;
45331				}
45332				if ( operator === "*=" ) {
45333					return check && result.indexOf( check ) > -1;
45334				}
45335				if ( operator === "$=" ) {
45336					return check && result.slice( -check.length ) === check;
45337				}
45338				if ( operator === "~=" ) {
45339					return ( " " + result.replace( rwhitespace, " " ) + " " )
45340						.indexOf( check ) > -1;
45341				}
45342				if ( operator === "|=" ) {
45343					return result === check || result.slice( 0, check.length + 1 ) === check + "-";
45344				}
45345
45346				return false;
45347			};
45348		},
45349
45350		CHILD: function( type, what, _argument, first, last ) {
45351			var simple = type.slice( 0, 3 ) !== "nth",
45352				forward = type.slice( -4 ) !== "last",
45353				ofType = what === "of-type";
45354
45355			return first === 1 && last === 0 ?
45356
45357				// Shortcut for :nth-*(n)
45358				function( elem ) {
45359					return !!elem.parentNode;
45360				} :
45361
45362				function( elem, _context, xml ) {
45363					var cache, outerCache, node, nodeIndex, start,
45364						dir = simple !== forward ? "nextSibling" : "previousSibling",
45365						parent = elem.parentNode,
45366						name = ofType && elem.nodeName.toLowerCase(),
45367						useCache = !xml && !ofType,
45368						diff = false;
45369
45370					if ( parent ) {
45371
45372						// :(first|last|only)-(child|of-type)
45373						if ( simple ) {
45374							while ( dir ) {
45375								node = elem;
45376								while ( ( node = node[ dir ] ) ) {
45377									if ( ofType ?
45378										nodeName( node, name ) :
45379										node.nodeType === 1 ) {
45380
45381										return false;
45382									}
45383								}
45384
45385								// Reverse direction for :only-* (if we haven't yet done so)
45386								start = dir = type === "only" && !start && "nextSibling";
45387							}
45388							return true;
45389						}
45390
45391						start = [ forward ? parent.firstChild : parent.lastChild ];
45392
45393						// non-xml :nth-child(...) stores cache data on `parent`
45394						if ( forward && useCache ) {
45395
45396							// Seek `elem` from a previously-cached index
45397							outerCache = parent[ expando ] || ( parent[ expando ] = {} );
45398							cache = outerCache[ type ] || [];
45399							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
45400							diff = nodeIndex && cache[ 2 ];
45401							node = nodeIndex && parent.childNodes[ nodeIndex ];
45402
45403							while ( ( node = ++nodeIndex && node && node[ dir ] ||
45404
45405								// Fallback to seeking `elem` from the start
45406								( diff = nodeIndex = 0 ) || start.pop() ) ) {
45407
45408								// When found, cache indexes on `parent` and break
45409								if ( node.nodeType === 1 && ++diff && node === elem ) {
45410									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
45411									break;
45412								}
45413							}
45414
45415						} else {
45416
45417							// Use previously-cached element index if available
45418							if ( useCache ) {
45419								outerCache = elem[ expando ] || ( elem[ expando ] = {} );
45420								cache = outerCache[ type ] || [];
45421								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
45422								diff = nodeIndex;
45423							}
45424
45425							// xml :nth-child(...)
45426							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
45427							if ( diff === false ) {
45428
45429								// Use the same loop as above to seek `elem` from the start
45430								while ( ( node = ++nodeIndex && node && node[ dir ] ||
45431									( diff = nodeIndex = 0 ) || start.pop() ) ) {
45432
45433									if ( ( ofType ?
45434										nodeName( node, name ) :
45435										node.nodeType === 1 ) &&
45436										++diff ) {
45437
45438										// Cache the index of each encountered element
45439										if ( useCache ) {
45440											outerCache = node[ expando ] ||
45441												( node[ expando ] = {} );
45442											outerCache[ type ] = [ dirruns, diff ];
45443										}
45444
45445										if ( node === elem ) {
45446											break;
45447										}
45448									}
45449								}
45450							}
45451						}
45452
45453						// Incorporate the offset, then check against cycle size
45454						diff -= last;
45455						return diff === first || ( diff % first === 0 && diff / first >= 0 );
45456					}
45457				};
45458		},
45459
45460		PSEUDO: function( pseudo, argument ) {
45461
45462			// pseudo-class names are case-insensitive
45463			// https://www.w3.org/TR/selectors/#pseudo-classes
45464			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
45465			// Remember that setFilters inherits from pseudos
45466			var args,
45467				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
45468					find.error( "unsupported pseudo: " + pseudo );
45469
45470			// The user may use createPseudo to indicate that
45471			// arguments are needed to create the filter function
45472			// just as jQuery does
45473			if ( fn[ expando ] ) {
45474				return fn( argument );
45475			}
45476
45477			// But maintain support for old signatures
45478			if ( fn.length > 1 ) {
45479				args = [ pseudo, pseudo, "", argument ];
45480				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
45481					markFunction( function( seed, matches ) {
45482						var idx,
45483							matched = fn( seed, argument ),
45484							i = matched.length;
45485						while ( i-- ) {
45486							idx = indexOf.call( seed, matched[ i ] );
45487							seed[ idx ] = !( matches[ idx ] = matched[ i ] );
45488						}
45489					} ) :
45490					function( elem ) {
45491						return fn( elem, 0, args );
45492					};
45493			}
45494
45495			return fn;
45496		}
45497	},
45498
45499	pseudos: {
45500
45501		// Potentially complex pseudos
45502		not: markFunction( function( selector ) {
45503
45504			// Trim the selector passed to compile
45505			// to avoid treating leading and trailing
45506			// spaces as combinators
45507			var input = [],
45508				results = [],
45509				matcher = compile( selector.replace( rtrimCSS, "$1" ) );
45510
45511			return matcher[ expando ] ?
45512				markFunction( function( seed, matches, _context, xml ) {
45513					var elem,
45514						unmatched = matcher( seed, null, xml, [] ),
45515						i = seed.length;
45516
45517					// Match elements unmatched by `matcher`
45518					while ( i-- ) {
45519						if ( ( elem = unmatched[ i ] ) ) {
45520							seed[ i ] = !( matches[ i ] = elem );
45521						}
45522					}
45523				} ) :
45524				function( elem, _context, xml ) {
45525					input[ 0 ] = elem;
45526					matcher( input, null, xml, results );
45527
45528					// Don't keep the element
45529					// (see https://github.com/jquery/sizzle/issues/299)
45530					input[ 0 ] = null;
45531					return !results.pop();
45532				};
45533		} ),
45534
45535		has: markFunction( function( selector ) {
45536			return function( elem ) {
45537				return find( selector, elem ).length > 0;
45538			};
45539		} ),
45540
45541		contains: markFunction( function( text ) {
45542			text = text.replace( runescape, funescape );
45543			return function( elem ) {
45544				return ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;
45545			};
45546		} ),
45547
45548		// "Whether an element is represented by a :lang() selector
45549		// is based solely on the element's language value
45550		// being equal to the identifier C,
45551		// or beginning with the identifier C immediately followed by "-".
45552		// The matching of C against the element's language value is performed case-insensitively.
45553		// The identifier C does not have to be a valid language name."
45554		// https://www.w3.org/TR/selectors/#lang-pseudo
45555		lang: markFunction( function( lang ) {
45556
45557			// lang value must be a valid identifier
45558			if ( !ridentifier.test( lang || "" ) ) {
45559				find.error( "unsupported lang: " + lang );
45560			}
45561			lang = lang.replace( runescape, funescape ).toLowerCase();
45562			return function( elem ) {
45563				var elemLang;
45564				do {
45565					if ( ( elemLang = documentIsHTML ?
45566						elem.lang :
45567						elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {
45568
45569						elemLang = elemLang.toLowerCase();
45570						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
45571					}
45572				} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
45573				return false;
45574			};
45575		} ),
45576
45577		// Miscellaneous
45578		target: function( elem ) {
45579			var hash = window.location && window.location.hash;
45580			return hash && hash.slice( 1 ) === elem.id;
45581		},
45582
45583		root: function( elem ) {
45584			return elem === documentElement;
45585		},
45586
45587		focus: function( elem ) {
45588			return elem === safeActiveElement() &&
45589				document.hasFocus() &&
45590				!!( elem.type || elem.href || ~elem.tabIndex );
45591		},
45592
45593		// Boolean properties
45594		enabled: createDisabledPseudo( false ),
45595		disabled: createDisabledPseudo( true ),
45596
45597		checked: function( elem ) {
45598
45599			// In CSS3, :checked should return both checked and selected elements
45600			// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
45601			return ( nodeName( elem, "input" ) && !!elem.checked ) ||
45602				( nodeName( elem, "option" ) && !!elem.selected );
45603		},
45604
45605		selected: function( elem ) {
45606
45607			// Support: IE <=11+
45608			// Accessing the selectedIndex property
45609			// forces the browser to treat the default option as
45610			// selected when in an optgroup.
45611			if ( elem.parentNode ) {
45612				// eslint-disable-next-line no-unused-expressions
45613				elem.parentNode.selectedIndex;
45614			}
45615
45616			return elem.selected === true;
45617		},
45618
45619		// Contents
45620		empty: function( elem ) {
45621
45622			// https://www.w3.org/TR/selectors/#empty-pseudo
45623			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
45624			//   but not by others (comment: 8; processing instruction: 7; etc.)
45625			// nodeType < 6 works because attributes (2) do not appear as children
45626			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
45627				if ( elem.nodeType < 6 ) {
45628					return false;
45629				}
45630			}
45631			return true;
45632		},
45633
45634		parent: function( elem ) {
45635			return !Expr.pseudos.empty( elem );
45636		},
45637
45638		// Element/input types
45639		header: function( elem ) {
45640			return rheader.test( elem.nodeName );
45641		},
45642
45643		input: function( elem ) {
45644			return rinputs.test( elem.nodeName );
45645		},
45646
45647		button: function( elem ) {
45648			return nodeName( elem, "input" ) && elem.type === "button" ||
45649				nodeName( elem, "button" );
45650		},
45651
45652		text: function( elem ) {
45653			var attr;
45654			return nodeName( elem, "input" ) && elem.type === "text" &&
45655
45656				// Support: IE <10 only
45657				// New HTML5 attribute values (e.g., "search") appear
45658				// with elem.type === "text"
45659				( ( attr = elem.getAttribute( "type" ) ) == null ||
45660					attr.toLowerCase() === "text" );
45661		},
45662
45663		// Position-in-collection
45664		first: createPositionalPseudo( function() {
45665			return [ 0 ];
45666		} ),
45667
45668		last: createPositionalPseudo( function( _matchIndexes, length ) {
45669			return [ length - 1 ];
45670		} ),
45671
45672		eq: createPositionalPseudo( function( _matchIndexes, length, argument ) {
45673			return [ argument < 0 ? argument + length : argument ];
45674		} ),
45675
45676		even: createPositionalPseudo( function( matchIndexes, length ) {
45677			var i = 0;
45678			for ( ; i < length; i += 2 ) {
45679				matchIndexes.push( i );
45680			}
45681			return matchIndexes;
45682		} ),
45683
45684		odd: createPositionalPseudo( function( matchIndexes, length ) {
45685			var i = 1;
45686			for ( ; i < length; i += 2 ) {
45687				matchIndexes.push( i );
45688			}
45689			return matchIndexes;
45690		} ),
45691
45692		lt: createPositionalPseudo( function( matchIndexes, length, argument ) {
45693			var i;
45694
45695			if ( argument < 0 ) {
45696				i = argument + length;
45697			} else if ( argument > length ) {
45698				i = length;
45699			} else {
45700				i = argument;
45701			}
45702
45703			for ( ; --i >= 0; ) {
45704				matchIndexes.push( i );
45705			}
45706			return matchIndexes;
45707		} ),
45708
45709		gt: createPositionalPseudo( function( matchIndexes, length, argument ) {
45710			var i = argument < 0 ? argument + length : argument;
45711			for ( ; ++i < length; ) {
45712				matchIndexes.push( i );
45713			}
45714			return matchIndexes;
45715		} )
45716	}
45717};
45718
45719Expr.pseudos.nth = Expr.pseudos.eq;
45720
45721// Add button/input type pseudos
45722for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
45723	Expr.pseudos[ i ] = createInputPseudo( i );
45724}
45725for ( i in { submit: true, reset: true } ) {
45726	Expr.pseudos[ i ] = createButtonPseudo( i );
45727}
45728
45729// Easy API for creating new setFilters
45730function setFilters() {}
45731setFilters.prototype = Expr.filters = Expr.pseudos;
45732Expr.setFilters = new setFilters();
45733
45734function tokenize( selector, parseOnly ) {
45735	var matched, match, tokens, type,
45736		soFar, groups, preFilters,
45737		cached = tokenCache[ selector + " " ];
45738
45739	if ( cached ) {
45740		return parseOnly ? 0 : cached.slice( 0 );
45741	}
45742
45743	soFar = selector;
45744	groups = [];
45745	preFilters = Expr.preFilter;
45746
45747	while ( soFar ) {
45748
45749		// Comma and first run
45750		if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
45751			if ( match ) {
45752
45753				// Don't consume trailing commas as valid
45754				soFar = soFar.slice( match[ 0 ].length ) || soFar;
45755			}
45756			groups.push( ( tokens = [] ) );
45757		}
45758
45759		matched = false;
45760
45761		// Combinators
45762		if ( ( match = rleadingCombinator.exec( soFar ) ) ) {
45763			matched = match.shift();
45764			tokens.push( {
45765				value: matched,
45766
45767				// Cast descendant combinators to space
45768				type: match[ 0 ].replace( rtrimCSS, " " )
45769			} );
45770			soFar = soFar.slice( matched.length );
45771		}
45772
45773		// Filters
45774		for ( type in Expr.filter ) {
45775			if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
45776				( match = preFilters[ type ]( match ) ) ) ) {
45777				matched = match.shift();
45778				tokens.push( {
45779					value: matched,
45780					type: type,
45781					matches: match
45782				} );
45783				soFar = soFar.slice( matched.length );
45784			}
45785		}
45786
45787		if ( !matched ) {
45788			break;
45789		}
45790	}
45791
45792	// Return the length of the invalid excess
45793	// if we're just parsing
45794	// Otherwise, throw an error or return tokens
45795	if ( parseOnly ) {
45796		return soFar.length;
45797	}
45798
45799	return soFar ?
45800		find.error( selector ) :
45801
45802		// Cache the tokens
45803		tokenCache( selector, groups ).slice( 0 );
45804}
45805
45806function toSelector( tokens ) {
45807	var i = 0,
45808		len = tokens.length,
45809		selector = "";
45810	for ( ; i < len; i++ ) {
45811		selector += tokens[ i ].value;
45812	}
45813	return selector;
45814}
45815
45816function addCombinator( matcher, combinator, base ) {
45817	var dir = combinator.dir,
45818		skip = combinator.next,
45819		key = skip || dir,
45820		checkNonElements = base && key === "parentNode",
45821		doneName = done++;
45822
45823	return combinator.first ?
45824
45825		// Check against closest ancestor/preceding element
45826		function( elem, context, xml ) {
45827			while ( ( elem = elem[ dir ] ) ) {
45828				if ( elem.nodeType === 1 || checkNonElements ) {
45829					return matcher( elem, context, xml );
45830				}
45831			}
45832			return false;
45833		} :
45834
45835		// Check against all ancestor/preceding elements
45836		function( elem, context, xml ) {
45837			var oldCache, outerCache,
45838				newCache = [ dirruns, doneName ];
45839
45840			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
45841			if ( xml ) {
45842				while ( ( elem = elem[ dir ] ) ) {
45843					if ( elem.nodeType === 1 || checkNonElements ) {
45844						if ( matcher( elem, context, xml ) ) {
45845							return true;
45846						}
45847					}
45848				}
45849			} else {
45850				while ( ( elem = elem[ dir ] ) ) {
45851					if ( elem.nodeType === 1 || checkNonElements ) {
45852						outerCache = elem[ expando ] || ( elem[ expando ] = {} );
45853
45854						if ( skip && nodeName( elem, skip ) ) {
45855							elem = elem[ dir ] || elem;
45856						} else if ( ( oldCache = outerCache[ key ] ) &&
45857							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
45858
45859							// Assign to newCache so results back-propagate to previous elements
45860							return ( newCache[ 2 ] = oldCache[ 2 ] );
45861						} else {
45862
45863							// Reuse newcache so results back-propagate to previous elements
45864							outerCache[ key ] = newCache;
45865
45866							// A match means we're done; a fail means we have to keep checking
45867							if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
45868								return true;
45869							}
45870						}
45871					}
45872				}
45873			}
45874			return false;
45875		};
45876}
45877
45878function elementMatcher( matchers ) {
45879	return matchers.length > 1 ?
45880		function( elem, context, xml ) {
45881			var i = matchers.length;
45882			while ( i-- ) {
45883				if ( !matchers[ i ]( elem, context, xml ) ) {
45884					return false;
45885				}
45886			}
45887			return true;
45888		} :
45889		matchers[ 0 ];
45890}
45891
45892function multipleContexts( selector, contexts, results ) {
45893	var i = 0,
45894		len = contexts.length;
45895	for ( ; i < len; i++ ) {
45896		find( selector, contexts[ i ], results );
45897	}
45898	return results;
45899}
45900
45901function condense( unmatched, map, filter, context, xml ) {
45902	var elem,
45903		newUnmatched = [],
45904		i = 0,
45905		len = unmatched.length,
45906		mapped = map != null;
45907
45908	for ( ; i < len; i++ ) {
45909		if ( ( elem = unmatched[ i ] ) ) {
45910			if ( !filter || filter( elem, context, xml ) ) {
45911				newUnmatched.push( elem );
45912				if ( mapped ) {
45913					map.push( i );
45914				}
45915			}
45916		}
45917	}
45918
45919	return newUnmatched;
45920}
45921
45922function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
45923	if ( postFilter && !postFilter[ expando ] ) {
45924		postFilter = setMatcher( postFilter );
45925	}
45926	if ( postFinder && !postFinder[ expando ] ) {
45927		postFinder = setMatcher( postFinder, postSelector );
45928	}
45929	return markFunction( function( seed, results, context, xml ) {
45930		var temp, i, elem, matcherOut,
45931			preMap = [],
45932			postMap = [],
45933			preexisting = results.length,
45934
45935			// Get initial elements from seed or context
45936			elems = seed ||
45937				multipleContexts( selector || "*",
45938					context.nodeType ? [ context ] : context, [] ),
45939
45940			// Prefilter to get matcher input, preserving a map for seed-results synchronization
45941			matcherIn = preFilter && ( seed || !selector ) ?
45942				condense( elems, preMap, preFilter, context, xml ) :
45943				elems;
45944
45945		if ( matcher ) {
45946
45947			// If we have a postFinder, or filtered seed, or non-seed postFilter
45948			// or preexisting results,
45949			matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
45950
45951				// ...intermediate processing is necessary
45952				[] :
45953
45954				// ...otherwise use results directly
45955				results;
45956
45957			// Find primary matches
45958			matcher( matcherIn, matcherOut, context, xml );
45959		} else {
45960			matcherOut = matcherIn;
45961		}
45962
45963		// Apply postFilter
45964		if ( postFilter ) {
45965			temp = condense( matcherOut, postMap );
45966			postFilter( temp, [], context, xml );
45967
45968			// Un-match failing elements by moving them back to matcherIn
45969			i = temp.length;
45970			while ( i-- ) {
45971				if ( ( elem = temp[ i ] ) ) {
45972					matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
45973				}
45974			}
45975		}
45976
45977		if ( seed ) {
45978			if ( postFinder || preFilter ) {
45979				if ( postFinder ) {
45980
45981					// Get the final matcherOut by condensing this intermediate into postFinder contexts
45982					temp = [];
45983					i = matcherOut.length;
45984					while ( i-- ) {
45985						if ( ( elem = matcherOut[ i ] ) ) {
45986
45987							// Restore matcherIn since elem is not yet a final match
45988							temp.push( ( matcherIn[ i ] = elem ) );
45989						}
45990					}
45991					postFinder( null, ( matcherOut = [] ), temp, xml );
45992				}
45993
45994				// Move matched elements from seed to results to keep them synchronized
45995				i = matcherOut.length;
45996				while ( i-- ) {
45997					if ( ( elem = matcherOut[ i ] ) &&
45998						( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {
45999
46000						seed[ temp ] = !( results[ temp ] = elem );
46001					}
46002				}
46003			}
46004
46005		// Add elements to results, through postFinder if defined
46006		} else {
46007			matcherOut = condense(
46008				matcherOut === results ?
46009					matcherOut.splice( preexisting, matcherOut.length ) :
46010					matcherOut
46011			);
46012			if ( postFinder ) {
46013				postFinder( null, results, matcherOut, xml );
46014			} else {
46015				push.apply( results, matcherOut );
46016			}
46017		}
46018	} );
46019}
46020
46021function matcherFromTokens( tokens ) {
46022	var checkContext, matcher, j,
46023		len = tokens.length,
46024		leadingRelative = Expr.relative[ tokens[ 0 ].type ],
46025		implicitRelative = leadingRelative || Expr.relative[ " " ],
46026		i = leadingRelative ? 1 : 0,
46027
46028		// The foundational matcher ensures that elements are reachable from top-level context(s)
46029		matchContext = addCombinator( function( elem ) {
46030			return elem === checkContext;
46031		}, implicitRelative, true ),
46032		matchAnyContext = addCombinator( function( elem ) {
46033			return indexOf.call( checkContext, elem ) > -1;
46034		}, implicitRelative, true ),
46035		matchers = [ function( elem, context, xml ) {
46036
46037			// Support: IE 11+, Edge 17 - 18+
46038			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
46039			// two documents; shallow comparisons work.
46040			// eslint-disable-next-line eqeqeq
46041			var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (
46042				( checkContext = context ).nodeType ?
46043					matchContext( elem, context, xml ) :
46044					matchAnyContext( elem, context, xml ) );
46045
46046			// Avoid hanging onto element
46047			// (see https://github.com/jquery/sizzle/issues/299)
46048			checkContext = null;
46049			return ret;
46050		} ];
46051
46052	for ( ; i < len; i++ ) {
46053		if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
46054			matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
46055		} else {
46056			matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );
46057
46058			// Return special upon seeing a positional matcher
46059			if ( matcher[ expando ] ) {
46060
46061				// Find the next relative operator (if any) for proper handling
46062				j = ++i;
46063				for ( ; j < len; j++ ) {
46064					if ( Expr.relative[ tokens[ j ].type ] ) {
46065						break;
46066					}
46067				}
46068				return setMatcher(
46069					i > 1 && elementMatcher( matchers ),
46070					i > 1 && toSelector(
46071
46072						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
46073						tokens.slice( 0, i - 1 )
46074							.concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
46075					).replace( rtrimCSS, "$1" ),
46076					matcher,
46077					i < j && matcherFromTokens( tokens.slice( i, j ) ),
46078					j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
46079					j < len && toSelector( tokens )
46080				);
46081			}
46082			matchers.push( matcher );
46083		}
46084	}
46085
46086	return elementMatcher( matchers );
46087}
46088
46089function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
46090	var bySet = setMatchers.length > 0,
46091		byElement = elementMatchers.length > 0,
46092		superMatcher = function( seed, context, xml, results, outermost ) {
46093			var elem, j, matcher,
46094				matchedCount = 0,
46095				i = "0",
46096				unmatched = seed && [],
46097				setMatched = [],
46098				contextBackup = outermostContext,
46099
46100				// We must always have either seed elements or outermost context
46101				elems = seed || byElement && Expr.find.TAG( "*", outermost ),
46102
46103				// Use integer dirruns iff this is the outermost matcher
46104				dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
46105				len = elems.length;
46106
46107			if ( outermost ) {
46108
46109				// Support: IE 11+, Edge 17 - 18+
46110				// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
46111				// two documents; shallow comparisons work.
46112				// eslint-disable-next-line eqeqeq
46113				outermostContext = context == document || context || outermost;
46114			}
46115
46116			// Add elements passing elementMatchers directly to results
46117			// Support: iOS <=7 - 9 only
46118			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching
46119			// elements by id. (see trac-14142)
46120			for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
46121				if ( byElement && elem ) {
46122					j = 0;
46123
46124					// Support: IE 11+, Edge 17 - 18+
46125					// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
46126					// two documents; shallow comparisons work.
46127					// eslint-disable-next-line eqeqeq
46128					if ( !context && elem.ownerDocument != document ) {
46129						setDocument( elem );
46130						xml = !documentIsHTML;
46131					}
46132					while ( ( matcher = elementMatchers[ j++ ] ) ) {
46133						if ( matcher( elem, context || document, xml ) ) {
46134							push.call( results, elem );
46135							break;
46136						}
46137					}
46138					if ( outermost ) {
46139						dirruns = dirrunsUnique;
46140					}
46141				}
46142
46143				// Track unmatched elements for set filters
46144				if ( bySet ) {
46145
46146					// They will have gone through all possible matchers
46147					if ( ( elem = !matcher && elem ) ) {
46148						matchedCount--;
46149					}
46150
46151					// Lengthen the array for every element, matched or not
46152					if ( seed ) {
46153						unmatched.push( elem );
46154					}
46155				}
46156			}
46157
46158			// `i` is now the count of elements visited above, and adding it to `matchedCount`
46159			// makes the latter nonnegative.
46160			matchedCount += i;
46161
46162			// Apply set filters to unmatched elements
46163			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
46164			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
46165			// no element matchers and no seed.
46166			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
46167			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
46168			// numerically zero.
46169			if ( bySet && i !== matchedCount ) {
46170				j = 0;
46171				while ( ( matcher = setMatchers[ j++ ] ) ) {
46172					matcher( unmatched, setMatched, context, xml );
46173				}
46174
46175				if ( seed ) {
46176
46177					// Reintegrate element matches to eliminate the need for sorting
46178					if ( matchedCount > 0 ) {
46179						while ( i-- ) {
46180							if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
46181								setMatched[ i ] = pop.call( results );
46182							}
46183						}
46184					}
46185
46186					// Discard index placeholder values to get only actual matches
46187					setMatched = condense( setMatched );
46188				}
46189
46190				// Add matches to results
46191				push.apply( results, setMatched );
46192
46193				// Seedless set matches succeeding multiple successful matchers stipulate sorting
46194				if ( outermost && !seed && setMatched.length > 0 &&
46195					( matchedCount + setMatchers.length ) > 1 ) {
46196
46197					jQuery.uniqueSort( results );
46198				}
46199			}
46200
46201			// Override manipulation of globals by nested matchers
46202			if ( outermost ) {
46203				dirruns = dirrunsUnique;
46204				outermostContext = contextBackup;
46205			}
46206
46207			return unmatched;
46208		};
46209
46210	return bySet ?
46211		markFunction( superMatcher ) :
46212		superMatcher;
46213}
46214
46215function compile( selector, match /* Internal Use Only */ ) {
46216	var i,
46217		setMatchers = [],
46218		elementMatchers = [],
46219		cached = compilerCache[ selector + " " ];
46220
46221	if ( !cached ) {
46222
46223		// Generate a function of recursive functions that can be used to check each element
46224		if ( !match ) {
46225			match = tokenize( selector );
46226		}
46227		i = match.length;
46228		while ( i-- ) {
46229			cached = matcherFromTokens( match[ i ] );
46230			if ( cached[ expando ] ) {
46231				setMatchers.push( cached );
46232			} else {
46233				elementMatchers.push( cached );
46234			}
46235		}
46236
46237		// Cache the compiled function
46238		cached = compilerCache( selector,
46239			matcherFromGroupMatchers( elementMatchers, setMatchers ) );
46240
46241		// Save selector and tokenization
46242		cached.selector = selector;
46243	}
46244	return cached;
46245}
46246
46247/**
46248 * A low-level selection function that works with jQuery's compiled
46249 *  selector functions
46250 * @param {String|Function} selector A selector or a pre-compiled
46251 *  selector function built with jQuery selector compile
46252 * @param {Element} context
46253 * @param {Array} [results]
46254 * @param {Array} [seed] A set of elements to match against
46255 */
46256function select( selector, context, results, seed ) {
46257	var i, tokens, token, type, find,
46258		compiled = typeof selector === "function" && selector,
46259		match = !seed && tokenize( ( selector = compiled.selector || selector ) );
46260
46261	results = results || [];
46262
46263	// Try to minimize operations if there is only one selector in the list and no seed
46264	// (the latter of which guarantees us context)
46265	if ( match.length === 1 ) {
46266
46267		// Reduce context if the leading compound selector is an ID
46268		tokens = match[ 0 ] = match[ 0 ].slice( 0 );
46269		if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
46270				context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
46271
46272			context = ( Expr.find.ID(
46273				token.matches[ 0 ].replace( runescape, funescape ),
46274				context
46275			) || [] )[ 0 ];
46276			if ( !context ) {
46277				return results;
46278
46279			// Precompiled matchers will still verify ancestry, so step up a level
46280			} else if ( compiled ) {
46281				context = context.parentNode;
46282			}
46283
46284			selector = selector.slice( tokens.shift().value.length );
46285		}
46286
46287		// Fetch a seed set for right-to-left matching
46288		i = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;
46289		while ( i-- ) {
46290			token = tokens[ i ];
46291
46292			// Abort if we hit a combinator
46293			if ( Expr.relative[ ( type = token.type ) ] ) {
46294				break;
46295			}
46296			if ( ( find = Expr.find[ type ] ) ) {
46297
46298				// Search, expanding context for leading sibling combinators
46299				if ( ( seed = find(
46300					token.matches[ 0 ].replace( runescape, funescape ),
46301					rsibling.test( tokens[ 0 ].type ) &&
46302						testContext( context.parentNode ) || context
46303				) ) ) {
46304
46305					// If seed is empty or no tokens remain, we can return early
46306					tokens.splice( i, 1 );
46307					selector = seed.length && toSelector( tokens );
46308					if ( !selector ) {
46309						push.apply( results, seed );
46310						return results;
46311					}
46312
46313					break;
46314				}
46315			}
46316		}
46317	}
46318
46319	// Compile and execute a filtering function if one is not provided
46320	// Provide `match` to avoid retokenization if we modified the selector above
46321	( compiled || compile( selector, match ) )(
46322		seed,
46323		context,
46324		!documentIsHTML,
46325		results,
46326		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
46327	);
46328	return results;
46329}
46330
46331// One-time assignments
46332
46333// Support: Android <=4.0 - 4.1+
46334// Sort stability
46335support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
46336
46337// Initialize against the default document
46338setDocument();
46339
46340// Support: Android <=4.0 - 4.1+
46341// Detached nodes confoundingly follow *each other*
46342support.sortDetached = assert( function( el ) {
46343
46344	// Should return 1, but returns 4 (following)
46345	return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
46346} );
46347
46348jQuery.find = find;
46349
46350// Deprecated
46351jQuery.expr[ ":" ] = jQuery.expr.pseudos;
46352jQuery.unique = jQuery.uniqueSort;
46353
46354// These have always been private, but they used to be documented as part of
46355// Sizzle so let's maintain them for now for backwards compatibility purposes.
46356find.compile = compile;
46357find.select = select;
46358find.setDocument = setDocument;
46359find.tokenize = tokenize;
46360
46361find.escape = jQuery.escapeSelector;
46362find.getText = jQuery.text;
46363find.isXML = jQuery.isXMLDoc;
46364find.selectors = jQuery.expr;
46365find.support = jQuery.support;
46366find.uniqueSort = jQuery.uniqueSort;
46367
46368	/* eslint-enable */
46369
46370} )();
46371
46372
46373var dir = function( elem, dir, until ) {
46374	var matched = [],
46375		truncate = until !== undefined;
46376
46377	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
46378		if ( elem.nodeType === 1 ) {
46379			if ( truncate && jQuery( elem ).is( until ) ) {
46380				break;
46381			}
46382			matched.push( elem );
46383		}
46384	}
46385	return matched;
46386};
46387
46388
46389var siblings = function( n, elem ) {
46390	var matched = [];
46391
46392	for ( ; n; n = n.nextSibling ) {
46393		if ( n.nodeType === 1 && n !== elem ) {
46394			matched.push( n );
46395		}
46396	}
46397
46398	return matched;
46399};
46400
46401
46402var rneedsContext = jQuery.expr.match.needsContext;
46403
46404var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
46405
46406
46407
46408// Implement the identical functionality for filter and not
46409function winnow( elements, qualifier, not ) {
46410	if ( isFunction( qualifier ) ) {
46411		return jQuery.grep( elements, function( elem, i ) {
46412			return !!qualifier.call( elem, i, elem ) !== not;
46413		} );
46414	}
46415
46416	// Single element
46417	if ( qualifier.nodeType ) {
46418		return jQuery.grep( elements, function( elem ) {
46419			return ( elem === qualifier ) !== not;
46420		} );
46421	}
46422
46423	// Arraylike of elements (jQuery, arguments, Array)
46424	if ( typeof qualifier !== "string" ) {
46425		return jQuery.grep( elements, function( elem ) {
46426			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
46427		} );
46428	}
46429
46430	// Filtered directly for both simple and complex selectors
46431	return jQuery.filter( qualifier, elements, not );
46432}
46433
46434jQuery.filter = function( expr, elems, not ) {
46435	var elem = elems[ 0 ];
46436
46437	if ( not ) {
46438		expr = ":not(" + expr + ")";
46439	}
46440
46441	if ( elems.length === 1 && elem.nodeType === 1 ) {
46442		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
46443	}
46444
46445	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
46446		return elem.nodeType === 1;
46447	} ) );
46448};
46449
46450jQuery.fn.extend( {
46451	find: function( selector ) {
46452		var i, ret,
46453			len = this.length,
46454			self = this;
46455
46456		if ( typeof selector !== "string" ) {
46457			return this.pushStack( jQuery( selector ).filter( function() {
46458				for ( i = 0; i < len; i++ ) {
46459					if ( jQuery.contains( self[ i ], this ) ) {
46460						return true;
46461					}
46462				}
46463			} ) );
46464		}
46465
46466		ret = this.pushStack( [] );
46467
46468		for ( i = 0; i < len; i++ ) {
46469			jQuery.find( selector, self[ i ], ret );
46470		}
46471
46472		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
46473	},
46474	filter: function( selector ) {
46475		return this.pushStack( winnow( this, selector || [], false ) );
46476	},
46477	not: function( selector ) {
46478		return this.pushStack( winnow( this, selector || [], true ) );
46479	},
46480	is: function( selector ) {
46481		return !!winnow(
46482			this,
46483
46484			// If this is a positional/relative selector, check membership in the returned set
46485			// so $("p:first").is("p:last") won't return true for a doc with two "p".
46486			typeof selector === "string" && rneedsContext.test( selector ) ?
46487				jQuery( selector ) :
46488				selector || [],
46489			false
46490		).length;
46491	}
46492} );
46493
46494
46495// Initialize a jQuery object
46496
46497
46498// A central reference to the root jQuery(document)
46499var rootjQuery,
46500
46501	// A simple way to check for HTML strings
46502	// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)
46503	// Strict HTML recognition (trac-11290: must start with <)
46504	// Shortcut simple #id case for speed
46505	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
46506
46507	init = jQuery.fn.init = function( selector, context, root ) {
46508		var match, elem;
46509
46510		// HANDLE: $(""), $(null), $(undefined), $(false)
46511		if ( !selector ) {
46512			return this;
46513		}
46514
46515		// Method init() accepts an alternate rootjQuery
46516		// so migrate can support jQuery.sub (gh-2101)
46517		root = root || rootjQuery;
46518
46519		// Handle HTML strings
46520		if ( typeof selector === "string" ) {
46521			if ( selector[ 0 ] === "<" &&
46522				selector[ selector.length - 1 ] === ">" &&
46523				selector.length >= 3 ) {
46524
46525				// Assume that strings that start and end with <> are HTML and skip the regex check
46526				match = [ null, selector, null ];
46527
46528			} else {
46529				match = rquickExpr.exec( selector );
46530			}
46531
46532			// Match html or make sure no context is specified for #id
46533			if ( match && ( match[ 1 ] || !context ) ) {
46534
46535				// HANDLE: $(html) -> $(array)
46536				if ( match[ 1 ] ) {
46537					context = context instanceof jQuery ? context[ 0 ] : context;
46538
46539					// Option to run scripts is true for back-compat
46540					// Intentionally let the error be thrown if parseHTML is not present
46541					jQuery.merge( this, jQuery.parseHTML(
46542						match[ 1 ],
46543						context && context.nodeType ? context.ownerDocument || context : document,
46544						true
46545					) );
46546
46547					// HANDLE: $(html, props)
46548					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
46549						for ( match in context ) {
46550
46551							// Properties of context are called as methods if possible
46552							if ( isFunction( this[ match ] ) ) {
46553								this[ match ]( context[ match ] );
46554
46555							// ...and otherwise set as attributes
46556							} else {
46557								this.attr( match, context[ match ] );
46558							}
46559						}
46560					}
46561
46562					return this;
46563
46564				// HANDLE: $(#id)
46565				} else {
46566					elem = document.getElementById( match[ 2 ] );
46567
46568					if ( elem ) {
46569
46570						// Inject the element directly into the jQuery object
46571						this[ 0 ] = elem;
46572						this.length = 1;
46573					}
46574					return this;
46575				}
46576
46577			// HANDLE: $(expr, $(...))
46578			} else if ( !context || context.jquery ) {
46579				return ( context || root ).find( selector );
46580
46581			// HANDLE: $(expr, context)
46582			// (which is just equivalent to: $(context).find(expr)
46583			} else {
46584				return this.constructor( context ).find( selector );
46585			}
46586
46587		// HANDLE: $(DOMElement)
46588		} else if ( selector.nodeType ) {
46589			this[ 0 ] = selector;
46590			this.length = 1;
46591			return this;
46592
46593		// HANDLE: $(function)
46594		// Shortcut for document ready
46595		} else if ( isFunction( selector ) ) {
46596			return root.ready !== undefined ?
46597				root.ready( selector ) :
46598
46599				// Execute immediately if ready is not present
46600				selector( jQuery );
46601		}
46602
46603		return jQuery.makeArray( selector, this );
46604	};
46605
46606// Give the init function the jQuery prototype for later instantiation
46607init.prototype = jQuery.fn;
46608
46609// Initialize central reference
46610rootjQuery = jQuery( document );
46611
46612
46613var rparentsprev = /^(?:parents|prev(?:Until|All))/,
46614
46615	// Methods guaranteed to produce a unique set when starting from a unique set
46616	guaranteedUnique = {
46617		children: true,
46618		contents: true,
46619		next: true,
46620		prev: true
46621	};
46622
46623jQuery.fn.extend( {
46624	has: function( target ) {
46625		var targets = jQuery( target, this ),
46626			l = targets.length;
46627
46628		return this.filter( function() {
46629			var i = 0;
46630			for ( ; i < l; i++ ) {
46631				if ( jQuery.contains( this, targets[ i ] ) ) {
46632					return true;
46633				}
46634			}
46635		} );
46636	},
46637
46638	closest: function( selectors, context ) {
46639		var cur,
46640			i = 0,
46641			l = this.length,
46642			matched = [],
46643			targets = typeof selectors !== "string" && jQuery( selectors );
46644
46645		// Positional selectors never match, since there's no _selection_ context
46646		if ( !rneedsContext.test( selectors ) ) {
46647			for ( ; i < l; i++ ) {
46648				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
46649
46650					// Always skip document fragments
46651					if ( cur.nodeType < 11 && ( targets ?
46652						targets.index( cur ) > -1 :
46653
46654						// Don't pass non-elements to jQuery#find
46655						cur.nodeType === 1 &&
46656							jQuery.find.matchesSelector( cur, selectors ) ) ) {
46657
46658						matched.push( cur );
46659						break;
46660					}
46661				}
46662			}
46663		}
46664
46665		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
46666	},
46667
46668	// Determine the position of an element within the set
46669	index: function( elem ) {
46670
46671		// No argument, return index in parent
46672		if ( !elem ) {
46673			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
46674		}
46675
46676		// Index in selector
46677		if ( typeof elem === "string" ) {
46678			return indexOf.call( jQuery( elem ), this[ 0 ] );
46679		}
46680
46681		// Locate the position of the desired element
46682		return indexOf.call( this,
46683
46684			// If it receives a jQuery object, the first element is used
46685			elem.jquery ? elem[ 0 ] : elem
46686		);
46687	},
46688
46689	add: function( selector, context ) {
46690		return this.pushStack(
46691			jQuery.uniqueSort(
46692				jQuery.merge( this.get(), jQuery( selector, context ) )
46693			)
46694		);
46695	},
46696
46697	addBack: function( selector ) {
46698		return this.add( selector == null ?
46699			this.prevObject : this.prevObject.filter( selector )
46700		);
46701	}
46702} );
46703
46704function sibling( cur, dir ) {
46705	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
46706	return cur;
46707}
46708
46709jQuery.each( {
46710	parent: function( elem ) {
46711		var parent = elem.parentNode;
46712		return parent && parent.nodeType !== 11 ? parent : null;
46713	},
46714	parents: function( elem ) {
46715		return dir( elem, "parentNode" );
46716	},
46717	parentsUntil: function( elem, _i, until ) {
46718		return dir( elem, "parentNode", until );
46719	},
46720	next: function( elem ) {
46721		return sibling( elem, "nextSibling" );
46722	},
46723	prev: function( elem ) {
46724		return sibling( elem, "previousSibling" );
46725	},
46726	nextAll: function( elem ) {
46727		return dir( elem, "nextSibling" );
46728	},
46729	prevAll: function( elem ) {
46730		return dir( elem, "previousSibling" );
46731	},
46732	nextUntil: function( elem, _i, until ) {
46733		return dir( elem, "nextSibling", until );
46734	},
46735	prevUntil: function( elem, _i, until ) {
46736		return dir( elem, "previousSibling", until );
46737	},
46738	siblings: function( elem ) {
46739		return siblings( ( elem.parentNode || {} ).firstChild, elem );
46740	},
46741	children: function( elem ) {
46742		return siblings( elem.firstChild );
46743	},
46744	contents: function( elem ) {
46745		if ( elem.contentDocument != null &&
46746
46747			// Support: IE 11+
46748			// <object> elements with no `data` attribute has an object
46749			// `contentDocument` with a `null` prototype.
46750			getProto( elem.contentDocument ) ) {
46751
46752			return elem.contentDocument;
46753		}
46754
46755		// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
46756		// Treat the template element as a regular one in browsers that
46757		// don't support it.
46758		if ( nodeName( elem, "template" ) ) {
46759			elem = elem.content || elem;
46760		}
46761
46762		return jQuery.merge( [], elem.childNodes );
46763	}
46764}, function( name, fn ) {
46765	jQuery.fn[ name ] = function( until, selector ) {
46766		var matched = jQuery.map( this, fn, until );
46767
46768		if ( name.slice( -5 ) !== "Until" ) {
46769			selector = until;
46770		}
46771
46772		if ( selector && typeof selector === "string" ) {
46773			matched = jQuery.filter( selector, matched );
46774		}
46775
46776		if ( this.length > 1 ) {
46777
46778			// Remove duplicates
46779			if ( !guaranteedUnique[ name ] ) {
46780				jQuery.uniqueSort( matched );
46781			}
46782
46783			// Reverse order for parents* and prev-derivatives
46784			if ( rparentsprev.test( name ) ) {
46785				matched.reverse();
46786			}
46787		}
46788
46789		return this.pushStack( matched );
46790	};
46791} );
46792var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
46793
46794
46795
46796// Convert String-formatted options into Object-formatted ones
46797function createOptions( options ) {
46798	var object = {};
46799	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
46800		object[ flag ] = true;
46801	} );
46802	return object;
46803}
46804
46805/*
46806 * Create a callback list using the following parameters:
46807 *
46808 *	options: an optional list of space-separated options that will change how
46809 *			the callback list behaves or a more traditional option object
46810 *
46811 * By default a callback list will act like an event callback list and can be
46812 * "fired" multiple times.
46813 *
46814 * Possible options:
46815 *
46816 *	once:			will ensure the callback list can only be fired once (like a Deferred)
46817 *
46818 *	memory:			will keep track of previous values and will call any callback added
46819 *					after the list has been fired right away with the latest "memorized"
46820 *					values (like a Deferred)
46821 *
46822 *	unique:			will ensure a callback can only be added once (no duplicate in the list)
46823 *
46824 *	stopOnFalse:	interrupt callings when a callback returns false
46825 *
46826 */
46827jQuery.Callbacks = function( options ) {
46828
46829	// Convert options from String-formatted to Object-formatted if needed
46830	// (we check in cache first)
46831	options = typeof options === "string" ?
46832		createOptions( options ) :
46833		jQuery.extend( {}, options );
46834
46835	var // Flag to know if list is currently firing
46836		firing,
46837
46838		// Last fire value for non-forgettable lists
46839		memory,
46840
46841		// Flag to know if list was already fired
46842		fired,
46843
46844		// Flag to prevent firing
46845		locked,
46846
46847		// Actual callback list
46848		list = [],
46849
46850		// Queue of execution data for repeatable lists
46851		queue = [],
46852
46853		// Index of currently firing callback (modified by add/remove as needed)
46854		firingIndex = -1,
46855
46856		// Fire callbacks
46857		fire = function() {
46858
46859			// Enforce single-firing
46860			locked = locked || options.once;
46861
46862			// Execute callbacks for all pending executions,
46863			// respecting firingIndex overrides and runtime changes
46864			fired = firing = true;
46865			for ( ; queue.length; firingIndex = -1 ) {
46866				memory = queue.shift();
46867				while ( ++firingIndex < list.length ) {
46868
46869					// Run callback and check for early termination
46870					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
46871						options.stopOnFalse ) {
46872
46873						// Jump to end and forget the data so .add doesn't re-fire
46874						firingIndex = list.length;
46875						memory = false;
46876					}
46877				}
46878			}
46879
46880			// Forget the data if we're done with it
46881			if ( !options.memory ) {
46882				memory = false;
46883			}
46884
46885			firing = false;
46886
46887			// Clean up if we're done firing for good
46888			if ( locked ) {
46889
46890				// Keep an empty list if we have data for future add calls
46891				if ( memory ) {
46892					list = [];
46893
46894				// Otherwise, this object is spent
46895				} else {
46896					list = "";
46897				}
46898			}
46899		},
46900
46901		// Actual Callbacks object
46902		self = {
46903
46904			// Add a callback or a collection of callbacks to the list
46905			add: function() {
46906				if ( list ) {
46907
46908					// If we have memory from a past run, we should fire after adding
46909					if ( memory && !firing ) {
46910						firingIndex = list.length - 1;
46911						queue.push( memory );
46912					}
46913
46914					( function add( args ) {
46915						jQuery.each( args, function( _, arg ) {
46916							if ( isFunction( arg ) ) {
46917								if ( !options.unique || !self.has( arg ) ) {
46918									list.push( arg );
46919								}
46920							} else if ( arg && arg.length && toType( arg ) !== "string" ) {
46921
46922								// Inspect recursively
46923								add( arg );
46924							}
46925						} );
46926					} )( arguments );
46927
46928					if ( memory && !firing ) {
46929						fire();
46930					}
46931				}
46932				return this;
46933			},
46934
46935			// Remove a callback from the list
46936			remove: function() {
46937				jQuery.each( arguments, function( _, arg ) {
46938					var index;
46939					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
46940						list.splice( index, 1 );
46941
46942						// Handle firing indexes
46943						if ( index <= firingIndex ) {
46944							firingIndex--;
46945						}
46946					}
46947				} );
46948				return this;
46949			},
46950
46951			// Check if a given callback is in the list.
46952			// If no argument is given, return whether or not list has callbacks attached.
46953			has: function( fn ) {
46954				return fn ?
46955					jQuery.inArray( fn, list ) > -1 :
46956					list.length > 0;
46957			},
46958
46959			// Remove all callbacks from the list
46960			empty: function() {
46961				if ( list ) {
46962					list = [];
46963				}
46964				return this;
46965			},
46966
46967			// Disable .fire and .add
46968			// Abort any current/pending executions
46969			// Clear all callbacks and values
46970			disable: function() {
46971				locked = queue = [];
46972				list = memory = "";
46973				return this;
46974			},
46975			disabled: function() {
46976				return !list;
46977			},
46978
46979			// Disable .fire
46980			// Also disable .add unless we have memory (since it would have no effect)
46981			// Abort any pending executions
46982			lock: function() {
46983				locked = queue = [];
46984				if ( !memory && !firing ) {
46985					list = memory = "";
46986				}
46987				return this;
46988			},
46989			locked: function() {
46990				return !!locked;
46991			},
46992
46993			// Call all callbacks with the given context and arguments
46994			fireWith: function( context, args ) {
46995				if ( !locked ) {
46996					args = args || [];
46997					args = [ context, args.slice ? args.slice() : args ];
46998					queue.push( args );
46999					if ( !firing ) {
47000						fire();
47001					}
47002				}
47003				return this;
47004			},
47005
47006			// Call all the callbacks with the given arguments
47007			fire: function() {
47008				self.fireWith( this, arguments );
47009				return this;
47010			},
47011
47012			// To know if the callbacks have already been called at least once
47013			fired: function() {
47014				return !!fired;
47015			}
47016		};
47017
47018	return self;
47019};
47020
47021
47022function Identity( v ) {
47023	return v;
47024}
47025function Thrower( ex ) {
47026	throw ex;
47027}
47028
47029function adoptValue( value, resolve, reject, noValue ) {
47030	var method;
47031
47032	try {
47033
47034		// Check for promise aspect first to privilege synchronous behavior
47035		if ( value && isFunction( ( method = value.promise ) ) ) {
47036			method.call( value ).done( resolve ).fail( reject );
47037
47038		// Other thenables
47039		} else if ( value && isFunction( ( method = value.then ) ) ) {
47040			method.call( value, resolve, reject );
47041
47042		// Other non-thenables
47043		} else {
47044
47045			// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
47046			// * false: [ value ].slice( 0 ) => resolve( value )
47047			// * true: [ value ].slice( 1 ) => resolve()
47048			resolve.apply( undefined, [ value ].slice( noValue ) );
47049		}
47050
47051	// For Promises/A+, convert exceptions into rejections
47052	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
47053	// Deferred#then to conditionally suppress rejection.
47054	} catch ( value ) {
47055
47056		// Support: Android 4.0 only
47057		// Strict mode functions invoked without .call/.apply get global-object context
47058		reject.apply( undefined, [ value ] );
47059	}
47060}
47061
47062jQuery.extend( {
47063
47064	Deferred: function( func ) {
47065		var tuples = [
47066
47067				// action, add listener, callbacks,
47068				// ... .then handlers, argument index, [final state]
47069				[ "notify", "progress", jQuery.Callbacks( "memory" ),
47070					jQuery.Callbacks( "memory" ), 2 ],
47071				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
47072					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
47073				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
47074					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
47075			],
47076			state = "pending",
47077			promise = {
47078				state: function() {
47079					return state;
47080				},
47081				always: function() {
47082					deferred.done( arguments ).fail( arguments );
47083					return this;
47084				},
47085				"catch": function( fn ) {
47086					return promise.then( null, fn );
47087				},
47088
47089				// Keep pipe for back-compat
47090				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
47091					var fns = arguments;
47092
47093					return jQuery.Deferred( function( newDefer ) {
47094						jQuery.each( tuples, function( _i, tuple ) {
47095
47096							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
47097							var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
47098
47099							// deferred.progress(function() { bind to newDefer or newDefer.notify })
47100							// deferred.done(function() { bind to newDefer or newDefer.resolve })
47101							// deferred.fail(function() { bind to newDefer or newDefer.reject })
47102							deferred[ tuple[ 1 ] ]( function() {
47103								var returned = fn && fn.apply( this, arguments );
47104								if ( returned && isFunction( returned.promise ) ) {
47105									returned.promise()
47106										.progress( newDefer.notify )
47107										.done( newDefer.resolve )
47108										.fail( newDefer.reject );
47109								} else {
47110									newDefer[ tuple[ 0 ] + "With" ](
47111										this,
47112										fn ? [ returned ] : arguments
47113									);
47114								}
47115							} );
47116						} );
47117						fns = null;
47118					} ).promise();
47119				},
47120				then: function( onFulfilled, onRejected, onProgress ) {
47121					var maxDepth = 0;
47122					function resolve( depth, deferred, handler, special ) {
47123						return function() {
47124							var that = this,
47125								args = arguments,
47126								mightThrow = function() {
47127									var returned, then;
47128
47129									// Support: Promises/A+ section 2.3.3.3.3
47130									// https://promisesaplus.com/#point-59
47131									// Ignore double-resolution attempts
47132									if ( depth < maxDepth ) {
47133										return;
47134									}
47135
47136									returned = handler.apply( that, args );
47137
47138									// Support: Promises/A+ section 2.3.1
47139									// https://promisesaplus.com/#point-48
47140									if ( returned === deferred.promise() ) {
47141										throw new TypeError( "Thenable self-resolution" );
47142									}
47143
47144									// Support: Promises/A+ sections 2.3.3.1, 3.5
47145									// https://promisesaplus.com/#point-54
47146									// https://promisesaplus.com/#point-75
47147									// Retrieve `then` only once
47148									then = returned &&
47149
47150										// Support: Promises/A+ section 2.3.4
47151										// https://promisesaplus.com/#point-64
47152										// Only check objects and functions for thenability
47153										( typeof returned === "object" ||
47154											typeof returned === "function" ) &&
47155										returned.then;
47156
47157									// Handle a returned thenable
47158									if ( isFunction( then ) ) {
47159
47160										// Special processors (notify) just wait for resolution
47161										if ( special ) {
47162											then.call(
47163												returned,
47164												resolve( maxDepth, deferred, Identity, special ),
47165												resolve( maxDepth, deferred, Thrower, special )
47166											);
47167
47168										// Normal processors (resolve) also hook into progress
47169										} else {
47170
47171											// ...and disregard older resolution values
47172											maxDepth++;
47173
47174											then.call(
47175												returned,
47176												resolve( maxDepth, deferred, Identity, special ),
47177												resolve( maxDepth, deferred, Thrower, special ),
47178												resolve( maxDepth, deferred, Identity,
47179													deferred.notifyWith )
47180											);
47181										}
47182
47183									// Handle all other returned values
47184									} else {
47185
47186										// Only substitute handlers pass on context
47187										// and multiple values (non-spec behavior)
47188										if ( handler !== Identity ) {
47189											that = undefined;
47190											args = [ returned ];
47191										}
47192
47193										// Process the value(s)
47194										// Default process is resolve
47195										( special || deferred.resolveWith )( that, args );
47196									}
47197								},
47198
47199								// Only normal processors (resolve) catch and reject exceptions
47200								process = special ?
47201									mightThrow :
47202									function() {
47203										try {
47204											mightThrow();
47205										} catch ( e ) {
47206
47207											if ( jQuery.Deferred.exceptionHook ) {
47208												jQuery.Deferred.exceptionHook( e,
47209													process.error );
47210											}
47211
47212											// Support: Promises/A+ section 2.3.3.3.4.1
47213											// https://promisesaplus.com/#point-61
47214											// Ignore post-resolution exceptions
47215											if ( depth + 1 >= maxDepth ) {
47216
47217												// Only substitute handlers pass on context
47218												// and multiple values (non-spec behavior)
47219												if ( handler !== Thrower ) {
47220													that = undefined;
47221													args = [ e ];
47222												}
47223
47224												deferred.rejectWith( that, args );
47225											}
47226										}
47227									};
47228
47229							// Support: Promises/A+ section 2.3.3.3.1
47230							// https://promisesaplus.com/#point-57
47231							// Re-resolve promises immediately to dodge false rejection from
47232							// subsequent errors
47233							if ( depth ) {
47234								process();
47235							} else {
47236
47237								// Call an optional hook to record the error, in case of exception
47238								// since it's otherwise lost when execution goes async
47239								if ( jQuery.Deferred.getErrorHook ) {
47240									process.error = jQuery.Deferred.getErrorHook();
47241
47242								// The deprecated alias of the above. While the name suggests
47243								// returning the stack, not an error instance, jQuery just passes
47244								// it directly to `console.warn` so both will work; an instance
47245								// just better cooperates with source maps.
47246								} else if ( jQuery.Deferred.getStackHook ) {
47247									process.error = jQuery.Deferred.getStackHook();
47248								}
47249								window.setTimeout( process );
47250							}
47251						};
47252					}
47253
47254					return jQuery.Deferred( function( newDefer ) {
47255
47256						// progress_handlers.add( ... )
47257						tuples[ 0 ][ 3 ].add(
47258							resolve(
47259								0,
47260								newDefer,
47261								isFunction( onProgress ) ?
47262									onProgress :
47263									Identity,
47264								newDefer.notifyWith
47265							)
47266						);
47267
47268						// fulfilled_handlers.add( ... )
47269						tuples[ 1 ][ 3 ].add(
47270							resolve(
47271								0,
47272								newDefer,
47273								isFunction( onFulfilled ) ?
47274									onFulfilled :
47275									Identity
47276							)
47277						);
47278
47279						// rejected_handlers.add( ... )
47280						tuples[ 2 ][ 3 ].add(
47281							resolve(
47282								0,
47283								newDefer,
47284								isFunction( onRejected ) ?
47285									onRejected :
47286									Thrower
47287							)
47288						);
47289					} ).promise();
47290				},
47291
47292				// Get a promise for this deferred
47293				// If obj is provided, the promise aspect is added to the object
47294				promise: function( obj ) {
47295					return obj != null ? jQuery.extend( obj, promise ) : promise;
47296				}
47297			},
47298			deferred = {};
47299
47300		// Add list-specific methods
47301		jQuery.each( tuples, function( i, tuple ) {
47302			var list = tuple[ 2 ],
47303				stateString = tuple[ 5 ];
47304
47305			// promise.progress = list.add
47306			// promise.done = list.add
47307			// promise.fail = list.add
47308			promise[ tuple[ 1 ] ] = list.add;
47309
47310			// Handle state
47311			if ( stateString ) {
47312				list.add(
47313					function() {
47314
47315						// state = "resolved" (i.e., fulfilled)
47316						// state = "rejected"
47317						state = stateString;
47318					},
47319
47320					// rejected_callbacks.disable
47321					// fulfilled_callbacks.disable
47322					tuples[ 3 - i ][ 2 ].disable,
47323
47324					// rejected_handlers.disable
47325					// fulfilled_handlers.disable
47326					tuples[ 3 - i ][ 3 ].disable,
47327
47328					// progress_callbacks.lock
47329					tuples[ 0 ][ 2 ].lock,
47330
47331					// progress_handlers.lock
47332					tuples[ 0 ][ 3 ].lock
47333				);
47334			}
47335
47336			// progress_handlers.fire
47337			// fulfilled_handlers.fire
47338			// rejected_handlers.fire
47339			list.add( tuple[ 3 ].fire );
47340
47341			// deferred.notify = function() { deferred.notifyWith(...) }
47342			// deferred.resolve = function() { deferred.resolveWith(...) }
47343			// deferred.reject = function() { deferred.rejectWith(...) }
47344			deferred[ tuple[ 0 ] ] = function() {
47345				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
47346				return this;
47347			};
47348
47349			// deferred.notifyWith = list.fireWith
47350			// deferred.resolveWith = list.fireWith
47351			// deferred.rejectWith = list.fireWith
47352			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
47353		} );
47354
47355		// Make the deferred a promise
47356		promise.promise( deferred );
47357
47358		// Call given func if any
47359		if ( func ) {
47360			func.call( deferred, deferred );
47361		}
47362
47363		// All done!
47364		return deferred;
47365	},
47366
47367	// Deferred helper
47368	when: function( singleValue ) {
47369		var
47370
47371			// count of uncompleted subordinates
47372			remaining = arguments.length,
47373
47374			// count of unprocessed arguments
47375			i = remaining,
47376
47377			// subordinate fulfillment data
47378			resolveContexts = Array( i ),
47379			resolveValues = slice.call( arguments ),
47380
47381			// the primary Deferred
47382			primary = jQuery.Deferred(),
47383
47384			// subordinate callback factory
47385			updateFunc = function( i ) {
47386				return function( value ) {
47387					resolveContexts[ i ] = this;
47388					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
47389					if ( !( --remaining ) ) {
47390						primary.resolveWith( resolveContexts, resolveValues );
47391					}
47392				};
47393			};
47394
47395		// Single- and empty arguments are adopted like Promise.resolve
47396		if ( remaining <= 1 ) {
47397			adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,
47398				!remaining );
47399
47400			// Use .then() to unwrap secondary thenables (cf. gh-3000)
47401			if ( primary.state() === "pending" ||
47402				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
47403
47404				return primary.then();
47405			}
47406		}
47407
47408		// Multiple arguments are aggregated like Promise.all array elements
47409		while ( i-- ) {
47410			adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );
47411		}
47412
47413		return primary.promise();
47414	}
47415} );
47416
47417
47418// These usually indicate a programmer mistake during development,
47419// warn about them ASAP rather than swallowing them by default.
47420var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
47421
47422// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error
47423// captured before the async barrier to get the original error cause
47424// which may otherwise be hidden.
47425jQuery.Deferred.exceptionHook = function( error, asyncError ) {
47426
47427	// Support: IE 8 - 9 only
47428	// Console exists when dev tools are open, which can happen at any time
47429	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
47430		window.console.warn( "jQuery.Deferred exception: " + error.message,
47431			error.stack, asyncError );
47432	}
47433};
47434
47435
47436
47437
47438jQuery.readyException = function( error ) {
47439	window.setTimeout( function() {
47440		throw error;
47441	} );
47442};
47443
47444
47445
47446
47447// The deferred used on DOM ready
47448var readyList = jQuery.Deferred();
47449
47450jQuery.fn.ready = function( fn ) {
47451
47452	readyList
47453		.then( fn )
47454
47455		// Wrap jQuery.readyException in a function so that the lookup
47456		// happens at the time of error handling instead of callback
47457		// registration.
47458		.catch( function( error ) {
47459			jQuery.readyException( error );
47460		} );
47461
47462	return this;
47463};
47464
47465jQuery.extend( {
47466
47467	// Is the DOM ready to be used? Set to true once it occurs.
47468	isReady: false,
47469
47470	// A counter to track how many items to wait for before
47471	// the ready event fires. See trac-6781
47472	readyWait: 1,
47473
47474	// Handle when the DOM is ready
47475	ready: function( wait ) {
47476
47477		// Abort if there are pending holds or we're already ready
47478		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
47479			return;
47480		}
47481
47482		// Remember that the DOM is ready
47483		jQuery.isReady = true;
47484
47485		// If a normal DOM Ready event fired, decrement, and wait if need be
47486		if ( wait !== true && --jQuery.readyWait > 0 ) {
47487			return;
47488		}
47489
47490		// If there are functions bound, to execute
47491		readyList.resolveWith( document, [ jQuery ] );
47492	}
47493} );
47494
47495jQuery.ready.then = readyList.then;
47496
47497// The ready event handler and self cleanup method
47498function completed() {
47499	document.removeEventListener( "DOMContentLoaded", completed );
47500	window.removeEventListener( "load", completed );
47501	jQuery.ready();
47502}
47503
47504// Catch cases where $(document).ready() is called
47505// after the browser event has already occurred.
47506// Support: IE <=9 - 10 only
47507// Older IE sometimes signals "interactive" too soon
47508if ( document.readyState === "complete" ||
47509	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
47510
47511	// Handle it asynchronously to allow scripts the opportunity to delay ready
47512	window.setTimeout( jQuery.ready );
47513
47514} else {
47515
47516	// Use the handy event callback
47517	document.addEventListener( "DOMContentLoaded", completed );
47518
47519	// A fallback to window.onload, that will always work
47520	window.addEventListener( "load", completed );
47521}
47522
47523
47524
47525
47526// Multifunctional method to get and set values of a collection
47527// The value/s can optionally be executed if it's a function
47528var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
47529	var i = 0,
47530		len = elems.length,
47531		bulk = key == null;
47532
47533	// Sets many values
47534	if ( toType( key ) === "object" ) {
47535		chainable = true;
47536		for ( i in key ) {
47537			access( elems, fn, i, key[ i ], true, emptyGet, raw );
47538		}
47539
47540	// Sets one value
47541	} else if ( value !== undefined ) {
47542		chainable = true;
47543
47544		if ( !isFunction( value ) ) {
47545			raw = true;
47546		}
47547
47548		if ( bulk ) {
47549
47550			// Bulk operations run against the entire set
47551			if ( raw ) {
47552				fn.call( elems, value );
47553				fn = null;
47554
47555			// ...except when executing function values
47556			} else {
47557				bulk = fn;
47558				fn = function( elem, _key, value ) {
47559					return bulk.call( jQuery( elem ), value );
47560				};
47561			}
47562		}
47563
47564		if ( fn ) {
47565			for ( ; i < len; i++ ) {
47566				fn(
47567					elems[ i ], key, raw ?
47568						value :
47569						value.call( elems[ i ], i, fn( elems[ i ], key ) )
47570				);
47571			}
47572		}
47573	}
47574
47575	if ( chainable ) {
47576		return elems;
47577	}
47578
47579	// Gets
47580	if ( bulk ) {
47581		return fn.call( elems );
47582	}
47583
47584	return len ? fn( elems[ 0 ], key ) : emptyGet;
47585};
47586
47587
47588// Matches dashed string for camelizing
47589var rmsPrefix = /^-ms-/,
47590	rdashAlpha = /-([a-z])/g;
47591
47592// Used by camelCase as callback to replace()
47593function fcamelCase( _all, letter ) {
47594	return letter.toUpperCase();
47595}
47596
47597// Convert dashed to camelCase; used by the css and data modules
47598// Support: IE <=9 - 11, Edge 12 - 15
47599// Microsoft forgot to hump their vendor prefix (trac-9572)
47600function camelCase( string ) {
47601	return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
47602}
47603var acceptData = function( owner ) {
47604
47605	// Accepts only:
47606	//  - Node
47607	//    - Node.ELEMENT_NODE
47608	//    - Node.DOCUMENT_NODE
47609	//  - Object
47610	//    - Any
47611	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
47612};
47613
47614
47615
47616
47617function Data() {
47618	this.expando = jQuery.expando + Data.uid++;
47619}
47620
47621Data.uid = 1;
47622
47623Data.prototype = {
47624
47625	cache: function( owner ) {
47626
47627		// Check if the owner object already has a cache
47628		var value = owner[ this.expando ];
47629
47630		// If not, create one
47631		if ( !value ) {
47632			value = {};
47633
47634			// We can accept data for non-element nodes in modern browsers,
47635			// but we should not, see trac-8335.
47636			// Always return an empty object.
47637			if ( acceptData( owner ) ) {
47638
47639				// If it is a node unlikely to be stringify-ed or looped over
47640				// use plain assignment
47641				if ( owner.nodeType ) {
47642					owner[ this.expando ] = value;
47643
47644				// Otherwise secure it in a non-enumerable property
47645				// configurable must be true to allow the property to be
47646				// deleted when data is removed
47647				} else {
47648					Object.defineProperty( owner, this.expando, {
47649						value: value,
47650						configurable: true
47651					} );
47652				}
47653			}
47654		}
47655
47656		return value;
47657	},
47658	set: function( owner, data, value ) {
47659		var prop,
47660			cache = this.cache( owner );
47661
47662		// Handle: [ owner, key, value ] args
47663		// Always use camelCase key (gh-2257)
47664		if ( typeof data === "string" ) {
47665			cache[ camelCase( data ) ] = value;
47666
47667		// Handle: [ owner, { properties } ] args
47668		} else {
47669
47670			// Copy the properties one-by-one to the cache object
47671			for ( prop in data ) {
47672				cache[ camelCase( prop ) ] = data[ prop ];
47673			}
47674		}
47675		return cache;
47676	},
47677	get: function( owner, key ) {
47678		return key === undefined ?
47679			this.cache( owner ) :
47680
47681			// Always use camelCase key (gh-2257)
47682			owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
47683	},
47684	access: function( owner, key, value ) {
47685
47686		// In cases where either:
47687		//
47688		//   1. No key was specified
47689		//   2. A string key was specified, but no value provided
47690		//
47691		// Take the "read" path and allow the get method to determine
47692		// which value to return, respectively either:
47693		//
47694		//   1. The entire cache object
47695		//   2. The data stored at the key
47696		//
47697		if ( key === undefined ||
47698				( ( key && typeof key === "string" ) && value === undefined ) ) {
47699
47700			return this.get( owner, key );
47701		}
47702
47703		// When the key is not a string, or both a key and value
47704		// are specified, set or extend (existing objects) with either:
47705		//
47706		//   1. An object of properties
47707		//   2. A key and value
47708		//
47709		this.set( owner, key, value );
47710
47711		// Since the "set" path can have two possible entry points
47712		// return the expected data based on which path was taken[*]
47713		return value !== undefined ? value : key;
47714	},
47715	remove: function( owner, key ) {
47716		var i,
47717			cache = owner[ this.expando ];
47718
47719		if ( cache === undefined ) {
47720			return;
47721		}
47722
47723		if ( key !== undefined ) {
47724
47725			// Support array or space separated string of keys
47726			if ( Array.isArray( key ) ) {
47727
47728				// If key is an array of keys...
47729				// We always set camelCase keys, so remove that.
47730				key = key.map( camelCase );
47731			} else {
47732				key = camelCase( key );
47733
47734				// If a key with the spaces exists, use it.
47735				// Otherwise, create an array by matching non-whitespace
47736				key = key in cache ?
47737					[ key ] :
47738					( key.match( rnothtmlwhite ) || [] );
47739			}
47740
47741			i = key.length;
47742
47743			while ( i-- ) {
47744				delete cache[ key[ i ] ];
47745			}
47746		}
47747
47748		// Remove the expando if there's no more data
47749		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
47750
47751			// Support: Chrome <=35 - 45
47752			// Webkit & Blink performance suffers when deleting properties
47753			// from DOM nodes, so set to undefined instead
47754			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
47755			if ( owner.nodeType ) {
47756				owner[ this.expando ] = undefined;
47757			} else {
47758				delete owner[ this.expando ];
47759			}
47760		}
47761	},
47762	hasData: function( owner ) {
47763		var cache = owner[ this.expando ];
47764		return cache !== undefined && !jQuery.isEmptyObject( cache );
47765	}
47766};
47767var dataPriv = new Data();
47768
47769var dataUser = new Data();
47770
47771
47772
47773//	Implementation Summary
47774//
47775//	1. Enforce API surface and semantic compatibility with 1.9.x branch
47776//	2. Improve the module's maintainability by reducing the storage
47777//		paths to a single mechanism.
47778//	3. Use the same single mechanism to support "private" and "user" data.
47779//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
47780//	5. Avoid exposing implementation details on user objects (eg. expando properties)
47781//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
47782
47783var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
47784	rmultiDash = /[A-Z]/g;
47785
47786function getData( data ) {
47787	if ( data === "true" ) {
47788		return true;
47789	}
47790
47791	if ( data === "false" ) {
47792		return false;
47793	}
47794
47795	if ( data === "null" ) {
47796		return null;
47797	}
47798
47799	// Only convert to a number if it doesn't change the string
47800	if ( data === +data + "" ) {
47801		return +data;
47802	}
47803
47804	if ( rbrace.test( data ) ) {
47805		return JSON.parse( data );
47806	}
47807
47808	return data;
47809}
47810
47811function dataAttr( elem, key, data ) {
47812	var name;
47813
47814	// If nothing was found internally, try to fetch any
47815	// data from the HTML5 data-* attribute
47816	if ( data === undefined && elem.nodeType === 1 ) {
47817		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
47818		data = elem.getAttribute( name );
47819
47820		if ( typeof data === "string" ) {
47821			try {
47822				data = getData( data );
47823			} catch ( e ) {}
47824
47825			// Make sure we set the data so it isn't changed later
47826			dataUser.set( elem, key, data );
47827		} else {
47828			data = undefined;
47829		}
47830	}
47831	return data;
47832}
47833
47834jQuery.extend( {
47835	hasData: function( elem ) {
47836		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
47837	},
47838
47839	data: function( elem, name, data ) {
47840		return dataUser.access( elem, name, data );
47841	},
47842
47843	removeData: function( elem, name ) {
47844		dataUser.remove( elem, name );
47845	},
47846
47847	// TODO: Now that all calls to _data and _removeData have been replaced
47848	// with direct calls to dataPriv methods, these can be deprecated.
47849	_data: function( elem, name, data ) {
47850		return dataPriv.access( elem, name, data );
47851	},
47852
47853	_removeData: function( elem, name ) {
47854		dataPriv.remove( elem, name );
47855	}
47856} );
47857
47858jQuery.fn.extend( {
47859	data: function( key, value ) {
47860		var i, name, data,
47861			elem = this[ 0 ],
47862			attrs = elem && elem.attributes;
47863
47864		// Gets all values
47865		if ( key === undefined ) {
47866			if ( this.length ) {
47867				data = dataUser.get( elem );
47868
47869				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
47870					i = attrs.length;
47871					while ( i-- ) {
47872
47873						// Support: IE 11 only
47874						// The attrs elements can be null (trac-14894)
47875						if ( attrs[ i ] ) {
47876							name = attrs[ i ].name;
47877							if ( name.indexOf( "data-" ) === 0 ) {
47878								name = camelCase( name.slice( 5 ) );
47879								dataAttr( elem, name, data[ name ] );
47880							}
47881						}
47882					}
47883					dataPriv.set( elem, "hasDataAttrs", true );
47884				}
47885			}
47886
47887			return data;
47888		}
47889
47890		// Sets multiple values
47891		if ( typeof key === "object" ) {
47892			return this.each( function() {
47893				dataUser.set( this, key );
47894			} );
47895		}
47896
47897		return access( this, function( value ) {
47898			var data;
47899
47900			// The calling jQuery object (element matches) is not empty
47901			// (and therefore has an element appears at this[ 0 ]) and the
47902			// `value` parameter was not undefined. An empty jQuery object
47903			// will result in `undefined` for elem = this[ 0 ] which will
47904			// throw an exception if an attempt to read a data cache is made.
47905			if ( elem && value === undefined ) {
47906
47907				// Attempt to get data from the cache
47908				// The key will always be camelCased in Data
47909				data = dataUser.get( elem, key );
47910				if ( data !== undefined ) {
47911					return data;
47912				}
47913
47914				// Attempt to "discover" the data in
47915				// HTML5 custom data-* attrs
47916				data = dataAttr( elem, key );
47917				if ( data !== undefined ) {
47918					return data;
47919				}
47920
47921				// We tried really hard, but the data doesn't exist.
47922				return;
47923			}
47924
47925			// Set the data...
47926			this.each( function() {
47927
47928				// We always store the camelCased key
47929				dataUser.set( this, key, value );
47930			} );
47931		}, null, value, arguments.length > 1, null, true );
47932	},
47933
47934	removeData: function( key ) {
47935		return this.each( function() {
47936			dataUser.remove( this, key );
47937		} );
47938	}
47939} );
47940
47941
47942jQuery.extend( {
47943	queue: function( elem, type, data ) {
47944		var queue;
47945
47946		if ( elem ) {
47947			type = ( type || "fx" ) + "queue";
47948			queue = dataPriv.get( elem, type );
47949
47950			// Speed up dequeue by getting out quickly if this is just a lookup
47951			if ( data ) {
47952				if ( !queue || Array.isArray( data ) ) {
47953					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
47954				} else {
47955					queue.push( data );
47956				}
47957			}
47958			return queue || [];
47959		}
47960	},
47961
47962	dequeue: function( elem, type ) {
47963		type = type || "fx";
47964
47965		var queue = jQuery.queue( elem, type ),
47966			startLength = queue.length,
47967			fn = queue.shift(),
47968			hooks = jQuery._queueHooks( elem, type ),
47969			next = function() {
47970				jQuery.dequeue( elem, type );
47971			};
47972
47973		// If the fx queue is dequeued, always remove the progress sentinel
47974		if ( fn === "inprogress" ) {
47975			fn = queue.shift();
47976			startLength--;
47977		}
47978
47979		if ( fn ) {
47980
47981			// Add a progress sentinel to prevent the fx queue from being
47982			// automatically dequeued
47983			if ( type === "fx" ) {
47984				queue.unshift( "inprogress" );
47985			}
47986
47987			// Clear up the last queue stop function
47988			delete hooks.stop;
47989			fn.call( elem, next, hooks );
47990		}
47991
47992		if ( !startLength && hooks ) {
47993			hooks.empty.fire();
47994		}
47995	},
47996
47997	// Not public - generate a queueHooks object, or return the current one
47998	_queueHooks: function( elem, type ) {
47999		var key = type + "queueHooks";
48000		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
48001			empty: jQuery.Callbacks( "once memory" ).add( function() {
48002				dataPriv.remove( elem, [ type + "queue", key ] );
48003			} )
48004		} );
48005	}
48006} );
48007
48008jQuery.fn.extend( {
48009	queue: function( type, data ) {
48010		var setter = 2;
48011
48012		if ( typeof type !== "string" ) {
48013			data = type;
48014			type = "fx";
48015			setter--;
48016		}
48017
48018		if ( arguments.length < setter ) {
48019			return jQuery.queue( this[ 0 ], type );
48020		}
48021
48022		return data === undefined ?
48023			this :
48024			this.each( function() {
48025				var queue = jQuery.queue( this, type, data );
48026
48027				// Ensure a hooks for this queue
48028				jQuery._queueHooks( this, type );
48029
48030				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
48031					jQuery.dequeue( this, type );
48032				}
48033			} );
48034	},
48035	dequeue: function( type ) {
48036		return this.each( function() {
48037			jQuery.dequeue( this, type );
48038		} );
48039	},
48040	clearQueue: function( type ) {
48041		return this.queue( type || "fx", [] );
48042	},
48043
48044	// Get a promise resolved when queues of a certain type
48045	// are emptied (fx is the type by default)
48046	promise: function( type, obj ) {
48047		var tmp,
48048			count = 1,
48049			defer = jQuery.Deferred(),
48050			elements = this,
48051			i = this.length,
48052			resolve = function() {
48053				if ( !( --count ) ) {
48054					defer.resolveWith( elements, [ elements ] );
48055				}
48056			};
48057
48058		if ( typeof type !== "string" ) {
48059			obj = type;
48060			type = undefined;
48061		}
48062		type = type || "fx";
48063
48064		while ( i-- ) {
48065			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
48066			if ( tmp && tmp.empty ) {
48067				count++;
48068				tmp.empty.add( resolve );
48069			}
48070		}
48071		resolve();
48072		return defer.promise( obj );
48073	}
48074} );
48075var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
48076
48077var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
48078
48079
48080var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
48081
48082var documentElement = document.documentElement;
48083
48084
48085
48086	var isAttached = function( elem ) {
48087			return jQuery.contains( elem.ownerDocument, elem );
48088		},
48089		composed = { composed: true };
48090
48091	// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
48092	// Check attachment across shadow DOM boundaries when possible (gh-3504)
48093	// Support: iOS 10.0-10.2 only
48094	// Early iOS 10 versions support `attachShadow` but not `getRootNode`,
48095	// leading to errors. We need to check for `getRootNode`.
48096	if ( documentElement.getRootNode ) {
48097		isAttached = function( elem ) {
48098			return jQuery.contains( elem.ownerDocument, elem ) ||
48099				elem.getRootNode( composed ) === elem.ownerDocument;
48100		};
48101	}
48102var isHiddenWithinTree = function( elem, el ) {
48103
48104		// isHiddenWithinTree might be called from jQuery#filter function;
48105		// in that case, element will be second argument
48106		elem = el || elem;
48107
48108		// Inline style trumps all
48109		return elem.style.display === "none" ||
48110			elem.style.display === "" &&
48111
48112			// Otherwise, check computed style
48113			// Support: Firefox <=43 - 45
48114			// Disconnected elements can have computed display: none, so first confirm that elem is
48115			// in the document.
48116			isAttached( elem ) &&
48117
48118			jQuery.css( elem, "display" ) === "none";
48119	};
48120
48121
48122
48123function adjustCSS( elem, prop, valueParts, tween ) {
48124	var adjusted, scale,
48125		maxIterations = 20,
48126		currentValue = tween ?
48127			function() {
48128				return tween.cur();
48129			} :
48130			function() {
48131				return jQuery.css( elem, prop, "" );
48132			},
48133		initial = currentValue(),
48134		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
48135
48136		// Starting value computation is required for potential unit mismatches
48137		initialInUnit = elem.nodeType &&
48138			( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
48139			rcssNum.exec( jQuery.css( elem, prop ) );
48140
48141	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
48142
48143		// Support: Firefox <=54
48144		// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
48145		initial = initial / 2;
48146
48147		// Trust units reported by jQuery.css
48148		unit = unit || initialInUnit[ 3 ];
48149
48150		// Iteratively approximate from a nonzero starting point
48151		initialInUnit = +initial || 1;
48152
48153		while ( maxIterations-- ) {
48154
48155			// Evaluate and update our best guess (doubling guesses that zero out).
48156			// Finish if the scale equals or crosses 1 (making the old*new product non-positive).
48157			jQuery.style( elem, prop, initialInUnit + unit );
48158			if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
48159				maxIterations = 0;
48160			}
48161			initialInUnit = initialInUnit / scale;
48162
48163		}
48164
48165		initialInUnit = initialInUnit * 2;
48166		jQuery.style( elem, prop, initialInUnit + unit );
48167
48168		// Make sure we update the tween properties later on
48169		valueParts = valueParts || [];
48170	}
48171
48172	if ( valueParts ) {
48173		initialInUnit = +initialInUnit || +initial || 0;
48174
48175		// Apply relative offset (+=/-=) if specified
48176		adjusted = valueParts[ 1 ] ?
48177			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
48178			+valueParts[ 2 ];
48179		if ( tween ) {
48180			tween.unit = unit;
48181			tween.start = initialInUnit;
48182			tween.end = adjusted;
48183		}
48184	}
48185	return adjusted;
48186}
48187
48188
48189var defaultDisplayMap = {};
48190
48191function getDefaultDisplay( elem ) {
48192	var temp,
48193		doc = elem.ownerDocument,
48194		nodeName = elem.nodeName,
48195		display = defaultDisplayMap[ nodeName ];
48196
48197	if ( display ) {
48198		return display;
48199	}
48200
48201	temp = doc.body.appendChild( doc.createElement( nodeName ) );
48202	display = jQuery.css( temp, "display" );
48203
48204	temp.parentNode.removeChild( temp );
48205
48206	if ( display === "none" ) {
48207		display = "block";
48208	}
48209	defaultDisplayMap[ nodeName ] = display;
48210
48211	return display;
48212}
48213
48214function showHide( elements, show ) {
48215	var display, elem,
48216		values = [],
48217		index = 0,
48218		length = elements.length;
48219
48220	// Determine new display value for elements that need to change
48221	for ( ; index < length; index++ ) {
48222		elem = elements[ index ];
48223		if ( !elem.style ) {
48224			continue;
48225		}
48226
48227		display = elem.style.display;
48228		if ( show ) {
48229
48230			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
48231			// check is required in this first loop unless we have a nonempty display value (either
48232			// inline or about-to-be-restored)
48233			if ( display === "none" ) {
48234				values[ index ] = dataPriv.get( elem, "display" ) || null;
48235				if ( !values[ index ] ) {
48236					elem.style.display = "";
48237				}
48238			}
48239			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
48240				values[ index ] = getDefaultDisplay( elem );
48241			}
48242		} else {
48243			if ( display !== "none" ) {
48244				values[ index ] = "none";
48245
48246				// Remember what we're overwriting
48247				dataPriv.set( elem, "display", display );
48248			}
48249		}
48250	}
48251
48252	// Set the display of the elements in a second loop to avoid constant reflow
48253	for ( index = 0; index < length; index++ ) {
48254		if ( values[ index ] != null ) {
48255			elements[ index ].style.display = values[ index ];
48256		}
48257	}
48258
48259	return elements;
48260}
48261
48262jQuery.fn.extend( {
48263	show: function() {
48264		return showHide( this, true );
48265	},
48266	hide: function() {
48267		return showHide( this );
48268	},
48269	toggle: function( state ) {
48270		if ( typeof state === "boolean" ) {
48271			return state ? this.show() : this.hide();
48272		}
48273
48274		return this.each( function() {
48275			if ( isHiddenWithinTree( this ) ) {
48276				jQuery( this ).show();
48277			} else {
48278				jQuery( this ).hide();
48279			}
48280		} );
48281	}
48282} );
48283var rcheckableType = ( /^(?:checkbox|radio)$/i );
48284
48285var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
48286
48287var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
48288
48289
48290
48291( function() {
48292	var fragment = document.createDocumentFragment(),
48293		div = fragment.appendChild( document.createElement( "div" ) ),
48294		input = document.createElement( "input" );
48295
48296	// Support: Android 4.0 - 4.3 only
48297	// Check state lost if the name is set (trac-11217)
48298	// Support: Windows Web Apps (WWA)
48299	// `name` and `type` must use .setAttribute for WWA (trac-14901)
48300	input.setAttribute( "type", "radio" );
48301	input.setAttribute( "checked", "checked" );
48302	input.setAttribute( "name", "t" );
48303
48304	div.appendChild( input );
48305
48306	// Support: Android <=4.1 only
48307	// Older WebKit doesn't clone checked state correctly in fragments
48308	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
48309
48310	// Support: IE <=11 only
48311	// Make sure textarea (and checkbox) defaultValue is properly cloned
48312	div.innerHTML = "<textarea>x</textarea>";
48313	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
48314
48315	// Support: IE <=9 only
48316	// IE <=9 replaces <option> tags with their contents when inserted outside of
48317	// the select element.
48318	div.innerHTML = "<option></option>";
48319	support.option = !!div.lastChild;
48320} )();
48321
48322
48323// We have to close these tags to support XHTML (trac-13200)
48324var wrapMap = {
48325
48326	// XHTML parsers do not magically insert elements in the
48327	// same way that tag soup parsers do. So we cannot shorten
48328	// this by omitting <tbody> or other required elements.
48329	thead: [ 1, "<table>", "</table>" ],
48330	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
48331	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
48332	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
48333
48334	_default: [ 0, "", "" ]
48335};
48336
48337wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
48338wrapMap.th = wrapMap.td;
48339
48340// Support: IE <=9 only
48341if ( !support.option ) {
48342	wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ];
48343}
48344
48345
48346function getAll( context, tag ) {
48347
48348	// Support: IE <=9 - 11 only
48349	// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)
48350	var ret;
48351
48352	if ( typeof context.getElementsByTagName !== "undefined" ) {
48353		ret = context.getElementsByTagName( tag || "*" );
48354
48355	} else if ( typeof context.querySelectorAll !== "undefined" ) {
48356		ret = context.querySelectorAll( tag || "*" );
48357
48358	} else {
48359		ret = [];
48360	}
48361
48362	if ( tag === undefined || tag && nodeName( context, tag ) ) {
48363		return jQuery.merge( [ context ], ret );
48364	}
48365
48366	return ret;
48367}
48368
48369
48370// Mark scripts as having already been evaluated
48371function setGlobalEval( elems, refElements ) {
48372	var i = 0,
48373		l = elems.length;
48374
48375	for ( ; i < l; i++ ) {
48376		dataPriv.set(
48377			elems[ i ],
48378			"globalEval",
48379			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
48380		);
48381	}
48382}
48383
48384
48385var rhtml = /<|&#?\w+;/;
48386
48387function buildFragment( elems, context, scripts, selection, ignored ) {
48388	var elem, tmp, tag, wrap, attached, j,
48389		fragment = context.createDocumentFragment(),
48390		nodes = [],
48391		i = 0,
48392		l = elems.length;
48393
48394	for ( ; i < l; i++ ) {
48395		elem = elems[ i ];
48396
48397		if ( elem || elem === 0 ) {
48398
48399			// Add nodes directly
48400			if ( toType( elem ) === "object" ) {
48401
48402				// Support: Android <=4.0 only, PhantomJS 1 only
48403				// push.apply(_, arraylike) throws on ancient WebKit
48404				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
48405
48406			// Convert non-html into a text node
48407			} else if ( !rhtml.test( elem ) ) {
48408				nodes.push( context.createTextNode( elem ) );
48409
48410			// Convert html into DOM nodes
48411			} else {
48412				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
48413
48414				// Deserialize a standard representation
48415				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
48416				wrap = wrapMap[ tag ] || wrapMap._default;
48417				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
48418
48419				// Descend through wrappers to the right content
48420				j = wrap[ 0 ];
48421				while ( j-- ) {
48422					tmp = tmp.lastChild;
48423				}
48424
48425				// Support: Android <=4.0 only, PhantomJS 1 only
48426				// push.apply(_, arraylike) throws on ancient WebKit
48427				jQuery.merge( nodes, tmp.childNodes );
48428
48429				// Remember the top-level container
48430				tmp = fragment.firstChild;
48431
48432				// Ensure the created nodes are orphaned (trac-12392)
48433				tmp.textContent = "";
48434			}
48435		}
48436	}
48437
48438	// Remove wrapper from fragment
48439	fragment.textContent = "";
48440
48441	i = 0;
48442	while ( ( elem = nodes[ i++ ] ) ) {
48443
48444		// Skip elements already in the context collection (trac-4087)
48445		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
48446			if ( ignored ) {
48447				ignored.push( elem );
48448			}
48449			continue;
48450		}
48451
48452		attached = isAttached( elem );
48453
48454		// Append to fragment
48455		tmp = getAll( fragment.appendChild( elem ), "script" );
48456
48457		// Preserve script evaluation history
48458		if ( attached ) {
48459			setGlobalEval( tmp );
48460		}
48461
48462		// Capture executables
48463		if ( scripts ) {
48464			j = 0;
48465			while ( ( elem = tmp[ j++ ] ) ) {
48466				if ( rscriptType.test( elem.type || "" ) ) {
48467					scripts.push( elem );
48468				}
48469			}
48470		}
48471	}
48472
48473	return fragment;
48474}
48475
48476
48477var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
48478
48479function returnTrue() {
48480	return true;
48481}
48482
48483function returnFalse() {
48484	return false;
48485}
48486
48487function on( elem, types, selector, data, fn, one ) {
48488	var origFn, type;
48489
48490	// Types can be a map of types/handlers
48491	if ( typeof types === "object" ) {
48492
48493		// ( types-Object, selector, data )
48494		if ( typeof selector !== "string" ) {
48495
48496			// ( types-Object, data )
48497			data = data || selector;
48498			selector = undefined;
48499		}
48500		for ( type in types ) {
48501			on( elem, type, selector, data, types[ type ], one );
48502		}
48503		return elem;
48504	}
48505
48506	if ( data == null && fn == null ) {
48507
48508		// ( types, fn )
48509		fn = selector;
48510		data = selector = undefined;
48511	} else if ( fn == null ) {
48512		if ( typeof selector === "string" ) {
48513
48514			// ( types, selector, fn )
48515			fn = data;
48516			data = undefined;
48517		} else {
48518
48519			// ( types, data, fn )
48520			fn = data;
48521			data = selector;
48522			selector = undefined;
48523		}
48524	}
48525	if ( fn === false ) {
48526		fn = returnFalse;
48527	} else if ( !fn ) {
48528		return elem;
48529	}
48530
48531	if ( one === 1 ) {
48532		origFn = fn;
48533		fn = function( event ) {
48534
48535			// Can use an empty set, since event contains the info
48536			jQuery().off( event );
48537			return origFn.apply( this, arguments );
48538		};
48539
48540		// Use same guid so caller can remove using origFn
48541		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
48542	}
48543	return elem.each( function() {
48544		jQuery.event.add( this, types, fn, data, selector );
48545	} );
48546}
48547
48548/*
48549 * Helper functions for managing events -- not part of the public interface.
48550 * Props to Dean Edwards' addEvent library for many of the ideas.
48551 */
48552jQuery.event = {
48553
48554	global: {},
48555
48556	add: function( elem, types, handler, data, selector ) {
48557
48558		var handleObjIn, eventHandle, tmp,
48559			events, t, handleObj,
48560			special, handlers, type, namespaces, origType,
48561			elemData = dataPriv.get( elem );
48562
48563		// Only attach events to objects that accept data
48564		if ( !acceptData( elem ) ) {
48565			return;
48566		}
48567
48568		// Caller can pass in an object of custom data in lieu of the handler
48569		if ( handler.handler ) {
48570			handleObjIn = handler;
48571			handler = handleObjIn.handler;
48572			selector = handleObjIn.selector;
48573		}
48574
48575		// Ensure that invalid selectors throw exceptions at attach time
48576		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
48577		if ( selector ) {
48578			jQuery.find.matchesSelector( documentElement, selector );
48579		}
48580
48581		// Make sure that the handler has a unique ID, used to find/remove it later
48582		if ( !handler.guid ) {
48583			handler.guid = jQuery.guid++;
48584		}
48585
48586		// Init the element's event structure and main handler, if this is the first
48587		if ( !( events = elemData.events ) ) {
48588			events = elemData.events = Object.create( null );
48589		}
48590		if ( !( eventHandle = elemData.handle ) ) {
48591			eventHandle = elemData.handle = function( e ) {
48592
48593				// Discard the second event of a jQuery.event.trigger() and
48594				// when an event is called after a page has unloaded
48595				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
48596					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
48597			};
48598		}
48599
48600		// Handle multiple events separated by a space
48601		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
48602		t = types.length;
48603		while ( t-- ) {
48604			tmp = rtypenamespace.exec( types[ t ] ) || [];
48605			type = origType = tmp[ 1 ];
48606			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
48607
48608			// There *must* be a type, no attaching namespace-only handlers
48609			if ( !type ) {
48610				continue;
48611			}
48612
48613			// If event changes its type, use the special event handlers for the changed type
48614			special = jQuery.event.special[ type ] || {};
48615
48616			// If selector defined, determine special event api type, otherwise given type
48617			type = ( selector ? special.delegateType : special.bindType ) || type;
48618
48619			// Update special based on newly reset type
48620			special = jQuery.event.special[ type ] || {};
48621
48622			// handleObj is passed to all event handlers
48623			handleObj = jQuery.extend( {
48624				type: type,
48625				origType: origType,
48626				data: data,
48627				handler: handler,
48628				guid: handler.guid,
48629				selector: selector,
48630				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
48631				namespace: namespaces.join( "." )
48632			}, handleObjIn );
48633
48634			// Init the event handler queue if we're the first
48635			if ( !( handlers = events[ type ] ) ) {
48636				handlers = events[ type ] = [];
48637				handlers.delegateCount = 0;
48638
48639				// Only use addEventListener if the special events handler returns false
48640				if ( !special.setup ||
48641					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
48642
48643					if ( elem.addEventListener ) {
48644						elem.addEventListener( type, eventHandle );
48645					}
48646				}
48647			}
48648
48649			if ( special.add ) {
48650				special.add.call( elem, handleObj );
48651
48652				if ( !handleObj.handler.guid ) {
48653					handleObj.handler.guid = handler.guid;
48654				}
48655			}
48656
48657			// Add to the element's handler list, delegates in front
48658			if ( selector ) {
48659				handlers.splice( handlers.delegateCount++, 0, handleObj );
48660			} else {
48661				handlers.push( handleObj );
48662			}
48663
48664			// Keep track of which events have ever been used, for event optimization
48665			jQuery.event.global[ type ] = true;
48666		}
48667
48668	},
48669
48670	// Detach an event or set of events from an element
48671	remove: function( elem, types, handler, selector, mappedTypes ) {
48672
48673		var j, origCount, tmp,
48674			events, t, handleObj,
48675			special, handlers, type, namespaces, origType,
48676			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
48677
48678		if ( !elemData || !( events = elemData.events ) ) {
48679			return;
48680		}
48681
48682		// Once for each type.namespace in types; type may be omitted
48683		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
48684		t = types.length;
48685		while ( t-- ) {
48686			tmp = rtypenamespace.exec( types[ t ] ) || [];
48687			type = origType = tmp[ 1 ];
48688			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
48689
48690			// Unbind all events (on this namespace, if provided) for the element
48691			if ( !type ) {
48692				for ( type in events ) {
48693					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
48694				}
48695				continue;
48696			}
48697
48698			special = jQuery.event.special[ type ] || {};
48699			type = ( selector ? special.delegateType : special.bindType ) || type;
48700			handlers = events[ type ] || [];
48701			tmp = tmp[ 2 ] &&
48702				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
48703
48704			// Remove matching events
48705			origCount = j = handlers.length;
48706			while ( j-- ) {
48707				handleObj = handlers[ j ];
48708
48709				if ( ( mappedTypes || origType === handleObj.origType ) &&
48710					( !handler || handler.guid === handleObj.guid ) &&
48711					( !tmp || tmp.test( handleObj.namespace ) ) &&
48712					( !selector || selector === handleObj.selector ||
48713						selector === "**" && handleObj.selector ) ) {
48714					handlers.splice( j, 1 );
48715
48716					if ( handleObj.selector ) {
48717						handlers.delegateCount--;
48718					}
48719					if ( special.remove ) {
48720						special.remove.call( elem, handleObj );
48721					}
48722				}
48723			}
48724
48725			// Remove generic event handler if we removed something and no more handlers exist
48726			// (avoids potential for endless recursion during removal of special event handlers)
48727			if ( origCount && !handlers.length ) {
48728				if ( !special.teardown ||
48729					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
48730
48731					jQuery.removeEvent( elem, type, elemData.handle );
48732				}
48733
48734				delete events[ type ];
48735			}
48736		}
48737
48738		// Remove data and the expando if it's no longer used
48739		if ( jQuery.isEmptyObject( events ) ) {
48740			dataPriv.remove( elem, "handle events" );
48741		}
48742	},
48743
48744	dispatch: function( nativeEvent ) {
48745
48746		var i, j, ret, matched, handleObj, handlerQueue,
48747			args = new Array( arguments.length ),
48748
48749			// Make a writable jQuery.Event from the native event object
48750			event = jQuery.event.fix( nativeEvent ),
48751
48752			handlers = (
48753				dataPriv.get( this, "events" ) || Object.create( null )
48754			)[ event.type ] || [],
48755			special = jQuery.event.special[ event.type ] || {};
48756
48757		// Use the fix-ed jQuery.Event rather than the (read-only) native event
48758		args[ 0 ] = event;
48759
48760		for ( i = 1; i < arguments.length; i++ ) {
48761			args[ i ] = arguments[ i ];
48762		}
48763
48764		event.delegateTarget = this;
48765
48766		// Call the preDispatch hook for the mapped type, and let it bail if desired
48767		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
48768			return;
48769		}
48770
48771		// Determine handlers
48772		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
48773
48774		// Run delegates first; they may want to stop propagation beneath us
48775		i = 0;
48776		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
48777			event.currentTarget = matched.elem;
48778
48779			j = 0;
48780			while ( ( handleObj = matched.handlers[ j++ ] ) &&
48781				!event.isImmediatePropagationStopped() ) {
48782
48783				// If the event is namespaced, then each handler is only invoked if it is
48784				// specially universal or its namespaces are a superset of the event's.
48785				if ( !event.rnamespace || handleObj.namespace === false ||
48786					event.rnamespace.test( handleObj.namespace ) ) {
48787
48788					event.handleObj = handleObj;
48789					event.data = handleObj.data;
48790
48791					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
48792						handleObj.handler ).apply( matched.elem, args );
48793
48794					if ( ret !== undefined ) {
48795						if ( ( event.result = ret ) === false ) {
48796							event.preventDefault();
48797							event.stopPropagation();
48798						}
48799					}
48800				}
48801			}
48802		}
48803
48804		// Call the postDispatch hook for the mapped type
48805		if ( special.postDispatch ) {
48806			special.postDispatch.call( this, event );
48807		}
48808
48809		return event.result;
48810	},
48811
48812	handlers: function( event, handlers ) {
48813		var i, handleObj, sel, matchedHandlers, matchedSelectors,
48814			handlerQueue = [],
48815			delegateCount = handlers.delegateCount,
48816			cur = event.target;
48817
48818		// Find delegate handlers
48819		if ( delegateCount &&
48820
48821			// Support: IE <=9
48822			// Black-hole SVG <use> instance trees (trac-13180)
48823			cur.nodeType &&
48824
48825			// Support: Firefox <=42
48826			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
48827			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
48828			// Support: IE 11 only
48829			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
48830			!( event.type === "click" && event.button >= 1 ) ) {
48831
48832			for ( ; cur !== this; cur = cur.parentNode || this ) {
48833
48834				// Don't check non-elements (trac-13208)
48835				// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)
48836				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
48837					matchedHandlers = [];
48838					matchedSelectors = {};
48839					for ( i = 0; i < delegateCount; i++ ) {
48840						handleObj = handlers[ i ];
48841
48842						// Don't conflict with Object.prototype properties (trac-13203)
48843						sel = handleObj.selector + " ";
48844
48845						if ( matchedSelectors[ sel ] === undefined ) {
48846							matchedSelectors[ sel ] = handleObj.needsContext ?
48847								jQuery( sel, this ).index( cur ) > -1 :
48848								jQuery.find( sel, this, null, [ cur ] ).length;
48849						}
48850						if ( matchedSelectors[ sel ] ) {
48851							matchedHandlers.push( handleObj );
48852						}
48853					}
48854					if ( matchedHandlers.length ) {
48855						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
48856					}
48857				}
48858			}
48859		}
48860
48861		// Add the remaining (directly-bound) handlers
48862		cur = this;
48863		if ( delegateCount < handlers.length ) {
48864			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
48865		}
48866
48867		return handlerQueue;
48868	},
48869
48870	addProp: function( name, hook ) {
48871		Object.defineProperty( jQuery.Event.prototype, name, {
48872			enumerable: true,
48873			configurable: true,
48874
48875			get: isFunction( hook ) ?
48876				function() {
48877					if ( this.originalEvent ) {
48878						return hook( this.originalEvent );
48879					}
48880				} :
48881				function() {
48882					if ( this.originalEvent ) {
48883						return this.originalEvent[ name ];
48884					}
48885				},
48886
48887			set: function( value ) {
48888				Object.defineProperty( this, name, {
48889					enumerable: true,
48890					configurable: true,
48891					writable: true,
48892					value: value
48893				} );
48894			}
48895		} );
48896	},
48897
48898	fix: function( originalEvent ) {
48899		return originalEvent[ jQuery.expando ] ?
48900			originalEvent :
48901			new jQuery.Event( originalEvent );
48902	},
48903
48904	special: {
48905		load: {
48906
48907			// Prevent triggered image.load events from bubbling to window.load
48908			noBubble: true
48909		},
48910		click: {
48911
48912			// Utilize native event to ensure correct state for checkable inputs
48913			setup: function( data ) {
48914
48915				// For mutual compressibility with _default, replace `this` access with a local var.
48916				// `|| data` is dead code meant only to preserve the variable through minification.
48917				var el = this || data;
48918
48919				// Claim the first handler
48920				if ( rcheckableType.test( el.type ) &&
48921					el.click && nodeName( el, "input" ) ) {
48922
48923					// dataPriv.set( el, "click", ... )
48924					leverageNative( el, "click", true );
48925				}
48926
48927				// Return false to allow normal processing in the caller
48928				return false;
48929			},
48930			trigger: function( data ) {
48931
48932				// For mutual compressibility with _default, replace `this` access with a local var.
48933				// `|| data` is dead code meant only to preserve the variable through minification.
48934				var el = this || data;
48935
48936				// Force setup before triggering a click
48937				if ( rcheckableType.test( el.type ) &&
48938					el.click && nodeName( el, "input" ) ) {
48939
48940					leverageNative( el, "click" );
48941				}
48942
48943				// Return non-false to allow normal event-path propagation
48944				return true;
48945			},
48946
48947			// For cross-browser consistency, suppress native .click() on links
48948			// Also prevent it if we're currently inside a leveraged native-event stack
48949			_default: function( event ) {
48950				var target = event.target;
48951				return rcheckableType.test( target.type ) &&
48952					target.click && nodeName( target, "input" ) &&
48953					dataPriv.get( target, "click" ) ||
48954					nodeName( target, "a" );
48955			}
48956		},
48957
48958		beforeunload: {
48959			postDispatch: function( event ) {
48960
48961				// Support: Firefox 20+
48962				// Firefox doesn't alert if the returnValue field is not set.
48963				if ( event.result !== undefined && event.originalEvent ) {
48964					event.originalEvent.returnValue = event.result;
48965				}
48966			}
48967		}
48968	}
48969};
48970
48971// Ensure the presence of an event listener that handles manually-triggered
48972// synthetic events by interrupting progress until reinvoked in response to
48973// *native* events that it fires directly, ensuring that state changes have
48974// already occurred before other listeners are invoked.
48975function leverageNative( el, type, isSetup ) {
48976
48977	// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add
48978	if ( !isSetup ) {
48979		if ( dataPriv.get( el, type ) === undefined ) {
48980			jQuery.event.add( el, type, returnTrue );
48981		}
48982		return;
48983	}
48984
48985	// Register the controller as a special universal handler for all event namespaces
48986	dataPriv.set( el, type, false );
48987	jQuery.event.add( el, type, {
48988		namespace: false,
48989		handler: function( event ) {
48990			var result,
48991				saved = dataPriv.get( this, type );
48992
48993			if ( ( event.isTrigger & 1 ) && this[ type ] ) {
48994
48995				// Interrupt processing of the outer synthetic .trigger()ed event
48996				if ( !saved ) {
48997
48998					// Store arguments for use when handling the inner native event
48999					// There will always be at least one argument (an event object), so this array
49000					// will not be confused with a leftover capture object.
49001					saved = slice.call( arguments );
49002					dataPriv.set( this, type, saved );
49003
49004					// Trigger the native event and capture its result
49005					this[ type ]();
49006					result = dataPriv.get( this, type );
49007					dataPriv.set( this, type, false );
49008
49009					if ( saved !== result ) {
49010
49011						// Cancel the outer synthetic event
49012						event.stopImmediatePropagation();
49013						event.preventDefault();
49014
49015						return result;
49016					}
49017
49018				// If this is an inner synthetic event for an event with a bubbling surrogate
49019				// (focus or blur), assume that the surrogate already propagated from triggering
49020				// the native event and prevent that from happening again here.
49021				// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
49022				// bubbling surrogate propagates *after* the non-bubbling base), but that seems
49023				// less bad than duplication.
49024				} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
49025					event.stopPropagation();
49026				}
49027
49028			// If this is a native event triggered above, everything is now in order
49029			// Fire an inner synthetic event with the original arguments
49030			} else if ( saved ) {
49031
49032				// ...and capture the result
49033				dataPriv.set( this, type, jQuery.event.trigger(
49034					saved[ 0 ],
49035					saved.slice( 1 ),
49036					this
49037				) );
49038
49039				// Abort handling of the native event by all jQuery handlers while allowing
49040				// native handlers on the same element to run. On target, this is achieved
49041				// by stopping immediate propagation just on the jQuery event. However,
49042				// the native event is re-wrapped by a jQuery one on each level of the
49043				// propagation so the only way to stop it for jQuery is to stop it for
49044				// everyone via native `stopPropagation()`. This is not a problem for
49045				// focus/blur which don't bubble, but it does also stop click on checkboxes
49046				// and radios. We accept this limitation.
49047				event.stopPropagation();
49048				event.isImmediatePropagationStopped = returnTrue;
49049			}
49050		}
49051	} );
49052}
49053
49054jQuery.removeEvent = function( elem, type, handle ) {
49055
49056	// This "if" is needed for plain objects
49057	if ( elem.removeEventListener ) {
49058		elem.removeEventListener( type, handle );
49059	}
49060};
49061
49062jQuery.Event = function( src, props ) {
49063
49064	// Allow instantiation without the 'new' keyword
49065	if ( !( this instanceof jQuery.Event ) ) {
49066		return new jQuery.Event( src, props );
49067	}
49068
49069	// Event object
49070	if ( src && src.type ) {
49071		this.originalEvent = src;
49072		this.type = src.type;
49073
49074		// Events bubbling up the document may have been marked as prevented
49075		// by a handler lower down the tree; reflect the correct value.
49076		this.isDefaultPrevented = src.defaultPrevented ||
49077				src.defaultPrevented === undefined &&
49078
49079				// Support: Android <=2.3 only
49080				src.returnValue === false ?
49081			returnTrue :
49082			returnFalse;
49083
49084		// Create target properties
49085		// Support: Safari <=6 - 7 only
49086		// Target should not be a text node (trac-504, trac-13143)
49087		this.target = ( src.target && src.target.nodeType === 3 ) ?
49088			src.target.parentNode :
49089			src.target;
49090
49091		this.currentTarget = src.currentTarget;
49092		this.relatedTarget = src.relatedTarget;
49093
49094	// Event type
49095	} else {
49096		this.type = src;
49097	}
49098
49099	// Put explicitly provided properties onto the event object
49100	if ( props ) {
49101		jQuery.extend( this, props );
49102	}
49103
49104	// Create a timestamp if incoming event doesn't have one
49105	this.timeStamp = src && src.timeStamp || Date.now();
49106
49107	// Mark it as fixed
49108	this[ jQuery.expando ] = true;
49109};
49110
49111// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
49112// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
49113jQuery.Event.prototype = {
49114	constructor: jQuery.Event,
49115	isDefaultPrevented: returnFalse,
49116	isPropagationStopped: returnFalse,
49117	isImmediatePropagationStopped: returnFalse,
49118	isSimulated: false,
49119
49120	preventDefault: function() {
49121		var e = this.originalEvent;
49122
49123		this.isDefaultPrevented = returnTrue;
49124
49125		if ( e && !this.isSimulated ) {
49126			e.preventDefault();
49127		}
49128	},
49129	stopPropagation: function() {
49130		var e = this.originalEvent;
49131
49132		this.isPropagationStopped = returnTrue;
49133
49134		if ( e && !this.isSimulated ) {
49135			e.stopPropagation();
49136		}
49137	},
49138	stopImmediatePropagation: function() {
49139		var e = this.originalEvent;
49140
49141		this.isImmediatePropagationStopped = returnTrue;
49142
49143		if ( e && !this.isSimulated ) {
49144			e.stopImmediatePropagation();
49145		}
49146
49147		this.stopPropagation();
49148	}
49149};
49150
49151// Includes all common event props including KeyEvent and MouseEvent specific props
49152jQuery.each( {
49153	altKey: true,
49154	bubbles: true,
49155	cancelable: true,
49156	changedTouches: true,
49157	ctrlKey: true,
49158	detail: true,
49159	eventPhase: true,
49160	metaKey: true,
49161	pageX: true,
49162	pageY: true,
49163	shiftKey: true,
49164	view: true,
49165	"char": true,
49166	code: true,
49167	charCode: true,
49168	key: true,
49169	keyCode: true,
49170	button: true,
49171	buttons: true,
49172	clientX: true,
49173	clientY: true,
49174	offsetX: true,
49175	offsetY: true,
49176	pointerId: true,
49177	pointerType: true,
49178	screenX: true,
49179	screenY: true,
49180	targetTouches: true,
49181	toElement: true,
49182	touches: true,
49183	which: true
49184}, jQuery.event.addProp );
49185
49186jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
49187
49188	function focusMappedHandler( nativeEvent ) {
49189		if ( document.documentMode ) {
49190
49191			// Support: IE 11+
49192			// Attach a single focusin/focusout handler on the document while someone wants
49193			// focus/blur. This is because the former are synchronous in IE while the latter
49194			// are async. In other browsers, all those handlers are invoked synchronously.
49195
49196			// `handle` from private data would already wrap the event, but we need
49197			// to change the `type` here.
49198			var handle = dataPriv.get( this, "handle" ),
49199				event = jQuery.event.fix( nativeEvent );
49200			event.type = nativeEvent.type === "focusin" ? "focus" : "blur";
49201			event.isSimulated = true;
49202
49203			// First, handle focusin/focusout
49204			handle( nativeEvent );
49205
49206			// ...then, handle focus/blur
49207			//
49208			// focus/blur don't bubble while focusin/focusout do; simulate the former by only
49209			// invoking the handler at the lower level.
49210			if ( event.target === event.currentTarget ) {
49211
49212				// The setup part calls `leverageNative`, which, in turn, calls
49213				// `jQuery.event.add`, so event handle will already have been set
49214				// by this point.
49215				handle( event );
49216			}
49217		} else {
49218
49219			// For non-IE browsers, attach a single capturing handler on the document
49220			// while someone wants focusin/focusout.
49221			jQuery.event.simulate( delegateType, nativeEvent.target,
49222				jQuery.event.fix( nativeEvent ) );
49223		}
49224	}
49225
49226	jQuery.event.special[ type ] = {
49227
49228		// Utilize native event if possible so blur/focus sequence is correct
49229		setup: function() {
49230
49231			var attaches;
49232
49233			// Claim the first handler
49234			// dataPriv.set( this, "focus", ... )
49235			// dataPriv.set( this, "blur", ... )
49236			leverageNative( this, type, true );
49237
49238			if ( document.documentMode ) {
49239
49240				// Support: IE 9 - 11+
49241				// We use the same native handler for focusin & focus (and focusout & blur)
49242				// so we need to coordinate setup & teardown parts between those events.
49243				// Use `delegateType` as the key as `type` is already used by `leverageNative`.
49244				attaches = dataPriv.get( this, delegateType );
49245				if ( !attaches ) {
49246					this.addEventListener( delegateType, focusMappedHandler );
49247				}
49248				dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );
49249			} else {
49250
49251				// Return false to allow normal processing in the caller
49252				return false;
49253			}
49254		},
49255		trigger: function() {
49256
49257			// Force setup before trigger
49258			leverageNative( this, type );
49259
49260			// Return non-false to allow normal event-path propagation
49261			return true;
49262		},
49263
49264		teardown: function() {
49265			var attaches;
49266
49267			if ( document.documentMode ) {
49268				attaches = dataPriv.get( this, delegateType ) - 1;
49269				if ( !attaches ) {
49270					this.removeEventListener( delegateType, focusMappedHandler );
49271					dataPriv.remove( this, delegateType );
49272				} else {
49273					dataPriv.set( this, delegateType, attaches );
49274				}
49275			} else {
49276
49277				// Return false to indicate standard teardown should be applied
49278				return false;
49279			}
49280		},
49281
49282		// Suppress native focus or blur if we're currently inside
49283		// a leveraged native-event stack
49284		_default: function( event ) {
49285			return dataPriv.get( event.target, type );
49286		},
49287
49288		delegateType: delegateType
49289	};
49290
49291	// Support: Firefox <=44
49292	// Firefox doesn't have focus(in | out) events
49293	// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
49294	//
49295	// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
49296	// focus(in | out) events fire after focus & blur events,
49297	// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
49298	// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
49299	//
49300	// Support: IE 9 - 11+
49301	// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,
49302	// attach a single handler for both events in IE.
49303	jQuery.event.special[ delegateType ] = {
49304		setup: function() {
49305
49306			// Handle: regular nodes (via `this.ownerDocument`), window
49307			// (via `this.document`) & document (via `this`).
49308			var doc = this.ownerDocument || this.document || this,
49309				dataHolder = document.documentMode ? this : doc,
49310				attaches = dataPriv.get( dataHolder, delegateType );
49311
49312			// Support: IE 9 - 11+
49313			// We use the same native handler for focusin & focus (and focusout & blur)
49314			// so we need to coordinate setup & teardown parts between those events.
49315			// Use `delegateType` as the key as `type` is already used by `leverageNative`.
49316			if ( !attaches ) {
49317				if ( document.documentMode ) {
49318					this.addEventListener( delegateType, focusMappedHandler );
49319				} else {
49320					doc.addEventListener( type, focusMappedHandler, true );
49321				}
49322			}
49323			dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );
49324		},
49325		teardown: function() {
49326			var doc = this.ownerDocument || this.document || this,
49327				dataHolder = document.documentMode ? this : doc,
49328				attaches = dataPriv.get( dataHolder, delegateType ) - 1;
49329
49330			if ( !attaches ) {
49331				if ( document.documentMode ) {
49332					this.removeEventListener( delegateType, focusMappedHandler );
49333				} else {
49334					doc.removeEventListener( type, focusMappedHandler, true );
49335				}
49336				dataPriv.remove( dataHolder, delegateType );
49337			} else {
49338				dataPriv.set( dataHolder, delegateType, attaches );
49339			}
49340		}
49341	};
49342} );
49343
49344// Create mouseenter/leave events using mouseover/out and event-time checks
49345// so that event delegation works in jQuery.
49346// Do the same for pointerenter/pointerleave and pointerover/pointerout
49347//
49348// Support: Safari 7 only
49349// Safari sends mouseenter too often; see:
49350// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
49351// for the description of the bug (it existed in older Chrome versions as well).
49352jQuery.each( {
49353	mouseenter: "mouseover",
49354	mouseleave: "mouseout",
49355	pointerenter: "pointerover",
49356	pointerleave: "pointerout"
49357}, function( orig, fix ) {
49358	jQuery.event.special[ orig ] = {
49359		delegateType: fix,
49360		bindType: fix,
49361
49362		handle: function( event ) {
49363			var ret,
49364				target = this,
49365				related = event.relatedTarget,
49366				handleObj = event.handleObj;
49367
49368			// For mouseenter/leave call the handler if related is outside the target.
49369			// NB: No relatedTarget if the mouse left/entered the browser window
49370			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
49371				event.type = handleObj.origType;
49372				ret = handleObj.handler.apply( this, arguments );
49373				event.type = fix;
49374			}
49375			return ret;
49376		}
49377	};
49378} );
49379
49380jQuery.fn.extend( {
49381
49382	on: function( types, selector, data, fn ) {
49383		return on( this, types, selector, data, fn );
49384	},
49385	one: function( types, selector, data, fn ) {
49386		return on( this, types, selector, data, fn, 1 );
49387	},
49388	off: function( types, selector, fn ) {
49389		var handleObj, type;
49390		if ( types && types.preventDefault && types.handleObj ) {
49391
49392			// ( event )  dispatched jQuery.Event
49393			handleObj = types.handleObj;
49394			jQuery( types.delegateTarget ).off(
49395				handleObj.namespace ?
49396					handleObj.origType + "." + handleObj.namespace :
49397					handleObj.origType,
49398				handleObj.selector,
49399				handleObj.handler
49400			);
49401			return this;
49402		}
49403		if ( typeof types === "object" ) {
49404
49405			// ( types-object [, selector] )
49406			for ( type in types ) {
49407				this.off( type, selector, types[ type ] );
49408			}
49409			return this;
49410		}
49411		if ( selector === false || typeof selector === "function" ) {
49412
49413			// ( types [, fn] )
49414			fn = selector;
49415			selector = undefined;
49416		}
49417		if ( fn === false ) {
49418			fn = returnFalse;
49419		}
49420		return this.each( function() {
49421			jQuery.event.remove( this, types, fn, selector );
49422		} );
49423	}
49424} );
49425
49426
49427var
49428
49429	// Support: IE <=10 - 11, Edge 12 - 13 only
49430	// In IE/Edge using regex groups here causes severe slowdowns.
49431	// See https://connect.microsoft.com/IE/feedback/details/1736512/
49432	rnoInnerhtml = /<script|<style|<link/i,
49433
49434	// checked="checked" or checked
49435	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
49436
49437	rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
49438
49439// Prefer a tbody over its parent table for containing new rows
49440function manipulationTarget( elem, content ) {
49441	if ( nodeName( elem, "table" ) &&
49442		nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
49443
49444		return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
49445	}
49446
49447	return elem;
49448}
49449
49450// Replace/restore the type attribute of script elements for safe DOM manipulation
49451function disableScript( elem ) {
49452	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
49453	return elem;
49454}
49455function restoreScript( elem ) {
49456	if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
49457		elem.type = elem.type.slice( 5 );
49458	} else {
49459		elem.removeAttribute( "type" );
49460	}
49461
49462	return elem;
49463}
49464
49465function cloneCopyEvent( src, dest ) {
49466	var i, l, type, pdataOld, udataOld, udataCur, events;
49467
49468	if ( dest.nodeType !== 1 ) {
49469		return;
49470	}
49471
49472	// 1. Copy private data: events, handlers, etc.
49473	if ( dataPriv.hasData( src ) ) {
49474		pdataOld = dataPriv.get( src );
49475		events = pdataOld.events;
49476
49477		if ( events ) {
49478			dataPriv.remove( dest, "handle events" );
49479
49480			for ( type in events ) {
49481				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
49482					jQuery.event.add( dest, type, events[ type ][ i ] );
49483				}
49484			}
49485		}
49486	}
49487
49488	// 2. Copy user data
49489	if ( dataUser.hasData( src ) ) {
49490		udataOld = dataUser.access( src );
49491		udataCur = jQuery.extend( {}, udataOld );
49492
49493		dataUser.set( dest, udataCur );
49494	}
49495}
49496
49497// Fix IE bugs, see support tests
49498function fixInput( src, dest ) {
49499	var nodeName = dest.nodeName.toLowerCase();
49500
49501	// Fails to persist the checked state of a cloned checkbox or radio button.
49502	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
49503		dest.checked = src.checked;
49504
49505	// Fails to return the selected option to the default selected state when cloning options
49506	} else if ( nodeName === "input" || nodeName === "textarea" ) {
49507		dest.defaultValue = src.defaultValue;
49508	}
49509}
49510
49511function domManip( collection, args, callback, ignored ) {
49512
49513	// Flatten any nested arrays
49514	args = flat( args );
49515
49516	var fragment, first, scripts, hasScripts, node, doc,
49517		i = 0,
49518		l = collection.length,
49519		iNoClone = l - 1,
49520		value = args[ 0 ],
49521		valueIsFunction = isFunction( value );
49522
49523	// We can't cloneNode fragments that contain checked, in WebKit
49524	if ( valueIsFunction ||
49525			( l > 1 && typeof value === "string" &&
49526				!support.checkClone && rchecked.test( value ) ) ) {
49527		return collection.each( function( index ) {
49528			var self = collection.eq( index );
49529			if ( valueIsFunction ) {
49530				args[ 0 ] = value.call( this, index, self.html() );
49531			}
49532			domManip( self, args, callback, ignored );
49533		} );
49534	}
49535
49536	if ( l ) {
49537		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
49538		first = fragment.firstChild;
49539
49540		if ( fragment.childNodes.length === 1 ) {
49541			fragment = first;
49542		}
49543
49544		// Require either new content or an interest in ignored elements to invoke the callback
49545		if ( first || ignored ) {
49546			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
49547			hasScripts = scripts.length;
49548
49549			// Use the original fragment for the last item
49550			// instead of the first because it can end up
49551			// being emptied incorrectly in certain situations (trac-8070).
49552			for ( ; i < l; i++ ) {
49553				node = fragment;
49554
49555				if ( i !== iNoClone ) {
49556					node = jQuery.clone( node, true, true );
49557
49558					// Keep references to cloned scripts for later restoration
49559					if ( hasScripts ) {
49560
49561						// Support: Android <=4.0 only, PhantomJS 1 only
49562						// push.apply(_, arraylike) throws on ancient WebKit
49563						jQuery.merge( scripts, getAll( node, "script" ) );
49564					}
49565				}
49566
49567				callback.call( collection[ i ], node, i );
49568			}
49569
49570			if ( hasScripts ) {
49571				doc = scripts[ scripts.length - 1 ].ownerDocument;
49572
49573				// Re-enable scripts
49574				jQuery.map( scripts, restoreScript );
49575
49576				// Evaluate executable scripts on first document insertion
49577				for ( i = 0; i < hasScripts; i++ ) {
49578					node = scripts[ i ];
49579					if ( rscriptType.test( node.type || "" ) &&
49580						!dataPriv.access( node, "globalEval" ) &&
49581						jQuery.contains( doc, node ) ) {
49582
49583						if ( node.src && ( node.type || "" ).toLowerCase()  !== "module" ) {
49584
49585							// Optional AJAX dependency, but won't run scripts if not present
49586							if ( jQuery._evalUrl && !node.noModule ) {
49587								jQuery._evalUrl( node.src, {
49588									nonce: node.nonce || node.getAttribute( "nonce" )
49589								}, doc );
49590							}
49591						} else {
49592
49593							// Unwrap a CDATA section containing script contents. This shouldn't be
49594							// needed as in XML documents they're already not visible when
49595							// inspecting element contents and in HTML documents they have no
49596							// meaning but we're preserving that logic for backwards compatibility.
49597							// This will be removed completely in 4.0. See gh-4904.
49598							DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
49599						}
49600					}
49601				}
49602			}
49603		}
49604	}
49605
49606	return collection;
49607}
49608
49609function remove( elem, selector, keepData ) {
49610	var node,
49611		nodes = selector ? jQuery.filter( selector, elem ) : elem,
49612		i = 0;
49613
49614	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
49615		if ( !keepData && node.nodeType === 1 ) {
49616			jQuery.cleanData( getAll( node ) );
49617		}
49618
49619		if ( node.parentNode ) {
49620			if ( keepData && isAttached( node ) ) {
49621				setGlobalEval( getAll( node, "script" ) );
49622			}
49623			node.parentNode.removeChild( node );
49624		}
49625	}
49626
49627	return elem;
49628}
49629
49630jQuery.extend( {
49631	htmlPrefilter: function( html ) {
49632		return html;
49633	},
49634
49635	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
49636		var i, l, srcElements, destElements,
49637			clone = elem.cloneNode( true ),
49638			inPage = isAttached( elem );
49639
49640		// Fix IE cloning issues
49641		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
49642				!jQuery.isXMLDoc( elem ) ) {
49643
49644			// We eschew jQuery#find here for performance reasons:
49645			// https://jsperf.com/getall-vs-sizzle/2
49646			destElements = getAll( clone );
49647			srcElements = getAll( elem );
49648
49649			for ( i = 0, l = srcElements.length; i < l; i++ ) {
49650				fixInput( srcElements[ i ], destElements[ i ] );
49651			}
49652		}
49653
49654		// Copy the events from the original to the clone
49655		if ( dataAndEvents ) {
49656			if ( deepDataAndEvents ) {
49657				srcElements = srcElements || getAll( elem );
49658				destElements = destElements || getAll( clone );
49659
49660				for ( i = 0, l = srcElements.length; i < l; i++ ) {
49661					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
49662				}
49663			} else {
49664				cloneCopyEvent( elem, clone );
49665			}
49666		}
49667
49668		// Preserve script evaluation history
49669		destElements = getAll( clone, "script" );
49670		if ( destElements.length > 0 ) {
49671			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
49672		}
49673
49674		// Return the cloned set
49675		return clone;
49676	},
49677
49678	cleanData: function( elems ) {
49679		var data, elem, type,
49680			special = jQuery.event.special,
49681			i = 0;
49682
49683		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
49684			if ( acceptData( elem ) ) {
49685				if ( ( data = elem[ dataPriv.expando ] ) ) {
49686					if ( data.events ) {
49687						for ( type in data.events ) {
49688							if ( special[ type ] ) {
49689								jQuery.event.remove( elem, type );
49690
49691							// This is a shortcut to avoid jQuery.event.remove's overhead
49692							} else {
49693								jQuery.removeEvent( elem, type, data.handle );
49694							}
49695						}
49696					}
49697
49698					// Support: Chrome <=35 - 45+
49699					// Assign undefined instead of using delete, see Data#remove
49700					elem[ dataPriv.expando ] = undefined;
49701				}
49702				if ( elem[ dataUser.expando ] ) {
49703
49704					// Support: Chrome <=35 - 45+
49705					// Assign undefined instead of using delete, see Data#remove
49706					elem[ dataUser.expando ] = undefined;
49707				}
49708			}
49709		}
49710	}
49711} );
49712
49713jQuery.fn.extend( {
49714	detach: function( selector ) {
49715		return remove( this, selector, true );
49716	},
49717
49718	remove: function( selector ) {
49719		return remove( this, selector );
49720	},
49721
49722	text: function( value ) {
49723		return access( this, function( value ) {
49724			return value === undefined ?
49725				jQuery.text( this ) :
49726				this.empty().each( function() {
49727					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
49728						this.textContent = value;
49729					}
49730				} );
49731		}, null, value, arguments.length );
49732	},
49733
49734	append: function() {
49735		return domManip( this, arguments, function( elem ) {
49736			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
49737				var target = manipulationTarget( this, elem );
49738				target.appendChild( elem );
49739			}
49740		} );
49741	},
49742
49743	prepend: function() {
49744		return domManip( this, arguments, function( elem ) {
49745			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
49746				var target = manipulationTarget( this, elem );
49747				target.insertBefore( elem, target.firstChild );
49748			}
49749		} );
49750	},
49751
49752	before: function() {
49753		return domManip( this, arguments, function( elem ) {
49754			if ( this.parentNode ) {
49755				this.parentNode.insertBefore( elem, this );
49756			}
49757		} );
49758	},
49759
49760	after: function() {
49761		return domManip( this, arguments, function( elem ) {
49762			if ( this.parentNode ) {
49763				this.parentNode.insertBefore( elem, this.nextSibling );
49764			}
49765		} );
49766	},
49767
49768	empty: function() {
49769		var elem,
49770			i = 0;
49771
49772		for ( ; ( elem = this[ i ] ) != null; i++ ) {
49773			if ( elem.nodeType === 1 ) {
49774
49775				// Prevent memory leaks
49776				jQuery.cleanData( getAll( elem, false ) );
49777
49778				// Remove any remaining nodes
49779				elem.textContent = "";
49780			}
49781		}
49782
49783		return this;
49784	},
49785
49786	clone: function( dataAndEvents, deepDataAndEvents ) {
49787		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
49788		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
49789
49790		return this.map( function() {
49791			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
49792		} );
49793	},
49794
49795	html: function( value ) {
49796		return access( this, function( value ) {
49797			var elem = this[ 0 ] || {},
49798				i = 0,
49799				l = this.length;
49800
49801			if ( value === undefined && elem.nodeType === 1 ) {
49802				return elem.innerHTML;
49803			}
49804
49805			// See if we can take a shortcut and just use innerHTML
49806			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
49807				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
49808
49809				value = jQuery.htmlPrefilter( value );
49810
49811				try {
49812					for ( ; i < l; i++ ) {
49813						elem = this[ i ] || {};
49814
49815						// Remove element nodes and prevent memory leaks
49816						if ( elem.nodeType === 1 ) {
49817							jQuery.cleanData( getAll( elem, false ) );
49818							elem.innerHTML = value;
49819						}
49820					}
49821
49822					elem = 0;
49823
49824				// If using innerHTML throws an exception, use the fallback method
49825				} catch ( e ) {}
49826			}
49827
49828			if ( elem ) {
49829				this.empty().append( value );
49830			}
49831		}, null, value, arguments.length );
49832	},
49833
49834	replaceWith: function() {
49835		var ignored = [];
49836
49837		// Make the changes, replacing each non-ignored context element with the new content
49838		return domManip( this, arguments, function( elem ) {
49839			var parent = this.parentNode;
49840
49841			if ( jQuery.inArray( this, ignored ) < 0 ) {
49842				jQuery.cleanData( getAll( this ) );
49843				if ( parent ) {
49844					parent.replaceChild( elem, this );
49845				}
49846			}
49847
49848		// Force callback invocation
49849		}, ignored );
49850	}
49851} );
49852
49853jQuery.each( {
49854	appendTo: "append",
49855	prependTo: "prepend",
49856	insertBefore: "before",
49857	insertAfter: "after",
49858	replaceAll: "replaceWith"
49859}, function( name, original ) {
49860	jQuery.fn[ name ] = function( selector ) {
49861		var elems,
49862			ret = [],
49863			insert = jQuery( selector ),
49864			last = insert.length - 1,
49865			i = 0;
49866
49867		for ( ; i <= last; i++ ) {
49868			elems = i === last ? this : this.clone( true );
49869			jQuery( insert[ i ] )[ original ]( elems );
49870
49871			// Support: Android <=4.0 only, PhantomJS 1 only
49872			// .get() because push.apply(_, arraylike) throws on ancient WebKit
49873			push.apply( ret, elems.get() );
49874		}
49875
49876		return this.pushStack( ret );
49877	};
49878} );
49879var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
49880
49881var rcustomProp = /^--/;
49882
49883
49884var getStyles = function( elem ) {
49885
49886		// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)
49887		// IE throws on elements created in popups
49888		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
49889		var view = elem.ownerDocument.defaultView;
49890
49891		if ( !view || !view.opener ) {
49892			view = window;
49893		}
49894
49895		return view.getComputedStyle( elem );
49896	};
49897
49898var swap = function( elem, options, callback ) {
49899	var ret, name,
49900		old = {};
49901
49902	// Remember the old values, and insert the new ones
49903	for ( name in options ) {
49904		old[ name ] = elem.style[ name ];
49905		elem.style[ name ] = options[ name ];
49906	}
49907
49908	ret = callback.call( elem );
49909
49910	// Revert the old values
49911	for ( name in options ) {
49912		elem.style[ name ] = old[ name ];
49913	}
49914
49915	return ret;
49916};
49917
49918
49919var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
49920
49921
49922
49923( function() {
49924
49925	// Executing both pixelPosition & boxSizingReliable tests require only one layout
49926	// so they're executed at the same time to save the second computation.
49927	function computeStyleTests() {
49928
49929		// This is a singleton, we need to execute it only once
49930		if ( !div ) {
49931			return;
49932		}
49933
49934		container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
49935			"margin-top:1px;padding:0;border:0";
49936		div.style.cssText =
49937			"position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
49938			"margin:auto;border:1px;padding:1px;" +
49939			"width:60%;top:1%";
49940		documentElement.appendChild( container ).appendChild( div );
49941
49942		var divStyle = window.getComputedStyle( div );
49943		pixelPositionVal = divStyle.top !== "1%";
49944
49945		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
49946		reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
49947
49948		// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
49949		// Some styles come back with percentage values, even though they shouldn't
49950		div.style.right = "60%";
49951		pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
49952
49953		// Support: IE 9 - 11 only
49954		// Detect misreporting of content dimensions for box-sizing:border-box elements
49955		boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
49956
49957		// Support: IE 9 only
49958		// Detect overflow:scroll screwiness (gh-3699)
49959		// Support: Chrome <=64
49960		// Don't get tricked when zoom affects offsetWidth (gh-4029)
49961		div.style.position = "absolute";
49962		scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
49963
49964		documentElement.removeChild( container );
49965
49966		// Nullify the div so it wouldn't be stored in the memory and
49967		// it will also be a sign that checks already performed
49968		div = null;
49969	}
49970
49971	function roundPixelMeasures( measure ) {
49972		return Math.round( parseFloat( measure ) );
49973	}
49974
49975	var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
49976		reliableTrDimensionsVal, reliableMarginLeftVal,
49977		container = document.createElement( "div" ),
49978		div = document.createElement( "div" );
49979
49980	// Finish early in limited (non-browser) environments
49981	if ( !div.style ) {
49982		return;
49983	}
49984
49985	// Support: IE <=9 - 11 only
49986	// Style of cloned element affects source element cloned (trac-8908)
49987	div.style.backgroundClip = "content-box";
49988	div.cloneNode( true ).style.backgroundClip = "";
49989	support.clearCloneStyle = div.style.backgroundClip === "content-box";
49990
49991	jQuery.extend( support, {
49992		boxSizingReliable: function() {
49993			computeStyleTests();
49994			return boxSizingReliableVal;
49995		},
49996		pixelBoxStyles: function() {
49997			computeStyleTests();
49998			return pixelBoxStylesVal;
49999		},
50000		pixelPosition: function() {
50001			computeStyleTests();
50002			return pixelPositionVal;
50003		},
50004		reliableMarginLeft: function() {
50005			computeStyleTests();
50006			return reliableMarginLeftVal;
50007		},
50008		scrollboxSize: function() {
50009			computeStyleTests();
50010			return scrollboxSizeVal;
50011		},
50012
50013		// Support: IE 9 - 11+, Edge 15 - 18+
50014		// IE/Edge misreport `getComputedStyle` of table rows with width/height
50015		// set in CSS while `offset*` properties report correct values.
50016		// Behavior in IE 9 is more subtle than in newer versions & it passes
50017		// some versions of this test; make sure not to make it pass there!
50018		//
50019		// Support: Firefox 70+
50020		// Only Firefox includes border widths
50021		// in computed dimensions. (gh-4529)
50022		reliableTrDimensions: function() {
50023			var table, tr, trChild, trStyle;
50024			if ( reliableTrDimensionsVal == null ) {
50025				table = document.createElement( "table" );
50026				tr = document.createElement( "tr" );
50027				trChild = document.createElement( "div" );
50028
50029				table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
50030				tr.style.cssText = "box-sizing:content-box;border:1px solid";
50031
50032				// Support: Chrome 86+
50033				// Height set through cssText does not get applied.
50034				// Computed height then comes back as 0.
50035				tr.style.height = "1px";
50036				trChild.style.height = "9px";
50037
50038				// Support: Android 8 Chrome 86+
50039				// In our bodyBackground.html iframe,
50040				// display for all div elements is set to "inline",
50041				// which causes a problem only in Android 8 Chrome 86.
50042				// Ensuring the div is `display: block`
50043				// gets around this issue.
50044				trChild.style.display = "block";
50045
50046				documentElement
50047					.appendChild( table )
50048					.appendChild( tr )
50049					.appendChild( trChild );
50050
50051				trStyle = window.getComputedStyle( tr );
50052				reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
50053					parseInt( trStyle.borderTopWidth, 10 ) +
50054					parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
50055
50056				documentElement.removeChild( table );
50057			}
50058			return reliableTrDimensionsVal;
50059		}
50060	} );
50061} )();
50062
50063
50064function curCSS( elem, name, computed ) {
50065	var width, minWidth, maxWidth, ret,
50066		isCustomProp = rcustomProp.test( name ),
50067
50068		// Support: Firefox 51+
50069		// Retrieving style before computed somehow
50070		// fixes an issue with getting wrong values
50071		// on detached elements
50072		style = elem.style;
50073
50074	computed = computed || getStyles( elem );
50075
50076	// getPropertyValue is needed for:
50077	//   .css('filter') (IE 9 only, trac-12537)
50078	//   .css('--customProperty) (gh-3144)
50079	if ( computed ) {
50080
50081		// Support: IE <=9 - 11+
50082		// IE only supports `"float"` in `getPropertyValue`; in computed styles
50083		// it's only available as `"cssFloat"`. We no longer modify properties
50084		// sent to `.css()` apart from camelCasing, so we need to check both.
50085		// Normally, this would create difference in behavior: if
50086		// `getPropertyValue` returns an empty string, the value returned
50087		// by `.css()` would be `undefined`. This is usually the case for
50088		// disconnected elements. However, in IE even disconnected elements
50089		// with no styles return `"none"` for `getPropertyValue( "float" )`
50090		ret = computed.getPropertyValue( name ) || computed[ name ];
50091
50092		if ( isCustomProp && ret ) {
50093
50094			// Support: Firefox 105+, Chrome <=105+
50095			// Spec requires trimming whitespace for custom properties (gh-4926).
50096			// Firefox only trims leading whitespace. Chrome just collapses
50097			// both leading & trailing whitespace to a single space.
50098			//
50099			// Fall back to `undefined` if empty string returned.
50100			// This collapses a missing definition with property defined
50101			// and set to an empty string but there's no standard API
50102			// allowing us to differentiate them without a performance penalty
50103			// and returning `undefined` aligns with older jQuery.
50104			//
50105			// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED
50106			// as whitespace while CSS does not, but this is not a problem
50107			// because CSS preprocessing replaces them with U+000A LINE FEED
50108			// (which *is* CSS whitespace)
50109			// https://www.w3.org/TR/css-syntax-3/#input-preprocessing
50110			ret = ret.replace( rtrimCSS, "$1" ) || undefined;
50111		}
50112
50113		if ( ret === "" && !isAttached( elem ) ) {
50114			ret = jQuery.style( elem, name );
50115		}
50116
50117		// A tribute to the "awesome hack by Dean Edwards"
50118		// Android Browser returns percentage for some values,
50119		// but width seems to be reliably pixels.
50120		// This is against the CSSOM draft spec:
50121		// https://drafts.csswg.org/cssom/#resolved-values
50122		if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
50123
50124			// Remember the original values
50125			width = style.width;
50126			minWidth = style.minWidth;
50127			maxWidth = style.maxWidth;
50128
50129			// Put in the new values to get a computed value out
50130			style.minWidth = style.maxWidth = style.width = ret;
50131			ret = computed.width;
50132
50133			// Revert the changed values
50134			style.width = width;
50135			style.minWidth = minWidth;
50136			style.maxWidth = maxWidth;
50137		}
50138	}
50139
50140	return ret !== undefined ?
50141
50142		// Support: IE <=9 - 11 only
50143		// IE returns zIndex value as an integer.
50144		ret + "" :
50145		ret;
50146}
50147
50148
50149function addGetHookIf( conditionFn, hookFn ) {
50150
50151	// Define the hook, we'll check on the first run if it's really needed.
50152	return {
50153		get: function() {
50154			if ( conditionFn() ) {
50155
50156				// Hook not needed (or it's not possible to use it due
50157				// to missing dependency), remove it.
50158				delete this.get;
50159				return;
50160			}
50161
50162			// Hook needed; redefine it so that the support test is not executed again.
50163			return ( this.get = hookFn ).apply( this, arguments );
50164		}
50165	};
50166}
50167
50168
50169var cssPrefixes = [ "Webkit", "Moz", "ms" ],
50170	emptyStyle = document.createElement( "div" ).style,
50171	vendorProps = {};
50172
50173// Return a vendor-prefixed property or undefined
50174function vendorPropName( name ) {
50175
50176	// Check for vendor prefixed names
50177	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
50178		i = cssPrefixes.length;
50179
50180	while ( i-- ) {
50181		name = cssPrefixes[ i ] + capName;
50182		if ( name in emptyStyle ) {
50183			return name;
50184		}
50185	}
50186}
50187
50188// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
50189function finalPropName( name ) {
50190	var final = jQuery.cssProps[ name ] || vendorProps[ name ];
50191
50192	if ( final ) {
50193		return final;
50194	}
50195	if ( name in emptyStyle ) {
50196		return name;
50197	}
50198	return vendorProps[ name ] = vendorPropName( name ) || name;
50199}
50200
50201
50202var
50203
50204	// Swappable if display is none or starts with table
50205	// except "table", "table-cell", or "table-caption"
50206	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
50207	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
50208	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
50209	cssNormalTransform = {
50210		letterSpacing: "0",
50211		fontWeight: "400"
50212	};
50213
50214function setPositiveNumber( _elem, value, subtract ) {
50215
50216	// Any relative (+/-) values have already been
50217	// normalized at this point
50218	var matches = rcssNum.exec( value );
50219	return matches ?
50220
50221		// Guard against undefined "subtract", e.g., when used as in cssHooks
50222		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
50223		value;
50224}
50225
50226function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
50227	var i = dimension === "width" ? 1 : 0,
50228		extra = 0,
50229		delta = 0,
50230		marginDelta = 0;
50231
50232	// Adjustment may not be necessary
50233	if ( box === ( isBorderBox ? "border" : "content" ) ) {
50234		return 0;
50235	}
50236
50237	for ( ; i < 4; i += 2 ) {
50238
50239		// Both box models exclude margin
50240		// Count margin delta separately to only add it after scroll gutter adjustment.
50241		// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).
50242		if ( box === "margin" ) {
50243			marginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
50244		}
50245
50246		// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
50247		if ( !isBorderBox ) {
50248
50249			// Add padding
50250			delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
50251
50252			// For "border" or "margin", add border
50253			if ( box !== "padding" ) {
50254				delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
50255
50256			// But still keep track of it otherwise
50257			} else {
50258				extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
50259			}
50260
50261		// If we get here with a border-box (content + padding + border), we're seeking "content" or
50262		// "padding" or "margin"
50263		} else {
50264
50265			// For "content", subtract padding
50266			if ( box === "content" ) {
50267				delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
50268			}
50269
50270			// For "content" or "padding", subtract border
50271			if ( box !== "margin" ) {
50272				delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
50273			}
50274		}
50275	}
50276
50277	// Account for positive content-box scroll gutter when requested by providing computedVal
50278	if ( !isBorderBox && computedVal >= 0 ) {
50279
50280		// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
50281		// Assuming integer scroll gutter, subtract the rest and round down
50282		delta += Math.max( 0, Math.ceil(
50283			elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
50284			computedVal -
50285			delta -
50286			extra -
50287			0.5
50288
50289		// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
50290		// Use an explicit zero to avoid NaN (gh-3964)
50291		) ) || 0;
50292	}
50293
50294	return delta + marginDelta;
50295}
50296
50297function getWidthOrHeight( elem, dimension, extra ) {
50298
50299	// Start with computed style
50300	var styles = getStyles( elem ),
50301
50302		// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
50303		// Fake content-box until we know it's needed to know the true value.
50304		boxSizingNeeded = !support.boxSizingReliable() || extra,
50305		isBorderBox = boxSizingNeeded &&
50306			jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
50307		valueIsBorderBox = isBorderBox,
50308
50309		val = curCSS( elem, dimension, styles ),
50310		offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
50311
50312	// Support: Firefox <=54
50313	// Return a confounding non-pixel value or feign ignorance, as appropriate.
50314	if ( rnumnonpx.test( val ) ) {
50315		if ( !extra ) {
50316			return val;
50317		}
50318		val = "auto";
50319	}
50320
50321
50322	// Support: IE 9 - 11 only
50323	// Use offsetWidth/offsetHeight for when box sizing is unreliable.
50324	// In those cases, the computed value can be trusted to be border-box.
50325	if ( ( !support.boxSizingReliable() && isBorderBox ||
50326
50327		// Support: IE 10 - 11+, Edge 15 - 18+
50328		// IE/Edge misreport `getComputedStyle` of table rows with width/height
50329		// set in CSS while `offset*` properties report correct values.
50330		// Interestingly, in some cases IE 9 doesn't suffer from this issue.
50331		!support.reliableTrDimensions() && nodeName( elem, "tr" ) ||
50332
50333		// Fall back to offsetWidth/offsetHeight when value is "auto"
50334		// This happens for inline elements with no explicit setting (gh-3571)
50335		val === "auto" ||
50336
50337		// Support: Android <=4.1 - 4.3 only
50338		// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
50339		!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
50340
50341		// Make sure the element is visible & connected
50342		elem.getClientRects().length ) {
50343
50344		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
50345
50346		// Where available, offsetWidth/offsetHeight approximate border box dimensions.
50347		// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
50348		// retrieved value as a content box dimension.
50349		valueIsBorderBox = offsetProp in elem;
50350		if ( valueIsBorderBox ) {
50351			val = elem[ offsetProp ];
50352		}
50353	}
50354
50355	// Normalize "" and auto
50356	val = parseFloat( val ) || 0;
50357
50358	// Adjust for the element's box model
50359	return ( val +
50360		boxModelAdjustment(
50361			elem,
50362			dimension,
50363			extra || ( isBorderBox ? "border" : "content" ),
50364			valueIsBorderBox,
50365			styles,
50366
50367			// Provide the current computed size to request scroll gutter calculation (gh-3589)
50368			val
50369		)
50370	) + "px";
50371}
50372
50373jQuery.extend( {
50374
50375	// Add in style property hooks for overriding the default
50376	// behavior of getting and setting a style property
50377	cssHooks: {
50378		opacity: {
50379			get: function( elem, computed ) {
50380				if ( computed ) {
50381
50382					// We should always get a number back from opacity
50383					var ret = curCSS( elem, "opacity" );
50384					return ret === "" ? "1" : ret;
50385				}
50386			}
50387		}
50388	},
50389
50390	// Don't automatically add "px" to these possibly-unitless properties
50391	cssNumber: {
50392		animationIterationCount: true,
50393		aspectRatio: true,
50394		borderImageSlice: true,
50395		columnCount: true,
50396		flexGrow: true,
50397		flexShrink: true,
50398		fontWeight: true,
50399		gridArea: true,
50400		gridColumn: true,
50401		gridColumnEnd: true,
50402		gridColumnStart: true,
50403		gridRow: true,
50404		gridRowEnd: true,
50405		gridRowStart: true,
50406		lineHeight: true,
50407		opacity: true,
50408		order: true,
50409		orphans: true,
50410		scale: true,
50411		widows: true,
50412		zIndex: true,
50413		zoom: true,
50414
50415		// SVG-related
50416		fillOpacity: true,
50417		floodOpacity: true,
50418		stopOpacity: true,
50419		strokeMiterlimit: true,
50420		strokeOpacity: true
50421	},
50422
50423	// Add in properties whose names you wish to fix before
50424	// setting or getting the value
50425	cssProps: {},
50426
50427	// Get and set the style property on a DOM Node
50428	style: function( elem, name, value, extra ) {
50429
50430		// Don't set styles on text and comment nodes
50431		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
50432			return;
50433		}
50434
50435		// Make sure that we're working with the right name
50436		var ret, type, hooks,
50437			origName = camelCase( name ),
50438			isCustomProp = rcustomProp.test( name ),
50439			style = elem.style;
50440
50441		// Make sure that we're working with the right name. We don't
50442		// want to query the value if it is a CSS custom property
50443		// since they are user-defined.
50444		if ( !isCustomProp ) {
50445			name = finalPropName( origName );
50446		}
50447
50448		// Gets hook for the prefixed version, then unprefixed version
50449		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
50450
50451		// Check if we're setting a value
50452		if ( value !== undefined ) {
50453			type = typeof value;
50454
50455			// Convert "+=" or "-=" to relative numbers (trac-7345)
50456			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
50457				value = adjustCSS( elem, name, ret );
50458
50459				// Fixes bug trac-9237
50460				type = "number";
50461			}
50462
50463			// Make sure that null and NaN values aren't set (trac-7116)
50464			if ( value == null || value !== value ) {
50465				return;
50466			}
50467
50468			// If a number was passed in, add the unit (except for certain CSS properties)
50469			// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
50470			// "px" to a few hardcoded values.
50471			if ( type === "number" && !isCustomProp ) {
50472				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
50473			}
50474
50475			// background-* props affect original clone's values
50476			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
50477				style[ name ] = "inherit";
50478			}
50479
50480			// If a hook was provided, use that value, otherwise just set the specified value
50481			if ( !hooks || !( "set" in hooks ) ||
50482				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
50483
50484				if ( isCustomProp ) {
50485					style.setProperty( name, value );
50486				} else {
50487					style[ name ] = value;
50488				}
50489			}
50490
50491		} else {
50492
50493			// If a hook was provided get the non-computed value from there
50494			if ( hooks && "get" in hooks &&
50495				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
50496
50497				return ret;
50498			}
50499
50500			// Otherwise just get the value from the style object
50501			return style[ name ];
50502		}
50503	},
50504
50505	css: function( elem, name, extra, styles ) {
50506		var val, num, hooks,
50507			origName = camelCase( name ),
50508			isCustomProp = rcustomProp.test( name );
50509
50510		// Make sure that we're working with the right name. We don't
50511		// want to modify the value if it is a CSS custom property
50512		// since they are user-defined.
50513		if ( !isCustomProp ) {
50514			name = finalPropName( origName );
50515		}
50516
50517		// Try prefixed name followed by the unprefixed name
50518		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
50519
50520		// If a hook was provided get the computed value from there
50521		if ( hooks && "get" in hooks ) {
50522			val = hooks.get( elem, true, extra );
50523		}
50524
50525		// Otherwise, if a way to get the computed value exists, use that
50526		if ( val === undefined ) {
50527			val = curCSS( elem, name, styles );
50528		}
50529
50530		// Convert "normal" to computed value
50531		if ( val === "normal" && name in cssNormalTransform ) {
50532			val = cssNormalTransform[ name ];
50533		}
50534
50535		// Make numeric if forced or a qualifier was provided and val looks numeric
50536		if ( extra === "" || extra ) {
50537			num = parseFloat( val );
50538			return extra === true || isFinite( num ) ? num || 0 : val;
50539		}
50540
50541		return val;
50542	}
50543} );
50544
50545jQuery.each( [ "height", "width" ], function( _i, dimension ) {
50546	jQuery.cssHooks[ dimension ] = {
50547		get: function( elem, computed, extra ) {
50548			if ( computed ) {
50549
50550				// Certain elements can have dimension info if we invisibly show them
50551				// but it must have a current display style that would benefit
50552				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
50553
50554					// Support: Safari 8+
50555					// Table columns in Safari have non-zero offsetWidth & zero
50556					// getBoundingClientRect().width unless display is changed.
50557					// Support: IE <=11 only
50558					// Running getBoundingClientRect on a disconnected node
50559					// in IE throws an error.
50560					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
50561					swap( elem, cssShow, function() {
50562						return getWidthOrHeight( elem, dimension, extra );
50563					} ) :
50564					getWidthOrHeight( elem, dimension, extra );
50565			}
50566		},
50567
50568		set: function( elem, value, extra ) {
50569			var matches,
50570				styles = getStyles( elem ),
50571
50572				// Only read styles.position if the test has a chance to fail
50573				// to avoid forcing a reflow.
50574				scrollboxSizeBuggy = !support.scrollboxSize() &&
50575					styles.position === "absolute",
50576
50577				// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
50578				boxSizingNeeded = scrollboxSizeBuggy || extra,
50579				isBorderBox = boxSizingNeeded &&
50580					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
50581				subtract = extra ?
50582					boxModelAdjustment(
50583						elem,
50584						dimension,
50585						extra,
50586						isBorderBox,
50587						styles
50588					) :
50589					0;
50590
50591			// Account for unreliable border-box dimensions by comparing offset* to computed and
50592			// faking a content-box to get border and padding (gh-3699)
50593			if ( isBorderBox && scrollboxSizeBuggy ) {
50594				subtract -= Math.ceil(
50595					elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
50596					parseFloat( styles[ dimension ] ) -
50597					boxModelAdjustment( elem, dimension, "border", false, styles ) -
50598					0.5
50599				);
50600			}
50601
50602			// Convert to pixels if value adjustment is needed
50603			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
50604				( matches[ 3 ] || "px" ) !== "px" ) {
50605
50606				elem.style[ dimension ] = value;
50607				value = jQuery.css( elem, dimension );
50608			}
50609
50610			return setPositiveNumber( elem, value, subtract );
50611		}
50612	};
50613} );
50614
50615jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
50616	function( elem, computed ) {
50617		if ( computed ) {
50618			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
50619				elem.getBoundingClientRect().left -
50620					swap( elem, { marginLeft: 0 }, function() {
50621						return elem.getBoundingClientRect().left;
50622					} )
50623			) + "px";
50624		}
50625	}
50626);
50627
50628// These hooks are used by animate to expand properties
50629jQuery.each( {
50630	margin: "",
50631	padding: "",
50632	border: "Width"
50633}, function( prefix, suffix ) {
50634	jQuery.cssHooks[ prefix + suffix ] = {
50635		expand: function( value ) {
50636			var i = 0,
50637				expanded = {},
50638
50639				// Assumes a single number if not a string
50640				parts = typeof value === "string" ? value.split( " " ) : [ value ];
50641
50642			for ( ; i < 4; i++ ) {
50643				expanded[ prefix + cssExpand[ i ] + suffix ] =
50644					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
50645			}
50646
50647			return expanded;
50648		}
50649	};
50650
50651	if ( prefix !== "margin" ) {
50652		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
50653	}
50654} );
50655
50656jQuery.fn.extend( {
50657	css: function( name, value ) {
50658		return access( this, function( elem, name, value ) {
50659			var styles, len,
50660				map = {},
50661				i = 0;
50662
50663			if ( Array.isArray( name ) ) {
50664				styles = getStyles( elem );
50665				len = name.length;
50666
50667				for ( ; i < len; i++ ) {
50668					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
50669				}
50670
50671				return map;
50672			}
50673
50674			return value !== undefined ?
50675				jQuery.style( elem, name, value ) :
50676				jQuery.css( elem, name );
50677		}, name, value, arguments.length > 1 );
50678	}
50679} );
50680
50681
50682function Tween( elem, options, prop, end, easing ) {
50683	return new Tween.prototype.init( elem, options, prop, end, easing );
50684}
50685jQuery.Tween = Tween;
50686
50687Tween.prototype = {
50688	constructor: Tween,
50689	init: function( elem, options, prop, end, easing, unit ) {
50690		this.elem = elem;
50691		this.prop = prop;
50692		this.easing = easing || jQuery.easing._default;
50693		this.options = options;
50694		this.start = this.now = this.cur();
50695		this.end = end;
50696		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
50697	},
50698	cur: function() {
50699		var hooks = Tween.propHooks[ this.prop ];
50700
50701		return hooks && hooks.get ?
50702			hooks.get( this ) :
50703			Tween.propHooks._default.get( this );
50704	},
50705	run: function( percent ) {
50706		var eased,
50707			hooks = Tween.propHooks[ this.prop ];
50708
50709		if ( this.options.duration ) {
50710			this.pos = eased = jQuery.easing[ this.easing ](
50711				percent, this.options.duration * percent, 0, 1, this.options.duration
50712			);
50713		} else {
50714			this.pos = eased = percent;
50715		}
50716		this.now = ( this.end - this.start ) * eased + this.start;
50717
50718		if ( this.options.step ) {
50719			this.options.step.call( this.elem, this.now, this );
50720		}
50721
50722		if ( hooks && hooks.set ) {
50723			hooks.set( this );
50724		} else {
50725			Tween.propHooks._default.set( this );
50726		}
50727		return this;
50728	}
50729};
50730
50731Tween.prototype.init.prototype = Tween.prototype;
50732
50733Tween.propHooks = {
50734	_default: {
50735		get: function( tween ) {
50736			var result;
50737
50738			// Use a property on the element directly when it is not a DOM element,
50739			// or when there is no matching style property that exists.
50740			if ( tween.elem.nodeType !== 1 ||
50741				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
50742				return tween.elem[ tween.prop ];
50743			}
50744
50745			// Passing an empty string as a 3rd parameter to .css will automatically
50746			// attempt a parseFloat and fallback to a string if the parse fails.
50747			// Simple values such as "10px" are parsed to Float;
50748			// complex values such as "rotate(1rad)" are returned as-is.
50749			result = jQuery.css( tween.elem, tween.prop, "" );
50750
50751			// Empty strings, null, undefined and "auto" are converted to 0.
50752			return !result || result === "auto" ? 0 : result;
50753		},
50754		set: function( tween ) {
50755
50756			// Use step hook for back compat.
50757			// Use cssHook if its there.
50758			// Use .style if available and use plain properties where available.
50759			if ( jQuery.fx.step[ tween.prop ] ) {
50760				jQuery.fx.step[ tween.prop ]( tween );
50761			} else if ( tween.elem.nodeType === 1 && (
50762				jQuery.cssHooks[ tween.prop ] ||
50763					tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
50764				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
50765			} else {
50766				tween.elem[ tween.prop ] = tween.now;
50767			}
50768		}
50769	}
50770};
50771
50772// Support: IE <=9 only
50773// Panic based approach to setting things on disconnected nodes
50774Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
50775	set: function( tween ) {
50776		if ( tween.elem.nodeType && tween.elem.parentNode ) {
50777			tween.elem[ tween.prop ] = tween.now;
50778		}
50779	}
50780};
50781
50782jQuery.easing = {
50783	linear: function( p ) {
50784		return p;
50785	},
50786	swing: function( p ) {
50787		return 0.5 - Math.cos( p * Math.PI ) / 2;
50788	},
50789	_default: "swing"
50790};
50791
50792jQuery.fx = Tween.prototype.init;
50793
50794// Back compat <1.8 extension point
50795jQuery.fx.step = {};
50796
50797
50798
50799
50800var
50801	fxNow, inProgress,
50802	rfxtypes = /^(?:toggle|show|hide)$/,
50803	rrun = /queueHooks$/;
50804
50805function schedule() {
50806	if ( inProgress ) {
50807		if ( document.hidden === false && window.requestAnimationFrame ) {
50808			window.requestAnimationFrame( schedule );
50809		} else {
50810			window.setTimeout( schedule, jQuery.fx.interval );
50811		}
50812
50813		jQuery.fx.tick();
50814	}
50815}
50816
50817// Animations created synchronously will run synchronously
50818function createFxNow() {
50819	window.setTimeout( function() {
50820		fxNow = undefined;
50821	} );
50822	return ( fxNow = Date.now() );
50823}
50824
50825// Generate parameters to create a standard animation
50826function genFx( type, includeWidth ) {
50827	var which,
50828		i = 0,
50829		attrs = { height: type };
50830
50831	// If we include width, step value is 1 to do all cssExpand values,
50832	// otherwise step value is 2 to skip over Left and Right
50833	includeWidth = includeWidth ? 1 : 0;
50834	for ( ; i < 4; i += 2 - includeWidth ) {
50835		which = cssExpand[ i ];
50836		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
50837	}
50838
50839	if ( includeWidth ) {
50840		attrs.opacity = attrs.width = type;
50841	}
50842
50843	return attrs;
50844}
50845
50846function createTween( value, prop, animation ) {
50847	var tween,
50848		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
50849		index = 0,
50850		length = collection.length;
50851	for ( ; index < length; index++ ) {
50852		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
50853
50854			// We're done with this property
50855			return tween;
50856		}
50857	}
50858}
50859
50860function defaultPrefilter( elem, props, opts ) {
50861	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
50862		isBox = "width" in props || "height" in props,
50863		anim = this,
50864		orig = {},
50865		style = elem.style,
50866		hidden = elem.nodeType && isHiddenWithinTree( elem ),
50867		dataShow = dataPriv.get( elem, "fxshow" );
50868
50869	// Queue-skipping animations hijack the fx hooks
50870	if ( !opts.queue ) {
50871		hooks = jQuery._queueHooks( elem, "fx" );
50872		if ( hooks.unqueued == null ) {
50873			hooks.unqueued = 0;
50874			oldfire = hooks.empty.fire;
50875			hooks.empty.fire = function() {
50876				if ( !hooks.unqueued ) {
50877					oldfire();
50878				}
50879			};
50880		}
50881		hooks.unqueued++;
50882
50883		anim.always( function() {
50884
50885			// Ensure the complete handler is called before this completes
50886			anim.always( function() {
50887				hooks.unqueued--;
50888				if ( !jQuery.queue( elem, "fx" ).length ) {
50889					hooks.empty.fire();
50890				}
50891			} );
50892		} );
50893	}
50894
50895	// Detect show/hide animations
50896	for ( prop in props ) {
50897		value = props[ prop ];
50898		if ( rfxtypes.test( value ) ) {
50899			delete props[ prop ];
50900			toggle = toggle || value === "toggle";
50901			if ( value === ( hidden ? "hide" : "show" ) ) {
50902
50903				// Pretend to be hidden if this is a "show" and
50904				// there is still data from a stopped show/hide
50905				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
50906					hidden = true;
50907
50908				// Ignore all other no-op show/hide data
50909				} else {
50910					continue;
50911				}
50912			}
50913			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
50914		}
50915	}
50916
50917	// Bail out if this is a no-op like .hide().hide()
50918	propTween = !jQuery.isEmptyObject( props );
50919	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
50920		return;
50921	}
50922
50923	// Restrict "overflow" and "display" styles during box animations
50924	if ( isBox && elem.nodeType === 1 ) {
50925
50926		// Support: IE <=9 - 11, Edge 12 - 15
50927		// Record all 3 overflow attributes because IE does not infer the shorthand
50928		// from identically-valued overflowX and overflowY and Edge just mirrors
50929		// the overflowX value there.
50930		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
50931
50932		// Identify a display type, preferring old show/hide data over the CSS cascade
50933		restoreDisplay = dataShow && dataShow.display;
50934		if ( restoreDisplay == null ) {
50935			restoreDisplay = dataPriv.get( elem, "display" );
50936		}
50937		display = jQuery.css( elem, "display" );
50938		if ( display === "none" ) {
50939			if ( restoreDisplay ) {
50940				display = restoreDisplay;
50941			} else {
50942
50943				// Get nonempty value(s) by temporarily forcing visibility
50944				showHide( [ elem ], true );
50945				restoreDisplay = elem.style.display || restoreDisplay;
50946				display = jQuery.css( elem, "display" );
50947				showHide( [ elem ] );
50948			}
50949		}
50950
50951		// Animate inline elements as inline-block
50952		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
50953			if ( jQuery.css( elem, "float" ) === "none" ) {
50954
50955				// Restore the original display value at the end of pure show/hide animations
50956				if ( !propTween ) {
50957					anim.done( function() {
50958						style.display = restoreDisplay;
50959					} );
50960					if ( restoreDisplay == null ) {
50961						display = style.display;
50962						restoreDisplay = display === "none" ? "" : display;
50963					}
50964				}
50965				style.display = "inline-block";
50966			}
50967		}
50968	}
50969
50970	if ( opts.overflow ) {
50971		style.overflow = "hidden";
50972		anim.always( function() {
50973			style.overflow = opts.overflow[ 0 ];
50974			style.overflowX = opts.overflow[ 1 ];
50975			style.overflowY = opts.overflow[ 2 ];
50976		} );
50977	}
50978
50979	// Implement show/hide animations
50980	propTween = false;
50981	for ( prop in orig ) {
50982
50983		// General show/hide setup for this element animation
50984		if ( !propTween ) {
50985			if ( dataShow ) {
50986				if ( "hidden" in dataShow ) {
50987					hidden = dataShow.hidden;
50988				}
50989			} else {
50990				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
50991			}
50992
50993			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
50994			if ( toggle ) {
50995				dataShow.hidden = !hidden;
50996			}
50997
50998			// Show elements before animating them
50999			if ( hidden ) {
51000				showHide( [ elem ], true );
51001			}
51002
51003			/* eslint-disable no-loop-func */
51004
51005			anim.done( function() {
51006
51007				/* eslint-enable no-loop-func */
51008
51009				// The final step of a "hide" animation is actually hiding the element
51010				if ( !hidden ) {
51011					showHide( [ elem ] );
51012				}
51013				dataPriv.remove( elem, "fxshow" );
51014				for ( prop in orig ) {
51015					jQuery.style( elem, prop, orig[ prop ] );
51016				}
51017			} );
51018		}
51019
51020		// Per-property setup
51021		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
51022		if ( !( prop in dataShow ) ) {
51023			dataShow[ prop ] = propTween.start;
51024			if ( hidden ) {
51025				propTween.end = propTween.start;
51026				propTween.start = 0;
51027			}
51028		}
51029	}
51030}
51031
51032function propFilter( props, specialEasing ) {
51033	var index, name, easing, value, hooks;
51034
51035	// camelCase, specialEasing and expand cssHook pass
51036	for ( index in props ) {
51037		name = camelCase( index );
51038		easing = specialEasing[ name ];
51039		value = props[ index ];
51040		if ( Array.isArray( value ) ) {
51041			easing = value[ 1 ];
51042			value = props[ index ] = value[ 0 ];
51043		}
51044
51045		if ( index !== name ) {
51046			props[ name ] = value;
51047			delete props[ index ];
51048		}
51049
51050		hooks = jQuery.cssHooks[ name ];
51051		if ( hooks && "expand" in hooks ) {
51052			value = hooks.expand( value );
51053			delete props[ name ];
51054
51055			// Not quite $.extend, this won't overwrite existing keys.
51056			// Reusing 'index' because we have the correct "name"
51057			for ( index in value ) {
51058				if ( !( index in props ) ) {
51059					props[ index ] = value[ index ];
51060					specialEasing[ index ] = easing;
51061				}
51062			}
51063		} else {
51064			specialEasing[ name ] = easing;
51065		}
51066	}
51067}
51068
51069function Animation( elem, properties, options ) {
51070	var result,
51071		stopped,
51072		index = 0,
51073		length = Animation.prefilters.length,
51074		deferred = jQuery.Deferred().always( function() {
51075
51076			// Don't match elem in the :animated selector
51077			delete tick.elem;
51078		} ),
51079		tick = function() {
51080			if ( stopped ) {
51081				return false;
51082			}
51083			var currentTime = fxNow || createFxNow(),
51084				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
51085
51086				// Support: Android 2.3 only
51087				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)
51088				temp = remaining / animation.duration || 0,
51089				percent = 1 - temp,
51090				index = 0,
51091				length = animation.tweens.length;
51092
51093			for ( ; index < length; index++ ) {
51094				animation.tweens[ index ].run( percent );
51095			}
51096
51097			deferred.notifyWith( elem, [ animation, percent, remaining ] );
51098
51099			// If there's more to do, yield
51100			if ( percent < 1 && length ) {
51101				return remaining;
51102			}
51103
51104			// If this was an empty animation, synthesize a final progress notification
51105			if ( !length ) {
51106				deferred.notifyWith( elem, [ animation, 1, 0 ] );
51107			}
51108
51109			// Resolve the animation and report its conclusion
51110			deferred.resolveWith( elem, [ animation ] );
51111			return false;
51112		},
51113		animation = deferred.promise( {
51114			elem: elem,
51115			props: jQuery.extend( {}, properties ),
51116			opts: jQuery.extend( true, {
51117				specialEasing: {},
51118				easing: jQuery.easing._default
51119			}, options ),
51120			originalProperties: properties,
51121			originalOptions: options,
51122			startTime: fxNow || createFxNow(),
51123			duration: options.duration,
51124			tweens: [],
51125			createTween: function( prop, end ) {
51126				var tween = jQuery.Tween( elem, animation.opts, prop, end,
51127					animation.opts.specialEasing[ prop ] || animation.opts.easing );
51128				animation.tweens.push( tween );
51129				return tween;
51130			},
51131			stop: function( gotoEnd ) {
51132				var index = 0,
51133
51134					// If we are going to the end, we want to run all the tweens
51135					// otherwise we skip this part
51136					length = gotoEnd ? animation.tweens.length : 0;
51137				if ( stopped ) {
51138					return this;
51139				}
51140				stopped = true;
51141				for ( ; index < length; index++ ) {
51142					animation.tweens[ index ].run( 1 );
51143				}
51144
51145				// Resolve when we played the last frame; otherwise, reject
51146				if ( gotoEnd ) {
51147					deferred.notifyWith( elem, [ animation, 1, 0 ] );
51148					deferred.resolveWith( elem, [ animation, gotoEnd ] );
51149				} else {
51150					deferred.rejectWith( elem, [ animation, gotoEnd ] );
51151				}
51152				return this;
51153			}
51154		} ),
51155		props = animation.props;
51156
51157	propFilter( props, animation.opts.specialEasing );
51158
51159	for ( ; index < length; index++ ) {
51160		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
51161		if ( result ) {
51162			if ( isFunction( result.stop ) ) {
51163				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
51164					result.stop.bind( result );
51165			}
51166			return result;
51167		}
51168	}
51169
51170	jQuery.map( props, createTween, animation );
51171
51172	if ( isFunction( animation.opts.start ) ) {
51173		animation.opts.start.call( elem, animation );
51174	}
51175
51176	// Attach callbacks from options
51177	animation
51178		.progress( animation.opts.progress )
51179		.done( animation.opts.done, animation.opts.complete )
51180		.fail( animation.opts.fail )
51181		.always( animation.opts.always );
51182
51183	jQuery.fx.timer(
51184		jQuery.extend( tick, {
51185			elem: elem,
51186			anim: animation,
51187			queue: animation.opts.queue
51188		} )
51189	);
51190
51191	return animation;
51192}
51193
51194jQuery.Animation = jQuery.extend( Animation, {
51195
51196	tweeners: {
51197		"*": [ function( prop, value ) {
51198			var tween = this.createTween( prop, value );
51199			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
51200			return tween;
51201		} ]
51202	},
51203
51204	tweener: function( props, callback ) {
51205		if ( isFunction( props ) ) {
51206			callback = props;
51207			props = [ "*" ];
51208		} else {
51209			props = props.match( rnothtmlwhite );
51210		}
51211
51212		var prop,
51213			index = 0,
51214			length = props.length;
51215
51216		for ( ; index < length; index++ ) {
51217			prop = props[ index ];
51218			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
51219			Animation.tweeners[ prop ].unshift( callback );
51220		}
51221	},
51222
51223	prefilters: [ defaultPrefilter ],
51224
51225	prefilter: function( callback, prepend ) {
51226		if ( prepend ) {
51227			Animation.prefilters.unshift( callback );
51228		} else {
51229			Animation.prefilters.push( callback );
51230		}
51231	}
51232} );
51233
51234jQuery.speed = function( speed, easing, fn ) {
51235	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
51236		complete: fn || !fn && easing ||
51237			isFunction( speed ) && speed,
51238		duration: speed,
51239		easing: fn && easing || easing && !isFunction( easing ) && easing
51240	};
51241
51242	// Go to the end state if fx are off
51243	if ( jQuery.fx.off ) {
51244		opt.duration = 0;
51245
51246	} else {
51247		if ( typeof opt.duration !== "number" ) {
51248			if ( opt.duration in jQuery.fx.speeds ) {
51249				opt.duration = jQuery.fx.speeds[ opt.duration ];
51250
51251			} else {
51252				opt.duration = jQuery.fx.speeds._default;
51253			}
51254		}
51255	}
51256
51257	// Normalize opt.queue - true/undefined/null -> "fx"
51258	if ( opt.queue == null || opt.queue === true ) {
51259		opt.queue = "fx";
51260	}
51261
51262	// Queueing
51263	opt.old = opt.complete;
51264
51265	opt.complete = function() {
51266		if ( isFunction( opt.old ) ) {
51267			opt.old.call( this );
51268		}
51269
51270		if ( opt.queue ) {
51271			jQuery.dequeue( this, opt.queue );
51272		}
51273	};
51274
51275	return opt;
51276};
51277
51278jQuery.fn.extend( {
51279	fadeTo: function( speed, to, easing, callback ) {
51280
51281		// Show any hidden elements after setting opacity to 0
51282		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
51283
51284			// Animate to the value specified
51285			.end().animate( { opacity: to }, speed, easing, callback );
51286	},
51287	animate: function( prop, speed, easing, callback ) {
51288		var empty = jQuery.isEmptyObject( prop ),
51289			optall = jQuery.speed( speed, easing, callback ),
51290			doAnimation = function() {
51291
51292				// Operate on a copy of prop so per-property easing won't be lost
51293				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
51294
51295				// Empty animations, or finishing resolves immediately
51296				if ( empty || dataPriv.get( this, "finish" ) ) {
51297					anim.stop( true );
51298				}
51299			};
51300
51301		doAnimation.finish = doAnimation;
51302
51303		return empty || optall.queue === false ?
51304			this.each( doAnimation ) :
51305			this.queue( optall.queue, doAnimation );
51306	},
51307	stop: function( type, clearQueue, gotoEnd ) {
51308		var stopQueue = function( hooks ) {
51309			var stop = hooks.stop;
51310			delete hooks.stop;
51311			stop( gotoEnd );
51312		};
51313
51314		if ( typeof type !== "string" ) {
51315			gotoEnd = clearQueue;
51316			clearQueue = type;
51317			type = undefined;
51318		}
51319		if ( clearQueue ) {
51320			this.queue( type || "fx", [] );
51321		}
51322
51323		return this.each( function() {
51324			var dequeue = true,
51325				index = type != null && type + "queueHooks",
51326				timers = jQuery.timers,
51327				data = dataPriv.get( this );
51328
51329			if ( index ) {
51330				if ( data[ index ] && data[ index ].stop ) {
51331					stopQueue( data[ index ] );
51332				}
51333			} else {
51334				for ( index in data ) {
51335					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
51336						stopQueue( data[ index ] );
51337					}
51338				}
51339			}
51340
51341			for ( index = timers.length; index--; ) {
51342				if ( timers[ index ].elem === this &&
51343					( type == null || timers[ index ].queue === type ) ) {
51344
51345					timers[ index ].anim.stop( gotoEnd );
51346					dequeue = false;
51347					timers.splice( index, 1 );
51348				}
51349			}
51350
51351			// Start the next in the queue if the last step wasn't forced.
51352			// Timers currently will call their complete callbacks, which
51353			// will dequeue but only if they were gotoEnd.
51354			if ( dequeue || !gotoEnd ) {
51355				jQuery.dequeue( this, type );
51356			}
51357		} );
51358	},
51359	finish: function( type ) {
51360		if ( type !== false ) {
51361			type = type || "fx";
51362		}
51363		return this.each( function() {
51364			var index,
51365				data = dataPriv.get( this ),
51366				queue = data[ type + "queue" ],
51367				hooks = data[ type + "queueHooks" ],
51368				timers = jQuery.timers,
51369				length = queue ? queue.length : 0;
51370
51371			// Enable finishing flag on private data
51372			data.finish = true;
51373
51374			// Empty the queue first
51375			jQuery.queue( this, type, [] );
51376
51377			if ( hooks && hooks.stop ) {
51378				hooks.stop.call( this, true );
51379			}
51380
51381			// Look for any active animations, and finish them
51382			for ( index = timers.length; index--; ) {
51383				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
51384					timers[ index ].anim.stop( true );
51385					timers.splice( index, 1 );
51386				}
51387			}
51388
51389			// Look for any animations in the old queue and finish them
51390			for ( index = 0; index < length; index++ ) {
51391				if ( queue[ index ] && queue[ index ].finish ) {
51392					queue[ index ].finish.call( this );
51393				}
51394			}
51395
51396			// Turn off finishing flag
51397			delete data.finish;
51398		} );
51399	}
51400} );
51401
51402jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) {
51403	var cssFn = jQuery.fn[ name ];
51404	jQuery.fn[ name ] = function( speed, easing, callback ) {
51405		return speed == null || typeof speed === "boolean" ?
51406			cssFn.apply( this, arguments ) :
51407			this.animate( genFx( name, true ), speed, easing, callback );
51408	};
51409} );
51410
51411// Generate shortcuts for custom animations
51412jQuery.each( {
51413	slideDown: genFx( "show" ),
51414	slideUp: genFx( "hide" ),
51415	slideToggle: genFx( "toggle" ),
51416	fadeIn: { opacity: "show" },
51417	fadeOut: { opacity: "hide" },
51418	fadeToggle: { opacity: "toggle" }
51419}, function( name, props ) {
51420	jQuery.fn[ name ] = function( speed, easing, callback ) {
51421		return this.animate( props, speed, easing, callback );
51422	};
51423} );
51424
51425jQuery.timers = [];
51426jQuery.fx.tick = function() {
51427	var timer,
51428		i = 0,
51429		timers = jQuery.timers;
51430
51431	fxNow = Date.now();
51432
51433	for ( ; i < timers.length; i++ ) {
51434		timer = timers[ i ];
51435
51436		// Run the timer and safely remove it when done (allowing for external removal)
51437		if ( !timer() && timers[ i ] === timer ) {
51438			timers.splice( i--, 1 );
51439		}
51440	}
51441
51442	if ( !timers.length ) {
51443		jQuery.fx.stop();
51444	}
51445	fxNow = undefined;
51446};
51447
51448jQuery.fx.timer = function( timer ) {
51449	jQuery.timers.push( timer );
51450	jQuery.fx.start();
51451};
51452
51453jQuery.fx.interval = 13;
51454jQuery.fx.start = function() {
51455	if ( inProgress ) {
51456		return;
51457	}
51458
51459	inProgress = true;
51460	schedule();
51461};
51462
51463jQuery.fx.stop = function() {
51464	inProgress = null;
51465};
51466
51467jQuery.fx.speeds = {
51468	slow: 600,
51469	fast: 200,
51470
51471	// Default speed
51472	_default: 400
51473};
51474
51475
51476// Based off of the plugin by Clint Helfers, with permission.
51477jQuery.fn.delay = function( time, type ) {
51478	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
51479	type = type || "fx";
51480
51481	return this.queue( type, function( next, hooks ) {
51482		var timeout = window.setTimeout( next, time );
51483		hooks.stop = function() {
51484			window.clearTimeout( timeout );
51485		};
51486	} );
51487};
51488
51489
51490( function() {
51491	var input = document.createElement( "input" ),
51492		select = document.createElement( "select" ),
51493		opt = select.appendChild( document.createElement( "option" ) );
51494
51495	input.type = "checkbox";
51496
51497	// Support: Android <=4.3 only
51498	// Default value for a checkbox should be "on"
51499	support.checkOn = input.value !== "";
51500
51501	// Support: IE <=11 only
51502	// Must access selectedIndex to make default options select
51503	support.optSelected = opt.selected;
51504
51505	// Support: IE <=11 only
51506	// An input loses its value after becoming a radio
51507	input = document.createElement( "input" );
51508	input.value = "t";
51509	input.type = "radio";
51510	support.radioValue = input.value === "t";
51511} )();
51512
51513
51514var boolHook,
51515	attrHandle = jQuery.expr.attrHandle;
51516
51517jQuery.fn.extend( {
51518	attr: function( name, value ) {
51519		return access( this, jQuery.attr, name, value, arguments.length > 1 );
51520	},
51521
51522	removeAttr: function( name ) {
51523		return this.each( function() {
51524			jQuery.removeAttr( this, name );
51525		} );
51526	}
51527} );
51528
51529jQuery.extend( {
51530	attr: function( elem, name, value ) {
51531		var ret, hooks,
51532			nType = elem.nodeType;
51533
51534		// Don't get/set attributes on text, comment and attribute nodes
51535		if ( nType === 3 || nType === 8 || nType === 2 ) {
51536			return;
51537		}
51538
51539		// Fallback to prop when attributes are not supported
51540		if ( typeof elem.getAttribute === "undefined" ) {
51541			return jQuery.prop( elem, name, value );
51542		}
51543
51544		// Attribute hooks are determined by the lowercase version
51545		// Grab necessary hook if one is defined
51546		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
51547			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
51548				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
51549		}
51550
51551		if ( value !== undefined ) {
51552			if ( value === null ) {
51553				jQuery.removeAttr( elem, name );
51554				return;
51555			}
51556
51557			if ( hooks && "set" in hooks &&
51558				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
51559				return ret;
51560			}
51561
51562			elem.setAttribute( name, value + "" );
51563			return value;
51564		}
51565
51566		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
51567			return ret;
51568		}
51569
51570		ret = jQuery.find.attr( elem, name );
51571
51572		// Non-existent attributes return null, we normalize to undefined
51573		return ret == null ? undefined : ret;
51574	},
51575
51576	attrHooks: {
51577		type: {
51578			set: function( elem, value ) {
51579				if ( !support.radioValue && value === "radio" &&
51580					nodeName( elem, "input" ) ) {
51581					var val = elem.value;
51582					elem.setAttribute( "type", value );
51583					if ( val ) {
51584						elem.value = val;
51585					}
51586					return value;
51587				}
51588			}
51589		}
51590	},
51591
51592	removeAttr: function( elem, value ) {
51593		var name,
51594			i = 0,
51595
51596			// Attribute names can contain non-HTML whitespace characters
51597			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
51598			attrNames = value && value.match( rnothtmlwhite );
51599
51600		if ( attrNames && elem.nodeType === 1 ) {
51601			while ( ( name = attrNames[ i++ ] ) ) {
51602				elem.removeAttribute( name );
51603			}
51604		}
51605	}
51606} );
51607
51608// Hooks for boolean attributes
51609boolHook = {
51610	set: function( elem, value, name ) {
51611		if ( value === false ) {
51612
51613			// Remove boolean attributes when set to false
51614			jQuery.removeAttr( elem, name );
51615		} else {
51616			elem.setAttribute( name, name );
51617		}
51618		return name;
51619	}
51620};
51621
51622jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
51623	var getter = attrHandle[ name ] || jQuery.find.attr;
51624
51625	attrHandle[ name ] = function( elem, name, isXML ) {
51626		var ret, handle,
51627			lowercaseName = name.toLowerCase();
51628
51629		if ( !isXML ) {
51630
51631			// Avoid an infinite loop by temporarily removing this function from the getter
51632			handle = attrHandle[ lowercaseName ];
51633			attrHandle[ lowercaseName ] = ret;
51634			ret = getter( elem, name, isXML ) != null ?
51635				lowercaseName :
51636				null;
51637			attrHandle[ lowercaseName ] = handle;
51638		}
51639		return ret;
51640	};
51641} );
51642
51643
51644
51645
51646var rfocusable = /^(?:input|select|textarea|button)$/i,
51647	rclickable = /^(?:a|area)$/i;
51648
51649jQuery.fn.extend( {
51650	prop: function( name, value ) {
51651		return access( this, jQuery.prop, name, value, arguments.length > 1 );
51652	},
51653
51654	removeProp: function( name ) {
51655		return this.each( function() {
51656			delete this[ jQuery.propFix[ name ] || name ];
51657		} );
51658	}
51659} );
51660
51661jQuery.extend( {
51662	prop: function( elem, name, value ) {
51663		var ret, hooks,
51664			nType = elem.nodeType;
51665
51666		// Don't get/set properties on text, comment and attribute nodes
51667		if ( nType === 3 || nType === 8 || nType === 2 ) {
51668			return;
51669		}
51670
51671		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
51672
51673			// Fix name and attach hooks
51674			name = jQuery.propFix[ name ] || name;
51675			hooks = jQuery.propHooks[ name ];
51676		}
51677
51678		if ( value !== undefined ) {
51679			if ( hooks && "set" in hooks &&
51680				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
51681				return ret;
51682			}
51683
51684			return ( elem[ name ] = value );
51685		}
51686
51687		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
51688			return ret;
51689		}
51690
51691		return elem[ name ];
51692	},
51693
51694	propHooks: {
51695		tabIndex: {
51696			get: function( elem ) {
51697
51698				// Support: IE <=9 - 11 only
51699				// elem.tabIndex doesn't always return the
51700				// correct value when it hasn't been explicitly set
51701				// Use proper attribute retrieval (trac-12072)
51702				var tabindex = jQuery.find.attr( elem, "tabindex" );
51703
51704				if ( tabindex ) {
51705					return parseInt( tabindex, 10 );
51706				}
51707
51708				if (
51709					rfocusable.test( elem.nodeName ) ||
51710					rclickable.test( elem.nodeName ) &&
51711					elem.href
51712				) {
51713					return 0;
51714				}
51715
51716				return -1;
51717			}
51718		}
51719	},
51720
51721	propFix: {
51722		"for": "htmlFor",
51723		"class": "className"
51724	}
51725} );
51726
51727// Support: IE <=11 only
51728// Accessing the selectedIndex property
51729// forces the browser to respect setting selected
51730// on the option
51731// The getter ensures a default option is selected
51732// when in an optgroup
51733// eslint rule "no-unused-expressions" is disabled for this code
51734// since it considers such accessions noop
51735if ( !support.optSelected ) {
51736	jQuery.propHooks.selected = {
51737		get: function( elem ) {
51738
51739			/* eslint no-unused-expressions: "off" */
51740
51741			var parent = elem.parentNode;
51742			if ( parent && parent.parentNode ) {
51743				parent.parentNode.selectedIndex;
51744			}
51745			return null;
51746		},
51747		set: function( elem ) {
51748
51749			/* eslint no-unused-expressions: "off" */
51750
51751			var parent = elem.parentNode;
51752			if ( parent ) {
51753				parent.selectedIndex;
51754
51755				if ( parent.parentNode ) {
51756					parent.parentNode.selectedIndex;
51757				}
51758			}
51759		}
51760	};
51761}
51762
51763jQuery.each( [
51764	"tabIndex",
51765	"readOnly",
51766	"maxLength",
51767	"cellSpacing",
51768	"cellPadding",
51769	"rowSpan",
51770	"colSpan",
51771	"useMap",
51772	"frameBorder",
51773	"contentEditable"
51774], function() {
51775	jQuery.propFix[ this.toLowerCase() ] = this;
51776} );
51777
51778
51779
51780
51781	// Strip and collapse whitespace according to HTML spec
51782	// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
51783	function stripAndCollapse( value ) {
51784		var tokens = value.match( rnothtmlwhite ) || [];
51785		return tokens.join( " " );
51786	}
51787
51788
51789function getClass( elem ) {
51790	return elem.getAttribute && elem.getAttribute( "class" ) || "";
51791}
51792
51793function classesToArray( value ) {
51794	if ( Array.isArray( value ) ) {
51795		return value;
51796	}
51797	if ( typeof value === "string" ) {
51798		return value.match( rnothtmlwhite ) || [];
51799	}
51800	return [];
51801}
51802
51803jQuery.fn.extend( {
51804	addClass: function( value ) {
51805		var classNames, cur, curValue, className, i, finalValue;
51806
51807		if ( isFunction( value ) ) {
51808			return this.each( function( j ) {
51809				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
51810			} );
51811		}
51812
51813		classNames = classesToArray( value );
51814
51815		if ( classNames.length ) {
51816			return this.each( function() {
51817				curValue = getClass( this );
51818				cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
51819
51820				if ( cur ) {
51821					for ( i = 0; i < classNames.length; i++ ) {
51822						className = classNames[ i ];
51823						if ( cur.indexOf( " " + className + " " ) < 0 ) {
51824							cur += className + " ";
51825						}
51826					}
51827
51828					// Only assign if different to avoid unneeded rendering.
51829					finalValue = stripAndCollapse( cur );
51830					if ( curValue !== finalValue ) {
51831						this.setAttribute( "class", finalValue );
51832					}
51833				}
51834			} );
51835		}
51836
51837		return this;
51838	},
51839
51840	removeClass: function( value ) {
51841		var classNames, cur, curValue, className, i, finalValue;
51842
51843		if ( isFunction( value ) ) {
51844			return this.each( function( j ) {
51845				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
51846			} );
51847		}
51848
51849		if ( !arguments.length ) {
51850			return this.attr( "class", "" );
51851		}
51852
51853		classNames = classesToArray( value );
51854
51855		if ( classNames.length ) {
51856			return this.each( function() {
51857				curValue = getClass( this );
51858
51859				// This expression is here for better compressibility (see addClass)
51860				cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
51861
51862				if ( cur ) {
51863					for ( i = 0; i < classNames.length; i++ ) {
51864						className = classNames[ i ];
51865
51866						// Remove *all* instances
51867						while ( cur.indexOf( " " + className + " " ) > -1 ) {
51868							cur = cur.replace( " " + className + " ", " " );
51869						}
51870					}
51871
51872					// Only assign if different to avoid unneeded rendering.
51873					finalValue = stripAndCollapse( cur );
51874					if ( curValue !== finalValue ) {
51875						this.setAttribute( "class", finalValue );
51876					}
51877				}
51878			} );
51879		}
51880
51881		return this;
51882	},
51883
51884	toggleClass: function( value, stateVal ) {
51885		var classNames, className, i, self,
51886			type = typeof value,
51887			isValidValue = type === "string" || Array.isArray( value );
51888
51889		if ( isFunction( value ) ) {
51890			return this.each( function( i ) {
51891				jQuery( this ).toggleClass(
51892					value.call( this, i, getClass( this ), stateVal ),
51893					stateVal
51894				);
51895			} );
51896		}
51897
51898		if ( typeof stateVal === "boolean" && isValidValue ) {
51899			return stateVal ? this.addClass( value ) : this.removeClass( value );
51900		}
51901
51902		classNames = classesToArray( value );
51903
51904		return this.each( function() {
51905			if ( isValidValue ) {
51906
51907				// Toggle individual class names
51908				self = jQuery( this );
51909
51910				for ( i = 0; i < classNames.length; i++ ) {
51911					className = classNames[ i ];
51912
51913					// Check each className given, space separated list
51914					if ( self.hasClass( className ) ) {
51915						self.removeClass( className );
51916					} else {
51917						self.addClass( className );
51918					}
51919				}
51920
51921			// Toggle whole class name
51922			} else if ( value === undefined || type === "boolean" ) {
51923				className = getClass( this );
51924				if ( className ) {
51925
51926					// Store className if set
51927					dataPriv.set( this, "__className__", className );
51928				}
51929
51930				// If the element has a class name or if we're passed `false`,
51931				// then remove the whole classname (if there was one, the above saved it).
51932				// Otherwise bring back whatever was previously saved (if anything),
51933				// falling back to the empty string if nothing was stored.
51934				if ( this.setAttribute ) {
51935					this.setAttribute( "class",
51936						className || value === false ?
51937							"" :
51938							dataPriv.get( this, "__className__" ) || ""
51939					);
51940				}
51941			}
51942		} );
51943	},
51944
51945	hasClass: function( selector ) {
51946		var className, elem,
51947			i = 0;
51948
51949		className = " " + selector + " ";
51950		while ( ( elem = this[ i++ ] ) ) {
51951			if ( elem.nodeType === 1 &&
51952				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
51953				return true;
51954			}
51955		}
51956
51957		return false;
51958	}
51959} );
51960
51961
51962
51963
51964var rreturn = /\r/g;
51965
51966jQuery.fn.extend( {
51967	val: function( value ) {
51968		var hooks, ret, valueIsFunction,
51969			elem = this[ 0 ];
51970
51971		if ( !arguments.length ) {
51972			if ( elem ) {
51973				hooks = jQuery.valHooks[ elem.type ] ||
51974					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
51975
51976				if ( hooks &&
51977					"get" in hooks &&
51978					( ret = hooks.get( elem, "value" ) ) !== undefined
51979				) {
51980					return ret;
51981				}
51982
51983				ret = elem.value;
51984
51985				// Handle most common string cases
51986				if ( typeof ret === "string" ) {
51987					return ret.replace( rreturn, "" );
51988				}
51989
51990				// Handle cases where value is null/undef or number
51991				return ret == null ? "" : ret;
51992			}
51993
51994			return;
51995		}
51996
51997		valueIsFunction = isFunction( value );
51998
51999		return this.each( function( i ) {
52000			var val;
52001
52002			if ( this.nodeType !== 1 ) {
52003				return;
52004			}
52005
52006			if ( valueIsFunction ) {
52007				val = value.call( this, i, jQuery( this ).val() );
52008			} else {
52009				val = value;
52010			}
52011
52012			// Treat null/undefined as ""; convert numbers to string
52013			if ( val == null ) {
52014				val = "";
52015
52016			} else if ( typeof val === "number" ) {
52017				val += "";
52018
52019			} else if ( Array.isArray( val ) ) {
52020				val = jQuery.map( val, function( value ) {
52021					return value == null ? "" : value + "";
52022				} );
52023			}
52024
52025			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
52026
52027			// If set returns undefined, fall back to normal setting
52028			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
52029				this.value = val;
52030			}
52031		} );
52032	}
52033} );
52034
52035jQuery.extend( {
52036	valHooks: {
52037		option: {
52038			get: function( elem ) {
52039
52040				var val = jQuery.find.attr( elem, "value" );
52041				return val != null ?
52042					val :
52043
52044					// Support: IE <=10 - 11 only
52045					// option.text throws exceptions (trac-14686, trac-14858)
52046					// Strip and collapse whitespace
52047					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
52048					stripAndCollapse( jQuery.text( elem ) );
52049			}
52050		},
52051		select: {
52052			get: function( elem ) {
52053				var value, option, i,
52054					options = elem.options,
52055					index = elem.selectedIndex,
52056					one = elem.type === "select-one",
52057					values = one ? null : [],
52058					max = one ? index + 1 : options.length;
52059
52060				if ( index < 0 ) {
52061					i = max;
52062
52063				} else {
52064					i = one ? index : 0;
52065				}
52066
52067				// Loop through all the selected options
52068				for ( ; i < max; i++ ) {
52069					option = options[ i ];
52070
52071					// Support: IE <=9 only
52072					// IE8-9 doesn't update selected after form reset (trac-2551)
52073					if ( ( option.selected || i === index ) &&
52074
52075							// Don't return options that are disabled or in a disabled optgroup
52076							!option.disabled &&
52077							( !option.parentNode.disabled ||
52078								!nodeName( option.parentNode, "optgroup" ) ) ) {
52079
52080						// Get the specific value for the option
52081						value = jQuery( option ).val();
52082
52083						// We don't need an array for one selects
52084						if ( one ) {
52085							return value;
52086						}
52087
52088						// Multi-Selects return an array
52089						values.push( value );
52090					}
52091				}
52092
52093				return values;
52094			},
52095
52096			set: function( elem, value ) {
52097				var optionSet, option,
52098					options = elem.options,
52099					values = jQuery.makeArray( value ),
52100					i = options.length;
52101
52102				while ( i-- ) {
52103					option = options[ i ];
52104
52105					/* eslint-disable no-cond-assign */
52106
52107					if ( option.selected =
52108						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
52109					) {
52110						optionSet = true;
52111					}
52112
52113					/* eslint-enable no-cond-assign */
52114				}
52115
52116				// Force browsers to behave consistently when non-matching value is set
52117				if ( !optionSet ) {
52118					elem.selectedIndex = -1;
52119				}
52120				return values;
52121			}
52122		}
52123	}
52124} );
52125
52126// Radios and checkboxes getter/setter
52127jQuery.each( [ "radio", "checkbox" ], function() {
52128	jQuery.valHooks[ this ] = {
52129		set: function( elem, value ) {
52130			if ( Array.isArray( value ) ) {
52131				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
52132			}
52133		}
52134	};
52135	if ( !support.checkOn ) {
52136		jQuery.valHooks[ this ].get = function( elem ) {
52137			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
52138		};
52139	}
52140} );
52141
52142
52143
52144
52145// Return jQuery for attributes-only inclusion
52146var location = window.location;
52147
52148var nonce = { guid: Date.now() };
52149
52150var rquery = ( /\?/ );
52151
52152
52153
52154// Cross-browser xml parsing
52155jQuery.parseXML = function( data ) {
52156	var xml, parserErrorElem;
52157	if ( !data || typeof data !== "string" ) {
52158		return null;
52159	}
52160
52161	// Support: IE 9 - 11 only
52162	// IE throws on parseFromString with invalid input.
52163	try {
52164		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
52165	} catch ( e ) {}
52166
52167	parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
52168	if ( !xml || parserErrorElem ) {
52169		jQuery.error( "Invalid XML: " + (
52170			parserErrorElem ?
52171				jQuery.map( parserErrorElem.childNodes, function( el ) {
52172					return el.textContent;
52173				} ).join( "\n" ) :
52174				data
52175		) );
52176	}
52177	return xml;
52178};
52179
52180
52181var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
52182	stopPropagationCallback = function( e ) {
52183		e.stopPropagation();
52184	};
52185
52186jQuery.extend( jQuery.event, {
52187
52188	trigger: function( event, data, elem, onlyHandlers ) {
52189
52190		var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
52191			eventPath = [ elem || document ],
52192			type = hasOwn.call( event, "type" ) ? event.type : event,
52193			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
52194
52195		cur = lastElement = tmp = elem = elem || document;
52196
52197		// Don't do events on text and comment nodes
52198		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
52199			return;
52200		}
52201
52202		// focus/blur morphs to focusin/out; ensure we're not firing them right now
52203		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
52204			return;
52205		}
52206
52207		if ( type.indexOf( "." ) > -1 ) {
52208
52209			// Namespaced trigger; create a regexp to match event type in handle()
52210			namespaces = type.split( "." );
52211			type = namespaces.shift();
52212			namespaces.sort();
52213		}
52214		ontype = type.indexOf( ":" ) < 0 && "on" + type;
52215
52216		// Caller can pass in a jQuery.Event object, Object, or just an event type string
52217		event = event[ jQuery.expando ] ?
52218			event :
52219			new jQuery.Event( type, typeof event === "object" && event );
52220
52221		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
52222		event.isTrigger = onlyHandlers ? 2 : 3;
52223		event.namespace = namespaces.join( "." );
52224		event.rnamespace = event.namespace ?
52225			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
52226			null;
52227
52228		// Clean up the event in case it is being reused
52229		event.result = undefined;
52230		if ( !event.target ) {
52231			event.target = elem;
52232		}
52233
52234		// Clone any incoming data and prepend the event, creating the handler arg list
52235		data = data == null ?
52236			[ event ] :
52237			jQuery.makeArray( data, [ event ] );
52238
52239		// Allow special events to draw outside the lines
52240		special = jQuery.event.special[ type ] || {};
52241		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
52242			return;
52243		}
52244
52245		// Determine event propagation path in advance, per W3C events spec (trac-9951)
52246		// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
52247		if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
52248
52249			bubbleType = special.delegateType || type;
52250			if ( !rfocusMorph.test( bubbleType + type ) ) {
52251				cur = cur.parentNode;
52252			}
52253			for ( ; cur; cur = cur.parentNode ) {
52254				eventPath.push( cur );
52255				tmp = cur;
52256			}
52257
52258			// Only add window if we got to document (e.g., not plain obj or detached DOM)
52259			if ( tmp === ( elem.ownerDocument || document ) ) {
52260				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
52261			}
52262		}
52263
52264		// Fire handlers on the event path
52265		i = 0;
52266		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
52267			lastElement = cur;
52268			event.type = i > 1 ?
52269				bubbleType :
52270				special.bindType || type;
52271
52272			// jQuery handler
52273			handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
52274				dataPriv.get( cur, "handle" );
52275			if ( handle ) {
52276				handle.apply( cur, data );
52277			}
52278
52279			// Native handler
52280			handle = ontype && cur[ ontype ];
52281			if ( handle && handle.apply && acceptData( cur ) ) {
52282				event.result = handle.apply( cur, data );
52283				if ( event.result === false ) {
52284					event.preventDefault();
52285				}
52286			}
52287		}
52288		event.type = type;
52289
52290		// If nobody prevented the default action, do it now
52291		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
52292
52293			if ( ( !special._default ||
52294				special._default.apply( eventPath.pop(), data ) === false ) &&
52295				acceptData( elem ) ) {
52296
52297				// Call a native DOM method on the target with the same name as the event.
52298				// Don't do default actions on window, that's where global variables be (trac-6170)
52299				if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
52300
52301					// Don't re-trigger an onFOO event when we call its FOO() method
52302					tmp = elem[ ontype ];
52303
52304					if ( tmp ) {
52305						elem[ ontype ] = null;
52306					}
52307
52308					// Prevent re-triggering of the same event, since we already bubbled it above
52309					jQuery.event.triggered = type;
52310
52311					if ( event.isPropagationStopped() ) {
52312						lastElement.addEventListener( type, stopPropagationCallback );
52313					}
52314
52315					elem[ type ]();
52316
52317					if ( event.isPropagationStopped() ) {
52318						lastElement.removeEventListener( type, stopPropagationCallback );
52319					}
52320
52321					jQuery.event.triggered = undefined;
52322
52323					if ( tmp ) {
52324						elem[ ontype ] = tmp;
52325					}
52326				}
52327			}
52328		}
52329
52330		return event.result;
52331	},
52332
52333	// Piggyback on a donor event to simulate a different one
52334	// Used only for `focus(in | out)` events
52335	simulate: function( type, elem, event ) {
52336		var e = jQuery.extend(
52337			new jQuery.Event(),
52338			event,
52339			{
52340				type: type,
52341				isSimulated: true
52342			}
52343		);
52344
52345		jQuery.event.trigger( e, null, elem );
52346	}
52347
52348} );
52349
52350jQuery.fn.extend( {
52351
52352	trigger: function( type, data ) {
52353		return this.each( function() {
52354			jQuery.event.trigger( type, data, this );
52355		} );
52356	},
52357	triggerHandler: function( type, data ) {
52358		var elem = this[ 0 ];
52359		if ( elem ) {
52360			return jQuery.event.trigger( type, data, elem, true );
52361		}
52362	}
52363} );
52364
52365
52366var
52367	rbracket = /\[\]$/,
52368	rCRLF = /\r?\n/g,
52369	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
52370	rsubmittable = /^(?:input|select|textarea|keygen)/i;
52371
52372function buildParams( prefix, obj, traditional, add ) {
52373	var name;
52374
52375	if ( Array.isArray( obj ) ) {
52376
52377		// Serialize array item.
52378		jQuery.each( obj, function( i, v ) {
52379			if ( traditional || rbracket.test( prefix ) ) {
52380
52381				// Treat each array item as a scalar.
52382				add( prefix, v );
52383
52384			} else {
52385
52386				// Item is non-scalar (array or object), encode its numeric index.
52387				buildParams(
52388					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
52389					v,
52390					traditional,
52391					add
52392				);
52393			}
52394		} );
52395
52396	} else if ( !traditional && toType( obj ) === "object" ) {
52397
52398		// Serialize object item.
52399		for ( name in obj ) {
52400			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
52401		}
52402
52403	} else {
52404
52405		// Serialize scalar item.
52406		add( prefix, obj );
52407	}
52408}
52409
52410// Serialize an array of form elements or a set of
52411// key/values into a query string
52412jQuery.param = function( a, traditional ) {
52413	var prefix,
52414		s = [],
52415		add = function( key, valueOrFunction ) {
52416
52417			// If value is a function, invoke it and use its return value
52418			var value = isFunction( valueOrFunction ) ?
52419				valueOrFunction() :
52420				valueOrFunction;
52421
52422			s[ s.length ] = encodeURIComponent( key ) + "=" +
52423				encodeURIComponent( value == null ? "" : value );
52424		};
52425
52426	if ( a == null ) {
52427		return "";
52428	}
52429
52430	// If an array was passed in, assume that it is an array of form elements.
52431	if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
52432
52433		// Serialize the form elements
52434		jQuery.each( a, function() {
52435			add( this.name, this.value );
52436		} );
52437
52438	} else {
52439
52440		// If traditional, encode the "old" way (the way 1.3.2 or older
52441		// did it), otherwise encode params recursively.
52442		for ( prefix in a ) {
52443			buildParams( prefix, a[ prefix ], traditional, add );
52444		}
52445	}
52446
52447	// Return the resulting serialization
52448	return s.join( "&" );
52449};
52450
52451jQuery.fn.extend( {
52452	serialize: function() {
52453		return jQuery.param( this.serializeArray() );
52454	},
52455	serializeArray: function() {
52456		return this.map( function() {
52457
52458			// Can add propHook for "elements" to filter or add form elements
52459			var elements = jQuery.prop( this, "elements" );
52460			return elements ? jQuery.makeArray( elements ) : this;
52461		} ).filter( function() {
52462			var type = this.type;
52463
52464			// Use .is( ":disabled" ) so that fieldset[disabled] works
52465			return this.name && !jQuery( this ).is( ":disabled" ) &&
52466				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
52467				( this.checked || !rcheckableType.test( type ) );
52468		} ).map( function( _i, elem ) {
52469			var val = jQuery( this ).val();
52470
52471			if ( val == null ) {
52472				return null;
52473			}
52474
52475			if ( Array.isArray( val ) ) {
52476				return jQuery.map( val, function( val ) {
52477					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
52478				} );
52479			}
52480
52481			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
52482		} ).get();
52483	}
52484} );
52485
52486
52487var
52488	r20 = /%20/g,
52489	rhash = /#.*$/,
52490	rantiCache = /([?&])_=[^&]*/,
52491	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
52492
52493	// trac-7653, trac-8125, trac-8152: local protocol detection
52494	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
52495	rnoContent = /^(?:GET|HEAD)$/,
52496	rprotocol = /^\/\//,
52497
52498	/* Prefilters
52499	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
52500	 * 2) These are called:
52501	 *    - BEFORE asking for a transport
52502	 *    - AFTER param serialization (s.data is a string if s.processData is true)
52503	 * 3) key is the dataType
52504	 * 4) the catchall symbol "*" can be used
52505	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
52506	 */
52507	prefilters = {},
52508
52509	/* Transports bindings
52510	 * 1) key is the dataType
52511	 * 2) the catchall symbol "*" can be used
52512	 * 3) selection will start with transport dataType and THEN go to "*" if needed
52513	 */
52514	transports = {},
52515
52516	// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression
52517	allTypes = "*/".concat( "*" ),
52518
52519	// Anchor tag for parsing the document origin
52520	originAnchor = document.createElement( "a" );
52521
52522originAnchor.href = location.href;
52523
52524// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
52525function addToPrefiltersOrTransports( structure ) {
52526
52527	// dataTypeExpression is optional and defaults to "*"
52528	return function( dataTypeExpression, func ) {
52529
52530		if ( typeof dataTypeExpression !== "string" ) {
52531			func = dataTypeExpression;
52532			dataTypeExpression = "*";
52533		}
52534
52535		var dataType,
52536			i = 0,
52537			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
52538
52539		if ( isFunction( func ) ) {
52540
52541			// For each dataType in the dataTypeExpression
52542			while ( ( dataType = dataTypes[ i++ ] ) ) {
52543
52544				// Prepend if requested
52545				if ( dataType[ 0 ] === "+" ) {
52546					dataType = dataType.slice( 1 ) || "*";
52547					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
52548
52549				// Otherwise append
52550				} else {
52551					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
52552				}
52553			}
52554		}
52555	};
52556}
52557
52558// Base inspection function for prefilters and transports
52559function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
52560
52561	var inspected = {},
52562		seekingTransport = ( structure === transports );
52563
52564	function inspect( dataType ) {
52565		var selected;
52566		inspected[ dataType ] = true;
52567		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
52568			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
52569			if ( typeof dataTypeOrTransport === "string" &&
52570				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
52571
52572				options.dataTypes.unshift( dataTypeOrTransport );
52573				inspect( dataTypeOrTransport );
52574				return false;
52575			} else if ( seekingTransport ) {
52576				return !( selected = dataTypeOrTransport );
52577			}
52578		} );
52579		return selected;
52580	}
52581
52582	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
52583}
52584
52585// A special extend for ajax options
52586// that takes "flat" options (not to be deep extended)
52587// Fixes trac-9887
52588function ajaxExtend( target, src ) {
52589	var key, deep,
52590		flatOptions = jQuery.ajaxSettings.flatOptions || {};
52591
52592	for ( key in src ) {
52593		if ( src[ key ] !== undefined ) {
52594			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
52595		}
52596	}
52597	if ( deep ) {
52598		jQuery.extend( true, target, deep );
52599	}
52600
52601	return target;
52602}
52603
52604/* Handles responses to an ajax request:
52605 * - finds the right dataType (mediates between content-type and expected dataType)
52606 * - returns the corresponding response
52607 */
52608function ajaxHandleResponses( s, jqXHR, responses ) {
52609
52610	var ct, type, finalDataType, firstDataType,
52611		contents = s.contents,
52612		dataTypes = s.dataTypes;
52613
52614	// Remove auto dataType and get content-type in the process
52615	while ( dataTypes[ 0 ] === "*" ) {
52616		dataTypes.shift();
52617		if ( ct === undefined ) {
52618			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
52619		}
52620	}
52621
52622	// Check if we're dealing with a known content-type
52623	if ( ct ) {
52624		for ( type in contents ) {
52625			if ( contents[ type ] && contents[ type ].test( ct ) ) {
52626				dataTypes.unshift( type );
52627				break;
52628			}
52629		}
52630	}
52631
52632	// Check to see if we have a response for the expected dataType
52633	if ( dataTypes[ 0 ] in responses ) {
52634		finalDataType = dataTypes[ 0 ];
52635	} else {
52636
52637		// Try convertible dataTypes
52638		for ( type in responses ) {
52639			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
52640				finalDataType = type;
52641				break;
52642			}
52643			if ( !firstDataType ) {
52644				firstDataType = type;
52645			}
52646		}
52647
52648		// Or just use first one
52649		finalDataType = finalDataType || firstDataType;
52650	}
52651
52652	// If we found a dataType
52653	// We add the dataType to the list if needed
52654	// and return the corresponding response
52655	if ( finalDataType ) {
52656		if ( finalDataType !== dataTypes[ 0 ] ) {
52657			dataTypes.unshift( finalDataType );
52658		}
52659		return responses[ finalDataType ];
52660	}
52661}
52662
52663/* Chain conversions given the request and the original response
52664 * Also sets the responseXXX fields on the jqXHR instance
52665 */
52666function ajaxConvert( s, response, jqXHR, isSuccess ) {
52667	var conv2, current, conv, tmp, prev,
52668		converters = {},
52669
52670		// Work with a copy of dataTypes in case we need to modify it for conversion
52671		dataTypes = s.dataTypes.slice();
52672
52673	// Create converters map with lowercased keys
52674	if ( dataTypes[ 1 ] ) {
52675		for ( conv in s.converters ) {
52676			converters[ conv.toLowerCase() ] = s.converters[ conv ];
52677		}
52678	}
52679
52680	current = dataTypes.shift();
52681
52682	// Convert to each sequential dataType
52683	while ( current ) {
52684
52685		if ( s.responseFields[ current ] ) {
52686			jqXHR[ s.responseFields[ current ] ] = response;
52687		}
52688
52689		// Apply the dataFilter if provided
52690		if ( !prev && isSuccess && s.dataFilter ) {
52691			response = s.dataFilter( response, s.dataType );
52692		}
52693
52694		prev = current;
52695		current = dataTypes.shift();
52696
52697		if ( current ) {
52698
52699			// There's only work to do if current dataType is non-auto
52700			if ( current === "*" ) {
52701
52702				current = prev;
52703
52704			// Convert response if prev dataType is non-auto and differs from current
52705			} else if ( prev !== "*" && prev !== current ) {
52706
52707				// Seek a direct converter
52708				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
52709
52710				// If none found, seek a pair
52711				if ( !conv ) {
52712					for ( conv2 in converters ) {
52713
52714						// If conv2 outputs current
52715						tmp = conv2.split( " " );
52716						if ( tmp[ 1 ] === current ) {
52717
52718							// If prev can be converted to accepted input
52719							conv = converters[ prev + " " + tmp[ 0 ] ] ||
52720								converters[ "* " + tmp[ 0 ] ];
52721							if ( conv ) {
52722
52723								// Condense equivalence converters
52724								if ( conv === true ) {
52725									conv = converters[ conv2 ];
52726
52727								// Otherwise, insert the intermediate dataType
52728								} else if ( converters[ conv2 ] !== true ) {
52729									current = tmp[ 0 ];
52730									dataTypes.unshift( tmp[ 1 ] );
52731								}
52732								break;
52733							}
52734						}
52735					}
52736				}
52737
52738				// Apply converter (if not an equivalence)
52739				if ( conv !== true ) {
52740
52741					// Unless errors are allowed to bubble, catch and return them
52742					if ( conv && s.throws ) {
52743						response = conv( response );
52744					} else {
52745						try {
52746							response = conv( response );
52747						} catch ( e ) {
52748							return {
52749								state: "parsererror",
52750								error: conv ? e : "No conversion from " + prev + " to " + current
52751							};
52752						}
52753					}
52754				}
52755			}
52756		}
52757	}
52758
52759	return { state: "success", data: response };
52760}
52761
52762jQuery.extend( {
52763
52764	// Counter for holding the number of active queries
52765	active: 0,
52766
52767	// Last-Modified header cache for next request
52768	lastModified: {},
52769	etag: {},
52770
52771	ajaxSettings: {
52772		url: location.href,
52773		type: "GET",
52774		isLocal: rlocalProtocol.test( location.protocol ),
52775		global: true,
52776		processData: true,
52777		async: true,
52778		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
52779
52780		/*
52781		timeout: 0,
52782		data: null,
52783		dataType: null,
52784		username: null,
52785		password: null,
52786		cache: null,
52787		throws: false,
52788		traditional: false,
52789		headers: {},
52790		*/
52791
52792		accepts: {
52793			"*": allTypes,
52794			text: "text/plain",
52795			html: "text/html",
52796			xml: "application/xml, text/xml",
52797			json: "application/json, text/javascript"
52798		},
52799
52800		contents: {
52801			xml: /\bxml\b/,
52802			html: /\bhtml/,
52803			json: /\bjson\b/
52804		},
52805
52806		responseFields: {
52807			xml: "responseXML",
52808			text: "responseText",
52809			json: "responseJSON"
52810		},
52811
52812		// Data converters
52813		// Keys separate source (or catchall "*") and destination types with a single space
52814		converters: {
52815
52816			// Convert anything to text
52817			"* text": String,
52818
52819			// Text to html (true = no transformation)
52820			"text html": true,
52821
52822			// Evaluate text as a json expression
52823			"text json": JSON.parse,
52824
52825			// Parse text as xml
52826			"text xml": jQuery.parseXML
52827		},
52828
52829		// For options that shouldn't be deep extended:
52830		// you can add your own custom options here if
52831		// and when you create one that shouldn't be
52832		// deep extended (see ajaxExtend)
52833		flatOptions: {
52834			url: true,
52835			context: true
52836		}
52837	},
52838
52839	// Creates a full fledged settings object into target
52840	// with both ajaxSettings and settings fields.
52841	// If target is omitted, writes into ajaxSettings.
52842	ajaxSetup: function( target, settings ) {
52843		return settings ?
52844
52845			// Building a settings object
52846			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
52847
52848			// Extending ajaxSettings
52849			ajaxExtend( jQuery.ajaxSettings, target );
52850	},
52851
52852	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
52853	ajaxTransport: addToPrefiltersOrTransports( transports ),
52854
52855	// Main method
52856	ajax: function( url, options ) {
52857
52858		// If url is an object, simulate pre-1.5 signature
52859		if ( typeof url === "object" ) {
52860			options = url;
52861			url = undefined;
52862		}
52863
52864		// Force options to be an object
52865		options = options || {};
52866
52867		var transport,
52868
52869			// URL without anti-cache param
52870			cacheURL,
52871
52872			// Response headers
52873			responseHeadersString,
52874			responseHeaders,
52875
52876			// timeout handle
52877			timeoutTimer,
52878
52879			// Url cleanup var
52880			urlAnchor,
52881
52882			// Request state (becomes false upon send and true upon completion)
52883			completed,
52884
52885			// To know if global events are to be dispatched
52886			fireGlobals,
52887
52888			// Loop variable
52889			i,
52890
52891			// uncached part of the url
52892			uncached,
52893
52894			// Create the final options object
52895			s = jQuery.ajaxSetup( {}, options ),
52896
52897			// Callbacks context
52898			callbackContext = s.context || s,
52899
52900			// Context for global events is callbackContext if it is a DOM node or jQuery collection
52901			globalEventContext = s.context &&
52902				( callbackContext.nodeType || callbackContext.jquery ) ?
52903				jQuery( callbackContext ) :
52904				jQuery.event,
52905
52906			// Deferreds
52907			deferred = jQuery.Deferred(),
52908			completeDeferred = jQuery.Callbacks( "once memory" ),
52909
52910			// Status-dependent callbacks
52911			statusCode = s.statusCode || {},
52912
52913			// Headers (they are sent all at once)
52914			requestHeaders = {},
52915			requestHeadersNames = {},
52916
52917			// Default abort message
52918			strAbort = "canceled",
52919
52920			// Fake xhr
52921			jqXHR = {
52922				readyState: 0,
52923
52924				// Builds headers hashtable if needed
52925				getResponseHeader: function( key ) {
52926					var match;
52927					if ( completed ) {
52928						if ( !responseHeaders ) {
52929							responseHeaders = {};
52930							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
52931								responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
52932									( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
52933										.concat( match[ 2 ] );
52934							}
52935						}
52936						match = responseHeaders[ key.toLowerCase() + " " ];
52937					}
52938					return match == null ? null : match.join( ", " );
52939				},
52940
52941				// Raw string
52942				getAllResponseHeaders: function() {
52943					return completed ? responseHeadersString : null;
52944				},
52945
52946				// Caches the header
52947				setRequestHeader: function( name, value ) {
52948					if ( completed == null ) {
52949						name = requestHeadersNames[ name.toLowerCase() ] =
52950							requestHeadersNames[ name.toLowerCase() ] || name;
52951						requestHeaders[ name ] = value;
52952					}
52953					return this;
52954				},
52955
52956				// Overrides response content-type header
52957				overrideMimeType: function( type ) {
52958					if ( completed == null ) {
52959						s.mimeType = type;
52960					}
52961					return this;
52962				},
52963
52964				// Status-dependent callbacks
52965				statusCode: function( map ) {
52966					var code;
52967					if ( map ) {
52968						if ( completed ) {
52969
52970							// Execute the appropriate callbacks
52971							jqXHR.always( map[ jqXHR.status ] );
52972						} else {
52973
52974							// Lazy-add the new callbacks in a way that preserves old ones
52975							for ( code in map ) {
52976								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
52977							}
52978						}
52979					}
52980					return this;
52981				},
52982
52983				// Cancel the request
52984				abort: function( statusText ) {
52985					var finalText = statusText || strAbort;
52986					if ( transport ) {
52987						transport.abort( finalText );
52988					}
52989					done( 0, finalText );
52990					return this;
52991				}
52992			};
52993
52994		// Attach deferreds
52995		deferred.promise( jqXHR );
52996
52997		// Add protocol if not provided (prefilters might expect it)
52998		// Handle falsy url in the settings object (trac-10093: consistency with old signature)
52999		// We also use the url parameter if available
53000		s.url = ( ( url || s.url || location.href ) + "" )
53001			.replace( rprotocol, location.protocol + "//" );
53002
53003		// Alias method option to type as per ticket trac-12004
53004		s.type = options.method || options.type || s.method || s.type;
53005
53006		// Extract dataTypes list
53007		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
53008
53009		// A cross-domain request is in order when the origin doesn't match the current origin.
53010		if ( s.crossDomain == null ) {
53011			urlAnchor = document.createElement( "a" );
53012
53013			// Support: IE <=8 - 11, Edge 12 - 15
53014			// IE throws exception on accessing the href property if url is malformed,
53015			// e.g. http://example.com:80x/
53016			try {
53017				urlAnchor.href = s.url;
53018
53019				// Support: IE <=8 - 11 only
53020				// Anchor's host property isn't correctly set when s.url is relative
53021				urlAnchor.href = urlAnchor.href;
53022				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
53023					urlAnchor.protocol + "//" + urlAnchor.host;
53024			} catch ( e ) {
53025
53026				// If there is an error parsing the URL, assume it is crossDomain,
53027				// it can be rejected by the transport if it is invalid
53028				s.crossDomain = true;
53029			}
53030		}
53031
53032		// Convert data if not already a string
53033		if ( s.data && s.processData && typeof s.data !== "string" ) {
53034			s.data = jQuery.param( s.data, s.traditional );
53035		}
53036
53037		// Apply prefilters
53038		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
53039
53040		// If request was aborted inside a prefilter, stop there
53041		if ( completed ) {
53042			return jqXHR;
53043		}
53044
53045		// We can fire global events as of now if asked to
53046		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)
53047		fireGlobals = jQuery.event && s.global;
53048
53049		// Watch for a new set of requests
53050		if ( fireGlobals && jQuery.active++ === 0 ) {
53051			jQuery.event.trigger( "ajaxStart" );
53052		}
53053
53054		// Uppercase the type
53055		s.type = s.type.toUpperCase();
53056
53057		// Determine if request has content
53058		s.hasContent = !rnoContent.test( s.type );
53059
53060		// Save the URL in case we're toying with the If-Modified-Since
53061		// and/or If-None-Match header later on
53062		// Remove hash to simplify url manipulation
53063		cacheURL = s.url.replace( rhash, "" );
53064
53065		// More options handling for requests with no content
53066		if ( !s.hasContent ) {
53067
53068			// Remember the hash so we can put it back
53069			uncached = s.url.slice( cacheURL.length );
53070
53071			// If data is available and should be processed, append data to url
53072			if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
53073				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
53074
53075				// trac-9682: remove data so that it's not used in an eventual retry
53076				delete s.data;
53077			}
53078
53079			// Add or update anti-cache param if needed
53080			if ( s.cache === false ) {
53081				cacheURL = cacheURL.replace( rantiCache, "$1" );
53082				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) +
53083					uncached;
53084			}
53085
53086			// Put hash and anti-cache on the URL that will be requested (gh-1732)
53087			s.url = cacheURL + uncached;
53088
53089		// Change '%20' to '+' if this is encoded form body content (gh-2658)
53090		} else if ( s.data && s.processData &&
53091			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
53092			s.data = s.data.replace( r20, "+" );
53093		}
53094
53095		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
53096		if ( s.ifModified ) {
53097			if ( jQuery.lastModified[ cacheURL ] ) {
53098				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
53099			}
53100			if ( jQuery.etag[ cacheURL ] ) {
53101				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
53102			}
53103		}
53104
53105		// Set the correct header, if data is being sent
53106		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
53107			jqXHR.setRequestHeader( "Content-Type", s.contentType );
53108		}
53109
53110		// Set the Accepts header for the server, depending on the dataType
53111		jqXHR.setRequestHeader(
53112			"Accept",
53113			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
53114				s.accepts[ s.dataTypes[ 0 ] ] +
53115					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
53116				s.accepts[ "*" ]
53117		);
53118
53119		// Check for headers option
53120		for ( i in s.headers ) {
53121			jqXHR.setRequestHeader( i, s.headers[ i ] );
53122		}
53123
53124		// Allow custom headers/mimetypes and early abort
53125		if ( s.beforeSend &&
53126			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
53127
53128			// Abort if not done already and return
53129			return jqXHR.abort();
53130		}
53131
53132		// Aborting is no longer a cancellation
53133		strAbort = "abort";
53134
53135		// Install callbacks on deferreds
53136		completeDeferred.add( s.complete );
53137		jqXHR.done( s.success );
53138		jqXHR.fail( s.error );
53139
53140		// Get transport
53141		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
53142
53143		// If no transport, we auto-abort
53144		if ( !transport ) {
53145			done( -1, "No Transport" );
53146		} else {
53147			jqXHR.readyState = 1;
53148
53149			// Send global event
53150			if ( fireGlobals ) {
53151				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
53152			}
53153
53154			// If request was aborted inside ajaxSend, stop there
53155			if ( completed ) {
53156				return jqXHR;
53157			}
53158
53159			// Timeout
53160			if ( s.async && s.timeout > 0 ) {
53161				timeoutTimer = window.setTimeout( function() {
53162					jqXHR.abort( "timeout" );
53163				}, s.timeout );
53164			}
53165
53166			try {
53167				completed = false;
53168				transport.send( requestHeaders, done );
53169			} catch ( e ) {
53170
53171				// Rethrow post-completion exceptions
53172				if ( completed ) {
53173					throw e;
53174				}
53175
53176				// Propagate others as results
53177				done( -1, e );
53178			}
53179		}
53180
53181		// Callback for when everything is done
53182		function done( status, nativeStatusText, responses, headers ) {
53183			var isSuccess, success, error, response, modified,
53184				statusText = nativeStatusText;
53185
53186			// Ignore repeat invocations
53187			if ( completed ) {
53188				return;
53189			}
53190
53191			completed = true;
53192
53193			// Clear timeout if it exists
53194			if ( timeoutTimer ) {
53195				window.clearTimeout( timeoutTimer );
53196			}
53197
53198			// Dereference transport for early garbage collection
53199			// (no matter how long the jqXHR object will be used)
53200			transport = undefined;
53201
53202			// Cache response headers
53203			responseHeadersString = headers || "";
53204
53205			// Set readyState
53206			jqXHR.readyState = status > 0 ? 4 : 0;
53207
53208			// Determine if successful
53209			isSuccess = status >= 200 && status < 300 || status === 304;
53210
53211			// Get response data
53212			if ( responses ) {
53213				response = ajaxHandleResponses( s, jqXHR, responses );
53214			}
53215
53216			// Use a noop converter for missing script but not if jsonp
53217			if ( !isSuccess &&
53218				jQuery.inArray( "script", s.dataTypes ) > -1 &&
53219				jQuery.inArray( "json", s.dataTypes ) < 0 ) {
53220				s.converters[ "text script" ] = function() {};
53221			}
53222
53223			// Convert no matter what (that way responseXXX fields are always set)
53224			response = ajaxConvert( s, response, jqXHR, isSuccess );
53225
53226			// If successful, handle type chaining
53227			if ( isSuccess ) {
53228
53229				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
53230				if ( s.ifModified ) {
53231					modified = jqXHR.getResponseHeader( "Last-Modified" );
53232					if ( modified ) {
53233						jQuery.lastModified[ cacheURL ] = modified;
53234					}
53235					modified = jqXHR.getResponseHeader( "etag" );
53236					if ( modified ) {
53237						jQuery.etag[ cacheURL ] = modified;
53238					}
53239				}
53240
53241				// if no content
53242				if ( status === 204 || s.type === "HEAD" ) {
53243					statusText = "nocontent";
53244
53245				// if not modified
53246				} else if ( status === 304 ) {
53247					statusText = "notmodified";
53248
53249				// If we have data, let's convert it
53250				} else {
53251					statusText = response.state;
53252					success = response.data;
53253					error = response.error;
53254					isSuccess = !error;
53255				}
53256			} else {
53257
53258				// Extract error from statusText and normalize for non-aborts
53259				error = statusText;
53260				if ( status || !statusText ) {
53261					statusText = "error";
53262					if ( status < 0 ) {
53263						status = 0;
53264					}
53265				}
53266			}
53267
53268			// Set data for the fake xhr object
53269			jqXHR.status = status;
53270			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
53271
53272			// Success/Error
53273			if ( isSuccess ) {
53274				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
53275			} else {
53276				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
53277			}
53278
53279			// Status-dependent callbacks
53280			jqXHR.statusCode( statusCode );
53281			statusCode = undefined;
53282
53283			if ( fireGlobals ) {
53284				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
53285					[ jqXHR, s, isSuccess ? success : error ] );
53286			}
53287
53288			// Complete
53289			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
53290
53291			if ( fireGlobals ) {
53292				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
53293
53294				// Handle the global AJAX counter
53295				if ( !( --jQuery.active ) ) {
53296					jQuery.event.trigger( "ajaxStop" );
53297				}
53298			}
53299		}
53300
53301		return jqXHR;
53302	},
53303
53304	getJSON: function( url, data, callback ) {
53305		return jQuery.get( url, data, callback, "json" );
53306	},
53307
53308	getScript: function( url, callback ) {
53309		return jQuery.get( url, undefined, callback, "script" );
53310	}
53311} );
53312
53313jQuery.each( [ "get", "post" ], function( _i, method ) {
53314	jQuery[ method ] = function( url, data, callback, type ) {
53315
53316		// Shift arguments if data argument was omitted
53317		if ( isFunction( data ) ) {
53318			type = type || callback;
53319			callback = data;
53320			data = undefined;
53321		}
53322
53323		// The url can be an options object (which then must have .url)
53324		return jQuery.ajax( jQuery.extend( {
53325			url: url,
53326			type: method,
53327			dataType: type,
53328			data: data,
53329			success: callback
53330		}, jQuery.isPlainObject( url ) && url ) );
53331	};
53332} );
53333
53334jQuery.ajaxPrefilter( function( s ) {
53335	var i;
53336	for ( i in s.headers ) {
53337		if ( i.toLowerCase() === "content-type" ) {
53338			s.contentType = s.headers[ i ] || "";
53339		}
53340	}
53341} );
53342
53343
53344jQuery._evalUrl = function( url, options, doc ) {
53345	return jQuery.ajax( {
53346		url: url,
53347
53348		// Make this explicit, since user can override this through ajaxSetup (trac-11264)
53349		type: "GET",
53350		dataType: "script",
53351		cache: true,
53352		async: false,
53353		global: false,
53354
53355		// Only evaluate the response if it is successful (gh-4126)
53356		// dataFilter is not invoked for failure responses, so using it instead
53357		// of the default converter is kludgy but it works.
53358		converters: {
53359			"text script": function() {}
53360		},
53361		dataFilter: function( response ) {
53362			jQuery.globalEval( response, options, doc );
53363		}
53364	} );
53365};
53366
53367
53368jQuery.fn.extend( {
53369	wrapAll: function( html ) {
53370		var wrap;
53371
53372		if ( this[ 0 ] ) {
53373			if ( isFunction( html ) ) {
53374				html = html.call( this[ 0 ] );
53375			}
53376
53377			// The elements to wrap the target around
53378			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
53379
53380			if ( this[ 0 ].parentNode ) {
53381				wrap.insertBefore( this[ 0 ] );
53382			}
53383
53384			wrap.map( function() {
53385				var elem = this;
53386
53387				while ( elem.firstElementChild ) {
53388					elem = elem.firstElementChild;
53389				}
53390
53391				return elem;
53392			} ).append( this );
53393		}
53394
53395		return this;
53396	},
53397
53398	wrapInner: function( html ) {
53399		if ( isFunction( html ) ) {
53400			return this.each( function( i ) {
53401				jQuery( this ).wrapInner( html.call( this, i ) );
53402			} );
53403		}
53404
53405		return this.each( function() {
53406			var self = jQuery( this ),
53407				contents = self.contents();
53408
53409			if ( contents.length ) {
53410				contents.wrapAll( html );
53411
53412			} else {
53413				self.append( html );
53414			}
53415		} );
53416	},
53417
53418	wrap: function( html ) {
53419		var htmlIsFunction = isFunction( html );
53420
53421		return this.each( function( i ) {
53422			jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
53423		} );
53424	},
53425
53426	unwrap: function( selector ) {
53427		this.parent( selector ).not( "body" ).each( function() {
53428			jQuery( this ).replaceWith( this.childNodes );
53429		} );
53430		return this;
53431	}
53432} );
53433
53434
53435jQuery.expr.pseudos.hidden = function( elem ) {
53436	return !jQuery.expr.pseudos.visible( elem );
53437};
53438jQuery.expr.pseudos.visible = function( elem ) {
53439	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
53440};
53441
53442
53443
53444
53445jQuery.ajaxSettings.xhr = function() {
53446	try {
53447		return new window.XMLHttpRequest();
53448	} catch ( e ) {}
53449};
53450
53451var xhrSuccessStatus = {
53452
53453		// File protocol always yields status code 0, assume 200
53454		0: 200,
53455
53456		// Support: IE <=9 only
53457		// trac-1450: sometimes IE returns 1223 when it should be 204
53458		1223: 204
53459	},
53460	xhrSupported = jQuery.ajaxSettings.xhr();
53461
53462support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
53463support.ajax = xhrSupported = !!xhrSupported;
53464
53465jQuery.ajaxTransport( function( options ) {
53466	var callback, errorCallback;
53467
53468	// Cross domain only allowed if supported through XMLHttpRequest
53469	if ( support.cors || xhrSupported && !options.crossDomain ) {
53470		return {
53471			send: function( headers, complete ) {
53472				var i,
53473					xhr = options.xhr();
53474
53475				xhr.open(
53476					options.type,
53477					options.url,
53478					options.async,
53479					options.username,
53480					options.password
53481				);
53482
53483				// Apply custom fields if provided
53484				if ( options.xhrFields ) {
53485					for ( i in options.xhrFields ) {
53486						xhr[ i ] = options.xhrFields[ i ];
53487					}
53488				}
53489
53490				// Override mime type if needed
53491				if ( options.mimeType && xhr.overrideMimeType ) {
53492					xhr.overrideMimeType( options.mimeType );
53493				}
53494
53495				// X-Requested-With header
53496				// For cross-domain requests, seeing as conditions for a preflight are
53497				// akin to a jigsaw puzzle, we simply never set it to be sure.
53498				// (it can always be set on a per-request basis or even using ajaxSetup)
53499				// For same-domain requests, won't change header if already provided.
53500				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
53501					headers[ "X-Requested-With" ] = "XMLHttpRequest";
53502				}
53503
53504				// Set headers
53505				for ( i in headers ) {
53506					xhr.setRequestHeader( i, headers[ i ] );
53507				}
53508
53509				// Callback
53510				callback = function( type ) {
53511					return function() {
53512						if ( callback ) {
53513							callback = errorCallback = xhr.onload =
53514								xhr.onerror = xhr.onabort = xhr.ontimeout =
53515									xhr.onreadystatechange = null;
53516
53517							if ( type === "abort" ) {
53518								xhr.abort();
53519							} else if ( type === "error" ) {
53520
53521								// Support: IE <=9 only
53522								// On a manual native abort, IE9 throws
53523								// errors on any property access that is not readyState
53524								if ( typeof xhr.status !== "number" ) {
53525									complete( 0, "error" );
53526								} else {
53527									complete(
53528
53529										// File: protocol always yields status 0; see trac-8605, trac-14207
53530										xhr.status,
53531										xhr.statusText
53532									);
53533								}
53534							} else {
53535								complete(
53536									xhrSuccessStatus[ xhr.status ] || xhr.status,
53537									xhr.statusText,
53538
53539									// Support: IE <=9 only
53540									// IE9 has no XHR2 but throws on binary (trac-11426)
53541									// For XHR2 non-text, let the caller handle it (gh-2498)
53542									( xhr.responseType || "text" ) !== "text"  ||
53543									typeof xhr.responseText !== "string" ?
53544										{ binary: xhr.response } :
53545										{ text: xhr.responseText },
53546									xhr.getAllResponseHeaders()
53547								);
53548							}
53549						}
53550					};
53551				};
53552
53553				// Listen to events
53554				xhr.onload = callback();
53555				errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
53556
53557				// Support: IE 9 only
53558				// Use onreadystatechange to replace onabort
53559				// to handle uncaught aborts
53560				if ( xhr.onabort !== undefined ) {
53561					xhr.onabort = errorCallback;
53562				} else {
53563					xhr.onreadystatechange = function() {
53564
53565						// Check readyState before timeout as it changes
53566						if ( xhr.readyState === 4 ) {
53567
53568							// Allow onerror to be called first,
53569							// but that will not handle a native abort
53570							// Also, save errorCallback to a variable
53571							// as xhr.onerror cannot be accessed
53572							window.setTimeout( function() {
53573								if ( callback ) {
53574									errorCallback();
53575								}
53576							} );
53577						}
53578					};
53579				}
53580
53581				// Create the abort callback
53582				callback = callback( "abort" );
53583
53584				try {
53585
53586					// Do send the request (this may raise an exception)
53587					xhr.send( options.hasContent && options.data || null );
53588				} catch ( e ) {
53589
53590					// trac-14683: Only rethrow if this hasn't been notified as an error yet
53591					if ( callback ) {
53592						throw e;
53593					}
53594				}
53595			},
53596
53597			abort: function() {
53598				if ( callback ) {
53599					callback();
53600				}
53601			}
53602		};
53603	}
53604} );
53605
53606
53607
53608
53609// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
53610jQuery.ajaxPrefilter( function( s ) {
53611	if ( s.crossDomain ) {
53612		s.contents.script = false;
53613	}
53614} );
53615
53616// Install script dataType
53617jQuery.ajaxSetup( {
53618	accepts: {
53619		script: "text/javascript, application/javascript, " +
53620			"application/ecmascript, application/x-ecmascript"
53621	},
53622	contents: {
53623		script: /\b(?:java|ecma)script\b/
53624	},
53625	converters: {
53626		"text script": function( text ) {
53627			jQuery.globalEval( text );
53628			return text;
53629		}
53630	}
53631} );
53632
53633// Handle cache's special case and crossDomain
53634jQuery.ajaxPrefilter( "script", function( s ) {
53635	if ( s.cache === undefined ) {
53636		s.cache = false;
53637	}
53638	if ( s.crossDomain ) {
53639		s.type = "GET";
53640	}
53641} );
53642
53643// Bind script tag hack transport
53644jQuery.ajaxTransport( "script", function( s ) {
53645
53646	// This transport only deals with cross domain or forced-by-attrs requests
53647	if ( s.crossDomain || s.scriptAttrs ) {
53648		var script, callback;
53649		return {
53650			send: function( _, complete ) {
53651				script = jQuery( "<script>" )
53652					.attr( s.scriptAttrs || {} )
53653					.prop( { charset: s.scriptCharset, src: s.url } )
53654					.on( "load error", callback = function( evt ) {
53655						script.remove();
53656						callback = null;
53657						if ( evt ) {
53658							complete( evt.type === "error" ? 404 : 200, evt.type );
53659						}
53660					} );
53661
53662				// Use native DOM manipulation to avoid our domManip AJAX trickery
53663				document.head.appendChild( script[ 0 ] );
53664			},
53665			abort: function() {
53666				if ( callback ) {
53667					callback();
53668				}
53669			}
53670		};
53671	}
53672} );
53673
53674
53675
53676
53677var oldCallbacks = [],
53678	rjsonp = /(=)\?(?=&|$)|\?\?/;
53679
53680// Default jsonp settings
53681jQuery.ajaxSetup( {
53682	jsonp: "callback",
53683	jsonpCallback: function() {
53684		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) );
53685		this[ callback ] = true;
53686		return callback;
53687	}
53688} );
53689
53690// Detect, normalize options and install callbacks for jsonp requests
53691jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
53692
53693	var callbackName, overwritten, responseContainer,
53694		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
53695			"url" :
53696			typeof s.data === "string" &&
53697				( s.contentType || "" )
53698					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
53699				rjsonp.test( s.data ) && "data"
53700		);
53701
53702	// Handle iff the expected data type is "jsonp" or we have a parameter to set
53703	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
53704
53705		// Get callback name, remembering preexisting value associated with it
53706		callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
53707			s.jsonpCallback() :
53708			s.jsonpCallback;
53709
53710		// Insert callback into url or form data
53711		if ( jsonProp ) {
53712			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
53713		} else if ( s.jsonp !== false ) {
53714			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
53715		}
53716
53717		// Use data converter to retrieve json after script execution
53718		s.converters[ "script json" ] = function() {
53719			if ( !responseContainer ) {
53720				jQuery.error( callbackName + " was not called" );
53721			}
53722			return responseContainer[ 0 ];
53723		};
53724
53725		// Force json dataType
53726		s.dataTypes[ 0 ] = "json";
53727
53728		// Install callback
53729		overwritten = window[ callbackName ];
53730		window[ callbackName ] = function() {
53731			responseContainer = arguments;
53732		};
53733
53734		// Clean-up function (fires after converters)
53735		jqXHR.always( function() {
53736
53737			// If previous value didn't exist - remove it
53738			if ( overwritten === undefined ) {
53739				jQuery( window ).removeProp( callbackName );
53740
53741			// Otherwise restore preexisting value
53742			} else {
53743				window[ callbackName ] = overwritten;
53744			}
53745
53746			// Save back as free
53747			if ( s[ callbackName ] ) {
53748
53749				// Make sure that re-using the options doesn't screw things around
53750				s.jsonpCallback = originalSettings.jsonpCallback;
53751
53752				// Save the callback name for future use
53753				oldCallbacks.push( callbackName );
53754			}
53755
53756			// Call if it was a function and we have a response
53757			if ( responseContainer && isFunction( overwritten ) ) {
53758				overwritten( responseContainer[ 0 ] );
53759			}
53760
53761			responseContainer = overwritten = undefined;
53762		} );
53763
53764		// Delegate to script
53765		return "script";
53766	}
53767} );
53768
53769
53770
53771
53772// Support: Safari 8 only
53773// In Safari 8 documents created via document.implementation.createHTMLDocument
53774// collapse sibling forms: the second one becomes a child of the first one.
53775// Because of that, this security measure has to be disabled in Safari 8.
53776// https://bugs.webkit.org/show_bug.cgi?id=137337
53777support.createHTMLDocument = ( function() {
53778	var body = document.implementation.createHTMLDocument( "" ).body;
53779	body.innerHTML = "<form></form><form></form>";
53780	return body.childNodes.length === 2;
53781} )();
53782
53783
53784// Argument "data" should be string of html
53785// context (optional): If specified, the fragment will be created in this context,
53786// defaults to document
53787// keepScripts (optional): If true, will include scripts passed in the html string
53788jQuery.parseHTML = function( data, context, keepScripts ) {
53789	if ( typeof data !== "string" ) {
53790		return [];
53791	}
53792	if ( typeof context === "boolean" ) {
53793		keepScripts = context;
53794		context = false;
53795	}
53796
53797	var base, parsed, scripts;
53798
53799	if ( !context ) {
53800
53801		// Stop scripts or inline event handlers from being executed immediately
53802		// by using document.implementation
53803		if ( support.createHTMLDocument ) {
53804			context = document.implementation.createHTMLDocument( "" );
53805
53806			// Set the base href for the created document
53807			// so any parsed elements with URLs
53808			// are based on the document's URL (gh-2965)
53809			base = context.createElement( "base" );
53810			base.href = document.location.href;
53811			context.head.appendChild( base );
53812		} else {
53813			context = document;
53814		}
53815	}
53816
53817	parsed = rsingleTag.exec( data );
53818	scripts = !keepScripts && [];
53819
53820	// Single tag
53821	if ( parsed ) {
53822		return [ context.createElement( parsed[ 1 ] ) ];
53823	}
53824
53825	parsed = buildFragment( [ data ], context, scripts );
53826
53827	if ( scripts && scripts.length ) {
53828		jQuery( scripts ).remove();
53829	}
53830
53831	return jQuery.merge( [], parsed.childNodes );
53832};
53833
53834
53835/**
53836 * Load a url into a page
53837 */
53838jQuery.fn.load = function( url, params, callback ) {
53839	var selector, type, response,
53840		self = this,
53841		off = url.indexOf( " " );
53842
53843	if ( off > -1 ) {
53844		selector = stripAndCollapse( url.slice( off ) );
53845		url = url.slice( 0, off );
53846	}
53847
53848	// If it's a function
53849	if ( isFunction( params ) ) {
53850
53851		// We assume that it's the callback
53852		callback = params;
53853		params = undefined;
53854
53855	// Otherwise, build a param string
53856	} else if ( params && typeof params === "object" ) {
53857		type = "POST";
53858	}
53859
53860	// If we have elements to modify, make the request
53861	if ( self.length > 0 ) {
53862		jQuery.ajax( {
53863			url: url,
53864
53865			// If "type" variable is undefined, then "GET" method will be used.
53866			// Make value of this field explicit since
53867			// user can override it through ajaxSetup method
53868			type: type || "GET",
53869			dataType: "html",
53870			data: params
53871		} ).done( function( responseText ) {
53872
53873			// Save response for use in complete callback
53874			response = arguments;
53875
53876			self.html( selector ?
53877
53878				// If a selector was specified, locate the right elements in a dummy div
53879				// Exclude scripts to avoid IE 'Permission Denied' errors
53880				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
53881
53882				// Otherwise use the full result
53883				responseText );
53884
53885		// If the request succeeds, this function gets "data", "status", "jqXHR"
53886		// but they are ignored because response was set above.
53887		// If it fails, this function gets "jqXHR", "status", "error"
53888		} ).always( callback && function( jqXHR, status ) {
53889			self.each( function() {
53890				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
53891			} );
53892		} );
53893	}
53894
53895	return this;
53896};
53897
53898
53899
53900
53901jQuery.expr.pseudos.animated = function( elem ) {
53902	return jQuery.grep( jQuery.timers, function( fn ) {
53903		return elem === fn.elem;
53904	} ).length;
53905};
53906
53907
53908
53909
53910jQuery.offset = {
53911	setOffset: function( elem, options, i ) {
53912		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
53913			position = jQuery.css( elem, "position" ),
53914			curElem = jQuery( elem ),
53915			props = {};
53916
53917		// Set position first, in-case top/left are set even on static elem
53918		if ( position === "static" ) {
53919			elem.style.position = "relative";
53920		}
53921
53922		curOffset = curElem.offset();
53923		curCSSTop = jQuery.css( elem, "top" );
53924		curCSSLeft = jQuery.css( elem, "left" );
53925		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
53926			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
53927
53928		// Need to be able to calculate position if either
53929		// top or left is auto and position is either absolute or fixed
53930		if ( calculatePosition ) {
53931			curPosition = curElem.position();
53932			curTop = curPosition.top;
53933			curLeft = curPosition.left;
53934
53935		} else {
53936			curTop = parseFloat( curCSSTop ) || 0;
53937			curLeft = parseFloat( curCSSLeft ) || 0;
53938		}
53939
53940		if ( isFunction( options ) ) {
53941
53942			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
53943			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
53944		}
53945
53946		if ( options.top != null ) {
53947			props.top = ( options.top - curOffset.top ) + curTop;
53948		}
53949		if ( options.left != null ) {
53950			props.left = ( options.left - curOffset.left ) + curLeft;
53951		}
53952
53953		if ( "using" in options ) {
53954			options.using.call( elem, props );
53955
53956		} else {
53957			curElem.css( props );
53958		}
53959	}
53960};
53961
53962jQuery.fn.extend( {
53963
53964	// offset() relates an element's border box to the document origin
53965	offset: function( options ) {
53966
53967		// Preserve chaining for setter
53968		if ( arguments.length ) {
53969			return options === undefined ?
53970				this :
53971				this.each( function( i ) {
53972					jQuery.offset.setOffset( this, options, i );
53973				} );
53974		}
53975
53976		var rect, win,
53977			elem = this[ 0 ];
53978
53979		if ( !elem ) {
53980			return;
53981		}
53982
53983		// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
53984		// Support: IE <=11 only
53985		// Running getBoundingClientRect on a
53986		// disconnected node in IE throws an error
53987		if ( !elem.getClientRects().length ) {
53988			return { top: 0, left: 0 };
53989		}
53990
53991		// Get document-relative position by adding viewport scroll to viewport-relative gBCR
53992		rect = elem.getBoundingClientRect();
53993		win = elem.ownerDocument.defaultView;
53994		return {
53995			top: rect.top + win.pageYOffset,
53996			left: rect.left + win.pageXOffset
53997		};
53998	},
53999
54000	// position() relates an element's margin box to its offset parent's padding box
54001	// This corresponds to the behavior of CSS absolute positioning
54002	position: function() {
54003		if ( !this[ 0 ] ) {
54004			return;
54005		}
54006
54007		var offsetParent, offset, doc,
54008			elem = this[ 0 ],
54009			parentOffset = { top: 0, left: 0 };
54010
54011		// position:fixed elements are offset from the viewport, which itself always has zero offset
54012		if ( jQuery.css( elem, "position" ) === "fixed" ) {
54013
54014			// Assume position:fixed implies availability of getBoundingClientRect
54015			offset = elem.getBoundingClientRect();
54016
54017		} else {
54018			offset = this.offset();
54019
54020			// Account for the *real* offset parent, which can be the document or its root element
54021			// when a statically positioned element is identified
54022			doc = elem.ownerDocument;
54023			offsetParent = elem.offsetParent || doc.documentElement;
54024			while ( offsetParent &&
54025				( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
54026				jQuery.css( offsetParent, "position" ) === "static" ) {
54027
54028				offsetParent = offsetParent.parentNode;
54029			}
54030			if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
54031
54032				// Incorporate borders into its offset, since they are outside its content origin
54033				parentOffset = jQuery( offsetParent ).offset();
54034				parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
54035				parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
54036			}
54037		}
54038
54039		// Subtract parent offsets and element margins
54040		return {
54041			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
54042			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
54043		};
54044	},
54045
54046	// This method will return documentElement in the following cases:
54047	// 1) For the element inside the iframe without offsetParent, this method will return
54048	//    documentElement of the parent window
54049	// 2) For the hidden or detached element
54050	// 3) For body or html element, i.e. in case of the html node - it will return itself
54051	//
54052	// but those exceptions were never presented as a real life use-cases
54053	// and might be considered as more preferable results.
54054	//
54055	// This logic, however, is not guaranteed and can change at any point in the future
54056	offsetParent: function() {
54057		return this.map( function() {
54058			var offsetParent = this.offsetParent;
54059
54060			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
54061				offsetParent = offsetParent.offsetParent;
54062			}
54063
54064			return offsetParent || documentElement;
54065		} );
54066	}
54067} );
54068
54069// Create scrollLeft and scrollTop methods
54070jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
54071	var top = "pageYOffset" === prop;
54072
54073	jQuery.fn[ method ] = function( val ) {
54074		return access( this, function( elem, method, val ) {
54075
54076			// Coalesce documents and windows
54077			var win;
54078			if ( isWindow( elem ) ) {
54079				win = elem;
54080			} else if ( elem.nodeType === 9 ) {
54081				win = elem.defaultView;
54082			}
54083
54084			if ( val === undefined ) {
54085				return win ? win[ prop ] : elem[ method ];
54086			}
54087
54088			if ( win ) {
54089				win.scrollTo(
54090					!top ? val : win.pageXOffset,
54091					top ? val : win.pageYOffset
54092				);
54093
54094			} else {
54095				elem[ method ] = val;
54096			}
54097		}, method, val, arguments.length );
54098	};
54099} );
54100
54101// Support: Safari <=7 - 9.1, Chrome <=37 - 49
54102// Add the top/left cssHooks using jQuery.fn.position
54103// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
54104// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
54105// getComputedStyle returns percent when specified for top/left/bottom/right;
54106// rather than make the css module depend on the offset module, just check for it here
54107jQuery.each( [ "top", "left" ], function( _i, prop ) {
54108	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
54109		function( elem, computed ) {
54110			if ( computed ) {
54111				computed = curCSS( elem, prop );
54112
54113				// If curCSS returns percentage, fallback to offset
54114				return rnumnonpx.test( computed ) ?
54115					jQuery( elem ).position()[ prop ] + "px" :
54116					computed;
54117			}
54118		}
54119	);
54120} );
54121
54122
54123// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
54124jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
54125	jQuery.each( {
54126		padding: "inner" + name,
54127		content: type,
54128		"": "outer" + name
54129	}, function( defaultExtra, funcName ) {
54130
54131		// Margin is only for outerHeight, outerWidth
54132		jQuery.fn[ funcName ] = function( margin, value ) {
54133			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
54134				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
54135
54136			return access( this, function( elem, type, value ) {
54137				var doc;
54138
54139				if ( isWindow( elem ) ) {
54140
54141					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
54142					return funcName.indexOf( "outer" ) === 0 ?
54143						elem[ "inner" + name ] :
54144						elem.document.documentElement[ "client" + name ];
54145				}
54146
54147				// Get document width or height
54148				if ( elem.nodeType === 9 ) {
54149					doc = elem.documentElement;
54150
54151					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
54152					// whichever is greatest
54153					return Math.max(
54154						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
54155						elem.body[ "offset" + name ], doc[ "offset" + name ],
54156						doc[ "client" + name ]
54157					);
54158				}
54159
54160				return value === undefined ?
54161
54162					// Get width or height on the element, requesting but not forcing parseFloat
54163					jQuery.css( elem, type, extra ) :
54164
54165					// Set width or height on the element
54166					jQuery.style( elem, type, value, extra );
54167			}, type, chainable ? margin : undefined, chainable );
54168		};
54169	} );
54170} );
54171
54172
54173jQuery.each( [
54174	"ajaxStart",
54175	"ajaxStop",
54176	"ajaxComplete",
54177	"ajaxError",
54178	"ajaxSuccess",
54179	"ajaxSend"
54180], function( _i, type ) {
54181	jQuery.fn[ type ] = function( fn ) {
54182		return this.on( type, fn );
54183	};
54184} );
54185
54186
54187
54188
54189jQuery.fn.extend( {
54190
54191	bind: function( types, data, fn ) {
54192		return this.on( types, null, data, fn );
54193	},
54194	unbind: function( types, fn ) {
54195		return this.off( types, null, fn );
54196	},
54197
54198	delegate: function( selector, types, data, fn ) {
54199		return this.on( types, selector, data, fn );
54200	},
54201	undelegate: function( selector, types, fn ) {
54202
54203		// ( namespace ) or ( selector, types [, fn] )
54204		return arguments.length === 1 ?
54205			this.off( selector, "**" ) :
54206			this.off( types, selector || "**", fn );
54207	},
54208
54209	hover: function( fnOver, fnOut ) {
54210		return this
54211			.on( "mouseenter", fnOver )
54212			.on( "mouseleave", fnOut || fnOver );
54213	}
54214} );
54215
54216jQuery.each(
54217	( "blur focus focusin focusout resize scroll click dblclick " +
54218	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
54219	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
54220	function( _i, name ) {
54221
54222		// Handle event binding
54223		jQuery.fn[ name ] = function( data, fn ) {
54224			return arguments.length > 0 ?
54225				this.on( name, null, data, fn ) :
54226				this.trigger( name );
54227		};
54228	}
54229);
54230
54231
54232
54233
54234// Support: Android <=4.0 only
54235// Make sure we trim BOM and NBSP
54236// Require that the "whitespace run" starts from a non-whitespace
54237// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
54238var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
54239
54240// Bind a function to a context, optionally partially applying any
54241// arguments.
54242// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
54243// However, it is not slated for removal any time soon
54244jQuery.proxy = function( fn, context ) {
54245	var tmp, args, proxy;
54246
54247	if ( typeof context === "string" ) {
54248		tmp = fn[ context ];
54249		context = fn;
54250		fn = tmp;
54251	}
54252
54253	// Quick check to determine if target is callable, in the spec
54254	// this throws a TypeError, but we will just return undefined.
54255	if ( !isFunction( fn ) ) {
54256		return undefined;
54257	}
54258
54259	// Simulated bind
54260	args = slice.call( arguments, 2 );
54261	proxy = function() {
54262		return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
54263	};
54264
54265	// Set the guid of unique handler to the same of original handler, so it can be removed
54266	proxy.guid = fn.guid = fn.guid || jQuery.guid++;
54267
54268	return proxy;
54269};
54270
54271jQuery.holdReady = function( hold ) {
54272	if ( hold ) {
54273		jQuery.readyWait++;
54274	} else {
54275		jQuery.ready( true );
54276	}
54277};
54278jQuery.isArray = Array.isArray;
54279jQuery.parseJSON = JSON.parse;
54280jQuery.nodeName = nodeName;
54281jQuery.isFunction = isFunction;
54282jQuery.isWindow = isWindow;
54283jQuery.camelCase = camelCase;
54284jQuery.type = toType;
54285
54286jQuery.now = Date.now;
54287
54288jQuery.isNumeric = function( obj ) {
54289
54290	// As of jQuery 3.0, isNumeric is limited to
54291	// strings and numbers (primitives or objects)
54292	// that can be coerced to finite numbers (gh-2662)
54293	var type = jQuery.type( obj );
54294	return ( type === "number" || type === "string" ) &&
54295
54296		// parseFloat NaNs numeric-cast false positives ("")
54297		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
54298		// subtraction forces infinities to NaN
54299		!isNaN( obj - parseFloat( obj ) );
54300};
54301
54302jQuery.trim = function( text ) {
54303	return text == null ?
54304		"" :
54305		( text + "" ).replace( rtrim, "$1" );
54306};
54307
54308
54309
54310// Register as a named AMD module, since jQuery can be concatenated with other
54311// files that may use define, but not via a proper concatenation script that
54312// understands anonymous AMD modules. A named AMD is safest and most robust
54313// way to register. Lowercase jquery is used because AMD module names are
54314// derived from file names, and jQuery is normally delivered in a lowercase
54315// file name. Do this after creating the global so that if an AMD module wants
54316// to call noConflict to hide this version of jQuery, it will work.
54317
54318// Note that for maximum portability, libraries that are not jQuery should
54319// declare themselves as anonymous modules, and avoid setting a global if an
54320// AMD loader is present. jQuery is a special case. For more information, see
54321// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
54322
54323if ( true ) {
54324	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() {
54325		return jQuery;
54326	}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
54327		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
54328}
54329
54330
54331
54332
54333var
54334
54335	// Map over jQuery in case of overwrite
54336	_jQuery = window.jQuery,
54337
54338	// Map over the $ in case of overwrite
54339	_$ = window.$;
54340
54341jQuery.noConflict = function( deep ) {
54342	if ( window.$ === jQuery ) {
54343		window.$ = _$;
54344	}
54345
54346	if ( deep && window.jQuery === jQuery ) {
54347		window.jQuery = _jQuery;
54348	}
54349
54350	return jQuery;
54351};
54352
54353// Expose jQuery and $ identifiers, even in AMD
54354// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)
54355// and CommonJS for browser emulators (trac-13566)
54356if ( typeof noGlobal === "undefined" ) {
54357	window.jQuery = window.$ = jQuery;
54358}
54359
54360
54361
54362
54363return jQuery;
54364} );
54365
54366
54367/***/ }),
54368
vendor: 100,517 bytes, lines 54369-57608
54369/***/ "./node_modules/locomotive-scroll/dist/locomotive-scroll.esm.js":
54370/*!**********************************************************************!*\
54371  !*** ./node_modules/locomotive-scroll/dist/locomotive-scroll.esm.js ***!
54372  \**********************************************************************/
54373/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
54374
54375"use strict";
54376__webpack_require__.r(__webpack_exports__);
54377/* harmony export */ __webpack_require__.d(__webpack_exports__, {
54378/* harmony export */   "Native": () => (/* binding */ Native),
54379/* harmony export */   "Smooth": () => (/* binding */ Smooth),
54380/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
54381/* harmony export */ });
54382/* locomotive-scroll v4.1.3 | MIT License | https://github.com/locomotivemtl/locomotive-scroll */
54383function _classCallCheck(instance, Constructor) {
54384  if (!(instance instanceof Constructor)) {
54385    throw new TypeError("Cannot call a class as a function");
54386  }
54387}
54388
54389function _defineProperties(target, props) {
54390  for (var i = 0; i < props.length; i++) {
54391    var descriptor = props[i];
54392    descriptor.enumerable = descriptor.enumerable || false;
54393    descriptor.configurable = true;
54394    if ("value" in descriptor) descriptor.writable = true;
54395    Object.defineProperty(target, descriptor.key, descriptor);
54396  }
54397}
54398
54399function _createClass(Constructor, protoProps, staticProps) {
54400  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
54401  if (staticProps) _defineProperties(Constructor, staticProps);
54402  return Constructor;
54403}
54404
54405function _defineProperty(obj, key, value) {
54406  if (key in obj) {
54407    Object.defineProperty(obj, key, {
54408      value: value,
54409      enumerable: true,
54410      configurable: true,
54411      writable: true
54412    });
54413  } else {
54414    obj[key] = value;
54415  }
54416
54417  return obj;
54418}
54419
54420function ownKeys(object, enumerableOnly) {
54421  var keys = Object.keys(object);
54422
54423  if (Object.getOwnPropertySymbols) {
54424    var symbols = Object.getOwnPropertySymbols(object);
54425    if (enumerableOnly) symbols = symbols.filter(function (sym) {
54426      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
54427    });
54428    keys.push.apply(keys, symbols);
54429  }
54430
54431  return keys;
54432}
54433
54434function _objectSpread2(target) {
54435  for (var i = 1; i < arguments.length; i++) {
54436    var source = arguments[i] != null ? arguments[i] : {};
54437
54438    if (i % 2) {
54439      ownKeys(Object(source), true).forEach(function (key) {
54440        _defineProperty(target, key, source[key]);
54441      });
54442    } else if (Object.getOwnPropertyDescriptors) {
54443      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
54444    } else {
54445      ownKeys(Object(source)).forEach(function (key) {
54446        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
54447      });
54448    }
54449  }
54450
54451  return target;
54452}
54453
54454function _inherits(subClass, superClass) {
54455  if (typeof superClass !== "function" && superClass !== null) {
54456    throw new TypeError("Super expression must either be null or a function");
54457  }
54458
54459  subClass.prototype = Object.create(superClass && superClass.prototype, {
54460    constructor: {
54461      value: subClass,
54462      writable: true,
54463      configurable: true
54464    }
54465  });
54466  if (superClass) _setPrototypeOf(subClass, superClass);
54467}
54468
54469function _getPrototypeOf(o) {
54470  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
54471    return o.__proto__ || Object.getPrototypeOf(o);
54472  };
54473  return _getPrototypeOf(o);
54474}
54475
54476function _setPrototypeOf(o, p) {
54477  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
54478    o.__proto__ = p;
54479    return o;
54480  };
54481
54482  return _setPrototypeOf(o, p);
54483}
54484
54485function _isNativeReflectConstruct() {
54486  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
54487  if (Reflect.construct.sham) return false;
54488  if (typeof Proxy === "function") return true;
54489
54490  try {
54491    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
54492    return true;
54493  } catch (e) {
54494    return false;
54495  }
54496}
54497
54498function _assertThisInitialized(self) {
54499  if (self === void 0) {
54500    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
54501  }
54502
54503  return self;
54504}
54505
54506function _possibleConstructorReturn(self, call) {
54507  if (call && (typeof call === "object" || typeof call === "function")) {
54508    return call;
54509  }
54510
54511  return _assertThisInitialized(self);
54512}
54513
54514function _createSuper(Derived) {
54515  var hasNativeReflectConstruct = _isNativeReflectConstruct();
54516
54517  return function _createSuperInternal() {
54518    var Super = _getPrototypeOf(Derived),
54519        result;
54520
54521    if (hasNativeReflectConstruct) {
54522      var NewTarget = _getPrototypeOf(this).constructor;
54523
54524      result = Reflect.construct(Super, arguments, NewTarget);
54525    } else {
54526      result = Super.apply(this, arguments);
54527    }
54528
54529    return _possibleConstructorReturn(this, result);
54530  };
54531}
54532
54533function _superPropBase(object, property) {
54534  while (!Object.prototype.hasOwnProperty.call(object, property)) {
54535    object = _getPrototypeOf(object);
54536    if (object === null) break;
54537  }
54538
54539  return object;
54540}
54541
54542function _get(target, property, receiver) {
54543  if (typeof Reflect !== "undefined" && Reflect.get) {
54544    _get = Reflect.get;
54545  } else {
54546    _get = function _get(target, property, receiver) {
54547      var base = _superPropBase(target, property);
54548
54549      if (!base) return;
54550      var desc = Object.getOwnPropertyDescriptor(base, property);
54551
54552      if (desc.get) {
54553        return desc.get.call(receiver);
54554      }
54555
54556      return desc.value;
54557    };
54558  }
54559
54560  return _get(target, property, receiver || target);
54561}
54562
54563function _slicedToArray(arr, i) {
54564  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
54565}
54566
54567function _toConsumableArray(arr) {
54568  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
54569}
54570
54571function _arrayWithoutHoles(arr) {
54572  if (Array.isArray(arr)) return _arrayLikeToArray(arr);
54573}
54574
54575function _arrayWithHoles(arr) {
54576  if (Array.isArray(arr)) return arr;
54577}
54578
54579function _iterableToArray(iter) {
54580  if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
54581}
54582
54583function _iterableToArrayLimit(arr, i) {
54584  if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
54585  var _arr = [];
54586  var _n = true;
54587  var _d = false;
54588  var _e = undefined;
54589
54590  try {
54591    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
54592      _arr.push(_s.value);
54593
54594      if (i && _arr.length === i) break;
54595    }
54596  } catch (err) {
54597    _d = true;
54598    _e = err;
54599  } finally {
54600    try {
54601      if (!_n && _i["return"] != null) _i["return"]();
54602    } finally {
54603      if (_d) throw _e;
54604    }
54605  }
54606
54607  return _arr;
54608}
54609
54610function _unsupportedIterableToArray(o, minLen) {
54611  if (!o) return;
54612  if (typeof o === "string") return _arrayLikeToArray(o, minLen);
54613  var n = Object.prototype.toString.call(o).slice(8, -1);
54614  if (n === "Object" && o.constructor) n = o.constructor.name;
54615  if (n === "Map" || n === "Set") return Array.from(o);
54616  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
54617}
54618
54619function _arrayLikeToArray(arr, len) {
54620  if (len == null || len > arr.length) len = arr.length;
54621
54622  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
54623
54624  return arr2;
54625}
54626
54627function _nonIterableSpread() {
54628  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
54629}
54630
54631function _nonIterableRest() {
54632  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
54633}
54634
54635var defaults = {
54636  el: document,
54637  name: 'scroll',
54638  offset: [0, 0],
54639  repeat: false,
54640  smooth: false,
54641  initPosition: {
54642    x: 0,
54643    y: 0
54644  },
54645  direction: 'vertical',
54646  gestureDirection: 'vertical',
54647  reloadOnContextChange: false,
54648  lerp: 0.1,
54649  "class": 'is-inview',
54650  scrollbarContainer: false,
54651  scrollbarClass: 'c-scrollbar',
54652  scrollingClass: 'has-scroll-scrolling',
54653  draggingClass: 'has-scroll-dragging',
54654  smoothClass: 'has-scroll-smooth',
54655  initClass: 'has-scroll-init',
54656  getSpeed: false,
54657  getDirection: false,
54658  scrollFromAnywhere: false,
54659  multiplier: 1,
54660  firefoxMultiplier: 50,
54661  touchMultiplier: 2,
54662  resetNativeScroll: true,
54663  tablet: {
54664    smooth: false,
54665    direction: 'vertical',
54666    gestureDirection: 'vertical',
54667    breakpoint: 1024
54668  },
54669  smartphone: {
54670    smooth: false,
54671    direction: 'vertical',
54672    gestureDirection: 'vertical'
54673  }
54674};
54675
54676var _default = /*#__PURE__*/function () {
54677  function _default() {
54678    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
54679
54680    _classCallCheck(this, _default);
54681
54682    Object.assign(this, defaults, options);
54683    this.smartphone = defaults.smartphone;
54684    if (options.smartphone) Object.assign(this.smartphone, options.smartphone);
54685    this.tablet = defaults.tablet;
54686    if (options.tablet) Object.assign(this.tablet, options.tablet);
54687    this.namespace = 'locomotive';
54688    this.html = document.documentElement;
54689    this.windowHeight = window.innerHeight;
54690    this.windowWidth = window.innerWidth;
54691    this.windowMiddle = {
54692      x: this.windowWidth / 2,
54693      y: this.windowHeight / 2
54694    };
54695    this.els = {};
54696    this.currentElements = {};
54697    this.listeners = {};
54698    this.hasScrollTicking = false;
54699    this.hasCallEventSet = false;
54700    this.checkScroll = this.checkScroll.bind(this);
54701    this.checkResize = this.checkResize.bind(this);
54702    this.checkEvent = this.checkEvent.bind(this);
54703    this.instance = {
54704      scroll: {
54705        x: 0,
54706        y: 0
54707      },
54708      limit: {
54709        x: this.html.offsetWidth,
54710        y: this.html.offsetHeight
54711      },
54712      currentElements: this.currentElements
54713    };
54714
54715    if (this.isMobile) {
54716      if (this.isTablet) {
54717        this.context = 'tablet';
54718      } else {
54719        this.context = 'smartphone';
54720      }
54721    } else {
54722      this.context = 'desktop';
54723    }
54724
54725    if (this.isMobile) this.direction = this[this.context].direction;
54726
54727    if (this.direction === 'horizontal') {
54728      this.directionAxis = 'x';
54729    } else {
54730      this.directionAxis = 'y';
54731    }
54732
54733    if (this.getDirection) {
54734      this.instance.direction = null;
54735    }
54736
54737    if (this.getDirection) {
54738      this.instance.speed = 0;
54739    }
54740
54741    this.html.classList.add(this.initClass);
54742    window.addEventListener('resize', this.checkResize, false);
54743  }
54744
54745  _createClass(_default, [{
54746    key: "init",
54747    value: function init() {
54748      this.initEvents();
54749    }
54750  }, {
54751    key: "checkScroll",
54752    value: function checkScroll() {
54753      this.dispatchScroll();
54754    }
54755  }, {
54756    key: "checkResize",
54757    value: function checkResize() {
54758      var _this = this;
54759
54760      if (!this.resizeTick) {
54761        this.resizeTick = true;
54762        requestAnimationFrame(function () {
54763          _this.resize();
54764
54765          _this.resizeTick = false;
54766        });
54767      }
54768    }
54769  }, {
54770    key: "resize",
54771    value: function resize() {}
54772  }, {
54773    key: "checkContext",
54774    value: function checkContext() {
54775      if (!this.reloadOnContextChange) return;
54776      this.isMobile = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 || this.windowWidth < this.tablet.breakpoint;
54777      this.isTablet = this.isMobile && this.windowWidth >= this.tablet.breakpoint;
54778      var oldContext = this.context;
54779
54780      if (this.isMobile) {
54781        if (this.isTablet) {
54782          this.context = 'tablet';
54783        } else {
54784          this.context = 'smartphone';
54785        }
54786      } else {
54787        this.context = 'desktop';
54788      }
54789
54790      if (oldContext != this.context) {
54791        var oldSmooth = oldContext == 'desktop' ? this.smooth : this[oldContext].smooth;
54792        var newSmooth = this.context == 'desktop' ? this.smooth : this[this.context].smooth;
54793        if (oldSmooth != newSmooth) window.location.reload();
54794      }
54795    }
54796  }, {
54797    key: "initEvents",
54798    value: function initEvents() {
54799      var _this2 = this;
54800
54801      this.scrollToEls = this.el.querySelectorAll("[data-".concat(this.name, "-to]"));
54802      this.setScrollTo = this.setScrollTo.bind(this);
54803      this.scrollToEls.forEach(function (el) {
54804        el.addEventListener('click', _this2.setScrollTo, false);
54805      });
54806    }
54807  }, {
54808    key: "setScrollTo",
54809    value: function setScrollTo(event) {
54810      event.preventDefault();
54811      this.scrollTo(event.currentTarget.getAttribute("data-".concat(this.name, "-href")) || event.currentTarget.getAttribute('href'), {
54812        offset: event.currentTarget.getAttribute("data-".concat(this.name, "-offset"))
54813      });
54814    }
54815  }, {
54816    key: "addElements",
54817    value: function addElements() {}
54818  }, {
54819    key: "detectElements",
54820    value: function detectElements(hasCallEventSet) {
54821      var _this3 = this;
54822
54823      var scrollTop = this.instance.scroll.y;
54824      var scrollBottom = scrollTop + this.windowHeight;
54825      var scrollLeft = this.instance.scroll.x;
54826      var scrollRight = scrollLeft + this.windowWidth;
54827      Object.entries(this.els).forEach(function (_ref) {
54828        var _ref2 = _slicedToArray(_ref, 2),
54829            i = _ref2[0],
54830            el = _ref2[1];
54831
54832        if (el && (!el.inView || hasCallEventSet)) {
54833          if (_this3.direction === 'horizontal') {
54834            if (scrollRight >= el.left && scrollLeft < el.right) {
54835              _this3.setInView(el, i);
54836            }
54837          } else {
54838            if (scrollBottom >= el.top && scrollTop < el.bottom) {
54839              _this3.setInView(el, i);
54840            }
54841          }
54842        }
54843
54844        if (el && el.inView) {
54845          if (_this3.direction === 'horizontal') {
54846            var width = el.right - el.left;
54847            el.progress = (_this3.instance.scroll.x - (el.left - _this3.windowWidth)) / (width + _this3.windowWidth);
54848
54849            if (scrollRight < el.left || scrollLeft > el.right) {
54850              _this3.setOutOfView(el, i);
54851            }
54852          } else {
54853            var height = el.bottom - el.top;
54854            el.progress = (_this3.instance.scroll.y - (el.top - _this3.windowHeight)) / (height + _this3.windowHeight);
54855
54856            if (scrollBottom < el.top || scrollTop > el.bottom) {
54857              _this3.setOutOfView(el, i);
54858            }
54859          }
54860        }
54861      }); // this.els = this.els.filter((current, i) => {
54862      //     return current !== null;
54863      // });
54864
54865      this.hasScrollTicking = false;
54866    }
54867  }, {
54868    key: "setInView",
54869    value: function setInView(current, i) {
54870      this.els[i].inView = true;
54871      current.el.classList.add(current["class"]);
54872      this.currentElements[i] = current;
54873
54874      if (current.call && this.hasCallEventSet) {
54875        this.dispatchCall(current, 'enter');
54876
54877        if (!current.repeat) {
54878          this.els[i].call = false;
54879        }
54880      } // if (!current.repeat && !current.speed && !current.sticky) {
54881      //     if (!current.call || current.call && this.hasCallEventSet) {
54882      //        this.els[i] = null
54883      //     }
54884      // }
54885
54886    }
54887  }, {
54888    key: "setOutOfView",
54889    value: function setOutOfView(current, i) {
54890      var _this4 = this;
54891
54892      // if (current.repeat || current.speed !== undefined) {
54893      this.els[i].inView = false; // }
54894
54895      Object.keys(this.currentElements).forEach(function (el) {
54896        el === i && delete _this4.currentElements[el];
54897      });
54898
54899      if (current.call && this.hasCallEventSet) {
54900        this.dispatchCall(current, 'exit');
54901      }
54902
54903      if (current.repeat) {
54904        current.el.classList.remove(current["class"]);
54905      }
54906    }
54907  }, {
54908    key: "dispatchCall",
54909    value: function dispatchCall(current, way) {
54910      this.callWay = way;
54911      this.callValue = current.call.split(',').map(function (item) {
54912        return item.trim();
54913      });
54914      this.callObj = current;
54915      if (this.callValue.length == 1) this.callValue = this.callValue[0];
54916      var callEvent = new Event(this.namespace + 'call');
54917      this.el.dispatchEvent(callEvent);
54918    }
54919  }, {
54920    key: "dispatchScroll",
54921    value: function dispatchScroll() {
54922      var scrollEvent = new Event(this.namespace + 'scroll');
54923      this.el.dispatchEvent(scrollEvent);
54924    }
54925  }, {
54926    key: "setEvents",
54927    value: function setEvents(event, func) {
54928      if (!this.listeners[event]) {
54929        this.listeners[event] = [];
54930      }
54931
54932      var list = this.listeners[event];
54933      list.push(func);
54934
54935      if (list.length === 1) {
54936        this.el.addEventListener(this.namespace + event, this.checkEvent, false);
54937      }
54938
54939      if (event === 'call') {
54940        this.hasCallEventSet = true;
54941        this.detectElements(true);
54942      }
54943    }
54944  }, {
54945    key: "unsetEvents",
54946    value: function unsetEvents(event, func) {
54947      if (!this.listeners[event]) return;
54948      var list = this.listeners[event];
54949      var index = list.indexOf(func);
54950      if (index < 0) return;
54951      list.splice(index, 1);
54952
54953      if (list.index === 0) {
54954        this.el.removeEventListener(this.namespace + event, this.checkEvent, false);
54955      }
54956    }
54957  }, {
54958    key: "checkEvent",
54959    value: function checkEvent(event) {
54960      var _this5 = this;
54961
54962      var name = event.type.replace(this.namespace, '');
54963      var list = this.listeners[name];
54964      if (!list || list.length === 0) return;
54965      list.forEach(function (func) {
54966        switch (name) {
54967          case 'scroll':
54968            return func(_this5.instance);
54969
54970          case 'call':
54971            return func(_this5.callValue, _this5.callWay, _this5.callObj);
54972
54973          default:
54974            return func();
54975        }
54976      });
54977    }
54978  }, {
54979    key: "startScroll",
54980    value: function startScroll() {}
54981  }, {
54982    key: "stopScroll",
54983    value: function stopScroll() {}
54984  }, {
54985    key: "setScroll",
54986    value: function setScroll(x, y) {
54987      this.instance.scroll = {
54988        x: 0,
54989        y: 0
54990      };
54991    }
54992  }, {
54993    key: "destroy",
54994    value: function destroy() {
54995      var _this6 = this;
54996
54997      window.removeEventListener('resize', this.checkResize, false);
54998      Object.keys(this.listeners).forEach(function (event) {
54999        _this6.el.removeEventListener(_this6.namespace + event, _this6.checkEvent, false);
55000      });
55001      this.listeners = {};
55002      this.scrollToEls.forEach(function (el) {
55003        el.removeEventListener('click', _this6.setScrollTo, false);
55004      });
55005      this.html.classList.remove(this.initClass);
55006    }
55007  }]);
55008
55009  return _default;
55010}();
55011
55012var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof self !== 'undefined' ? self : {};
55013
55014function createCommonjsModule(fn, module) {
55015	return module = { exports: {} }, fn(module, module.exports), module.exports;
55016}
55017
55018var smoothscroll = createCommonjsModule(function (module, exports) {
55019/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */
55020(function () {
55021
55022  // polyfill
55023  function polyfill() {
55024    // aliases
55025    var w = window;
55026    var d = document;
55027
55028    // return if scroll behavior is supported and polyfill is not forced
55029    if (
55030      'scrollBehavior' in d.documentElement.style &&
55031      w.__forceSmoothScrollPolyfill__ !== true
55032    ) {
55033      return;
55034    }
55035
55036    // globals
55037    var Element = w.HTMLElement || w.Element;
55038    var SCROLL_TIME = 468;
55039
55040    // object gathering original scroll methods
55041    var original = {
55042      scroll: w.scroll || w.scrollTo,
55043      scrollBy: w.scrollBy,
55044      elementScroll: Element.prototype.scroll || scrollElement,
55045      scrollIntoView: Element.prototype.scrollIntoView
55046    };
55047
55048    // define timing method
55049    var now =
55050      w.performance && w.performance.now
55051        ? w.performance.now.bind(w.performance)
55052        : Date.now;
55053
55054    /**
55055     * indicates if a the current browser is made by Microsoft
55056     * @method isMicrosoftBrowser
55057     * @param {String} userAgent
55058     * @returns {Boolean}
55059     */
55060    function isMicrosoftBrowser(userAgent) {
55061      var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];
55062
55063      return new RegExp(userAgentPatterns.join('|')).test(userAgent);
55064    }
55065
55066    /*
55067     * IE has rounding bug rounding down clientHeight and clientWidth and
55068     * rounding up scrollHeight and scrollWidth causing false positives
55069     * on hasScrollableSpace
55070     */
55071    var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;
55072
55073    /**
55074     * changes scroll position inside an element
55075     * @method scrollElement
55076     * @param {Number} x
55077     * @param {Number} y
55078     * @returns {undefined}
55079     */
55080    function scrollElement(x, y) {
55081      this.scrollLeft = x;
55082      this.scrollTop = y;
55083    }
55084
55085    /**
55086     * returns result of applying ease math function to a number
55087     * @method ease
55088     * @param {Number} k
55089     * @returns {Number}
55090     */
55091    function ease(k) {
55092      return 0.5 * (1 - Math.cos(Math.PI * k));
55093    }
55094
55095    /**
55096     * indicates if a smooth behavior should be applied
55097     * @method shouldBailOut
55098     * @param {Number|Object} firstArg
55099     * @returns {Boolean}
55100     */
55101    function shouldBailOut(firstArg) {
55102      if (
55103        firstArg === null ||
55104        typeof firstArg !== 'object' ||
55105        firstArg.behavior === undefined ||
55106        firstArg.behavior === 'auto' ||
55107        firstArg.behavior === 'instant'
55108      ) {
55109        // first argument is not an object/null
55110        // or behavior is auto, instant or undefined
55111        return true;
55112      }
55113
55114      if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {
55115        // first argument is an object and behavior is smooth
55116        return false;
55117      }
55118
55119      // throw error when behavior is not supported
55120      throw new TypeError(
55121        'behavior member of ScrollOptions ' +
55122          firstArg.behavior +
55123          ' is not a valid value for enumeration ScrollBehavior.'
55124      );
55125    }
55126
55127    /**
55128     * indicates if an element has scrollable space in the provided axis
55129     * @method hasScrollableSpace
55130     * @param {Node} el
55131     * @param {String} axis
55132     * @returns {Boolean}
55133     */
55134    function hasScrollableSpace(el, axis) {
55135      if (axis === 'Y') {
55136        return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;
55137      }
55138
55139      if (axis === 'X') {
55140        return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;
55141      }
55142    }
55143
55144    /**
55145     * indicates if an element has a scrollable overflow property in the axis
55146     * @method canOverflow
55147     * @param {Node} el
55148     * @param {String} axis
55149     * @returns {Boolean}
55150     */
55151    function canOverflow(el, axis) {
55152      var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];
55153
55154      return overflowValue === 'auto' || overflowValue === 'scroll';
55155    }
55156
55157    /**
55158     * indicates if an element can be scrolled in either axis
55159     * @method isScrollable
55160     * @param {Node} el
55161     * @param {String} axis
55162     * @returns {Boolean}
55163     */
55164    function isScrollable(el) {
55165      var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');
55166      var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');
55167
55168      return isScrollableY || isScrollableX;
55169    }
55170
55171    /**
55172     * finds scrollable parent of an element
55173     * @method findScrollableParent
55174     * @param {Node} el
55175     * @returns {Node} el
55176     */
55177    function findScrollableParent(el) {
55178      while (el !== d.body && isScrollable(el) === false) {
55179        el = el.parentNode || el.host;
55180      }
55181
55182      return el;
55183    }
55184
55185    /**
55186     * self invoked function that, given a context, steps through scrolling
55187     * @method step
55188     * @param {Object} context
55189     * @returns {undefined}
55190     */
55191    function step(context) {
55192      var time = now();
55193      var value;
55194      var currentX;
55195      var currentY;
55196      var elapsed = (time - context.startTime) / SCROLL_TIME;
55197
55198      // avoid elapsed times higher than one
55199      elapsed = elapsed > 1 ? 1 : elapsed;
55200
55201      // apply easing to elapsed time
55202      value = ease(elapsed);
55203
55204      currentX = context.startX + (context.x - context.startX) * value;
55205      currentY = context.startY + (context.y - context.startY) * value;
55206
55207      context.method.call(context.scrollable, currentX, currentY);
55208
55209      // scroll more if we have not reached our destination
55210      if (currentX !== context.x || currentY !== context.y) {
55211        w.requestAnimationFrame(step.bind(w, context));
55212      }
55213    }
55214
55215    /**
55216     * scrolls window or element with a smooth behavior
55217     * @method smoothScroll
55218     * @param {Object|Node} el
55219     * @param {Number} x
55220     * @param {Number} y
55221     * @returns {undefined}
55222     */
55223    function smoothScroll(el, x, y) {
55224      var scrollable;
55225      var startX;
55226      var startY;
55227      var method;
55228      var startTime = now();
55229
55230      // define scroll context
55231      if (el === d.body) {
55232        scrollable = w;
55233        startX = w.scrollX || w.pageXOffset;
55234        startY = w.scrollY || w.pageYOffset;
55235        method = original.scroll;
55236      } else {
55237        scrollable = el;
55238        startX = el.scrollLeft;
55239        startY = el.scrollTop;
55240        method = scrollElement;
55241      }
55242
55243      // scroll looping over a frame
55244      step({
55245        scrollable: scrollable,
55246        method: method,
55247        startTime: startTime,
55248        startX: startX,
55249        startY: startY,
55250        x: x,
55251        y: y
55252      });
55253    }
55254
55255    // ORIGINAL METHODS OVERRIDES
55256    // w.scroll and w.scrollTo
55257    w.scroll = w.scrollTo = function() {
55258      // avoid action when no arguments are passed
55259      if (arguments[0] === undefined) {
55260        return;
55261      }
55262
55263      // avoid smooth behavior if not required
55264      if (shouldBailOut(arguments[0]) === true) {
55265        original.scroll.call(
55266          w,
55267          arguments[0].left !== undefined
55268            ? arguments[0].left
55269            : typeof arguments[0] !== 'object'
55270              ? arguments[0]
55271              : w.scrollX || w.pageXOffset,
55272          // use top prop, second argument if present or fallback to scrollY
55273          arguments[0].top !== undefined
55274            ? arguments[0].top
55275            : arguments[1] !== undefined
55276              ? arguments[1]
55277              : w.scrollY || w.pageYOffset
55278        );
55279
55280        return;
55281      }
55282
55283      // LET THE SMOOTHNESS BEGIN!
55284      smoothScroll.call(
55285        w,
55286        d.body,
55287        arguments[0].left !== undefined
55288          ? ~~arguments[0].left
55289          : w.scrollX || w.pageXOffset,
55290        arguments[0].top !== undefined
55291          ? ~~arguments[0].top
55292          : w.scrollY || w.pageYOffset
55293      );
55294    };
55295
55296    // w.scrollBy
55297    w.scrollBy = function() {
55298      // avoid action when no arguments are passed
55299      if (arguments[0] === undefined) {
55300        return;
55301      }
55302
55303      // avoid smooth behavior if not required
55304      if (shouldBailOut(arguments[0])) {
55305        original.scrollBy.call(
55306          w,
55307          arguments[0].left !== undefined
55308            ? arguments[0].left
55309            : typeof arguments[0] !== 'object' ? arguments[0] : 0,
55310          arguments[0].top !== undefined
55311            ? arguments[0].top
55312            : arguments[1] !== undefined ? arguments[1] : 0
55313        );
55314
55315        return;
55316      }
55317
55318      // LET THE SMOOTHNESS BEGIN!
55319      smoothScroll.call(
55320        w,
55321        d.body,
55322        ~~arguments[0].left + (w.scrollX || w.pageXOffset),
55323        ~~arguments[0].top + (w.scrollY || w.pageYOffset)
55324      );
55325    };
55326
55327    // Element.prototype.scroll and Element.prototype.scrollTo
55328    Element.prototype.scroll = Element.prototype.scrollTo = function() {
55329      // avoid action when no arguments are passed
55330      if (arguments[0] === undefined) {
55331        return;
55332      }
55333
55334      // avoid smooth behavior if not required
55335      if (shouldBailOut(arguments[0]) === true) {
55336        // if one number is passed, throw error to match Firefox implementation
55337        if (typeof arguments[0] === 'number' && arguments[1] === undefined) {
55338          throw new SyntaxError('Value could not be converted');
55339        }
55340
55341        original.elementScroll.call(
55342          this,
55343          // use left prop, first number argument or fallback to scrollLeft
55344          arguments[0].left !== undefined
55345            ? ~~arguments[0].left
55346            : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,
55347          // use top prop, second argument or fallback to scrollTop
55348          arguments[0].top !== undefined
55349            ? ~~arguments[0].top
55350            : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop
55351        );
55352
55353        return;
55354      }
55355
55356      var left = arguments[0].left;
55357      var top = arguments[0].top;
55358
55359      // LET THE SMOOTHNESS BEGIN!
55360      smoothScroll.call(
55361        this,
55362        this,
55363        typeof left === 'undefined' ? this.scrollLeft : ~~left,
55364        typeof top === 'undefined' ? this.scrollTop : ~~top
55365      );
55366    };
55367
55368    // Element.prototype.scrollBy
55369    Element.prototype.scrollBy = function() {
55370      // avoid action when no arguments are passed
55371      if (arguments[0] === undefined) {
55372        return;
55373      }
55374
55375      // avoid smooth behavior if not required
55376      if (shouldBailOut(arguments[0]) === true) {
55377        original.elementScroll.call(
55378          this,
55379          arguments[0].left !== undefined
55380            ? ~~arguments[0].left + this.scrollLeft
55381            : ~~arguments[0] + this.scrollLeft,
55382          arguments[0].top !== undefined
55383            ? ~~arguments[0].top + this.scrollTop
55384            : ~~arguments[1] + this.scrollTop
55385        );
55386
55387        return;
55388      }
55389
55390      this.scroll({
55391        left: ~~arguments[0].left + this.scrollLeft,
55392        top: ~~arguments[0].top + this.scrollTop,
55393        behavior: arguments[0].behavior
55394      });
55395    };
55396
55397    // Element.prototype.scrollIntoView
55398    Element.prototype.scrollIntoView = function() {
55399      // avoid smooth behavior if not required
55400      if (shouldBailOut(arguments[0]) === true) {
55401        original.scrollIntoView.call(
55402          this,
55403          arguments[0] === undefined ? true : arguments[0]
55404        );
55405
55406        return;
55407      }
55408
55409      // LET THE SMOOTHNESS BEGIN!
55410      var scrollableParent = findScrollableParent(this);
55411      var parentRects = scrollableParent.getBoundingClientRect();
55412      var clientRects = this.getBoundingClientRect();
55413
55414      if (scrollableParent !== d.body) {
55415        // reveal element inside parent
55416        smoothScroll.call(
55417          this,
55418          scrollableParent,
55419          scrollableParent.scrollLeft + clientRects.left - parentRects.left,
55420          scrollableParent.scrollTop + clientRects.top - parentRects.top
55421        );
55422
55423        // reveal parent in viewport unless is fixed
55424        if (w.getComputedStyle(scrollableParent).position !== 'fixed') {
55425          w.scrollBy({
55426            left: parentRects.left,
55427            top: parentRects.top,
55428            behavior: 'smooth'
55429          });
55430        }
55431      } else {
55432        // reveal element in viewport
55433        w.scrollBy({
55434          left: clientRects.left,
55435          top: clientRects.top,
55436          behavior: 'smooth'
55437        });
55438      }
55439    };
55440  }
55441
55442  {
55443    // commonjs
55444    module.exports = { polyfill: polyfill };
55445  }
55446
55447}());
55448});
55449var smoothscroll_1 = smoothscroll.polyfill;
55450
55451var _default$1 = /*#__PURE__*/function (_Core) {
55452  _inherits(_default, _Core);
55453
55454  var _super = _createSuper(_default);
55455
55456  function _default() {
55457    var _this;
55458
55459    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
55460
55461    _classCallCheck(this, _default);
55462
55463    _this = _super.call(this, options);
55464
55465    if (_this.resetNativeScroll) {
55466      if (history.scrollRestoration) {
55467        history.scrollRestoration = 'manual';
55468      }
55469
55470      window.scrollTo(0, 0);
55471    }
55472
55473    window.addEventListener('scroll', _this.checkScroll, false);
55474
55475    if (window.smoothscrollPolyfill === undefined) {
55476      window.smoothscrollPolyfill = smoothscroll;
55477      window.smoothscrollPolyfill.polyfill();
55478    }
55479
55480    return _this;
55481  }
55482
55483  _createClass(_default, [{
55484    key: "init",
55485    value: function init() {
55486      this.instance.scroll.y = window.pageYOffset;
55487      this.addElements();
55488      this.detectElements();
55489
55490      _get(_getPrototypeOf(_default.prototype), "init", this).call(this);
55491    }
55492  }, {
55493    key: "checkScroll",
55494    value: function checkScroll() {
55495      var _this2 = this;
55496
55497      _get(_getPrototypeOf(_default.prototype), "checkScroll", this).call(this);
55498
55499      if (this.getDirection) {
55500        this.addDirection();
55501      }
55502
55503      if (this.getSpeed) {
55504        this.addSpeed();
55505        this.speedTs = Date.now();
55506      }
55507
55508      this.instance.scroll.y = window.pageYOffset;
55509
55510      if (Object.entries(this.els).length) {
55511        if (!this.hasScrollTicking) {
55512          requestAnimationFrame(function () {
55513            _this2.detectElements();
55514          });
55515          this.hasScrollTicking = true;
55516        }
55517      }
55518    }
55519  }, {
55520    key: "addDirection",
55521    value: function addDirection() {
55522      if (window.pageYOffset > this.instance.scroll.y) {
55523        if (this.instance.direction !== 'down') {
55524          this.instance.direction = 'down';
55525        }
55526      } else if (window.pageYOffset < this.instance.scroll.y) {
55527        if (this.instance.direction !== 'up') {
55528          this.instance.direction = 'up';
55529        }
55530      }
55531    }
55532  }, {
55533    key: "addSpeed",
55534    value: function addSpeed() {
55535      if (window.pageYOffset != this.instance.scroll.y) {
55536        this.instance.speed = (window.pageYOffset - this.instance.scroll.y) / Math.max(1, Date.now() - this.speedTs);
55537      } else {
55538        this.instance.speed = 0;
55539      }
55540    }
55541  }, {
55542    key: "resize",
55543    value: function resize() {
55544      if (Object.entries(this.els).length) {
55545        this.windowHeight = window.innerHeight;
55546        this.updateElements();
55547      }
55548    }
55549  }, {
55550    key: "addElements",
55551    value: function addElements() {
55552      var _this3 = this;
55553
55554      this.els = {};
55555      var els = this.el.querySelectorAll('[data-' + this.name + ']');
55556      els.forEach(function (el, index) {
55557        var BCR = el.getBoundingClientRect();
55558        var cl = el.dataset[_this3.name + 'Class'] || _this3["class"];
55559        var id = typeof el.dataset[_this3.name + 'Id'] === 'string' ? el.dataset[_this3.name + 'Id'] : index;
55560        var top;
55561        var left;
55562        var offset = typeof el.dataset[_this3.name + 'Offset'] === 'string' ? el.dataset[_this3.name + 'Offset'].split(',') : _this3.offset;
55563        var repeat = el.dataset[_this3.name + 'Repeat'];
55564        var call = el.dataset[_this3.name + 'Call'];
55565        var target = el.dataset[_this3.name + 'Target'];
55566        var targetEl;
55567
55568        if (target !== undefined) {
55569          targetEl = document.querySelector("".concat(target));
55570        } else {
55571          targetEl = el;
55572        }
55573
55574        var targetElBCR = targetEl.getBoundingClientRect();
55575        top = targetElBCR.top + _this3.instance.scroll.y;
55576        left = targetElBCR.left + _this3.instance.scroll.x;
55577        var bottom = top + targetEl.offsetHeight;
55578        var right = left + targetEl.offsetWidth;
55579
55580        if (repeat == 'false') {
55581          repeat = false;
55582        } else if (repeat != undefined) {
55583          repeat = true;
55584        } else {
55585          repeat = _this3.repeat;
55586        }
55587
55588        var relativeOffset = _this3.getRelativeOffset(offset);
55589
55590        top = top + relativeOffset[0];
55591        bottom = bottom - relativeOffset[1];
55592        var mappedEl = {
55593          el: el,
55594          targetEl: targetEl,
55595          id: id,
55596          "class": cl,
55597          top: top,
55598          bottom: bottom,
55599          left: left,
55600          right: right,
55601          offset: offset,
55602          progress: 0,
55603          repeat: repeat,
55604          inView: false,
55605          call: call
55606        };
55607        _this3.els[id] = mappedEl;
55608
55609        if (el.classList.contains(cl)) {
55610          _this3.setInView(_this3.els[id], id);
55611        }
55612      });
55613    }
55614  }, {
55615    key: "updateElements",
55616    value: function updateElements() {
55617      var _this4 = this;
55618
55619      Object.entries(this.els).forEach(function (_ref) {
55620        var _ref2 = _slicedToArray(_ref, 2),
55621            i = _ref2[0],
55622            el = _ref2[1];
55623
55624        var top = el.targetEl.getBoundingClientRect().top + _this4.instance.scroll.y;
55625
55626        var bottom = top + el.targetEl.offsetHeight;
55627
55628        var relativeOffset = _this4.getRelativeOffset(el.offset);
55629
55630        _this4.els[i].top = top + relativeOffset[0];
55631        _this4.els[i].bottom = bottom - relativeOffset[1];
55632      });
55633      this.hasScrollTicking = false;
55634    }
55635  }, {
55636    key: "getRelativeOffset",
55637    value: function getRelativeOffset(offset) {
55638      var relativeOffset = [0, 0];
55639
55640      if (offset) {
55641        for (var i = 0; i < offset.length; i++) {
55642          if (typeof offset[i] == 'string') {
55643            if (offset[i].includes('%')) {
55644              relativeOffset[i] = parseInt(offset[i].replace('%', '') * this.windowHeight / 100);
55645            } else {
55646              relativeOffset[i] = parseInt(offset[i]);
55647            }
55648          } else {
55649            relativeOffset[i] = offset[i];
55650          }
55651        }
55652      }
55653
55654      return relativeOffset;
55655    }
55656    /**
55657     * Scroll to a desired target.
55658     *
55659     * @param  Available options :
55660     *          target {node, string, "top", "bottom", int} - The DOM element we want to scroll to
55661     *          options {object} - Options object for additionnal settings.
55662     * @return {void}
55663     */
55664
55665  }, {
55666    key: "scrollTo",
55667    value: function scrollTo(target) {
55668      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
55669      // Parse options
55670      var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target
55671
55672      var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)
55673
55674      if (typeof target === 'string') {
55675        // Selector or boundaries
55676        if (target === 'top') {
55677          target = this.html;
55678        } else if (target === 'bottom') {
55679          target = this.html.offsetHeight - window.innerHeight;
55680        } else {
55681          target = document.querySelector(target); // If the query fails, abort
55682
55683          if (!target) {
55684            return;
55685          }
55686        }
55687      } else if (typeof target === 'number') {
55688        // Absolute coordinate
55689        target = parseInt(target);
55690      } else if (target && target.tagName) ; else {
55691        console.warn('`target` parameter is not valid');
55692        return;
55693      } // We have a target that is not a coordinate yet, get it
55694
55695
55696      if (typeof target !== 'number') {
55697        offset = target.getBoundingClientRect().top + offset + this.instance.scroll.y;
55698      } else {
55699        offset = target + offset;
55700      }
55701
55702      var isTargetReached = function isTargetReached() {
55703        return parseInt(window.pageYOffset) === parseInt(offset);
55704      };
55705
55706      if (callback) {
55707        if (isTargetReached()) {
55708          callback();
55709          return;
55710        } else {
55711          var onScroll = function onScroll() {
55712            if (isTargetReached()) {
55713              window.removeEventListener('scroll', onScroll);
55714              callback();
55715            }
55716          };
55717
55718          window.addEventListener('scroll', onScroll);
55719        }
55720      }
55721
55722      window.scrollTo({
55723        top: offset,
55724        behavior: options.duration === 0 ? 'auto' : 'smooth'
55725      });
55726    }
55727  }, {
55728    key: "update",
55729    value: function update() {
55730      this.addElements();
55731      this.detectElements();
55732    }
55733  }, {
55734    key: "destroy",
55735    value: function destroy() {
55736      _get(_getPrototypeOf(_default.prototype), "destroy", this).call(this);
55737
55738      window.removeEventListener('scroll', this.checkScroll, false);
55739    }
55740  }]);
55741
55742  return _default;
55743}(_default);
55744
55745/*
55746object-assign
55747(c) Sindre Sorhus
55748@license MIT
55749*/
55750/* eslint-disable no-unused-vars */
55751var getOwnPropertySymbols = Object.getOwnPropertySymbols;
55752var hasOwnProperty = Object.prototype.hasOwnProperty;
55753var propIsEnumerable = Object.prototype.propertyIsEnumerable;
55754
55755function toObject(val) {
55756	if (val === null || val === undefined) {
55757		throw new TypeError('Object.assign cannot be called with null or undefined');
55758	}
55759
55760	return Object(val);
55761}
55762
55763function shouldUseNative() {
55764	try {
55765		if (!Object.assign) {
55766			return false;
55767		}
55768
55769		// Detect buggy property enumeration order in older V8 versions.
55770
55771		// https://bugs.chromium.org/p/v8/issues/detail?id=4118
55772		var test1 = new String('abc');  // eslint-disable-line no-new-wrappers
55773		test1[5] = 'de';
55774		if (Object.getOwnPropertyNames(test1)[0] === '5') {
55775			return false;
55776		}
55777
55778		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
55779		var test2 = {};
55780		for (var i = 0; i < 10; i++) {
55781			test2['_' + String.fromCharCode(i)] = i;
55782		}
55783		var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
55784			return test2[n];
55785		});
55786		if (order2.join('') !== '0123456789') {
55787			return false;
55788		}
55789
55790		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
55791		var test3 = {};
55792		'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
55793			test3[letter] = letter;
55794		});
55795		if (Object.keys(Object.assign({}, test3)).join('') !==
55796				'abcdefghijklmnopqrst') {
55797			return false;
55798		}
55799
55800		return true;
55801	} catch (err) {
55802		// We don't expect any of the above to throw, but better to be safe.
55803		return false;
55804	}
55805}
55806
55807var objectAssign = shouldUseNative() ? Object.assign : function (target, source) {
55808	var from;
55809	var to = toObject(target);
55810	var symbols;
55811
55812	for (var s = 1; s < arguments.length; s++) {
55813		from = Object(arguments[s]);
55814
55815		for (var key in from) {
55816			if (hasOwnProperty.call(from, key)) {
55817				to[key] = from[key];
55818			}
55819		}
55820
55821		if (getOwnPropertySymbols) {
55822			symbols = getOwnPropertySymbols(from);
55823			for (var i = 0; i < symbols.length; i++) {
55824				if (propIsEnumerable.call(from, symbols[i])) {
55825					to[symbols[i]] = from[symbols[i]];
55826				}
55827			}
55828		}
55829	}
55830
55831	return to;
55832};
55833
55834function E () {
55835  // Keep this empty so it's easier to inherit from
55836  // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)
55837}
55838
55839E.prototype = {
55840  on: function (name, callback, ctx) {
55841    var e = this.e || (this.e = {});
55842
55843    (e[name] || (e[name] = [])).push({
55844      fn: callback,
55845      ctx: ctx
55846    });
55847
55848    return this;
55849  },
55850
55851  once: function (name, callback, ctx) {
55852    var self = this;
55853    function listener () {
55854      self.off(name, listener);
55855      callback.apply(ctx, arguments);
55856    }
55857    listener._ = callback;
55858    return this.on(name, listener, ctx);
55859  },
55860
55861  emit: function (name) {
55862    var data = [].slice.call(arguments, 1);
55863    var evtArr = ((this.e || (this.e = {}))[name] || []).slice();
55864    var i = 0;
55865    var len = evtArr.length;
55866
55867    for (i; i < len; i++) {
55868      evtArr[i].fn.apply(evtArr[i].ctx, data);
55869    }
55870
55871    return this;
55872  },
55873
55874  off: function (name, callback) {
55875    var e = this.e || (this.e = {});
55876    var evts = e[name];
55877    var liveEvents = [];
55878
55879    if (evts && callback) {
55880      for (var i = 0, len = evts.length; i < len; i++) {
55881        if (evts[i].fn !== callback && evts[i].fn._ !== callback)
55882          liveEvents.push(evts[i]);
55883      }
55884    }
55885
55886    // Remove event from queue to prevent memory leak
55887    // Suggested by https://github.com/lazd
55888    // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910
55889
55890    (liveEvents.length)
55891      ? e[name] = liveEvents
55892      : delete e[name];
55893
55894    return this;
55895  }
55896};
55897
55898var tinyEmitter = E;
55899
55900var lethargy = createCommonjsModule(function (module, exports) {
55901// Generated by CoffeeScript 1.9.2
55902(function() {
55903  var root;
55904
55905  root =  exports !== null ? exports : this;
55906
55907  root.Lethargy = (function() {
55908    function Lethargy(stability, sensitivity, tolerance, delay) {
55909      this.stability = stability != null ? Math.abs(stability) : 8;
55910      this.sensitivity = sensitivity != null ? 1 + Math.abs(sensitivity) : 100;
55911      this.tolerance = tolerance != null ? 1 + Math.abs(tolerance) : 1.1;
55912      this.delay = delay != null ? delay : 150;
55913      this.lastUpDeltas = (function() {
55914        var i, ref, results;
55915        results = [];
55916        for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {
55917          results.push(null);
55918        }
55919        return results;
55920      }).call(this);
55921      this.lastDownDeltas = (function() {
55922        var i, ref, results;
55923        results = [];
55924        for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {
55925          results.push(null);
55926        }
55927        return results;
55928      }).call(this);
55929      this.deltasTimestamp = (function() {
55930        var i, ref, results;
55931        results = [];
55932        for (i = 1, ref = this.stability * 2; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {
55933          results.push(null);
55934        }
55935        return results;
55936      }).call(this);
55937    }
55938
55939    Lethargy.prototype.check = function(e) {
55940      var lastDelta;
55941      e = e.originalEvent || e;
55942      if (e.wheelDelta != null) {
55943        lastDelta = e.wheelDelta;
55944      } else if (e.deltaY != null) {
55945        lastDelta = e.deltaY * -40;
55946      } else if ((e.detail != null) || e.detail === 0) {
55947        lastDelta = e.detail * -40;
55948      }
55949      this.deltasTimestamp.push(Date.now());
55950      this.deltasTimestamp.shift();
55951      if (lastDelta > 0) {
55952        this.lastUpDeltas.push(lastDelta);
55953        this.lastUpDeltas.shift();
55954        return this.isInertia(1);
55955      } else {
55956        this.lastDownDeltas.push(lastDelta);
55957        this.lastDownDeltas.shift();
55958        return this.isInertia(-1);
55959      }
55960    };
55961
55962    Lethargy.prototype.isInertia = function(direction) {
55963      var lastDeltas, lastDeltasNew, lastDeltasOld, newAverage, newSum, oldAverage, oldSum;
55964      lastDeltas = direction === -1 ? this.lastDownDeltas : this.lastUpDeltas;
55965      if (lastDeltas[0] === null) {
55966        return direction;
55967      }
55968      if (this.deltasTimestamp[(this.stability * 2) - 2] + this.delay > Date.now() && lastDeltas[0] === lastDeltas[(this.stability * 2) - 1]) {
55969        return false;
55970      }
55971      lastDeltasOld = lastDeltas.slice(0, this.stability);
55972      lastDeltasNew = lastDeltas.slice(this.stability, this.stability * 2);
55973      oldSum = lastDeltasOld.reduce(function(t, s) {
55974        return t + s;
55975      });
55976      newSum = lastDeltasNew.reduce(function(t, s) {
55977        return t + s;
55978      });
55979      oldAverage = oldSum / lastDeltasOld.length;
55980      newAverage = newSum / lastDeltasNew.length;
55981      if (Math.abs(oldAverage) < Math.abs(newAverage * this.tolerance) && (this.sensitivity < Math.abs(newAverage))) {
55982        return direction;
55983      } else {
55984        return false;
55985      }
55986    };
55987
55988    Lethargy.prototype.showLastUpDeltas = function() {
55989      return this.lastUpDeltas;
55990    };
55991
55992    Lethargy.prototype.showLastDownDeltas = function() {
55993      return this.lastDownDeltas;
55994    };
55995
55996    return Lethargy;
55997
55998  })();
55999
56000}).call(commonjsGlobal);
56001});
56002
56003var support = (function getSupport() {
56004    return {
56005        hasWheelEvent: 'onwheel' in document,
56006        hasMouseWheelEvent: 'onmousewheel' in document,
56007        hasTouch: ('ontouchstart' in window) || window.TouchEvent || window.DocumentTouch && document instanceof DocumentTouch,
56008        hasTouchWin: navigator.msMaxTouchPoints && navigator.msMaxTouchPoints > 1,
56009        hasPointer: !!window.navigator.msPointerEnabled,
56010        hasKeyDown: 'onkeydown' in document,
56011        isFirefox: navigator.userAgent.indexOf('Firefox') > -1
56012    };
56013})();
56014
56015var toString = Object.prototype.toString,
56016    hasOwnProperty$1 = Object.prototype.hasOwnProperty;
56017
56018var bindallStandalone = function(object) {
56019    if(!object) return console.warn('bindAll requires at least one argument.');
56020
56021    var functions = Array.prototype.slice.call(arguments, 1);
56022
56023    if (functions.length === 0) {
56024
56025        for (var method in object) {
56026            if(hasOwnProperty$1.call(object, method)) {
56027                if(typeof object[method] == 'function' && toString.call(object[method]) == "[object Function]") {
56028                    functions.push(method);
56029                }
56030            }
56031        }
56032    }
56033
56034    for(var i = 0; i < functions.length; i++) {
56035        var f = functions[i];
56036        object[f] = bind(object[f], object);
56037    }
56038};
56039
56040/*
56041    Faster bind without specific-case checking. (see https://coderwall.com/p/oi3j3w).
56042    bindAll is only needed for events binding so no need to make slow fixes for constructor
56043    or partial application.
56044*/
56045function bind(func, context) {
56046  return function() {
56047    return func.apply(context, arguments);
56048  };
56049}
56050
56051var Lethargy = lethargy.Lethargy;
56052
56053
56054
56055var EVT_ID = 'virtualscroll';
56056
56057var src = VirtualScroll;
56058
56059var keyCodes = {
56060    LEFT: 37,
56061    UP: 38,
56062    RIGHT: 39,
56063    DOWN: 40,
56064    SPACE: 32
56065};
56066
56067function VirtualScroll(options) {
56068    bindallStandalone(this, '_onWheel', '_onMouseWheel', '_onTouchStart', '_onTouchMove', '_onKeyDown');
56069
56070    this.el = window;
56071    if (options && options.el) {
56072        this.el = options.el;
56073        delete options.el;
56074    }
56075    this.options = objectAssign({
56076        mouseMultiplier: 1,
56077        touchMultiplier: 2,
56078        firefoxMultiplier: 15,
56079        keyStep: 120,
56080        preventTouch: false,
56081        unpreventTouchClass: 'vs-touchmove-allowed',
56082        limitInertia: false,
56083        useKeyboard: true,
56084        useTouch: true
56085    }, options);
56086
56087    if (this.options.limitInertia) this._lethargy = new Lethargy();
56088
56089    this._emitter = new tinyEmitter();
56090    this._event = {
56091        y: 0,
56092        x: 0,
56093        deltaX: 0,
56094        deltaY: 0
56095    };
56096    this.touchStartX = null;
56097    this.touchStartY = null;
56098    this.bodyTouchAction = null;
56099
56100    if (this.options.passive !== undefined) {
56101        this.listenerOptions = {passive: this.options.passive};
56102    }
56103}
56104
56105VirtualScroll.prototype._notify = function(e) {
56106    var evt = this._event;
56107    evt.x += evt.deltaX;
56108    evt.y += evt.deltaY;
56109
56110   this._emitter.emit(EVT_ID, {
56111        x: evt.x,
56112        y: evt.y,
56113        deltaX: evt.deltaX,
56114        deltaY: evt.deltaY,
56115        originalEvent: e
56116   });
56117};
56118
56119VirtualScroll.prototype._onWheel = function(e) {
56120    var options = this.options;
56121    if (this._lethargy && this._lethargy.check(e) === false) return;
56122    var evt = this._event;
56123
56124    // In Chrome and in Firefox (at least the new one)
56125    evt.deltaX = e.wheelDeltaX || e.deltaX * -1;
56126    evt.deltaY = e.wheelDeltaY || e.deltaY * -1;
56127
56128    // for our purpose deltamode = 1 means user is on a wheel mouse, not touch pad
56129    // real meaning: https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent#Delta_modes
56130    if(support.isFirefox && e.deltaMode == 1) {
56131        evt.deltaX *= options.firefoxMultiplier;
56132        evt.deltaY *= options.firefoxMultiplier;
56133    }
56134
56135    evt.deltaX *= options.mouseMultiplier;
56136    evt.deltaY *= options.mouseMultiplier;
56137
56138    this._notify(e);
56139};
56140
56141VirtualScroll.prototype._onMouseWheel = function(e) {
56142    if (this.options.limitInertia && this._lethargy.check(e) === false) return;
56143
56144    var evt = this._event;
56145
56146    // In Safari, IE and in Chrome if 'wheel' isn't defined
56147    evt.deltaX = (e.wheelDeltaX) ? e.wheelDeltaX : 0;
56148    evt.deltaY = (e.wheelDeltaY) ? e.wheelDeltaY : e.wheelDelta;
56149
56150    this._notify(e);
56151};
56152
56153VirtualScroll.prototype._onTouchStart = function(e) {
56154    var t = (e.targetTouches) ? e.targetTouches[0] : e;
56155    this.touchStartX = t.pageX;
56156    this.touchStartY = t.pageY;
56157};
56158
56159VirtualScroll.prototype._onTouchMove = function(e) {
56160    var options = this.options;
56161    if(options.preventTouch
56162        && !e.target.classList.contains(options.unpreventTouchClass)) {
56163        e.preventDefault();
56164    }
56165
56166    var evt = this._event;
56167
56168    var t = (e.targetTouches) ? e.targetTouches[0] : e;
56169
56170    evt.deltaX = (t.pageX - this.touchStartX) * options.touchMultiplier;
56171    evt.deltaY = (t.pageY - this.touchStartY) * options.touchMultiplier;
56172
56173    this.touchStartX = t.pageX;
56174    this.touchStartY = t.pageY;
56175
56176    this._notify(e);
56177};
56178
56179VirtualScroll.prototype._onKeyDown = function(e) {
56180    var evt = this._event;
56181    evt.deltaX = evt.deltaY = 0;
56182    var windowHeight = window.innerHeight - 40;
56183
56184    switch(e.keyCode) {
56185        case keyCodes.LEFT:
56186        case keyCodes.UP:
56187            evt.deltaY = this.options.keyStep;
56188            break;
56189
56190        case keyCodes.RIGHT:
56191        case keyCodes.DOWN:
56192            evt.deltaY = - this.options.keyStep;
56193            break;
56194        case  e.shiftKey:
56195            evt.deltaY = windowHeight;
56196            break;
56197        case keyCodes.SPACE:
56198            evt.deltaY = - windowHeight;
56199            break;
56200        default:
56201            return;
56202    }
56203
56204    this._notify(e);
56205};
56206
56207VirtualScroll.prototype._bind = function() {
56208    if(support.hasWheelEvent) this.el.addEventListener('wheel', this._onWheel, this.listenerOptions);
56209    if(support.hasMouseWheelEvent) this.el.addEventListener('mousewheel', this._onMouseWheel, this.listenerOptions);
56210
56211    if(support.hasTouch && this.options.useTouch) {
56212        this.el.addEventListener('touchstart', this._onTouchStart, this.listenerOptions);
56213        this.el.addEventListener('touchmove', this._onTouchMove, this.listenerOptions);
56214    }
56215
56216    if(support.hasPointer && support.hasTouchWin) {
56217        this.bodyTouchAction = document.body.style.msTouchAction;
56218        document.body.style.msTouchAction = 'none';
56219        this.el.addEventListener('MSPointerDown', this._onTouchStart, true);
56220        this.el.addEventListener('MSPointerMove', this._onTouchMove, true);
56221    }
56222
56223    if(support.hasKeyDown && this.options.useKeyboard) document.addEventListener('keydown', this._onKeyDown);
56224};
56225
56226VirtualScroll.prototype._unbind = function() {
56227    if(support.hasWheelEvent) this.el.removeEventListener('wheel', this._onWheel);
56228    if(support.hasMouseWheelEvent) this.el.removeEventListener('mousewheel', this._onMouseWheel);
56229
56230    if(support.hasTouch) {
56231        this.el.removeEventListener('touchstart', this._onTouchStart);
56232        this.el.removeEventListener('touchmove', this._onTouchMove);
56233    }
56234
56235    if(support.hasPointer && support.hasTouchWin) {
56236        document.body.style.msTouchAction = this.bodyTouchAction;
56237        this.el.removeEventListener('MSPointerDown', this._onTouchStart, true);
56238        this.el.removeEventListener('MSPointerMove', this._onTouchMove, true);
56239    }
56240
56241    if(support.hasKeyDown && this.options.useKeyboard) document.removeEventListener('keydown', this._onKeyDown);
56242};
56243
56244VirtualScroll.prototype.on = function(cb, ctx) {
56245  this._emitter.on(EVT_ID, cb, ctx);
56246
56247  var events = this._emitter.e;
56248  if (events && events[EVT_ID] && events[EVT_ID].length === 1) this._bind();
56249};
56250
56251VirtualScroll.prototype.off = function(cb, ctx) {
56252  this._emitter.off(EVT_ID, cb, ctx);
56253
56254  var events = this._emitter.e;
56255  if (!events[EVT_ID] || events[EVT_ID].length <= 0) this._unbind();
56256};
56257
56258VirtualScroll.prototype.reset = function() {
56259    var evt = this._event;
56260    evt.x = 0;
56261    evt.y = 0;
56262};
56263
56264VirtualScroll.prototype.destroy = function() {
56265    this._emitter.off();
56266    this._unbind();
56267};
56268
56269function lerp(start, end, amt) {
56270  return (1 - amt) * start + amt * end;
56271}
56272
56273function getTranslate(el) {
56274  var translate = {};
56275  if (!window.getComputedStyle) return;
56276  var style = getComputedStyle(el);
56277  var transform = style.transform || style.webkitTransform || style.mozTransform;
56278  var mat = transform.match(/^matrix3d\((.+)\)$/);
56279
56280  if (mat) {
56281    translate.x = mat ? parseFloat(mat[1].split(', ')[12]) : 0;
56282    translate.y = mat ? parseFloat(mat[1].split(', ')[13]) : 0;
56283  } else {
56284    mat = transform.match(/^matrix\((.+)\)$/);
56285    translate.x = mat ? parseFloat(mat[1].split(', ')[4]) : 0;
56286    translate.y = mat ? parseFloat(mat[1].split(', ')[5]) : 0;
56287  }
56288
56289  return translate;
56290}
56291
56292/**
56293 * Returns an array containing all the parent nodes of the given node
56294 * @param  {object} node
56295 * @return {array} parent nodes
56296 */
56297function getParents(elem) {
56298  // Set up a parent array
56299  var parents = []; // Push each parent element to the array
56300
56301  for (; elem && elem !== document; elem = elem.parentNode) {
56302    parents.push(elem);
56303  } // Return our parent array
56304
56305
56306  return parents;
56307} // https://gomakethings.com/how-to-get-the-closest-parent-element-with-a-matching-selector-using-vanilla-javascript/
56308
56309/**
56310 * https://github.com/gre/bezier-easing
56311 * BezierEasing - use bezier curve for transition easing function
56312 * by Gaëtan Renaudeau 2014 - 2015 – MIT License
56313 */
56314
56315// These values are established by empiricism with tests (tradeoff: performance VS precision)
56316var NEWTON_ITERATIONS = 4;
56317var NEWTON_MIN_SLOPE = 0.001;
56318var SUBDIVISION_PRECISION = 0.0000001;
56319var SUBDIVISION_MAX_ITERATIONS = 10;
56320
56321var kSplineTableSize = 11;
56322var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);
56323
56324var float32ArraySupported = typeof Float32Array === 'function';
56325
56326function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
56327function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
56328function C (aA1)      { return 3.0 * aA1; }
56329
56330// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
56331function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }
56332
56333// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
56334function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }
56335
56336function binarySubdivide (aX, aA, aB, mX1, mX2) {
56337  var currentX, currentT, i = 0;
56338  do {
56339    currentT = aA + (aB - aA) / 2.0;
56340    currentX = calcBezier(currentT, mX1, mX2) - aX;
56341    if (currentX > 0.0) {
56342      aB = currentT;
56343    } else {
56344      aA = currentT;
56345    }
56346  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
56347  return currentT;
56348}
56349
56350function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {
56351 for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
56352   var currentSlope = getSlope(aGuessT, mX1, mX2);
56353   if (currentSlope === 0.0) {
56354     return aGuessT;
56355   }
56356   var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
56357   aGuessT -= currentX / currentSlope;
56358 }
56359 return aGuessT;
56360}
56361
56362function LinearEasing (x) {
56363  return x;
56364}
56365
56366var src$1 = function bezier (mX1, mY1, mX2, mY2) {
56367  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
56368    throw new Error('bezier x values must be in [0, 1] range');
56369  }
56370
56371  if (mX1 === mY1 && mX2 === mY2) {
56372    return LinearEasing;
56373  }
56374
56375  // Precompute samples table
56376  var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
56377  for (var i = 0; i < kSplineTableSize; ++i) {
56378    sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
56379  }
56380
56381  function getTForX (aX) {
56382    var intervalStart = 0.0;
56383    var currentSample = 1;
56384    var lastSample = kSplineTableSize - 1;
56385
56386    for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
56387      intervalStart += kSampleStepSize;
56388    }
56389    --currentSample;
56390
56391    // Interpolate to provide an initial guess for t
56392    var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
56393    var guessForT = intervalStart + dist * kSampleStepSize;
56394
56395    var initialSlope = getSlope(guessForT, mX1, mX2);
56396    if (initialSlope >= NEWTON_MIN_SLOPE) {
56397      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
56398    } else if (initialSlope === 0.0) {
56399      return guessForT;
56400    } else {
56401      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
56402    }
56403  }
56404
56405  return function BezierEasing (x) {
56406    // Because JavaScript number are imprecise, we should guarantee the extremes are right.
56407    if (x === 0) {
56408      return 0;
56409    }
56410    if (x === 1) {
56411      return 1;
56412    }
56413    return calcBezier(getTForX(x), mY1, mY2);
56414  };
56415};
56416
56417var keyCodes$1 = {
56418  LEFT: 37,
56419  UP: 38,
56420  RIGHT: 39,
56421  DOWN: 40,
56422  SPACE: 32,
56423  TAB: 9,
56424  PAGEUP: 33,
56425  PAGEDOWN: 34,
56426  HOME: 36,
56427  END: 35
56428};
56429
56430var _default$2 = /*#__PURE__*/function (_Core) {
56431  _inherits(_default, _Core);
56432
56433  var _super = _createSuper(_default);
56434
56435  function _default() {
56436    var _this;
56437
56438    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
56439
56440    _classCallCheck(this, _default);
56441
56442    if (history.scrollRestoration) {
56443      history.scrollRestoration = 'manual';
56444    }
56445
56446    window.scrollTo(0, 0);
56447    _this = _super.call(this, options);
56448    if (_this.inertia) _this.lerp = _this.inertia * 0.1;
56449    _this.isScrolling = false;
56450    _this.isDraggingScrollbar = false;
56451    _this.isTicking = false;
56452    _this.hasScrollTicking = false;
56453    _this.parallaxElements = {};
56454    _this.stop = false;
56455    _this.scrollbarContainer = options.scrollbarContainer;
56456    _this.checkKey = _this.checkKey.bind(_assertThisInitialized(_this));
56457    window.addEventListener('keydown', _this.checkKey, false);
56458    return _this;
56459  }
56460
56461  _createClass(_default, [{
56462    key: "init",
56463    value: function init() {
56464      var _this2 = this;
56465
56466      this.html.classList.add(this.smoothClass);
56467      this.html.setAttribute("data-".concat(this.name, "-direction"), this.direction);
56468      this.instance = _objectSpread2({
56469        delta: {
56470          x: this.initPosition.x,
56471          y: this.initPosition.y
56472        },
56473        scroll: {
56474          x: this.initPosition.x,
56475          y: this.initPosition.y
56476        }
56477      }, this.instance);
56478      this.vs = new src({
56479        el: this.scrollFromAnywhere ? document : this.el,
56480        mouseMultiplier: navigator.platform.indexOf('Win') > -1 ? 1 : 0.4,
56481        firefoxMultiplier: this.firefoxMultiplier,
56482        touchMultiplier: this.touchMultiplier,
56483        useKeyboard: false,
56484        passive: true
56485      });
56486      this.vs.on(function (e) {
56487        if (_this2.stop) {
56488          return;
56489        }
56490
56491        if (!_this2.isDraggingScrollbar) {
56492          requestAnimationFrame(function () {
56493            _this2.updateDelta(e);
56494
56495            if (!_this2.isScrolling) _this2.startScrolling();
56496          });
56497        }
56498      });
56499      this.setScrollLimit();
56500      this.initScrollBar();
56501      this.addSections();
56502      this.addElements();
56503      this.checkScroll(true);
56504      this.transformElements(true, true);
56505
56506      _get(_getPrototypeOf(_default.prototype), "init", this).call(this);
56507    }
56508  }, {
56509    key: "setScrollLimit",
56510    value: function setScrollLimit() {
56511      this.instance.limit.y = this.el.offsetHeight - this.windowHeight;
56512
56513      if (this.direction === 'horizontal') {
56514        var totalWidth = 0;
56515        var nodes = this.el.children;
56516
56517        for (var i = 0; i < nodes.length; i++) {
56518          totalWidth += nodes[i].offsetWidth;
56519        }
56520
56521        this.instance.limit.x = totalWidth - this.windowWidth;
56522      }
56523    }
56524  }, {
56525    key: "startScrolling",
56526    value: function startScrolling() {
56527      this.startScrollTs = Date.now(); // Record timestamp
56528
56529      this.isScrolling = true;
56530      this.checkScroll();
56531      this.html.classList.add(this.scrollingClass);
56532    }
56533  }, {
56534    key: "stopScrolling",
56535    value: function stopScrolling() {
56536      cancelAnimationFrame(this.checkScrollRaf); // Prevent checkScroll to continue looping
56537      //Pevent scrollbar glitch/locking
56538
56539      this.startScrollTs = undefined;
56540
56541      if (this.scrollToRaf) {
56542        cancelAnimationFrame(this.scrollToRaf);
56543        this.scrollToRaf = null;
56544      }
56545
56546      this.isScrolling = false;
56547      this.instance.scroll.y = Math.round(this.instance.scroll.y);
56548      this.html.classList.remove(this.scrollingClass);
56549    }
56550  }, {
56551    key: "checkKey",
56552    value: function checkKey(e) {
56553      var _this3 = this;
56554
56555      if (this.stop) {
56556        // If we are stopped, we don't want any scroll to occur because of a keypress
56557        // Prevent tab to scroll to activeElement
56558        if (e.keyCode == keyCodes$1.TAB) {
56559          requestAnimationFrame(function () {
56560            // Make sure native scroll is always at top of page
56561            _this3.html.scrollTop = 0;
56562            document.body.scrollTop = 0;
56563            _this3.html.scrollLeft = 0;
56564            document.body.scrollLeft = 0;
56565          });
56566        }
56567
56568        return;
56569      }
56570
56571      switch (e.keyCode) {
56572        case keyCodes$1.TAB:
56573          // Do not remove the RAF
56574          // It allows to override the browser's native scrollTo, which is essential
56575          requestAnimationFrame(function () {
56576            // Make sure native scroll is always at top of page
56577            _this3.html.scrollTop = 0;
56578            document.body.scrollTop = 0;
56579            _this3.html.scrollLeft = 0;
56580            document.body.scrollLeft = 0; // Request scrollTo on the focusedElement, putting it at the center of the screen
56581
56582            _this3.scrollTo(document.activeElement, {
56583              offset: -window.innerHeight / 2
56584            });
56585          });
56586          break;
56587
56588        case keyCodes$1.UP:
56589          if (this.isActiveElementScrollSensitive()) {
56590            this.instance.delta[this.directionAxis] -= 240;
56591          }
56592
56593          break;
56594
56595        case keyCodes$1.DOWN:
56596          if (this.isActiveElementScrollSensitive()) {
56597            this.instance.delta[this.directionAxis] += 240;
56598          }
56599
56600          break;
56601
56602        case keyCodes$1.PAGEUP:
56603          this.instance.delta[this.directionAxis] -= window.innerHeight;
56604          break;
56605
56606        case keyCodes$1.PAGEDOWN:
56607          this.instance.delta[this.directionAxis] += window.innerHeight;
56608          break;
56609
56610        case keyCodes$1.HOME:
56611          this.instance.delta[this.directionAxis] -= this.instance.limit[this.directionAxis];
56612          break;
56613
56614        case keyCodes$1.END:
56615          this.instance.delta[this.directionAxis] += this.instance.limit[this.directionAxis];
56616          break;
56617
56618        case keyCodes$1.SPACE:
56619          if (this.isActiveElementScrollSensitive()) {
56620            if (e.shiftKey) {
56621              this.instance.delta[this.directionAxis] -= window.innerHeight;
56622            } else {
56623              this.instance.delta[this.directionAxis] += window.innerHeight;
56624            }
56625          }
56626
56627          break;
56628
56629        default:
56630          return;
56631      }
56632
56633      if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;
56634      if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];
56635      this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening
56636
56637      this.isScrolling = true;
56638      this.checkScroll();
56639      this.html.classList.add(this.scrollingClass);
56640    }
56641  }, {
56642    key: "isActiveElementScrollSensitive",
56643    value: function isActiveElementScrollSensitive() {
56644      return !(document.activeElement instanceof HTMLInputElement) && !(document.activeElement instanceof HTMLTextAreaElement) && !(document.activeElement instanceof HTMLButtonElement) && !(document.activeElement instanceof HTMLSelectElement);
56645    }
56646  }, {
56647    key: "checkScroll",
56648    value: function checkScroll() {
56649      var _this4 = this;
56650
56651      var forced = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
56652
56653      if (forced || this.isScrolling || this.isDraggingScrollbar) {
56654        if (!this.hasScrollTicking) {
56655          this.checkScrollRaf = requestAnimationFrame(function () {
56656            return _this4.checkScroll();
56657          });
56658          this.hasScrollTicking = true;
56659        }
56660
56661        this.updateScroll();
56662        var distance = Math.abs(this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]);
56663        var timeSinceStart = Date.now() - this.startScrollTs; // Get the time since the scroll was started: the scroll can be stopped again only past 100ms
56664
56665        if (!this.animatingScroll && timeSinceStart > 100 && (distance < 0.5 && this.instance.delta[this.directionAxis] != 0 || distance < 0.5 && this.instance.delta[this.directionAxis] == 0)) {
56666          this.stopScrolling();
56667        }
56668
56669        Object.entries(this.sections).forEach(function (_ref) {
56670          var _ref2 = _slicedToArray(_ref, 2),
56671              i = _ref2[0],
56672              section = _ref2[1];
56673
56674          if (section.persistent || _this4.instance.scroll[_this4.directionAxis] > section.offset[_this4.directionAxis] && _this4.instance.scroll[_this4.directionAxis] < section.limit[_this4.directionAxis]) {
56675            if (_this4.direction === 'horizontal') {
56676              _this4.transform(section.el, -_this4.instance.scroll[_this4.directionAxis], 0);
56677            } else {
56678              _this4.transform(section.el, 0, -_this4.instance.scroll[_this4.directionAxis]);
56679            }
56680
56681            if (!section.inView) {
56682              section.inView = true;
56683              section.el.style.opacity = 1;
56684              section.el.style.pointerEvents = 'all';
56685              section.el.setAttribute("data-".concat(_this4.name, "-section-inview"), '');
56686            }
56687          } else {
56688            if (section.inView || forced) {
56689              section.inView = false;
56690              section.el.style.opacity = 0;
56691              section.el.style.pointerEvents = 'none';
56692              section.el.removeAttribute("data-".concat(_this4.name, "-section-inview"));
56693            }
56694
56695            _this4.transform(section.el, 0, 0);
56696          }
56697        });
56698
56699        if (this.getDirection) {
56700          this.addDirection();
56701        }
56702
56703        if (this.getSpeed) {
56704          this.addSpeed();
56705          this.speedTs = Date.now();
56706        }
56707
56708        this.detectElements();
56709        this.transformElements();
56710
56711        if (this.hasScrollbar) {
56712          var scrollBarTranslation = this.instance.scroll[this.directionAxis] / this.instance.limit[this.directionAxis] * this.scrollBarLimit[this.directionAxis];
56713
56714          if (this.direction === 'horizontal') {
56715            this.transform(this.scrollbarThumb, scrollBarTranslation, 0);
56716          } else {
56717            this.transform(this.scrollbarThumb, 0, scrollBarTranslation);
56718          }
56719        }
56720
56721        _get(_getPrototypeOf(_default.prototype), "checkScroll", this).call(this);
56722
56723        this.hasScrollTicking = false;
56724      }
56725    }
56726  }, {
56727    key: "resize",
56728    value: function resize() {
56729      this.windowHeight = window.innerHeight;
56730      this.windowWidth = window.innerWidth;
56731      this.checkContext();
56732      this.windowMiddle = {
56733        x: this.windowWidth / 2,
56734        y: this.windowHeight / 2
56735      };
56736      this.update();
56737    }
56738  }, {
56739    key: "updateDelta",
56740    value: function updateDelta(e) {
56741      var delta;
56742      var gestureDirection = this[this.context] && this[this.context].gestureDirection ? this[this.context].gestureDirection : this.gestureDirection;
56743
56744      if (gestureDirection === 'both') {
56745        delta = e.deltaX + e.deltaY;
56746      } else if (gestureDirection === 'vertical') {
56747        delta = e.deltaY;
56748      } else if (gestureDirection === 'horizontal') {
56749        delta = e.deltaX;
56750      } else {
56751        delta = e.deltaY;
56752      }
56753
56754      this.instance.delta[this.directionAxis] -= delta * this.multiplier;
56755      if (this.instance.delta[this.directionAxis] < 0) this.instance.delta[this.directionAxis] = 0;
56756      if (this.instance.delta[this.directionAxis] > this.instance.limit[this.directionAxis]) this.instance.delta[this.directionAxis] = this.instance.limit[this.directionAxis];
56757    }
56758  }, {
56759    key: "updateScroll",
56760    value: function updateScroll(e) {
56761      if (this.isScrolling || this.isDraggingScrollbar) {
56762        this.instance.scroll[this.directionAxis] = lerp(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis], this.lerp);
56763      } else {
56764        if (this.instance.scroll[this.directionAxis] > this.instance.limit[this.directionAxis]) {
56765          this.setScroll(this.instance.scroll[this.directionAxis], this.instance.limit[this.directionAxis]);
56766        } else if (this.instance.scroll.y < 0) {
56767          this.setScroll(this.instance.scroll[this.directionAxis], 0);
56768        } else {
56769          this.setScroll(this.instance.scroll[this.directionAxis], this.instance.delta[this.directionAxis]);
56770        }
56771      }
56772    }
56773  }, {
56774    key: "addDirection",
56775    value: function addDirection() {
56776      if (this.instance.delta.y > this.instance.scroll.y) {
56777        if (this.instance.direction !== 'down') {
56778          this.instance.direction = 'down';
56779        }
56780      } else if (this.instance.delta.y < this.instance.scroll.y) {
56781        if (this.instance.direction !== 'up') {
56782          this.instance.direction = 'up';
56783        }
56784      }
56785
56786      if (this.instance.delta.x > this.instance.scroll.x) {
56787        if (this.instance.direction !== 'right') {
56788          this.instance.direction = 'right';
56789        }
56790      } else if (this.instance.delta.x < this.instance.scroll.x) {
56791        if (this.instance.direction !== 'left') {
56792          this.instance.direction = 'left';
56793        }
56794      }
56795    }
56796  }, {
56797    key: "addSpeed",
56798    value: function addSpeed() {
56799      if (this.instance.delta[this.directionAxis] != this.instance.scroll[this.directionAxis]) {
56800        this.instance.speed = (this.instance.delta[this.directionAxis] - this.instance.scroll[this.directionAxis]) / Math.max(1, Date.now() - this.speedTs);
56801      } else {
56802        this.instance.speed = 0;
56803      }
56804    }
56805  }, {
56806    key: "initScrollBar",
56807    value: function initScrollBar() {
56808      this.scrollbar = document.createElement('span');
56809      this.scrollbarThumb = document.createElement('span');
56810      this.scrollbar.classList.add("".concat(this.scrollbarClass));
56811      this.scrollbarThumb.classList.add("".concat(this.scrollbarClass, "_thumb"));
56812      this.scrollbar.append(this.scrollbarThumb);
56813
56814      if (this.scrollbarContainer) {
56815        this.scrollbarContainer.append(this.scrollbar);
56816      } else {
56817        document.body.append(this.scrollbar);
56818      } // Scrollbar Events
56819
56820
56821      this.getScrollBar = this.getScrollBar.bind(this);
56822      this.releaseScrollBar = this.releaseScrollBar.bind(this);
56823      this.moveScrollBar = this.moveScrollBar.bind(this);
56824      this.scrollbarThumb.addEventListener('mousedown', this.getScrollBar);
56825      window.addEventListener('mouseup', this.releaseScrollBar);
56826      window.addEventListener('mousemove', this.moveScrollBar); // Set scrollbar values
56827
56828      this.hasScrollbar = false;
56829
56830      if (this.direction == 'horizontal') {
56831        if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {
56832          return;
56833        }
56834      } else {
56835        if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {
56836          return;
56837        }
56838      }
56839
56840      this.hasScrollbar = true;
56841      this.scrollbarBCR = this.scrollbar.getBoundingClientRect();
56842      this.scrollbarHeight = this.scrollbarBCR.height;
56843      this.scrollbarWidth = this.scrollbarBCR.width;
56844
56845      if (this.direction === 'horizontal') {
56846        this.scrollbarThumb.style.width = "".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), "px");
56847      } else {
56848        this.scrollbarThumb.style.height = "".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), "px");
56849      }
56850
56851      this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();
56852      this.scrollBarLimit = {
56853        x: this.scrollbarWidth - this.scrollbarThumbBCR.width,
56854        y: this.scrollbarHeight - this.scrollbarThumbBCR.height
56855      };
56856    }
56857  }, {
56858    key: "reinitScrollBar",
56859    value: function reinitScrollBar() {
56860      this.hasScrollbar = false;
56861
56862      if (this.direction == 'horizontal') {
56863        if (this.instance.limit.x + this.windowWidth <= this.windowWidth) {
56864          return;
56865        }
56866      } else {
56867        if (this.instance.limit.y + this.windowHeight <= this.windowHeight) {
56868          return;
56869        }
56870      }
56871
56872      this.hasScrollbar = true;
56873      this.scrollbarBCR = this.scrollbar.getBoundingClientRect();
56874      this.scrollbarHeight = this.scrollbarBCR.height;
56875      this.scrollbarWidth = this.scrollbarBCR.width;
56876
56877      if (this.direction === 'horizontal') {
56878        this.scrollbarThumb.style.width = "".concat(this.scrollbarWidth * this.scrollbarWidth / (this.instance.limit.x + this.scrollbarWidth), "px");
56879      } else {
56880        this.scrollbarThumb.style.height = "".concat(this.scrollbarHeight * this.scrollbarHeight / (this.instance.limit.y + this.scrollbarHeight), "px");
56881      }
56882
56883      this.scrollbarThumbBCR = this.scrollbarThumb.getBoundingClientRect();
56884      this.scrollBarLimit = {
56885        x: this.scrollbarWidth - this.scrollbarThumbBCR.width,
56886        y: this.scrollbarHeight - this.scrollbarThumbBCR.height
56887      };
56888    }
56889  }, {
56890    key: "destroyScrollBar",
56891    value: function destroyScrollBar() {
56892      this.scrollbarThumb.removeEventListener('mousedown', this.getScrollBar);
56893      window.removeEventListener('mouseup', this.releaseScrollBar);
56894      window.removeEventListener('mousemove', this.moveScrollBar);
56895      this.scrollbar.remove();
56896    }
56897  }, {
56898    key: "getScrollBar",
56899    value: function getScrollBar(e) {
56900      this.isDraggingScrollbar = true;
56901      this.checkScroll();
56902      this.html.classList.remove(this.scrollingClass);
56903      this.html.classList.add(this.draggingClass);
56904    }
56905  }, {
56906    key: "releaseScrollBar",
56907    value: function releaseScrollBar(e) {
56908      this.isDraggingScrollbar = false;
56909
56910      if (this.isScrolling) {
56911        this.html.classList.add(this.scrollingClass);
56912      }
56913
56914      this.html.classList.remove(this.draggingClass);
56915    }
56916  }, {
56917    key: "moveScrollBar",
56918    value: function moveScrollBar(e) {
56919      var _this5 = this;
56920
56921      if (this.isDraggingScrollbar) {
56922        requestAnimationFrame(function () {
56923          var x = (e.clientX - _this5.scrollbarBCR.left) * 100 / _this5.scrollbarWidth * _this5.instance.limit.x / 100;
56924          var y = (e.clientY - _this5.scrollbarBCR.top) * 100 / _this5.scrollbarHeight * _this5.instance.limit.y / 100;
56925
56926          if (y > 0 && y < _this5.instance.limit.y) {
56927            _this5.instance.delta.y = y;
56928          }
56929
56930          if (x > 0 && x < _this5.instance.limit.x) {
56931            _this5.instance.delta.x = x;
56932          }
56933        });
56934      }
56935    }
56936  }, {
56937    key: "addElements",
56938    value: function addElements() {
56939      var _this6 = this;
56940
56941      this.els = {};
56942      this.parallaxElements = {}; // this.sections.forEach((section, y) => {
56943
56944      var els = this.el.querySelectorAll("[data-".concat(this.name, "]"));
56945      els.forEach(function (el, index) {
56946        // Try and find the target's parent section
56947        var targetParents = getParents(el);
56948        var section = Object.entries(_this6.sections).map(function (_ref3) {
56949          var _ref4 = _slicedToArray(_ref3, 2),
56950              key = _ref4[0],
56951              section = _ref4[1];
56952
56953          return section;
56954        }).find(function (section) {
56955          return targetParents.includes(section.el);
56956        });
56957        var cl = el.dataset[_this6.name + 'Class'] || _this6["class"];
56958        var id = typeof el.dataset[_this6.name + 'Id'] === 'string' ? el.dataset[_this6.name + 'Id'] : 'el' + index;
56959        var top;
56960        var left;
56961        var repeat = el.dataset[_this6.name + 'Repeat'];
56962        var call = el.dataset[_this6.name + 'Call'];
56963        var position = el.dataset[_this6.name + 'Position'];
56964        var delay = el.dataset[_this6.name + 'Delay'];
56965        var direction = el.dataset[_this6.name + 'Direction'];
56966        var sticky = typeof el.dataset[_this6.name + 'Sticky'] === 'string';
56967        var speed = el.dataset[_this6.name + 'Speed'] ? parseFloat(el.dataset[_this6.name + 'Speed']) / 10 : false;
56968        var offset = typeof el.dataset[_this6.name + 'Offset'] === 'string' ? el.dataset[_this6.name + 'Offset'].split(',') : _this6.offset;
56969        var target = el.dataset[_this6.name + 'Target'];
56970        var targetEl;
56971
56972        if (target !== undefined) {
56973          targetEl = document.querySelector("".concat(target));
56974        } else {
56975          targetEl = el;
56976        }
56977
56978        var targetElBCR = targetEl.getBoundingClientRect();
56979
56980        if (section === null) {
56981          top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;
56982          left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;
56983        } else {
56984          if (!section.inView) {
56985            top = targetElBCR.top - getTranslate(section.el).y - getTranslate(targetEl).y;
56986            left = targetElBCR.left - getTranslate(section.el).x - getTranslate(targetEl).x;
56987          } else {
56988            top = targetElBCR.top + _this6.instance.scroll.y - getTranslate(targetEl).y;
56989            left = targetElBCR.left + _this6.instance.scroll.x - getTranslate(targetEl).x;
56990          }
56991        }
56992
56993        var bottom = top + targetEl.offsetHeight;
56994        var right = left + targetEl.offsetWidth;
56995        var middle = {
56996          x: (right - left) / 2 + left,
56997          y: (bottom - top) / 2 + top
56998        };
56999
57000        if (sticky) {
57001          var elBCR = el.getBoundingClientRect();
57002          var elTop = elBCR.top;
57003          var elLeft = elBCR.left;
57004          var elDistance = {
57005            x: elLeft - left,
57006            y: elTop - top
57007          };
57008          top += window.innerHeight;
57009          left += window.innerWidth;
57010          bottom = elTop + targetEl.offsetHeight - el.offsetHeight - elDistance[_this6.directionAxis];
57011          right = elLeft + targetEl.offsetWidth - el.offsetWidth - elDistance[_this6.directionAxis];
57012          middle = {
57013            x: (right - left) / 2 + left,
57014            y: (bottom - top) / 2 + top
57015          };
57016        }
57017
57018        if (repeat == 'false') {
57019          repeat = false;
57020        } else if (repeat != undefined) {
57021          repeat = true;
57022        } else {
57023          repeat = _this6.repeat;
57024        }
57025
57026        var relativeOffset = [0, 0];
57027
57028        if (offset) {
57029          if (_this6.direction === 'horizontal') {
57030            for (var i = 0; i < offset.length; i++) {
57031              if (typeof offset[i] == 'string') {
57032                if (offset[i].includes('%')) {
57033                  relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowWidth / 100);
57034                } else {
57035                  relativeOffset[i] = parseInt(offset[i]);
57036                }
57037              } else {
57038                relativeOffset[i] = offset[i];
57039              }
57040            }
57041
57042            left = left + relativeOffset[0];
57043            right = right - relativeOffset[1];
57044          } else {
57045            for (var i = 0; i < offset.length; i++) {
57046              if (typeof offset[i] == 'string') {
57047                if (offset[i].includes('%')) {
57048                  relativeOffset[i] = parseInt(offset[i].replace('%', '') * _this6.windowHeight / 100);
57049                } else {
57050                  relativeOffset[i] = parseInt(offset[i]);
57051                }
57052              } else {
57053                relativeOffset[i] = offset[i];
57054              }
57055            }
57056
57057            top = top + relativeOffset[0];
57058            bottom = bottom - relativeOffset[1];
57059          }
57060        }
57061
57062        var mappedEl = {
57063          el: el,
57064          id: id,
57065          "class": cl,
57066          section: section,
57067          top: top,
57068          middle: middle,
57069          bottom: bottom,
57070          left: left,
57071          right: right,
57072          offset: offset,
57073          progress: 0,
57074          repeat: repeat,
57075          inView: false,
57076          call: call,
57077          speed: speed,
57078          delay: delay,
57079          position: position,
57080          target: targetEl,
57081          direction: direction,
57082          sticky: sticky
57083        };
57084        _this6.els[id] = mappedEl;
57085
57086        if (el.classList.contains(cl)) {
57087          _this6.setInView(_this6.els[id], id);
57088        }
57089
57090        if (speed !== false || sticky) {
57091          _this6.parallaxElements[id] = mappedEl;
57092        }
57093      }); // });
57094    }
57095  }, {
57096    key: "addSections",
57097    value: function addSections() {
57098      var _this7 = this;
57099
57100      this.sections = {};
57101      var sections = this.el.querySelectorAll("[data-".concat(this.name, "-section]"));
57102
57103      if (sections.length === 0) {
57104        sections = [this.el];
57105      }
57106
57107      sections.forEach(function (section, index) {
57108        var id = typeof section.dataset[_this7.name + 'Id'] === 'string' ? section.dataset[_this7.name + 'Id'] : 'section' + index;
57109        var sectionBCR = section.getBoundingClientRect();
57110        var offset = {
57111          x: sectionBCR.left - window.innerWidth * 1.5 - getTranslate(section).x,
57112          y: sectionBCR.top - window.innerHeight * 1.5 - getTranslate(section).y
57113        };
57114        var limit = {
57115          x: offset.x + sectionBCR.width + window.innerWidth * 2,
57116          y: offset.y + sectionBCR.height + window.innerHeight * 2
57117        };
57118        var persistent = typeof section.dataset[_this7.name + 'Persistent'] === 'string';
57119        section.setAttribute('data-scroll-section-id', id);
57120        var mappedSection = {
57121          el: section,
57122          offset: offset,
57123          limit: limit,
57124          inView: false,
57125          persistent: persistent,
57126          id: id
57127        };
57128        _this7.sections[id] = mappedSection;
57129      });
57130    }
57131  }, {
57132    key: "transform",
57133    value: function transform(element, x, y, delay) {
57134      var transform;
57135
57136      if (!delay) {
57137        transform = "matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,".concat(x, ",").concat(y, ",0,1)");
57138      } else {
57139        var start = getTranslate(element);
57140        var lerpX = lerp(start.x, x, delay);
57141        var lerpY = lerp(start.y, y, delay);
57142        transform = "matrix3d(1,0,0.00,0,0.00,1,0.00,0,0,0,1,0,".concat(lerpX, ",").concat(lerpY, ",0,1)");
57143      }
57144
57145      element.style.webkitTransform = transform;
57146      element.style.msTransform = transform;
57147      element.style.transform = transform;
57148    }
57149  }, {
57150    key: "transformElements",
57151    value: function transformElements(isForced) {
57152      var _this8 = this;
57153
57154      var setAllElements = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
57155      var scrollRight = this.instance.scroll.x + this.windowWidth;
57156      var scrollBottom = this.instance.scroll.y + this.windowHeight;
57157      var scrollMiddle = {
57158        x: this.instance.scroll.x + this.windowMiddle.x,
57159        y: this.instance.scroll.y + this.windowMiddle.y
57160      };
57161      Object.entries(this.parallaxElements).forEach(function (_ref5) {
57162        var _ref6 = _slicedToArray(_ref5, 2),
57163            i = _ref6[0],
57164            current = _ref6[1];
57165
57166        var transformDistance = false;
57167
57168        if (isForced) {
57169          transformDistance = 0;
57170        }
57171
57172        if (current.inView || setAllElements) {
57173          switch (current.position) {
57174            case 'top':
57175              transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;
57176              break;
57177
57178            case 'elementTop':
57179              transformDistance = (scrollBottom - current.top) * -current.speed;
57180              break;
57181
57182            case 'bottom':
57183              transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollBottom + _this8.windowHeight) * current.speed;
57184              break;
57185
57186            case 'left':
57187              transformDistance = _this8.instance.scroll[_this8.directionAxis] * -current.speed;
57188              break;
57189
57190            case 'elementLeft':
57191              transformDistance = (scrollRight - current.left) * -current.speed;
57192              break;
57193
57194            case 'right':
57195              transformDistance = (_this8.instance.limit[_this8.directionAxis] - scrollRight + _this8.windowHeight) * current.speed;
57196              break;
57197
57198            default:
57199              transformDistance = (scrollMiddle[_this8.directionAxis] - current.middle[_this8.directionAxis]) * -current.speed;
57200              break;
57201          }
57202        }
57203
57204        if (current.sticky) {
57205          if (current.inView) {
57206            if (_this8.direction === 'horizontal') {
57207              transformDistance = _this8.instance.scroll.x - current.left + window.innerWidth;
57208            } else {
57209              transformDistance = _this8.instance.scroll.y - current.top + window.innerHeight;
57210            }
57211          } else {
57212            if (_this8.direction === 'horizontal') {
57213              if (_this8.instance.scroll.x < current.left - window.innerWidth && _this8.instance.scroll.x < current.left - window.innerWidth / 2) {
57214                transformDistance = 0;
57215              } else if (_this8.instance.scroll.x > current.right && _this8.instance.scroll.x > current.right + 100) {
57216                transformDistance = current.right - current.left + window.innerWidth;
57217              } else {
57218                transformDistance = false;
57219              }
57220            } else {
57221              if (_this8.instance.scroll.y < current.top - window.innerHeight && _this8.instance.scroll.y < current.top - window.innerHeight / 2) {
57222                transformDistance = 0;
57223              } else if (_this8.instance.scroll.y > current.bottom && _this8.instance.scroll.y > current.bottom + 100) {
57224                transformDistance = current.bottom - current.top + window.innerHeight;
57225              } else {
57226                transformDistance = false;
57227              }
57228            }
57229          }
57230        }
57231
57232        if (transformDistance !== false) {
57233          if (current.direction === 'horizontal' || _this8.direction === 'horizontal' && current.direction !== 'vertical') {
57234            _this8.transform(current.el, transformDistance, 0, isForced ? false : current.delay);
57235          } else {
57236            _this8.transform(current.el, 0, transformDistance, isForced ? false : current.delay);
57237          }
57238        }
57239      });
57240    }
57241    /**
57242     * Scroll to a desired target.
57243     *
57244     * @param  Available options :
57245     *          target {node, string, "top", "bottom", int} - The DOM element we want to scroll to
57246     *          options {object} - Options object for additionnal settings.
57247     * @return {void}
57248     */
57249
57250  }, {
57251    key: "scrollTo",
57252    value: function scrollTo(target) {
57253      var _this9 = this;
57254
57255      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
57256      // Parse options
57257      var offset = parseInt(options.offset) || 0; // An offset to apply on top of given `target` or `sourceElem`'s target
57258
57259      var duration = !isNaN(parseInt(options.duration)) ? parseInt(options.duration) : 1000; // Duration of the scroll animation in milliseconds
57260
57261      var easing = options.easing || [0.25, 0.0, 0.35, 1.0]; // An array of 4 floats between 0 and 1 defining the bezier curve for the animation's easing. See http://greweb.me/bezier-easing-editor/example/
57262
57263      var disableLerp = options.disableLerp ? true : false; // Lerp effect won't be applied if set to true
57264
57265      var callback = options.callback ? options.callback : false; // function called when scrollTo completes (note that it won't wait for lerp to stabilize)
57266
57267      easing = src$1.apply(void 0, _toConsumableArray(easing));
57268
57269      if (typeof target === 'string') {
57270        // Selector or boundaries
57271        if (target === 'top') {
57272          target = 0;
57273        } else if (target === 'bottom') {
57274          target = this.instance.limit.y;
57275        } else if (target === 'left') {
57276          target = 0;
57277        } else if (target === 'right') {
57278          target = this.instance.limit.x;
57279        } else {
57280          target = document.querySelector(target); // If the query fails, abort
57281
57282          if (!target) {
57283            return;
57284          }
57285        }
57286      } else if (typeof target === 'number') {
57287        // Absolute coordinate
57288        target = parseInt(target);
57289      } else if (target && target.tagName) ; else {
57290        console.warn('`target` parameter is not valid');
57291        return;
57292      } // We have a target that is not a coordinate yet, get it
57293
57294
57295      if (typeof target !== 'number') {
57296        // Verify the given target belongs to this scroll scope
57297        var targetInScope = getParents(target).includes(this.el);
57298
57299        if (!targetInScope) {
57300          // If the target isn't inside our main element, abort any action
57301          return;
57302        } // Get target offset from top
57303
57304
57305        var targetBCR = target.getBoundingClientRect();
57306        var offsetTop = targetBCR.top;
57307        var offsetLeft = targetBCR.left; // Try and find the target's parent section
57308
57309        var targetParents = getParents(target);
57310        var parentSection = targetParents.find(function (candidate) {
57311          return Object.entries(_this9.sections) // Get sections associative array as a regular array
57312          .map(function (_ref7) {
57313            var _ref8 = _slicedToArray(_ref7, 2),
57314                key = _ref8[0],
57315                section = _ref8[1];
57316
57317            return section;
57318          }) // map to section only (we dont need the key here)
57319          .find(function (section) {
57320            return section.el == candidate;
57321          }); // finally find the section that matches the candidate
57322        });
57323        var parentSectionOffset = 0;
57324
57325        if (parentSection) {
57326          parentSectionOffset = getTranslate(parentSection)[this.directionAxis]; // We got a parent section, store it's current offset to remove it later
57327        } else {
57328          // if no parent section is found we need to use instance scroll directly
57329          parentSectionOffset = -this.instance.scroll[this.directionAxis];
57330        } // Final value of scroll destination : offsetTop + (optional offset given in options) - (parent's section translate)
57331
57332
57333        if (this.direction === 'horizontal') {
57334          offset = offsetLeft + offset - parentSectionOffset;
57335        } else {
57336          offset = offsetTop + offset - parentSectionOffset;
57337        }
57338      } else {
57339        offset = target + offset;
57340      } // Actual scrollto
57341      // ==========================================================================
57342      // Setup
57343
57344
57345      var scrollStart = parseFloat(this.instance.delta[this.directionAxis]);
57346      var scrollTarget = Math.max(0, Math.min(offset, this.instance.limit[this.directionAxis])); // Make sure our target is in the scroll boundaries
57347
57348      var scrollDiff = scrollTarget - scrollStart;
57349
57350      var render = function render(p) {
57351        if (disableLerp) {
57352          if (_this9.direction === 'horizontal') {
57353            _this9.setScroll(scrollStart + scrollDiff * p, _this9.instance.delta.y);
57354          } else {
57355            _this9.setScroll(_this9.instance.delta.x, scrollStart + scrollDiff * p);
57356          }
57357        } else {
57358          _this9.instance.delta[_this9.directionAxis] = scrollStart + scrollDiff * p;
57359        }
57360      }; // Prepare the scroll
57361
57362
57363      this.animatingScroll = true; // This boolean allows to prevent `checkScroll()` from calling `stopScrolling` when the animation is slow (i.e. at the beginning of an EaseIn)
57364
57365      this.stopScrolling(); // Stop any movement, allows to kill any other `scrollTo` still happening
57366
57367      this.startScrolling(); // Restart the scroll
57368      // Start the animation loop
57369
57370      var start = Date.now();
57371
57372      var loop = function loop() {
57373        var p = (Date.now() - start) / duration; // Animation progress
57374
57375        if (p > 1) {
57376          // Animation ends
57377          render(1);
57378          _this9.animatingScroll = false;
57379          if (duration == 0) _this9.update();
57380          if (callback) callback();
57381        } else {
57382          _this9.scrollToRaf = requestAnimationFrame(loop);
57383          render(easing(p));
57384        }
57385      };
57386
57387      loop();
57388    }
57389  }, {
57390    key: "update",
57391    value: function update() {
57392      this.setScrollLimit();
57393      this.addSections();
57394      this.addElements();
57395      this.detectElements();
57396      this.updateScroll();
57397      this.transformElements(true);
57398      this.reinitScrollBar();
57399      this.checkScroll(true);
57400    }
57401  }, {
57402    key: "startScroll",
57403    value: function startScroll() {
57404      this.stop = false;
57405    }
57406  }, {
57407    key: "stopScroll",
57408    value: function stopScroll() {
57409      this.stop = true;
57410    }
57411  }, {
57412    key: "setScroll",
57413    value: function setScroll(x, y) {
57414      this.instance = _objectSpread2(_objectSpread2({}, this.instance), {}, {
57415        scroll: {
57416          x: x,
57417          y: y
57418        },
57419        delta: {
57420          x: x,
57421          y: y
57422        },
57423        speed: 0
57424      });
57425    }
57426  }, {
57427    key: "destroy",
57428    value: function destroy() {
57429      _get(_getPrototypeOf(_default.prototype), "destroy", this).call(this);
57430
57431      this.stopScrolling();
57432      this.html.classList.remove(this.smoothClass);
57433      this.vs.destroy();
57434      this.destroyScrollBar();
57435      window.removeEventListener('keydown', this.checkKey, false);
57436    }
57437  }]);
57438
57439  return _default;
57440}(_default);
57441
57442var Smooth = /*#__PURE__*/function () {
57443  function Smooth() {
57444    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
57445
57446    _classCallCheck(this, Smooth);
57447
57448    this.options = options; // Override default options with given ones
57449
57450    Object.assign(this, defaults, options);
57451    this.smartphone = defaults.smartphone;
57452    if (options.smartphone) Object.assign(this.smartphone, options.smartphone);
57453    this.tablet = defaults.tablet;
57454    if (options.tablet) Object.assign(this.tablet, options.tablet);
57455    if (!this.smooth && this.direction == 'horizontal') console.warn('🚨 `smooth:false` & `horizontal` direction are not yet compatible');
57456    if (!this.tablet.smooth && this.tablet.direction == 'horizontal') console.warn('🚨 `smooth:false` & `horizontal` direction are not yet compatible (tablet)');
57457    if (!this.smartphone.smooth && this.smartphone.direction == 'horizontal') console.warn('🚨 `smooth:false` & `horizontal` direction are not yet compatible (smartphone)');
57458    this.init();
57459  }
57460
57461  _createClass(Smooth, [{
57462    key: "init",
57463    value: function init() {
57464      this.options.isMobile = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 || window.innerWidth < this.tablet.breakpoint;
57465      this.options.isTablet = this.options.isMobile && window.innerWidth >= this.tablet.breakpoint;
57466
57467      if (this.smooth && !this.options.isMobile || this.tablet.smooth && this.options.isTablet || this.smartphone.smooth && this.options.isMobile && !this.options.isTablet) {
57468        this.scroll = new _default$2(this.options);
57469      } else {
57470        this.scroll = new _default$1(this.options);
57471      }
57472
57473      this.scroll.init();
57474
57475      if (window.location.hash) {
57476        // Get the hash without the '#' and find the matching element
57477        var id = window.location.hash.slice(1, window.location.hash.length);
57478        var target = document.getElementById(id); // If found, scroll to the element
57479
57480        if (target) this.scroll.scrollTo(target);
57481      }
57482    }
57483  }, {
57484    key: "update",
57485    value: function update() {
57486      this.scroll.update();
57487    }
57488  }, {
57489    key: "start",
57490    value: function start() {
57491      this.scroll.startScroll();
57492    }
57493  }, {
57494    key: "stop",
57495    value: function stop() {
57496      this.scroll.stopScroll();
57497    }
57498  }, {
57499    key: "scrollTo",
57500    value: function scrollTo(target, options) {
57501      this.scroll.scrollTo(target, options);
57502    }
57503  }, {
57504    key: "setScroll",
57505    value: function setScroll(x, y) {
57506      this.scroll.setScroll(x, y);
57507    }
57508  }, {
57509    key: "on",
57510    value: function on(event, func) {
57511      this.scroll.setEvents(event, func);
57512    }
57513  }, {
57514    key: "off",
57515    value: function off(event, func) {
57516      this.scroll.unsetEvents(event, func);
57517    }
57518  }, {
57519    key: "destroy",
57520    value: function destroy() {
57521      this.scroll.destroy();
57522    }
57523  }]);
57524
57525  return Smooth;
57526}();
57527
57528var Native = /*#__PURE__*/function () {
57529  function Native() {
57530    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
57531
57532    _classCallCheck(this, Native);
57533
57534    this.options = options; // Override default options with given ones
57535
57536    Object.assign(this, defaults, options);
57537    this.smartphone = defaults.smartphone;
57538    if (options.smartphone) Object.assign(this.smartphone, options.smartphone);
57539    this.tablet = defaults.tablet;
57540    if (options.tablet) Object.assign(this.tablet, options.tablet);
57541    this.init();
57542  }
57543
57544  _createClass(Native, [{
57545    key: "init",
57546    value: function init() {
57547      this.scroll = new _default$1(this.options);
57548      this.scroll.init();
57549
57550      if (window.location.hash) {
57551        // Get the hash without the '#' and find the matching element
57552        var id = window.location.hash.slice(1, window.location.hash.length);
57553        var target = document.getElementById(id); // If found, scroll to the element
57554
57555        if (target) this.scroll.scrollTo(target);
57556      }
57557    }
57558  }, {
57559    key: "update",
57560    value: function update() {
57561      this.scroll.update();
57562    }
57563  }, {
57564    key: "start",
57565    value: function start() {
57566      this.scroll.startScroll();
57567    }
57568  }, {
57569    key: "stop",
57570    value: function stop() {
57571      this.scroll.stopScroll();
57572    }
57573  }, {
57574    key: "scrollTo",
57575    value: function scrollTo(target, options) {
57576      this.scroll.scrollTo(target, options);
57577    }
57578  }, {
57579    key: "setScroll",
57580    value: function setScroll(x, y) {
57581      this.scroll.setScroll(x, y);
57582    }
57583  }, {
57584    key: "on",
57585    value: function on(event, func) {
57586      this.scroll.setEvents(event, func);
57587    }
57588  }, {
57589    key: "off",
57590    value: function off(event, func) {
57591      this.scroll.unsetEvents(event, func);
57592    }
57593  }, {
57594    key: "destroy",
57595    value: function destroy() {
57596      this.scroll.destroy();
57597    }
57598  }]);
57599
57600  return Native;
57601}();
57602
57603/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Smooth);
57604
57605
57606
57607/***/ }),
57608
vendor: 2,898 bytes, lines 57609-57698
57609/***/ "./node_modules/moment/locale/af.js":
57610/*!******************************************!*\
57611  !*** ./node_modules/moment/locale/af.js ***!
57612  \******************************************/
57613/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
57614
57615//! moment.js locale configuration
57616//! locale : Afrikaans [af]
57617//! author : Werner Mollentze : https://github.com/wernerm
57618
57619;(function (global, factory) {
57620    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
57621   0
57622}(this, (function (moment) { 'use strict';
57623
57624    //! moment.js locale configuration
57625
57626    var af = moment.defineLocale('af', {
57627        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
57628            '_'
57629        ),
57630        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
57631        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
57632            '_'
57633        ),
57634        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
57635        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
57636        meridiemParse: /vm|nm/i,
57637        isPM: function (input) {
57638            return /^nm$/i.test(input);
57639        },
57640        meridiem: function (hours, minutes, isLower) {
57641            if (hours < 12) {
57642                return isLower ? 'vm' : 'VM';
57643            } else {
57644                return isLower ? 'nm' : 'NM';
57645            }
57646        },
57647        longDateFormat: {
57648            LT: 'HH:mm',
57649            LTS: 'HH:mm:ss',
57650            L: 'DD/MM/YYYY',
57651            LL: 'D MMMM YYYY',
57652            LLL: 'D MMMM YYYY HH:mm',
57653            LLLL: 'dddd, D MMMM YYYY HH:mm',
57654        },
57655        calendar: {
57656            sameDay: '[Vandag om] LT',
57657            nextDay: '[Môre om] LT',
57658            nextWeek: 'dddd [om] LT',
57659            lastDay: '[Gister om] LT',
57660            lastWeek: '[Laas] dddd [om] LT',
57661            sameElse: 'L',
57662        },
57663        relativeTime: {
57664            future: 'oor %s',
57665            past: '%s gelede',
57666            s: "'n paar sekondes",
57667            ss: '%d sekondes',
57668            m: "'n minuut",
57669            mm: '%d minute',
57670            h: "'n uur",
57671            hh: '%d ure',
57672            d: "'n dag",
57673            dd: '%d dae',
57674            M: "'n maand",
57675            MM: '%d maande',
57676            y: "'n jaar",
57677            yy: '%d jaar',
57678        },
57679        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
57680        ordinal: function (number) {
57681            return (
57682                number +
57683                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
57684            ); // Thanks to Joris Röling : https://github.com/jjupiter
57685        },
57686        week: {
57687            dow: 1, // Maandag is die eerste dag van die week.
57688            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
57689        },
57690    });
57691
57692    return af;
57693
57694})));
57695
57696
57697/***/ }),
57698
vendor: 5,574 bytes, lines 57699-57873
57699/***/ "./node_modules/moment/locale/ar-dz.js":
57700/*!*********************************************!*\
57701  !*** ./node_modules/moment/locale/ar-dz.js ***!
57702  \*********************************************/
57703/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
57704
57705//! moment.js locale configuration
57706//! locale : Arabic (Algeria) [ar-dz]
57707//! author : Amine Roukh: https://github.com/Amine27
57708//! author : Abdel Said: https://github.com/abdelsaid
57709//! author : Ahmed Elkhatib
57710//! author : forabi https://github.com/forabi
57711//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem
57712
57713;(function (global, factory) {
57714    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
57715   0
57716}(this, (function (moment) { 'use strict';
57717
57718    //! moment.js locale configuration
57719
57720    var pluralForm = function (n) {
57721            return n === 0
57722                ? 0
57723                : n === 1
57724                  ? 1
57725                  : n === 2
57726                    ? 2
57727                    : n % 100 >= 3 && n % 100 <= 10
57728                      ? 3
57729                      : n % 100 >= 11
57730                        ? 4
57731                        : 5;
57732        },
57733        plurals = {
57734            s: [
57735                'أقل من ثانية',
57736                'ثانية واحدة',
57737                ['ثانيتان', 'ثانيتين'],
57738                '%d ثوان',
57739                '%d ثانية',
57740                '%d ثانية',
57741            ],
57742            m: [
57743                'أقل من دقيقة',
57744                'دقيقة واحدة',
57745                ['دقيقتان', 'دقيقتين'],
57746                '%d دقائق',
57747                '%d دقيقة',
57748                '%d دقيقة',
57749            ],
57750            h: [
57751                'أقل من ساعة',
57752                'ساعة واحدة',
57753                ['ساعتان', 'ساعتين'],
57754                '%d ساعات',
57755                '%d ساعة',
57756                '%d ساعة',
57757            ],
57758            d: [
57759                'أقل من يوم',
57760                'يوم واحد',
57761                ['يومان', 'يومين'],
57762                '%d أيام',
57763                '%d يومًا',
57764                '%d يوم',
57765            ],
57766            M: [
57767                'أقل من شهر',
57768                'شهر واحد',
57769                ['شهران', 'شهرين'],
57770                '%d أشهر',
57771                '%d شهرا',
57772                '%d شهر',
57773            ],
57774            y: [
57775                'أقل من عام',
57776                'عام واحد',
57777                ['عامان', 'عامين'],
57778                '%d أعوام',
57779                '%d عامًا',
57780                '%d عام',
57781            ],
57782        },
57783        pluralize = function (u) {
57784            return function (number, withoutSuffix, string, isFuture) {
57785                var f = pluralForm(number),
57786                    str = plurals[u][pluralForm(number)];
57787                if (f === 2) {
57788                    str = str[withoutSuffix ? 0 : 1];
57789                }
57790                return str.replace(/%d/i, number);
57791            };
57792        },
57793        months = [
57794            'جانفي',
57795            'فيفري',
57796            'مارس',
57797            'أفريل',
57798            'ماي',
57799            'جوان',
57800            'جويلية',
57801            'أوت',
57802            'سبتمبر',
57803            'أكتوبر',
57804            'نوفمبر',
57805            'ديسمبر',
57806        ];
57807
57808    var arDz = moment.defineLocale('ar-dz', {
57809        months: months,
57810        monthsShort: months,
57811        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
57812        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
57813        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
57814        weekdaysParseExact: true,
57815        longDateFormat: {
57816            LT: 'HH:mm',
57817            LTS: 'HH:mm:ss',
57818            L: 'D/\u200FM/\u200FYYYY',
57819            LL: 'D MMMM YYYY',
57820            LLL: 'D MMMM YYYY HH:mm',
57821            LLLL: 'dddd D MMMM YYYY HH:mm',
57822        },
57823        meridiemParse: /ص|م/,
57824        isPM: function (input) {
57825            return 'م' === input;
57826        },
57827        meridiem: function (hour, minute, isLower) {
57828            if (hour < 12) {
57829                return 'ص';
57830            } else {
57831                return 'م';
57832            }
57833        },
57834        calendar: {
57835            sameDay: '[اليوم عند الساعة] LT',
57836            nextDay: '[غدًا عند الساعة] LT',
57837            nextWeek: 'dddd [عند الساعة] LT',
57838            lastDay: '[أمس عند الساعة] LT',
57839            lastWeek: 'dddd [عند الساعة] LT',
57840            sameElse: 'L',
57841        },
57842        relativeTime: {
57843            future: 'بعد %s',
57844            past: 'منذ %s',
57845            s: pluralize('s'),
57846            ss: pluralize('s'),
57847            m: pluralize('m'),
57848            mm: pluralize('m'),
57849            h: pluralize('h'),
57850            hh: pluralize('h'),
57851            d: pluralize('d'),
57852            dd: pluralize('d'),
57853            M: pluralize('M'),
57854            MM: pluralize('M'),
57855            y: pluralize('y'),
57856            yy: pluralize('y'),
57857        },
57858        postformat: function (string) {
57859            return string.replace(/,/g, '،');
57860        },
57861        week: {
57862            dow: 0, // Sunday is the first day of the week.
57863            doy: 4, // The week that contains Jan 4th is the first week of the year.
57864        },
57865    });
57866
57867    return arDz;
57868
57869})));
57870
57871
57872/***/ }),
57873
vendor: 2,635 bytes, lines 57874-57947
57874/***/ "./node_modules/moment/locale/ar-kw.js":
57875/*!*********************************************!*\
57876  !*** ./node_modules/moment/locale/ar-kw.js ***!
57877  \*********************************************/
57878/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
57879
57880//! moment.js locale configuration
57881//! locale : Arabic (Kuwait) [ar-kw]
57882//! author : Nusret Parlak: https://github.com/nusretparlak
57883
57884;(function (global, factory) {
57885    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
57886   0
57887}(this, (function (moment) { 'use strict';
57888
57889    //! moment.js locale configuration
57890
57891    var arKw = moment.defineLocale('ar-kw', {
57892        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
57893            '_'
57894        ),
57895        monthsShort:
57896            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
57897                '_'
57898            ),
57899        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
57900        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
57901        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
57902        weekdaysParseExact: true,
57903        longDateFormat: {
57904            LT: 'HH:mm',
57905            LTS: 'HH:mm:ss',
57906            L: 'DD/MM/YYYY',
57907            LL: 'D MMMM YYYY',
57908            LLL: 'D MMMM YYYY HH:mm',
57909            LLLL: 'dddd D MMMM YYYY HH:mm',
57910        },
57911        calendar: {
57912            sameDay: '[اليوم على الساعة] LT',
57913            nextDay: '[غدا على الساعة] LT',
57914            nextWeek: 'dddd [على الساعة] LT',
57915            lastDay: '[أمس على الساعة] LT',
57916            lastWeek: 'dddd [على الساعة] LT',
57917            sameElse: 'L',
57918        },
57919        relativeTime: {
57920            future: 'في %s',
57921            past: 'منذ %s',
57922            s: 'ثوان',
57923            ss: '%d ثانية',
57924            m: 'دقيقة',
57925            mm: '%d دقائق',
57926            h: 'ساعة',
57927            hh: '%d ساعات',
57928            d: 'يوم',
57929            dd: '%d أيام',
57930            M: 'شهر',
57931            MM: '%d أشهر',
57932            y: 'سنة',
57933            yy: '%d سنوات',
57934        },
57935        week: {
57936            dow: 0, // Sunday is the first day of the week.
57937            doy: 12, // The week that contains Jan 12th is the first week of the year.
57938        },
57939    });
57940
57941    return arKw;
57942
57943})));
57944
57945
57946/***/ }),
57947
vendor: 5,849 bytes, lines 57948-58137
57948/***/ "./node_modules/moment/locale/ar-ly.js":
57949/*!*********************************************!*\
57950  !*** ./node_modules/moment/locale/ar-ly.js ***!
57951  \*********************************************/
57952/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
57953
57954//! moment.js locale configuration
57955//! locale : Arabic (Libya) [ar-ly]
57956//! author : Ali Hmer: https://github.com/kikoanis
57957
57958;(function (global, factory) {
57959    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
57960   0
57961}(this, (function (moment) { 'use strict';
57962
57963    //! moment.js locale configuration
57964
57965    var symbolMap = {
57966            1: '1',
57967            2: '2',
57968            3: '3',
57969            4: '4',
57970            5: '5',
57971            6: '6',
57972            7: '7',
57973            8: '8',
57974            9: '9',
57975            0: '0',
57976        },
57977        pluralForm = function (n) {
57978            return n === 0
57979                ? 0
57980                : n === 1
57981                  ? 1
57982                  : n === 2
57983                    ? 2
57984                    : n % 100 >= 3 && n % 100 <= 10
57985                      ? 3
57986                      : n % 100 >= 11
57987                        ? 4
57988                        : 5;
57989        },
57990        plurals = {
57991            s: [
57992                'أقل من ثانية',
57993                'ثانية واحدة',
57994                ['ثانيتان', 'ثانيتين'],
57995                '%d ثوان',
57996                '%d ثانية',
57997                '%d ثانية',
57998            ],
57999            m: [
58000                'أقل من دقيقة',
58001                'دقيقة واحدة',
58002                ['دقيقتان', 'دقيقتين'],
58003                '%d دقائق',
58004                '%d دقيقة',
58005                '%d دقيقة',
58006            ],
58007            h: [
58008                'أقل من ساعة',
58009                'ساعة واحدة',
58010                ['ساعتان', 'ساعتين'],
58011                '%d ساعات',
58012                '%d ساعة',
58013                '%d ساعة',
58014            ],
58015            d: [
58016                'أقل من يوم',
58017                'يوم واحد',
58018                ['يومان', 'يومين'],
58019                '%d أيام',
58020                '%d يومًا',
58021                '%d يوم',
58022            ],
58023            M: [
58024                'أقل من شهر',
58025                'شهر واحد',
58026                ['شهران', 'شهرين'],
58027                '%d أشهر',
58028                '%d شهرا',
58029                '%d شهر',
58030            ],
58031            y: [
58032                'أقل من عام',
58033                'عام واحد',
58034                ['عامان', 'عامين'],
58035                '%d أعوام',
58036                '%d عامًا',
58037                '%d عام',
58038            ],
58039        },
58040        pluralize = function (u) {
58041            return function (number, withoutSuffix, string, isFuture) {
58042                var f = pluralForm(number),
58043                    str = plurals[u][pluralForm(number)];
58044                if (f === 2) {
58045                    str = str[withoutSuffix ? 0 : 1];
58046                }
58047                return str.replace(/%d/i, number);
58048            };
58049        },
58050        months = [
58051            'يناير',
58052            'فبراير',
58053            'مارس',
58054            'أبريل',
58055            'مايو',
58056            'يونيو',
58057            'يوليو',
58058            'أغسطس',
58059            'سبتمبر',
58060            'أكتوبر',
58061            'نوفمبر',
58062            'ديسمبر',
58063        ];
58064
58065    var arLy = moment.defineLocale('ar-ly', {
58066        months: months,
58067        monthsShort: months,
58068        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
58069        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
58070        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
58071        weekdaysParseExact: true,
58072        longDateFormat: {
58073            LT: 'HH:mm',
58074            LTS: 'HH:mm:ss',
58075            L: 'D/\u200FM/\u200FYYYY',
58076            LL: 'D MMMM YYYY',
58077            LLL: 'D MMMM YYYY HH:mm',
58078            LLLL: 'dddd D MMMM YYYY HH:mm',
58079        },
58080        meridiemParse: /ص|م/,
58081        isPM: function (input) {
58082            return 'م' === input;
58083        },
58084        meridiem: function (hour, minute, isLower) {
58085            if (hour < 12) {
58086                return 'ص';
58087            } else {
58088                return 'م';
58089            }
58090        },
58091        calendar: {
58092            sameDay: '[اليوم عند الساعة] LT',
58093            nextDay: '[غدًا عند الساعة] LT',
58094            nextWeek: 'dddd [عند الساعة] LT',
58095            lastDay: '[أمس عند الساعة] LT',
58096            lastWeek: 'dddd [عند الساعة] LT',
58097            sameElse: 'L',
58098        },
58099        relativeTime: {
58100            future: 'بعد %s',
58101            past: 'منذ %s',
58102            s: pluralize('s'),
58103            ss: pluralize('s'),
58104            m: pluralize('m'),
58105            mm: pluralize('m'),
58106            h: pluralize('h'),
58107            hh: pluralize('h'),
58108            d: pluralize('d'),
58109            dd: pluralize('d'),
58110            M: pluralize('M'),
58111            MM: pluralize('M'),
58112            y: pluralize('y'),
58113            yy: pluralize('y'),
58114        },
58115        preparse: function (string) {
58116            return string.replace(/،/g, ',');
58117        },
58118        postformat: function (string) {
58119            return string
58120                .replace(/\d/g, function (match) {
58121                    return symbolMap[match];
58122                })
58123                .replace(/,/g, '،');
58124        },
58125        week: {
58126            dow: 6, // Saturday is the first day of the week.
58127            doy: 12, // The week that contains Jan 12th is the first week of the year.
58128        },
58129    });
58130
58131    return arLy;
58132
58133})));
58134
58135
58136/***/ }),
58137
vendor: 2,690 bytes, lines 58138-58212
58138/***/ "./node_modules/moment/locale/ar-ma.js":
58139/*!*********************************************!*\
58140  !*** ./node_modules/moment/locale/ar-ma.js ***!
58141  \*********************************************/
58142/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
58143
58144//! moment.js locale configuration
58145//! locale : Arabic (Morocco) [ar-ma]
58146//! author : ElFadili Yassine : https://github.com/ElFadiliY
58147//! author : Abdel Said : https://github.com/abdelsaid
58148
58149;(function (global, factory) {
58150    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
58151   0
58152}(this, (function (moment) { 'use strict';
58153
58154    //! moment.js locale configuration
58155
58156    var arMa = moment.defineLocale('ar-ma', {
58157        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
58158            '_'
58159        ),
58160        monthsShort:
58161            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
58162                '_'
58163            ),
58164        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
58165        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
58166        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
58167        weekdaysParseExact: true,
58168        longDateFormat: {
58169            LT: 'HH:mm',
58170            LTS: 'HH:mm:ss',
58171            L: 'DD/MM/YYYY',
58172            LL: 'D MMMM YYYY',
58173            LLL: 'D MMMM YYYY HH:mm',
58174            LLLL: 'dddd D MMMM YYYY HH:mm',
58175        },
58176        calendar: {
58177            sameDay: '[اليوم على الساعة] LT',
58178            nextDay: '[غدا على الساعة] LT',
58179            nextWeek: 'dddd [على الساعة] LT',
58180            lastDay: '[أمس على الساعة] LT',
58181            lastWeek: 'dddd [على الساعة] LT',
58182            sameElse: 'L',
58183        },
58184        relativeTime: {
58185            future: 'في %s',
58186            past: 'منذ %s',
58187            s: 'ثوان',
58188            ss: '%d ثانية',
58189            m: 'دقيقة',
58190            mm: '%d دقائق',
58191            h: 'ساعة',
58192            hh: '%d ساعات',
58193            d: 'يوم',
58194            dd: '%d أيام',
58195            M: 'شهر',
58196            MM: '%d أشهر',
58197            y: 'سنة',
58198            yy: '%d سنوات',
58199        },
58200        week: {
58201            dow: 1, // Monday is the first day of the week.
58202            doy: 4, // The week that contains Jan 4th is the first week of the year.
58203        },
58204    });
58205
58206    return arMa;
58207
58208})));
58209
58210
58211/***/ }),
58212
vendor: 4,259 bytes, lines 58213-58343
58213/***/ "./node_modules/moment/locale/ar-ps.js":
58214/*!*********************************************!*\
58215  !*** ./node_modules/moment/locale/ar-ps.js ***!
58216  \*********************************************/
58217/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
58218
58219//! moment.js locale configuration
58220//! locale : Arabic (Palestine) [ar-ps]
58221//! author : Majd Al-Shihabi : https://github.com/majdal
58222
58223;(function (global, factory) {
58224    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
58225   0
58226}(this, (function (moment) { 'use strict';
58227
58228    //! moment.js locale configuration
58229
58230    var symbolMap = {
58231            1: 'Ù¡',
58232            2: 'Ù¢',
58233            3: 'Ù£',
58234            4: 'Ù¤',
58235            5: 'Ù¥',
58236            6: 'Ù¦',
58237            7: 'Ù§',
58238            8: 'Ù¨',
58239            9: 'Ù©',
58240            0: 'Ù ',
58241        },
58242        numberMap = {
58243            'Ù¡': '1',
58244            'Ù¢': '2',
58245            'Ù£': '3',
58246            'Ù¤': '4',
58247            'Ù¥': '5',
58248            'Ù¦': '6',
58249            'Ù§': '7',
58250            'Ù¨': '8',
58251            'Ù©': '9',
58252            'Ù ': '0',
58253        };
58254
58255    var arPs = moment.defineLocale('ar-ps', {
58256        months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(
58257            '_'
58258        ),
58259        monthsShort:
58260            'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),
58261        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
58262        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
58263        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
58264        weekdaysParseExact: true,
58265        longDateFormat: {
58266            LT: 'HH:mm',
58267            LTS: 'HH:mm:ss',
58268            L: 'DD/MM/YYYY',
58269            LL: 'D MMMM YYYY',
58270            LLL: 'D MMMM YYYY HH:mm',
58271            LLLL: 'dddd D MMMM YYYY HH:mm',
58272        },
58273        meridiemParse: /ص|م/,
58274        isPM: function (input) {
58275            return 'م' === input;
58276        },
58277        meridiem: function (hour, minute, isLower) {
58278            if (hour < 12) {
58279                return 'ص';
58280            } else {
58281                return 'م';
58282            }
58283        },
58284        calendar: {
58285            sameDay: '[اليوم على الساعة] LT',
58286            nextDay: '[غدا على الساعة] LT',
58287            nextWeek: 'dddd [على الساعة] LT',
58288            lastDay: '[أمس على الساعة] LT',
58289            lastWeek: 'dddd [على الساعة] LT',
58290            sameElse: 'L',
58291        },
58292        relativeTime: {
58293            future: 'في %s',
58294            past: 'منذ %s',
58295            s: 'ثوان',
58296            ss: '%d ثانية',
58297            m: 'دقيقة',
58298            mm: '%d دقائق',
58299            h: 'ساعة',
58300            hh: '%d ساعات',
58301            d: 'يوم',
58302            dd: '%d أيام',
58303            M: 'شهر',
58304            MM: '%d أشهر',
58305            y: 'سنة',
58306            yy: '%d سنوات',
58307        },
58308        preparse: function (string) {
58309            return string
58310                .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {
58311                    return numberMap[match];
58312                })
58313                .split('') // reversed since negative lookbehind not supported everywhere
58314                .reverse()
58315                .join('')
58316                .replace(/[١٢](?![\u062a\u0643])/g, function (match) {
58317                    return numberMap[match];
58318                })
58319                .split('')
58320                .reverse()
58321                .join('')
58322                .replace(/،/g, ',');
58323        },
58324        postformat: function (string) {
58325            return string
58326                .replace(/\d/g, function (match) {
58327                    return symbolMap[match];
58328                })
58329                .replace(/,/g, '،');
58330        },
58331        week: {
58332            dow: 0, // Sunday is the first day of the week.
58333            doy: 6, // The week that contains Jan 6th is the first week of the year.
58334        },
58335    });
58336
58337    return arPs;
58338
58339})));
58340
58341
58342/***/ }),
58343
vendor: 3,939 bytes, lines 58344-58467
58344/***/ "./node_modules/moment/locale/ar-sa.js":
58345/*!*********************************************!*\
58346  !*** ./node_modules/moment/locale/ar-sa.js ***!
58347  \*********************************************/
58348/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
58349
58350//! moment.js locale configuration
58351//! locale : Arabic (Saudi Arabia) [ar-sa]
58352//! author : Suhail Alkowaileet : https://github.com/xsoh
58353
58354;(function (global, factory) {
58355    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
58356   0
58357}(this, (function (moment) { 'use strict';
58358
58359    //! moment.js locale configuration
58360
58361    var symbolMap = {
58362            1: 'Ù¡',
58363            2: 'Ù¢',
58364            3: 'Ù£',
58365            4: 'Ù¤',
58366            5: 'Ù¥',
58367            6: 'Ù¦',
58368            7: 'Ù§',
58369            8: 'Ù¨',
58370            9: 'Ù©',
58371            0: 'Ù ',
58372        },
58373        numberMap = {
58374            'Ù¡': '1',
58375            'Ù¢': '2',
58376            'Ù£': '3',
58377            'Ù¤': '4',
58378            'Ù¥': '5',
58379            'Ù¦': '6',
58380            'Ù§': '7',
58381            'Ù¨': '8',
58382            'Ù©': '9',
58383            'Ù ': '0',
58384        };
58385
58386    var arSa = moment.defineLocale('ar-sa', {
58387        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
58388            '_'
58389        ),
58390        monthsShort:
58391            'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
58392                '_'
58393            ),
58394        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
58395        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
58396        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
58397        weekdaysParseExact: true,
58398        longDateFormat: {
58399            LT: 'HH:mm',
58400            LTS: 'HH:mm:ss',
58401            L: 'DD/MM/YYYY',
58402            LL: 'D MMMM YYYY',
58403            LLL: 'D MMMM YYYY HH:mm',
58404            LLLL: 'dddd D MMMM YYYY HH:mm',
58405        },
58406        meridiemParse: /ص|م/,
58407        isPM: function (input) {
58408            return 'م' === input;
58409        },
58410        meridiem: function (hour, minute, isLower) {
58411            if (hour < 12) {
58412                return 'ص';
58413            } else {
58414                return 'م';
58415            }
58416        },
58417        calendar: {
58418            sameDay: '[اليوم على الساعة] LT',
58419            nextDay: '[غدا على الساعة] LT',
58420            nextWeek: 'dddd [على الساعة] LT',
58421            lastDay: '[أمس على الساعة] LT',
58422            lastWeek: 'dddd [على الساعة] LT',
58423            sameElse: 'L',
58424        },
58425        relativeTime: {
58426            future: 'في %s',
58427            past: 'منذ %s',
58428            s: 'ثوان',
58429            ss: '%d ثانية',
58430            m: 'دقيقة',
58431            mm: '%d دقائق',
58432            h: 'ساعة',
58433            hh: '%d ساعات',
58434            d: 'يوم',
58435            dd: '%d أيام',
58436            M: 'شهر',
58437            MM: '%d أشهر',
58438            y: 'سنة',
58439            yy: '%d سنوات',
58440        },
58441        preparse: function (string) {
58442            return string
58443                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
58444                    return numberMap[match];
58445                })
58446                .replace(/،/g, ',');
58447        },
58448        postformat: function (string) {
58449            return string
58450                .replace(/\d/g, function (match) {
58451                    return symbolMap[match];
58452                })
58453                .replace(/,/g, '،');
58454        },
58455        week: {
58456            dow: 0, // Sunday is the first day of the week.
58457            doy: 6, // The week that contains Jan 6th is the first week of the year.
58458        },
58459    });
58460
58461    return arSa;
58462
58463})));
58464
58465
58466/***/ }),
58467
vendor: 2,637 bytes, lines 58468-58541
58468/***/ "./node_modules/moment/locale/ar-tn.js":
58469/*!*********************************************!*\
58470  !*** ./node_modules/moment/locale/ar-tn.js ***!
58471  \*********************************************/
58472/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
58473
58474//! moment.js locale configuration
58475//! locale  :  Arabic (Tunisia) [ar-tn]
58476//! author : Nader Toukabri : https://github.com/naderio
58477
58478;(function (global, factory) {
58479    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
58480   0
58481}(this, (function (moment) { 'use strict';
58482
58483    //! moment.js locale configuration
58484
58485    var arTn = moment.defineLocale('ar-tn', {
58486        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
58487            '_'
58488        ),
58489        monthsShort:
58490            'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
58491                '_'
58492            ),
58493        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
58494        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
58495        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
58496        weekdaysParseExact: true,
58497        longDateFormat: {
58498            LT: 'HH:mm',
58499            LTS: 'HH:mm:ss',
58500            L: 'DD/MM/YYYY',
58501            LL: 'D MMMM YYYY',
58502            LLL: 'D MMMM YYYY HH:mm',
58503            LLLL: 'dddd D MMMM YYYY HH:mm',
58504        },
58505        calendar: {
58506            sameDay: '[اليوم على الساعة] LT',
58507            nextDay: '[غدا على الساعة] LT',
58508            nextWeek: 'dddd [على الساعة] LT',
58509            lastDay: '[أمس على الساعة] LT',
58510            lastWeek: 'dddd [على الساعة] LT',
58511            sameElse: 'L',
58512        },
58513        relativeTime: {
58514            future: 'في %s',
58515            past: 'منذ %s',
58516            s: 'ثوان',
58517            ss: '%d ثانية',
58518            m: 'دقيقة',
58519            mm: '%d دقائق',
58520            h: 'ساعة',
58521            hh: '%d ساعات',
58522            d: 'يوم',
58523            dd: '%d أيام',
58524            M: 'شهر',
58525            MM: '%d أشهر',
58526            y: 'سنة',
58527            yy: '%d سنوات',
58528        },
58529        week: {
58530            dow: 1, // Monday is the first day of the week.
58531            doy: 4, // The week that contains Jan 4th is the first week of the year.
58532        },
58533    });
58534
58535    return arTn;
58536
58537})));
58538
58539
58540/***/ }),
58541
vendor: 6,321 bytes, lines 58542-58749
58542/***/ "./node_modules/moment/locale/ar.js":
58543/*!******************************************!*\
58544  !*** ./node_modules/moment/locale/ar.js ***!
58545  \******************************************/
58546/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
58547
58548//! moment.js locale configuration
58549//! locale : Arabic [ar]
58550//! author : Abdel Said: https://github.com/abdelsaid
58551//! author : Ahmed Elkhatib
58552//! author : forabi https://github.com/forabi
58553
58554;(function (global, factory) {
58555    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
58556   0
58557}(this, (function (moment) { 'use strict';
58558
58559    //! moment.js locale configuration
58560
58561    var symbolMap = {
58562            1: 'Ù¡',
58563            2: 'Ù¢',
58564            3: 'Ù£',
58565            4: 'Ù¤',
58566            5: 'Ù¥',
58567            6: 'Ù¦',
58568            7: 'Ù§',
58569            8: 'Ù¨',
58570            9: 'Ù©',
58571            0: 'Ù ',
58572        },
58573        numberMap = {
58574            'Ù¡': '1',
58575            'Ù¢': '2',
58576            'Ù£': '3',
58577            'Ù¤': '4',
58578            'Ù¥': '5',
58579            'Ù¦': '6',
58580            'Ù§': '7',
58581            'Ù¨': '8',
58582            'Ù©': '9',
58583            'Ù ': '0',
58584        },
58585        pluralForm = function (n) {
58586            return n === 0
58587                ? 0
58588                : n === 1
58589                  ? 1
58590                  : n === 2
58591                    ? 2
58592                    : n % 100 >= 3 && n % 100 <= 10
58593                      ? 3
58594                      : n % 100 >= 11
58595                        ? 4
58596                        : 5;
58597        },
58598        plurals = {
58599            s: [
58600                'أقل من ثانية',
58601                'ثانية واحدة',
58602                ['ثانيتان', 'ثانيتين'],
58603                '%d ثوان',
58604                '%d ثانية',
58605                '%d ثانية',
58606            ],
58607            m: [
58608                'أقل من دقيقة',
58609                'دقيقة واحدة',
58610                ['دقيقتان', 'دقيقتين'],
58611                '%d دقائق',
58612                '%d دقيقة',
58613                '%d دقيقة',
58614            ],
58615            h: [
58616                'أقل من ساعة',
58617                'ساعة واحدة',
58618                ['ساعتان', 'ساعتين'],
58619                '%d ساعات',
58620                '%d ساعة',
58621                '%d ساعة',
58622            ],
58623            d: [
58624                'أقل من يوم',
58625                'يوم واحد',
58626                ['يومان', 'يومين'],
58627                '%d أيام',
58628                '%d يومًا',
58629                '%d يوم',
58630            ],
58631            M: [
58632                'أقل من شهر',
58633                'شهر واحد',
58634                ['شهران', 'شهرين'],
58635                '%d أشهر',
58636                '%d شهرا',
58637                '%d شهر',
58638            ],
58639            y: [
58640                'أقل من عام',
58641                'عام واحد',
58642                ['عامان', 'عامين'],
58643                '%d أعوام',
58644                '%d عامًا',
58645                '%d عام',
58646            ],
58647        },
58648        pluralize = function (u) {
58649            return function (number, withoutSuffix, string, isFuture) {
58650                var f = pluralForm(number),
58651                    str = plurals[u][pluralForm(number)];
58652                if (f === 2) {
58653                    str = str[withoutSuffix ? 0 : 1];
58654                }
58655                return str.replace(/%d/i, number);
58656            };
58657        },
58658        months = [
58659            'يناير',
58660            'فبراير',
58661            'مارس',
58662            'أبريل',
58663            'مايو',
58664            'يونيو',
58665            'يوليو',
58666            'أغسطس',
58667            'سبتمبر',
58668            'أكتوبر',
58669            'نوفمبر',
58670            'ديسمبر',
58671        ];
58672
58673    var ar = moment.defineLocale('ar', {
58674        months: months,
58675        monthsShort: months,
58676        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
58677        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
58678        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
58679        weekdaysParseExact: true,
58680        longDateFormat: {
58681            LT: 'HH:mm',
58682            LTS: 'HH:mm:ss',
58683            L: 'D/\u200FM/\u200FYYYY',
58684            LL: 'D MMMM YYYY',
58685            LLL: 'D MMMM YYYY HH:mm',
58686            LLLL: 'dddd D MMMM YYYY HH:mm',
58687        },
58688        meridiemParse: /ص|م/,
58689        isPM: function (input) {
58690            return 'م' === input;
58691        },
58692        meridiem: function (hour, minute, isLower) {
58693            if (hour < 12) {
58694                return 'ص';
58695            } else {
58696                return 'م';
58697            }
58698        },
58699        calendar: {
58700            sameDay: '[اليوم عند الساعة] LT',
58701            nextDay: '[غدًا عند الساعة] LT',
58702            nextWeek: 'dddd [عند الساعة] LT',
58703            lastDay: '[أمس عند الساعة] LT',
58704            lastWeek: 'dddd [عند الساعة] LT',
58705            sameElse: 'L',
58706        },
58707        relativeTime: {
58708            future: 'بعد %s',
58709            past: 'منذ %s',
58710            s: pluralize('s'),
58711            ss: pluralize('s'),
58712            m: pluralize('m'),
58713            mm: pluralize('m'),
58714            h: pluralize('h'),
58715            hh: pluralize('h'),
58716            d: pluralize('d'),
58717            dd: pluralize('d'),
58718            M: pluralize('M'),
58719            MM: pluralize('M'),
58720            y: pluralize('y'),
58721            yy: pluralize('y'),
58722        },
58723        preparse: function (string) {
58724            return string
58725                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
58726                    return numberMap[match];
58727                })
58728                .replace(/،/g, ',');
58729        },
58730        postformat: function (string) {
58731            return string
58732                .replace(/\d/g, function (match) {
58733                    return symbolMap[match];
58734                })
58735                .replace(/,/g, '،');
58736        },
58737        week: {
58738            dow: 6, // Saturday is the first day of the week.
58739            doy: 12, // The week that contains Jan 12th is the first week of the year.
58740        },
58741    });
58742
58743    return ar;
58744
58745})));
58746
58747
58748/***/ }),
58749
vendor: 3,715 bytes, lines 58750-58870
58750/***/ "./node_modules/moment/locale/az.js":
58751/*!******************************************!*\
58752  !*** ./node_modules/moment/locale/az.js ***!
58753  \******************************************/
58754/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
58755
58756//! moment.js locale configuration
58757//! locale : Azerbaijani [az]
58758//! author : topchiyev : https://github.com/topchiyev
58759
58760;(function (global, factory) {
58761    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
58762   0
58763}(this, (function (moment) { 'use strict';
58764
58765    //! moment.js locale configuration
58766
58767    var suffixes = {
58768        1: '-inci',
58769        5: '-inci',
58770        8: '-inci',
58771        70: '-inci',
58772        80: '-inci',
58773        2: '-nci',
58774        7: '-nci',
58775        20: '-nci',
58776        50: '-nci',
58777        3: '-üncü',
58778        4: '-üncü',
58779        100: '-üncü',
58780        6: '-ncı',
58781        9: '-uncu',
58782        10: '-uncu',
58783        30: '-uncu',
58784        60: '-ıncı',
58785        90: '-ıncı',
58786    };
58787
58788    var az = moment.defineLocale('az', {
58789        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
58790            '_'
58791        ),
58792        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
58793        weekdays:
58794            'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
58795                '_'
58796            ),
58797        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
58798        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
58799        weekdaysParseExact: true,
58800        longDateFormat: {
58801            LT: 'HH:mm',
58802            LTS: 'HH:mm:ss',
58803            L: 'DD.MM.YYYY',
58804            LL: 'D MMMM YYYY',
58805            LLL: 'D MMMM YYYY HH:mm',
58806            LLLL: 'dddd, D MMMM YYYY HH:mm',
58807        },
58808        calendar: {
58809            sameDay: '[bugün saat] LT',
58810            nextDay: '[sabah saat] LT',
58811            nextWeek: '[gələn həftə] dddd [saat] LT',
58812            lastDay: '[dünən] LT',
58813            lastWeek: '[keçən həftə] dddd [saat] LT',
58814            sameElse: 'L',
58815        },
58816        relativeTime: {
58817            future: '%s sonra',
58818            past: '%s əvvəl',
58819            s: 'bir neçə saniyə',
58820            ss: '%d saniyə',
58821            m: 'bir dəqiqə',
58822            mm: '%d dəqiqə',
58823            h: 'bir saat',
58824            hh: '%d saat',
58825            d: 'bir gün',
58826            dd: '%d gün',
58827            M: 'bir ay',
58828            MM: '%d ay',
58829            y: 'bir il',
58830            yy: '%d il',
58831        },
58832        meridiemParse: /gecə|səhər|gündüz|axşam/,
58833        isPM: function (input) {
58834            return /^(gündüz|axşam)$/.test(input);
58835        },
58836        meridiem: function (hour, minute, isLower) {
58837            if (hour < 4) {
58838                return 'gecə';
58839            } else if (hour < 12) {
58840                return 'səhər';
58841            } else if (hour < 17) {
58842                return 'gündüz';
58843            } else {
58844                return 'axşam';
58845            }
58846        },
58847        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
58848        ordinal: function (number) {
58849            if (number === 0) {
58850                // special case for zero
58851                return number + '-ıncı';
58852            }
58853            var a = number % 10,
58854                b = (number % 100) - a,
58855                c = number >= 100 ? 100 : null;
58856            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
58857        },
58858        week: {
58859            dow: 1, // Monday is the first day of the week.
58860            doy: 7, // The week that contains Jan 7th is the first week of the year.
58861        },
58862    });
58863
58864    return az;
58865
58866})));
58867
58868
58869/***/ }),
58870
vendor: 6,179 bytes, lines 58871-59031
58871/***/ "./node_modules/moment/locale/be.js":
58872/*!******************************************!*\
58873  !*** ./node_modules/moment/locale/be.js ***!
58874  \******************************************/
58875/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
58876
58877//! moment.js locale configuration
58878//! locale : Belarusian [be]
58879//! author : Dmitry Demidov : https://github.com/demidov91
58880//! author: Praleska: http://praleska.pro/
58881//! Author : Menelion Elensúle : https://github.com/Oire
58882
58883;(function (global, factory) {
58884    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
58885   0
58886}(this, (function (moment) { 'use strict';
58887
58888    //! moment.js locale configuration
58889
58890    function plural(word, num) {
58891        var forms = word.split('_');
58892        return num % 10 === 1 && num % 100 !== 11
58893            ? forms[0]
58894            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
58895              ? forms[1]
58896              : forms[2];
58897    }
58898    function relativeTimeWithPlural(number, withoutSuffix, key) {
58899        var format = {
58900            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
58901            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
58902            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
58903            dd: 'дзень_дні_дзён',
58904            MM: 'месяц_месяцы_месяцаў',
58905            yy: 'год_гады_гадоў',
58906        };
58907        if (key === 'm') {
58908            return withoutSuffix ? 'хвіліна' : 'хвіліну';
58909        } else if (key === 'h') {
58910            return withoutSuffix ? 'гадзіна' : 'гадзіну';
58911        } else {
58912            return number + ' ' + plural(format[key], +number);
58913        }
58914    }
58915
58916    var be = moment.defineLocale('be', {
58917        months: {
58918            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
58919                '_'
58920            ),
58921            standalone:
58922                'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
58923                    '_'
58924                ),
58925        },
58926        monthsShort:
58927            'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
58928        weekdays: {
58929            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
58930                '_'
58931            ),
58932            standalone:
58933                'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
58934                    '_'
58935                ),
58936            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
58937        },
58938        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
58939        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
58940        longDateFormat: {
58941            LT: 'HH:mm',
58942            LTS: 'HH:mm:ss',
58943            L: 'DD.MM.YYYY',
58944            LL: 'D MMMM YYYY г.',
58945            LLL: 'D MMMM YYYY г., HH:mm',
58946            LLLL: 'dddd, D MMMM YYYY г., HH:mm',
58947        },
58948        calendar: {
58949            sameDay: '[Сёння ў] LT',
58950            nextDay: '[Заўтра ў] LT',
58951            lastDay: '[Учора ў] LT',
58952            nextWeek: function () {
58953                return '[У] dddd [ў] LT';
58954            },
58955            lastWeek: function () {
58956                switch (this.day()) {
58957                    case 0:
58958                    case 3:
58959                    case 5:
58960                    case 6:
58961                        return '[У мінулую] dddd [ў] LT';
58962                    case 1:
58963                    case 2:
58964                    case 4:
58965                        return '[У мінулы] dddd [ў] LT';
58966                }
58967            },
58968            sameElse: 'L',
58969        },
58970        relativeTime: {
58971            future: 'праз %s',
58972            past: '%s таму',
58973            s: 'некалькі секунд',
58974            m: relativeTimeWithPlural,
58975            mm: relativeTimeWithPlural,
58976            h: relativeTimeWithPlural,
58977            hh: relativeTimeWithPlural,
58978            d: 'дзень',
58979            dd: relativeTimeWithPlural,
58980            M: 'месяц',
58981            MM: relativeTimeWithPlural,
58982            y: 'год',
58983            yy: relativeTimeWithPlural,
58984        },
58985        meridiemParse: /ночы|раніцы|дня|вечара/,
58986        isPM: function (input) {
58987            return /^(дня|вечара)$/.test(input);
58988        },
58989        meridiem: function (hour, minute, isLower) {
58990            if (hour < 4) {
58991                return 'ночы';
58992            } else if (hour < 12) {
58993                return 'раніцы';
58994            } else if (hour < 17) {
58995                return 'дня';
58996            } else {
58997                return 'вечара';
58998            }
58999        },
59000        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
59001        ordinal: function (number, period) {
59002            switch (period) {
59003                case 'M':
59004                case 'd':
59005                case 'DDD':
59006                case 'w':
59007                case 'W':
59008                    return (number % 10 === 2 || number % 10 === 3) &&
59009                        number % 100 !== 12 &&
59010                        number % 100 !== 13
59011                        ? number + '-і'
59012                        : number + '-ы';
59013                case 'D':
59014                    return number + '-га';
59015                default:
59016                    return number;
59017            }
59018        },
59019        week: {
59020            dow: 1, // Monday is the first day of the week.
59021            doy: 7, // The week that contains Jan 7th is the first week of the year.
59022        },
59023    });
59024
59025    return be;
59026
59027})));
59028
59029
59030/***/ }),
59031
vendor: 3,768 bytes, lines 59032-59137
59032/***/ "./node_modules/moment/locale/bg.js":
59033/*!******************************************!*\
59034  !*** ./node_modules/moment/locale/bg.js ***!
59035  \******************************************/
59036/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
59037
59038//! moment.js locale configuration
59039//! locale : Bulgarian [bg]
59040//! author : Krasen Borisov : https://github.com/kraz
59041
59042;(function (global, factory) {
59043    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
59044   0
59045}(this, (function (moment) { 'use strict';
59046
59047    //! moment.js locale configuration
59048
59049    var bg = moment.defineLocale('bg', {
59050        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
59051            '_'
59052        ),
59053        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
59054        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
59055            '_'
59056        ),
59057        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
59058        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
59059        longDateFormat: {
59060            LT: 'H:mm',
59061            LTS: 'H:mm:ss',
59062            L: 'D.MM.YYYY',
59063            LL: 'D MMMM YYYY',
59064            LLL: 'D MMMM YYYY H:mm',
59065            LLLL: 'dddd, D MMMM YYYY H:mm',
59066        },
59067        calendar: {
59068            sameDay: '[Днес в] LT',
59069            nextDay: '[Утре в] LT',
59070            nextWeek: 'dddd [в] LT',
59071            lastDay: '[Вчера в] LT',
59072            lastWeek: function () {
59073                switch (this.day()) {
59074                    case 0:
59075                    case 3:
59076                    case 6:
59077                        return '[Миналата] dddd [в] LT';
59078                    case 1:
59079                    case 2:
59080                    case 4:
59081                    case 5:
59082                        return '[Миналия] dddd [в] LT';
59083                }
59084            },
59085            sameElse: 'L',
59086        },
59087        relativeTime: {
59088            future: 'след %s',
59089            past: 'преди %s',
59090            s: 'няколко секунди',
59091            ss: '%d секунди',
59092            m: 'минута',
59093            mm: '%d минути',
59094            h: 'час',
59095            hh: '%d часа',
59096            d: 'ден',
59097            dd: '%d дена',
59098            w: 'седмица',
59099            ww: '%d седмици',
59100            M: 'месец',
59101            MM: '%d месеца',
59102            y: 'година',
59103            yy: '%d години',
59104        },
59105        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
59106        ordinal: function (number) {
59107            var lastDigit = number % 10,
59108                last2Digits = number % 100;
59109            if (number === 0) {
59110                return number + '-ев';
59111            } else if (last2Digits === 0) {
59112                return number + '-ен';
59113            } else if (last2Digits > 10 && last2Digits < 20) {
59114                return number + '-ти';
59115            } else if (lastDigit === 1) {
59116                return number + '-ви';
59117            } else if (lastDigit === 2) {
59118                return number + '-ри';
59119            } else if (lastDigit === 7 || lastDigit === 8) {
59120                return number + '-ми';
59121            } else {
59122                return number + '-ти';
59123            }
59124        },
59125        week: {
59126            dow: 1, // Monday is the first day of the week.
59127            doy: 7, // The week that contains Jan 7th is the first week of the year.
59128        },
59129    });
59130
59131    return bg;
59132
59133})));
59134
59135
59136/***/ }),
59137
vendor: 2,378 bytes, lines 59138-59207
59138/***/ "./node_modules/moment/locale/bm.js":
59139/*!******************************************!*\
59140  !*** ./node_modules/moment/locale/bm.js ***!
59141  \******************************************/
59142/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
59143
59144//! moment.js locale configuration
59145//! locale : Bambara [bm]
59146//! author : Estelle Comment : https://github.com/estellecomment
59147
59148;(function (global, factory) {
59149    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
59150   0
59151}(this, (function (moment) { 'use strict';
59152
59153    //! moment.js locale configuration
59154
59155    var bm = moment.defineLocale('bm', {
59156        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
59157            '_'
59158        ),
59159        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
59160        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
59161        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
59162        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
59163        longDateFormat: {
59164            LT: 'HH:mm',
59165            LTS: 'HH:mm:ss',
59166            L: 'DD/MM/YYYY',
59167            LL: 'MMMM [tile] D [san] YYYY',
59168            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
59169            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
59170        },
59171        calendar: {
59172            sameDay: '[Bi lɛrɛ] LT',
59173            nextDay: '[Sini lɛrɛ] LT',
59174            nextWeek: 'dddd [don lɛrɛ] LT',
59175            lastDay: '[Kunu lɛrɛ] LT',
59176            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
59177            sameElse: 'L',
59178        },
59179        relativeTime: {
59180            future: '%s kɔnɔ',
59181            past: 'a bɛ %s bɔ',
59182            s: 'sanga dama dama',
59183            ss: 'sekondi %d',
59184            m: 'miniti kelen',
59185            mm: 'miniti %d',
59186            h: 'lɛrɛ kelen',
59187            hh: 'lɛrɛ %d',
59188            d: 'tile kelen',
59189            dd: 'tile %d',
59190            M: 'kalo kelen',
59191            MM: 'kalo %d',
59192            y: 'san kelen',
59193            yy: 'san %d',
59194        },
59195        week: {
59196            dow: 1, // Monday is the first day of the week.
59197            doy: 4, // The week that contains Jan 4th is the first week of the year.
59198        },
59199    });
59200
59201    return bm;
59202
59203})));
59204
59205
59206/***/ }),
59207
vendor: 5,334 bytes, lines 59208-59355
59208/***/ "./node_modules/moment/locale/bn-bd.js":
59209/*!*********************************************!*\
59210  !*** ./node_modules/moment/locale/bn-bd.js ***!
59211  \*********************************************/
59212/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
59213
59214//! moment.js locale configuration
59215//! locale : Bengali (Bangladesh) [bn-bd]
59216//! author : Asraf Hossain Patoary : https://github.com/ashwoolford
59217
59218;(function (global, factory) {
59219    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
59220   0
59221}(this, (function (moment) { 'use strict';
59222
59223    //! moment.js locale configuration
59224
59225    var symbolMap = {
59226            1: 'à§§',
59227            2: '২',
59228            3: 'à§©',
59229            4: '৪',
59230            5: 'à§«',
59231            6: '৬',
59232            7: 'à§­',
59233            8: 'à§®',
59234            9: '৯',
59235            0: '০',
59236        },
59237        numberMap = {
59238            'à§§': '1',
59239            '২': '2',
59240            'à§©': '3',
59241            '৪': '4',
59242            'à§«': '5',
59243            '৬': '6',
59244            'à§­': '7',
59245            'à§®': '8',
59246            '৯': '9',
59247            '০': '0',
59248        };
59249
59250    var bnBd = moment.defineLocale('bn-bd', {
59251        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
59252            '_'
59253        ),
59254        monthsShort:
59255            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
59256                '_'
59257            ),
59258        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
59259            '_'
59260        ),
59261        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
59262        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
59263        longDateFormat: {
59264            LT: 'A h:mm সময়',
59265            LTS: 'A h:mm:ss সময়',
59266            L: 'DD/MM/YYYY',
59267            LL: 'D MMMM YYYY',
59268            LLL: 'D MMMM YYYY, A h:mm সময়',
59269            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
59270        },
59271        calendar: {
59272            sameDay: '[আজ] LT',
59273            nextDay: '[আগামীকাল] LT',
59274            nextWeek: 'dddd, LT',
59275            lastDay: '[গতকাল] LT',
59276            lastWeek: '[গত] dddd, LT',
59277            sameElse: 'L',
59278        },
59279        relativeTime: {
59280            future: '%s পরে',
59281            past: '%s আগে',
59282            s: 'কয়েক সেকেন্ড',
59283            ss: '%d সেকেন্ড',
59284            m: 'এক মিনিট',
59285            mm: '%d মিনিট',
59286            h: 'এক ঘন্টা',
59287            hh: '%d ঘন্টা',
59288            d: 'এক দিন',
59289            dd: '%d দিন',
59290            M: 'এক মাস',
59291            MM: '%d মাস',
59292            y: 'এক বছর',
59293            yy: '%d বছর',
59294        },
59295        preparse: function (string) {
59296            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
59297                return numberMap[match];
59298            });
59299        },
59300        postformat: function (string) {
59301            return string.replace(/\d/g, function (match) {
59302                return symbolMap[match];
59303            });
59304        },
59305
59306        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,
59307        meridiemHour: function (hour, meridiem) {
59308            if (hour === 12) {
59309                hour = 0;
59310            }
59311            if (meridiem === 'রাত') {
59312                return hour < 4 ? hour : hour + 12;
59313            } else if (meridiem === 'ভোর') {
59314                return hour;
59315            } else if (meridiem === 'সকাল') {
59316                return hour;
59317            } else if (meridiem === 'দুপুর') {
59318                return hour >= 3 ? hour : hour + 12;
59319            } else if (meridiem === 'বিকাল') {
59320                return hour + 12;
59321            } else if (meridiem === 'সন্ধ্যা') {
59322                return hour + 12;
59323            }
59324        },
59325
59326        meridiem: function (hour, minute, isLower) {
59327            if (hour < 4) {
59328                return 'রাত';
59329            } else if (hour < 6) {
59330                return 'ভোর';
59331            } else if (hour < 12) {
59332                return 'সকাল';
59333            } else if (hour < 15) {
59334                return 'দুপুর';
59335            } else if (hour < 18) {
59336                return 'বিকাল';
59337            } else if (hour < 20) {
59338                return 'সন্ধ্যা';
59339            } else {
59340                return 'রাত';
59341            }
59342        },
59343        week: {
59344            dow: 0, // Sunday is the first day of the week.
59345            doy: 6, // The week that contains Jan 6th is the first week of the year.
59346        },
59347    });
59348
59349    return bnBd;
59350
59351})));
59352
59353
59354/***/ }),
59355
vendor: 4,835 bytes, lines 59356-59493
59356/***/ "./node_modules/moment/locale/bn.js":
59357/*!******************************************!*\
59358  !*** ./node_modules/moment/locale/bn.js ***!
59359  \******************************************/
59360/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
59361
59362//! moment.js locale configuration
59363//! locale : Bengali [bn]
59364//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
59365
59366;(function (global, factory) {
59367    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
59368   0
59369}(this, (function (moment) { 'use strict';
59370
59371    //! moment.js locale configuration
59372
59373    var symbolMap = {
59374            1: 'à§§',
59375            2: '২',
59376            3: 'à§©',
59377            4: '৪',
59378            5: 'à§«',
59379            6: '৬',
59380            7: 'à§­',
59381            8: 'à§®',
59382            9: '৯',
59383            0: '০',
59384        },
59385        numberMap = {
59386            'à§§': '1',
59387            '২': '2',
59388            'à§©': '3',
59389            '৪': '4',
59390            'à§«': '5',
59391            '৬': '6',
59392            'à§­': '7',
59393            'à§®': '8',
59394            '৯': '9',
59395            '০': '0',
59396        };
59397
59398    var bn = moment.defineLocale('bn', {
59399        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
59400            '_'
59401        ),
59402        monthsShort:
59403            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
59404                '_'
59405            ),
59406        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
59407            '_'
59408        ),
59409        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
59410        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
59411        longDateFormat: {
59412            LT: 'A h:mm সময়',
59413            LTS: 'A h:mm:ss সময়',
59414            L: 'DD/MM/YYYY',
59415            LL: 'D MMMM YYYY',
59416            LLL: 'D MMMM YYYY, A h:mm সময়',
59417            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
59418        },
59419        calendar: {
59420            sameDay: '[আজ] LT',
59421            nextDay: '[আগামীকাল] LT',
59422            nextWeek: 'dddd, LT',
59423            lastDay: '[গতকাল] LT',
59424            lastWeek: '[গত] dddd, LT',
59425            sameElse: 'L',
59426        },
59427        relativeTime: {
59428            future: '%s পরে',
59429            past: '%s আগে',
59430            s: 'কয়েক সেকেন্ড',
59431            ss: '%d সেকেন্ড',
59432            m: 'এক মিনিট',
59433            mm: '%d মিনিট',
59434            h: 'এক ঘন্টা',
59435            hh: '%d ঘন্টা',
59436            d: 'এক দিন',
59437            dd: '%d দিন',
59438            M: 'এক মাস',
59439            MM: '%d মাস',
59440            y: 'এক বছর',
59441            yy: '%d বছর',
59442        },
59443        preparse: function (string) {
59444            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
59445                return numberMap[match];
59446            });
59447        },
59448        postformat: function (string) {
59449            return string.replace(/\d/g, function (match) {
59450                return symbolMap[match];
59451            });
59452        },
59453        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
59454        meridiemHour: function (hour, meridiem) {
59455            if (hour === 12) {
59456                hour = 0;
59457            }
59458            if (
59459                (meridiem === 'রাত' && hour >= 4) ||
59460                (meridiem === 'দুপুর' && hour < 5) ||
59461                meridiem === 'বিকাল'
59462            ) {
59463                return hour + 12;
59464            } else {
59465                return hour;
59466            }
59467        },
59468        meridiem: function (hour, minute, isLower) {
59469            if (hour < 4) {
59470                return 'রাত';
59471            } else if (hour < 10) {
59472                return 'সকাল';
59473            } else if (hour < 17) {
59474                return 'দুপুর';
59475            } else if (hour < 20) {
59476                return 'বিকাল';
59477            } else {
59478                return 'রাত';
59479            }
59480        },
59481        week: {
59482            dow: 0, // Sunday is the first day of the week.
59483            doy: 6, // The week that contains Jan 6th is the first week of the year.
59484        },
59485    });
59486
59487    return bn;
59488
59489})));
59490
59491
59492/***/ }),
59493
vendor: 5,356 bytes, lines 59494-59636
59494/***/ "./node_modules/moment/locale/bo.js":
59495/*!******************************************!*\
59496  !*** ./node_modules/moment/locale/bo.js ***!
59497  \******************************************/
59498/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
59499
59500//! moment.js locale configuration
59501//! locale : Tibetan [bo]
59502//! author : Thupten N. Chakrishar : https://github.com/vajradog
59503
59504;(function (global, factory) {
59505    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
59506   0
59507}(this, (function (moment) { 'use strict';
59508
59509    //! moment.js locale configuration
59510
59511    var symbolMap = {
59512            1: '༡',
59513            2: '༢',
59514            3: '༣',
59515            4: '༤',
59516            5: '༥',
59517            6: '༦',
59518            7: '༧',
59519            8: '༨',
59520            9: '༩',
59521            0: '༠',
59522        },
59523        numberMap = {
59524            '༡': '1',
59525            '༢': '2',
59526            '༣': '3',
59527            '༤': '4',
59528            '༥': '5',
59529            '༦': '6',
59530            '༧': '7',
59531            '༨': '8',
59532            '༩': '9',
59533            '༠': '0',
59534        };
59535
59536    var bo = moment.defineLocale('bo', {
59537        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
59538            '_'
59539        ),
59540        monthsShort:
59541            'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
59542                '_'
59543            ),
59544        monthsShortRegex: /^(ཟླ་\d{1,2})/,
59545        monthsParseExact: true,
59546        weekdays:
59547            'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
59548                '_'
59549            ),
59550        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
59551            '_'
59552        ),
59553        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
59554        longDateFormat: {
59555            LT: 'A h:mm',
59556            LTS: 'A h:mm:ss',
59557            L: 'DD/MM/YYYY',
59558            LL: 'D MMMM YYYY',
59559            LLL: 'D MMMM YYYY, A h:mm',
59560            LLLL: 'dddd, D MMMM YYYY, A h:mm',
59561        },
59562        calendar: {
59563            sameDay: '[དི་རིང] LT',
59564            nextDay: '[སང་ཉིན] LT',
59565            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
59566            lastDay: '[ཁ་སང] LT',
59567            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
59568            sameElse: 'L',
59569        },
59570        relativeTime: {
59571            future: '%s ལ་',
59572            past: '%s སྔན་ལ',
59573            s: 'ལམ་སང',
59574            ss: '%d སྐར་ཆ།',
59575            m: 'སྐར་མ་གཅིག',
59576            mm: '%d སྐར་མ',
59577            h: 'ཆུ་ཚོད་གཅིག',
59578            hh: '%d ཆུ་ཚོད',
59579            d: 'ཉིན་གཅིག',
59580            dd: '%d ཉིན་',
59581            M: 'ཟླ་བ་གཅིག',
59582            MM: '%d ཟླ་བ',
59583            y: 'ལོ་གཅིག',
59584            yy: '%d ལོ',
59585        },
59586        preparse: function (string) {
59587            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
59588                return numberMap[match];
59589            });
59590        },
59591        postformat: function (string) {
59592            return string.replace(/\d/g, function (match) {
59593                return symbolMap[match];
59594            });
59595        },
59596        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
59597        meridiemHour: function (hour, meridiem) {
59598            if (hour === 12) {
59599                hour = 0;
59600            }
59601            if (
59602                (meridiem === 'མཚན་མོ' && hour >= 4) ||
59603                (meridiem === 'ཉིན་གུང' && hour < 5) ||
59604                meridiem === 'དགོང་དག'
59605            ) {
59606                return hour + 12;
59607            } else {
59608                return hour;
59609            }
59610        },
59611        meridiem: function (hour, minute, isLower) {
59612            if (hour < 4) {
59613                return 'མཚན་མོ';
59614            } else if (hour < 10) {
59615                return 'ཞོགས་ཀས';
59616            } else if (hour < 17) {
59617                return 'ཉིན་གུང';
59618            } else if (hour < 20) {
59619                return 'དགོང་དག';
59620            } else {
59621                return 'མཚན་མོ';
59622            }
59623        },
59624        week: {
59625            dow: 0, // Sunday is the first day of the week.
59626            doy: 6, // The week that contains Jan 6th is the first week of the year.
59627        },
59628    });
59629
59630    return bo;
59631
59632})));
59633
59634
59635/***/ }),
59636
vendor: 5,665 bytes, lines 59637-59823
59637/***/ "./node_modules/moment/locale/br.js":
59638/*!******************************************!*\
59639  !*** ./node_modules/moment/locale/br.js ***!
59640  \******************************************/
59641/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
59642
59643//! moment.js locale configuration
59644//! locale : Breton [br]
59645//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
59646
59647;(function (global, factory) {
59648    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
59649   0
59650}(this, (function (moment) { 'use strict';
59651
59652    //! moment.js locale configuration
59653
59654    function relativeTimeWithMutation(number, withoutSuffix, key) {
59655        var format = {
59656            mm: 'munutenn',
59657            MM: 'miz',
59658            dd: 'devezh',
59659        };
59660        return number + ' ' + mutation(format[key], number);
59661    }
59662    function specialMutationForYears(number) {
59663        switch (lastNumber(number)) {
59664            case 1:
59665            case 3:
59666            case 4:
59667            case 5:
59668            case 9:
59669                return number + ' bloaz';
59670            default:
59671                return number + ' vloaz';
59672        }
59673    }
59674    function lastNumber(number) {
59675        if (number > 9) {
59676            return lastNumber(number % 10);
59677        }
59678        return number;
59679    }
59680    function mutation(text, number) {
59681        if (number === 2) {
59682            return softMutation(text);
59683        }
59684        return text;
59685    }
59686    function softMutation(text) {
59687        var mutationTable = {
59688            m: 'v',
59689            b: 'v',
59690            d: 'z',
59691        };
59692        if (mutationTable[text.charAt(0)] === undefined) {
59693            return text;
59694        }
59695        return mutationTable[text.charAt(0)] + text.substring(1);
59696    }
59697
59698    var monthsParse = [
59699            /^gen/i,
59700            /^c[ʼ\']hwe/i,
59701            /^meu/i,
59702            /^ebr/i,
59703            /^mae/i,
59704            /^(mez|eve)/i,
59705            /^gou/i,
59706            /^eos/i,
59707            /^gwe/i,
59708            /^her/i,
59709            /^du/i,
59710            /^ker/i,
59711        ],
59712        monthsRegex =
59713            /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
59714        monthsStrictRegex =
59715            /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
59716        monthsShortStrictRegex =
59717            /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
59718        fullWeekdaysParse = [
59719            /^sul/i,
59720            /^lun/i,
59721            /^meurzh/i,
59722            /^merc[ʼ\']her/i,
59723            /^yaou/i,
59724            /^gwener/i,
59725            /^sadorn/i,
59726        ],
59727        shortWeekdaysParse = [
59728            /^Sul/i,
59729            /^Lun/i,
59730            /^Meu/i,
59731            /^Mer/i,
59732            /^Yao/i,
59733            /^Gwe/i,
59734            /^Sad/i,
59735        ],
59736        minWeekdaysParse = [
59737            /^Su/i,
59738            /^Lu/i,
59739            /^Me([^r]|$)/i,
59740            /^Mer/i,
59741            /^Ya/i,
59742            /^Gw/i,
59743            /^Sa/i,
59744        ];
59745
59746    var br = moment.defineLocale('br', {
59747        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
59748            '_'
59749        ),
59750        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
59751        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
59752        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
59753        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
59754        weekdaysParse: minWeekdaysParse,
59755        fullWeekdaysParse: fullWeekdaysParse,
59756        shortWeekdaysParse: shortWeekdaysParse,
59757        minWeekdaysParse: minWeekdaysParse,
59758
59759        monthsRegex: monthsRegex,
59760        monthsShortRegex: monthsRegex,
59761        monthsStrictRegex: monthsStrictRegex,
59762        monthsShortStrictRegex: monthsShortStrictRegex,
59763        monthsParse: monthsParse,
59764        longMonthsParse: monthsParse,
59765        shortMonthsParse: monthsParse,
59766
59767        longDateFormat: {
59768            LT: 'HH:mm',
59769            LTS: 'HH:mm:ss',
59770            L: 'DD/MM/YYYY',
59771            LL: 'D [a viz] MMMM YYYY',
59772            LLL: 'D [a viz] MMMM YYYY HH:mm',
59773            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
59774        },
59775        calendar: {
59776            sameDay: '[Hiziv da] LT',
59777            nextDay: '[Warcʼhoazh da] LT',
59778            nextWeek: 'dddd [da] LT',
59779            lastDay: '[Decʼh da] LT',
59780            lastWeek: 'dddd [paset da] LT',
59781            sameElse: 'L',
59782        },
59783        relativeTime: {
59784            future: 'a-benn %s',
59785            past: '%s ʼzo',
59786            s: 'un nebeud segondennoù',
59787            ss: '%d eilenn',
59788            m: 'ur vunutenn',
59789            mm: relativeTimeWithMutation,
59790            h: 'un eur',
59791            hh: '%d eur',
59792            d: 'un devezh',
59793            dd: relativeTimeWithMutation,
59794            M: 'ur miz',
59795            MM: relativeTimeWithMutation,
59796            y: 'ur bloaz',
59797            yy: specialMutationForYears,
59798        },
59799        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
59800        ordinal: function (number) {
59801            var output = number === 1 ? 'añ' : 'vet';
59802            return number + output;
59803        },
59804        week: {
59805            dow: 1, // Monday is the first day of the week.
59806            doy: 4, // The week that contains Jan 4th is the first week of the year.
59807        },
59808        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
59809        isPM: function (token) {
59810            return token === 'g.m.';
59811        },
59812        meridiem: function (hour, minute, isLower) {
59813            return hour < 12 ? 'a.m.' : 'g.m.';
59814        },
59815    });
59816
59817    return br;
59818
59819})));
59820
59821
59822/***/ }),
59823
vendor: 5,820 bytes, lines 59824-60002
59824/***/ "./node_modules/moment/locale/bs.js":
59825/*!******************************************!*\
59826  !*** ./node_modules/moment/locale/bs.js ***!
59827  \******************************************/
59828/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
59829
59830//! moment.js locale configuration
59831//! locale : Bosnian [bs]
59832//! author : Nedim Cholich : https://github.com/frontyard
59833//! author : Rasid Redzic : https://github.com/rasidre
59834//! based on (hr) translation by Bojan Marković
59835
59836;(function (global, factory) {
59837    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
59838   0
59839}(this, (function (moment) { 'use strict';
59840
59841    //! moment.js locale configuration
59842
59843    function processRelativeTime(number, withoutSuffix, key, isFuture) {
59844        switch (key) {
59845            case 'm':
59846                return withoutSuffix
59847                    ? 'jedna minuta'
59848                    : isFuture
59849                      ? 'jednu minutu'
59850                      : 'jedne minute';
59851        }
59852    }
59853
59854    function translate(number, withoutSuffix, key) {
59855        var result = number + ' ';
59856        switch (key) {
59857            case 'ss':
59858                if (number === 1) {
59859                    result += 'sekunda';
59860                } else if (number === 2 || number === 3 || number === 4) {
59861                    result += 'sekunde';
59862                } else {
59863                    result += 'sekundi';
59864                }
59865                return result;
59866            case 'mm':
59867                if (number === 1) {
59868                    result += 'minuta';
59869                } else if (number === 2 || number === 3 || number === 4) {
59870                    result += 'minute';
59871                } else {
59872                    result += 'minuta';
59873                }
59874                return result;
59875            case 'h':
59876                return withoutSuffix ? 'jedan sat' : 'jedan sat';
59877            case 'hh':
59878                if (number === 1) {
59879                    result += 'sat';
59880                } else if (number === 2 || number === 3 || number === 4) {
59881                    result += 'sata';
59882                } else {
59883                    result += 'sati';
59884                }
59885                return result;
59886            case 'dd':
59887                if (number === 1) {
59888                    result += 'dan';
59889                } else {
59890                    result += 'dana';
59891                }
59892                return result;
59893            case 'MM':
59894                if (number === 1) {
59895                    result += 'mjesec';
59896                } else if (number === 2 || number === 3 || number === 4) {
59897                    result += 'mjeseca';
59898                } else {
59899                    result += 'mjeseci';
59900                }
59901                return result;
59902            case 'yy':
59903                if (number === 1) {
59904                    result += 'godina';
59905                } else if (number === 2 || number === 3 || number === 4) {
59906                    result += 'godine';
59907                } else {
59908                    result += 'godina';
59909                }
59910                return result;
59911        }
59912    }
59913
59914    var bs = moment.defineLocale('bs', {
59915        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
59916            '_'
59917        ),
59918        monthsShort:
59919            'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
59920                '_'
59921            ),
59922        monthsParseExact: true,
59923        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
59924            '_'
59925        ),
59926        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
59927        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
59928        weekdaysParseExact: true,
59929        longDateFormat: {
59930            LT: 'H:mm',
59931            LTS: 'H:mm:ss',
59932            L: 'DD.MM.YYYY',
59933            LL: 'D. MMMM YYYY',
59934            LLL: 'D. MMMM YYYY H:mm',
59935            LLLL: 'dddd, D. MMMM YYYY H:mm',
59936        },
59937        calendar: {
59938            sameDay: '[danas u] LT',
59939            nextDay: '[sutra u] LT',
59940            nextWeek: function () {
59941                switch (this.day()) {
59942                    case 0:
59943                        return '[u] [nedjelju] [u] LT';
59944                    case 3:
59945                        return '[u] [srijedu] [u] LT';
59946                    case 6:
59947                        return '[u] [subotu] [u] LT';
59948                    case 1:
59949                    case 2:
59950                    case 4:
59951                    case 5:
59952                        return '[u] dddd [u] LT';
59953                }
59954            },
59955            lastDay: '[jučer u] LT',
59956            lastWeek: function () {
59957                switch (this.day()) {
59958                    case 0:
59959                    case 3:
59960                        return '[prošlu] dddd [u] LT';
59961                    case 6:
59962                        return '[prošle] [subote] [u] LT';
59963                    case 1:
59964                    case 2:
59965                    case 4:
59966                    case 5:
59967                        return '[prošli] dddd [u] LT';
59968                }
59969            },
59970            sameElse: 'L',
59971        },
59972        relativeTime: {
59973            future: 'za %s',
59974            past: 'prije %s',
59975            s: 'par sekundi',
59976            ss: translate,
59977            m: processRelativeTime,
59978            mm: translate,
59979            h: translate,
59980            hh: translate,
59981            d: 'dan',
59982            dd: translate,
59983            M: 'mjesec',
59984            MM: translate,
59985            y: 'godinu',
59986            yy: translate,
59987        },
59988        dayOfMonthOrdinalParse: /\d{1,2}\./,
59989        ordinal: '%d.',
59990        week: {
59991            dow: 1, // Monday is the first day of the week.
59992            doy: 7, // The week that contains Jan 7th is the first week of the year.
59993        },
59994    });
59995
59996    return bs;
59997
59998})));
59999
60000
60001/***/ }),
60002
vendor: 3,920 bytes, lines 60003-60121
60003/***/ "./node_modules/moment/locale/ca.js":
60004/*!******************************************!*\
60005  !*** ./node_modules/moment/locale/ca.js ***!
60006  \******************************************/
60007/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
60008
60009//! moment.js locale configuration
60010//! locale : Catalan [ca]
60011//! author : Juan G. Hurtado : https://github.com/juanghurtado
60012
60013;(function (global, factory) {
60014    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
60015   0
60016}(this, (function (moment) { 'use strict';
60017
60018    //! moment.js locale configuration
60019
60020    var ca = moment.defineLocale('ca', {
60021        months: {
60022            standalone:
60023                'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
60024                    '_'
60025                ),
60026            format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split(
60027                '_'
60028            ),
60029            isFormat: /D[oD]?(\s)+MMMM/,
60030        },
60031        monthsShort:
60032            'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
60033                '_'
60034            ),
60035        monthsParseExact: true,
60036        weekdays:
60037            'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
60038                '_'
60039            ),
60040        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
60041        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
60042        weekdaysParseExact: true,
60043        longDateFormat: {
60044            LT: 'H:mm',
60045            LTS: 'H:mm:ss',
60046            L: 'DD/MM/YYYY',
60047            LL: 'D MMMM [de] YYYY',
60048            ll: 'D MMM YYYY',
60049            LLL: 'D MMMM [de] YYYY [a les] H:mm',
60050            lll: 'D MMM YYYY, H:mm',
60051            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
60052            llll: 'ddd D MMM YYYY, H:mm',
60053        },
60054        calendar: {
60055            sameDay: function () {
60056                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
60057            },
60058            nextDay: function () {
60059                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
60060            },
60061            nextWeek: function () {
60062                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
60063            },
60064            lastDay: function () {
60065                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
60066            },
60067            lastWeek: function () {
60068                return (
60069                    '[el] dddd [passat a ' +
60070                    (this.hours() !== 1 ? 'les' : 'la') +
60071                    '] LT'
60072                );
60073            },
60074            sameElse: 'L',
60075        },
60076        relativeTime: {
60077            future: "d'aquí %s",
60078            past: 'fa %s',
60079            s: 'uns segons',
60080            ss: '%d segons',
60081            m: 'un minut',
60082            mm: '%d minuts',
60083            h: 'una hora',
60084            hh: '%d hores',
60085            d: 'un dia',
60086            dd: '%d dies',
60087            M: 'un mes',
60088            MM: '%d mesos',
60089            y: 'un any',
60090            yy: '%d anys',
60091        },
60092        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
60093        ordinal: function (number, period) {
60094            var output =
60095                number === 1
60096                    ? 'r'
60097                    : number === 2
60098                      ? 'n'
60099                      : number === 3
60100                        ? 'r'
60101                        : number === 4
60102                          ? 't'
60103                          : 'è';
60104            if (period === 'w' || period === 'W') {
60105                output = 'a';
60106            }
60107            return number + output;
60108        },
60109        week: {
60110            dow: 1, // Monday is the first day of the week.
60111            doy: 4, // The week that contains Jan 4th is the first week of the year.
60112        },
60113    });
60114
60115    return ca;
60116
60117})));
60118
60119
60120/***/ }),
60121
vendor: 7,951 bytes, lines 60122-60321
60122/***/ "./node_modules/moment/locale/cs.js":
60123/*!******************************************!*\
60124  !*** ./node_modules/moment/locale/cs.js ***!
60125  \******************************************/
60126/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
60127
60128//! moment.js locale configuration
60129//! locale : Czech [cs]
60130//! author : petrbela : https://github.com/petrbela
60131
60132;(function (global, factory) {
60133    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
60134   0
60135}(this, (function (moment) { 'use strict';
60136
60137    //! moment.js locale configuration
60138
60139    var months = {
60140            standalone:
60141                'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(
60142                    '_'
60143                ),
60144            format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(
60145                '_'
60146            ),
60147            isFormat: /DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/,
60148        },
60149        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
60150        monthsParse = [
60151            /^led/i,
60152            /^úno/i,
60153            /^bře/i,
60154            /^dub/i,
60155            /^kvě/i,
60156            /^(čvn|červen$|června)/i,
60157            /^(čvc|červenec|července)/i,
60158            /^srp/i,
60159            /^zář/i,
60160            /^říj/i,
60161            /^lis/i,
60162            /^pro/i,
60163        ],
60164        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
60165        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
60166        monthsRegex =
60167            /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;
60168
60169    function plural(n) {
60170        return n > 1 && n < 5 && ~~(n / 10) !== 1;
60171    }
60172    function translate(number, withoutSuffix, key, isFuture) {
60173        var result = number + ' ';
60174        switch (key) {
60175            case 's': // a few seconds / in a few seconds / a few seconds ago
60176                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
60177            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
60178                if (withoutSuffix || isFuture) {
60179                    return result + (plural(number) ? 'sekundy' : 'sekund');
60180                } else {
60181                    return result + 'sekundami';
60182                }
60183            case 'm': // a minute / in a minute / a minute ago
60184                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
60185            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
60186                if (withoutSuffix || isFuture) {
60187                    return result + (plural(number) ? 'minuty' : 'minut');
60188                } else {
60189                    return result + 'minutami';
60190                }
60191            case 'h': // an hour / in an hour / an hour ago
60192                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
60193            case 'hh': // 9 hours / in 9 hours / 9 hours ago
60194                if (withoutSuffix || isFuture) {
60195                    return result + (plural(number) ? 'hodiny' : 'hodin');
60196                } else {
60197                    return result + 'hodinami';
60198                }
60199            case 'd': // a day / in a day / a day ago
60200                return withoutSuffix || isFuture ? 'den' : 'dnem';
60201            case 'dd': // 9 days / in 9 days / 9 days ago
60202                if (withoutSuffix || isFuture) {
60203                    return result + (plural(number) ? 'dny' : 'dní');
60204                } else {
60205                    return result + 'dny';
60206                }
60207            case 'M': // a month / in a month / a month ago
60208                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
60209            case 'MM': // 9 months / in 9 months / 9 months ago
60210                if (withoutSuffix || isFuture) {
60211                    return result + (plural(number) ? 'měsíce' : 'měsíců');
60212                } else {
60213                    return result + 'měsíci';
60214                }
60215            case 'y': // a year / in a year / a year ago
60216                return withoutSuffix || isFuture ? 'rok' : 'rokem';
60217            case 'yy': // 9 years / in 9 years / 9 years ago
60218                if (withoutSuffix || isFuture) {
60219                    return result + (plural(number) ? 'roky' : 'let');
60220                } else {
60221                    return result + 'lety';
60222                }
60223        }
60224    }
60225
60226    var cs = moment.defineLocale('cs', {
60227        months: months,
60228        monthsShort: monthsShort,
60229        monthsRegex: monthsRegex,
60230        monthsShortRegex: monthsRegex,
60231        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
60232        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
60233        monthsStrictRegex:
60234            /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,
60235        monthsShortStrictRegex:
60236            /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
60237        monthsParse: monthsParse,
60238        longMonthsParse: monthsParse,
60239        shortMonthsParse: monthsParse,
60240        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
60241        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
60242        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
60243        longDateFormat: {
60244            LT: 'H:mm',
60245            LTS: 'H:mm:ss',
60246            L: 'DD.MM.YYYY',
60247            LL: 'D. MMMM YYYY',
60248            LLL: 'D. MMMM YYYY H:mm',
60249            LLLL: 'dddd D. MMMM YYYY H:mm',
60250            l: 'D. M. YYYY',
60251        },
60252        calendar: {
60253            sameDay: '[dnes v] LT',
60254            nextDay: '[zítra v] LT',
60255            nextWeek: function () {
60256                switch (this.day()) {
60257                    case 0:
60258                        return '[v neděli v] LT';
60259                    case 1:
60260                    case 2:
60261                        return '[v] dddd [v] LT';
60262                    case 3:
60263                        return '[ve středu v] LT';
60264                    case 4:
60265                        return '[ve čtvrtek v] LT';
60266                    case 5:
60267                        return '[v pátek v] LT';
60268                    case 6:
60269                        return '[v sobotu v] LT';
60270                }
60271            },
60272            lastDay: '[včera v] LT',
60273            lastWeek: function () {
60274                switch (this.day()) {
60275                    case 0:
60276                        return '[minulou neděli v] LT';
60277                    case 1:
60278                    case 2:
60279                        return '[minulé] dddd [v] LT';
60280                    case 3:
60281                        return '[minulou středu v] LT';
60282                    case 4:
60283                    case 5:
60284                        return '[minulý] dddd [v] LT';
60285                    case 6:
60286                        return '[minulou sobotu v] LT';
60287                }
60288            },
60289            sameElse: 'L',
60290        },
60291        relativeTime: {
60292            future: 'za %s',
60293            past: 'před %s',
60294            s: translate,
60295            ss: translate,
60296            m: translate,
60297            mm: translate,
60298            h: translate,
60299            hh: translate,
60300            d: translate,
60301            dd: translate,
60302            M: translate,
60303            MM: translate,
60304            y: translate,
60305            yy: translate,
60306        },
60307        dayOfMonthOrdinalParse: /\d{1,2}\./,
60308        ordinal: '%d.',
60309        week: {
60310            dow: 1, // Monday is the first day of the week.
60311            doy: 4, // The week that contains Jan 4th is the first week of the year.
60312        },
60313    });
60314
60315    return cs;
60316
60317})));
60318
60319
60320/***/ }),
60321
vendor: 3,062 bytes, lines 60322-60403
60322/***/ "./node_modules/moment/locale/cv.js":
60323/*!******************************************!*\
60324  !*** ./node_modules/moment/locale/cv.js ***!
60325  \******************************************/
60326/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
60327
60328//! moment.js locale configuration
60329//! locale : Chuvash [cv]
60330//! author : Anatoly Mironov : https://github.com/mirontoli
60331
60332;(function (global, factory) {
60333    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
60334   0
60335}(this, (function (moment) { 'use strict';
60336
60337    //! moment.js locale configuration
60338
60339    var cv = moment.defineLocale('cv', {
60340        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
60341            '_'
60342        ),
60343        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
60344        weekdays:
60345            'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
60346                '_'
60347            ),
60348        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
60349        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
60350        longDateFormat: {
60351            LT: 'HH:mm',
60352            LTS: 'HH:mm:ss',
60353            L: 'DD-MM-YYYY',
60354            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
60355            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
60356            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
60357        },
60358        calendar: {
60359            sameDay: '[Паян] LT [сехетре]',
60360            nextDay: '[Ыран] LT [сехетре]',
60361            lastDay: '[Ӗнер] LT [сехетре]',
60362            nextWeek: '[Ҫитес] dddd LT [сехетре]',
60363            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
60364            sameElse: 'L',
60365        },
60366        relativeTime: {
60367            future: function (output) {
60368                var affix = /сехет$/i.exec(output)
60369                    ? 'рен'
60370                    : /ҫул$/i.exec(output)
60371                      ? 'тан'
60372                      : 'ран';
60373                return output + affix;
60374            },
60375            past: '%s каялла',
60376            s: 'пӗр-ик ҫеккунт',
60377            ss: '%d ҫеккунт',
60378            m: 'пӗр минут',
60379            mm: '%d минут',
60380            h: 'пӗр сехет',
60381            hh: '%d сехет',
60382            d: 'пӗр кун',
60383            dd: '%d кун',
60384            M: 'пӗр уйӑх',
60385            MM: '%d уйӑх',
60386            y: 'пӗр ҫул',
60387            yy: '%d ҫул',
60388        },
60389        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
60390        ordinal: '%d-мӗш',
60391        week: {
60392            dow: 1, // Monday is the first day of the week.
60393            doy: 7, // The week that contains Jan 7th is the first week of the year.
60394        },
60395    });
60396
60397    return cv;
60398
60399})));
60400
60401
60402/***/ }),
60403
vendor: 3,687 bytes, lines 60404-60520
60404/***/ "./node_modules/moment/locale/cy.js":
60405/*!******************************************!*\
60406  !*** ./node_modules/moment/locale/cy.js ***!
60407  \******************************************/
60408/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
60409
60410//! moment.js locale configuration
60411//! locale : Welsh [cy]
60412//! author : Robert Allen : https://github.com/robgallen
60413//! author : https://github.com/ryangreaves
60414
60415;(function (global, factory) {
60416    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
60417   0
60418}(this, (function (moment) { 'use strict';
60419
60420    //! moment.js locale configuration
60421
60422    var cy = moment.defineLocale('cy', {
60423        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
60424            '_'
60425        ),
60426        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
60427            '_'
60428        ),
60429        weekdays:
60430            'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
60431                '_'
60432            ),
60433        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
60434        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
60435        weekdaysParseExact: true,
60436        // time formats are the same as en-gb
60437        longDateFormat: {
60438            LT: 'HH:mm',
60439            LTS: 'HH:mm:ss',
60440            L: 'DD/MM/YYYY',
60441            LL: 'D MMMM YYYY',
60442            LLL: 'D MMMM YYYY HH:mm',
60443            LLLL: 'dddd, D MMMM YYYY HH:mm',
60444        },
60445        calendar: {
60446            sameDay: '[Heddiw am] LT',
60447            nextDay: '[Yfory am] LT',
60448            nextWeek: 'dddd [am] LT',
60449            lastDay: '[Ddoe am] LT',
60450            lastWeek: 'dddd [diwethaf am] LT',
60451            sameElse: 'L',
60452        },
60453        relativeTime: {
60454            future: 'mewn %s',
60455            past: '%s yn ôl',
60456            s: 'ychydig eiliadau',
60457            ss: '%d eiliad',
60458            m: 'munud',
60459            mm: '%d munud',
60460            h: 'awr',
60461            hh: '%d awr',
60462            d: 'diwrnod',
60463            dd: '%d diwrnod',
60464            M: 'mis',
60465            MM: '%d mis',
60466            y: 'blwyddyn',
60467            yy: '%d flynedd',
60468        },
60469        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
60470        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
60471        ordinal: function (number) {
60472            var b = number,
60473                output = '',
60474                lookup = [
60475                    '',
60476                    'af',
60477                    'il',
60478                    'ydd',
60479                    'ydd',
60480                    'ed',
60481                    'ed',
60482                    'ed',
60483                    'fed',
60484                    'fed',
60485                    'fed', // 1af to 10fed
60486                    'eg',
60487                    'fed',
60488                    'eg',
60489                    'eg',
60490                    'fed',
60491                    'eg',
60492                    'eg',
60493                    'fed',
60494                    'eg',
60495                    'fed', // 11eg to 20fed
60496                ];
60497            if (b > 20) {
60498                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
60499                    output = 'fed'; // not 30ain, 70ain or 90ain
60500                } else {
60501                    output = 'ain';
60502                }
60503            } else if (b > 0) {
60504                output = lookup[b];
60505            }
60506            return number + output;
60507        },
60508        week: {
60509            dow: 1, // Monday is the first day of the week.
60510            doy: 4, // The week that contains Jan 4th is the first week of the year.
60511        },
60512    });
60513
60514    return cy;
60515
60516})));
60517
60518
60519/***/ }),
60520
vendor: 2,306 bytes, lines 60521-60592
60521/***/ "./node_modules/moment/locale/da.js":
60522/*!******************************************!*\
60523  !*** ./node_modules/moment/locale/da.js ***!
60524  \******************************************/
60525/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
60526
60527//! moment.js locale configuration
60528//! locale : Danish [da]
60529//! author : Ulrik Nielsen : https://github.com/mrbase
60530
60531;(function (global, factory) {
60532    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
60533   0
60534}(this, (function (moment) { 'use strict';
60535
60536    //! moment.js locale configuration
60537
60538    var da = moment.defineLocale('da', {
60539        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
60540            '_'
60541        ),
60542        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
60543        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
60544        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
60545        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
60546        longDateFormat: {
60547            LT: 'HH:mm',
60548            LTS: 'HH:mm:ss',
60549            L: 'DD.MM.YYYY',
60550            LL: 'D. MMMM YYYY',
60551            LLL: 'D. MMMM YYYY HH:mm',
60552            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
60553        },
60554        calendar: {
60555            sameDay: '[i dag kl.] LT',
60556            nextDay: '[i morgen kl.] LT',
60557            nextWeek: 'på dddd [kl.] LT',
60558            lastDay: '[i går kl.] LT',
60559            lastWeek: '[i] dddd[s kl.] LT',
60560            sameElse: 'L',
60561        },
60562        relativeTime: {
60563            future: 'om %s',
60564            past: '%s siden',
60565            s: 'få sekunder',
60566            ss: '%d sekunder',
60567            m: 'et minut',
60568            mm: '%d minutter',
60569            h: 'en time',
60570            hh: '%d timer',
60571            d: 'en dag',
60572            dd: '%d dage',
60573            M: 'en måned',
60574            MM: '%d måneder',
60575            y: 'et år',
60576            yy: '%d år',
60577        },
60578        dayOfMonthOrdinalParse: /\d{1,2}\./,
60579        ordinal: '%d.',
60580        week: {
60581            dow: 1, // Monday is the first day of the week.
60582            doy: 4, // The week that contains Jan 4th is the first week of the year.
60583        },
60584    });
60585
60586    return da;
60587
60588})));
60589
60590
60591/***/ }),
60592
vendor: 3,416 bytes, lines 60593-60690
60593/***/ "./node_modules/moment/locale/de-at.js":
60594/*!*********************************************!*\
60595  !*** ./node_modules/moment/locale/de-at.js ***!
60596  \*********************************************/
60597/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
60598
60599//! moment.js locale configuration
60600//! locale : German (Austria) [de-at]
60601//! author : lluchs : https://github.com/lluchs
60602//! author: Menelion Elensúle: https://github.com/Oire
60603//! author : Martin Groller : https://github.com/MadMG
60604//! author : Mikolaj Dadela : https://github.com/mik01aj
60605
60606;(function (global, factory) {
60607    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
60608   0
60609}(this, (function (moment) { 'use strict';
60610
60611    //! moment.js locale configuration
60612
60613    function processRelativeTime(number, withoutSuffix, key, isFuture) {
60614        var format = {
60615            m: ['eine Minute', 'einer Minute'],
60616            h: ['eine Stunde', 'einer Stunde'],
60617            d: ['ein Tag', 'einem Tag'],
60618            dd: [number + ' Tage', number + ' Tagen'],
60619            w: ['eine Woche', 'einer Woche'],
60620            M: ['ein Monat', 'einem Monat'],
60621            MM: [number + ' Monate', number + ' Monaten'],
60622            y: ['ein Jahr', 'einem Jahr'],
60623            yy: [number + ' Jahre', number + ' Jahren'],
60624        };
60625        return withoutSuffix ? format[key][0] : format[key][1];
60626    }
60627
60628    var deAt = moment.defineLocale('de-at', {
60629        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
60630            '_'
60631        ),
60632        monthsShort:
60633            'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
60634        monthsParseExact: true,
60635        weekdays:
60636            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
60637                '_'
60638            ),
60639        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
60640        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
60641        weekdaysParseExact: true,
60642        longDateFormat: {
60643            LT: 'HH:mm',
60644            LTS: 'HH:mm:ss',
60645            L: 'DD.MM.YYYY',
60646            LL: 'D. MMMM YYYY',
60647            LLL: 'D. MMMM YYYY HH:mm',
60648            LLLL: 'dddd, D. MMMM YYYY HH:mm',
60649        },
60650        calendar: {
60651            sameDay: '[heute um] LT [Uhr]',
60652            sameElse: 'L',
60653            nextDay: '[morgen um] LT [Uhr]',
60654            nextWeek: 'dddd [um] LT [Uhr]',
60655            lastDay: '[gestern um] LT [Uhr]',
60656            lastWeek: '[letzten] dddd [um] LT [Uhr]',
60657        },
60658        relativeTime: {
60659            future: 'in %s',
60660            past: 'vor %s',
60661            s: 'ein paar Sekunden',
60662            ss: '%d Sekunden',
60663            m: processRelativeTime,
60664            mm: '%d Minuten',
60665            h: processRelativeTime,
60666            hh: '%d Stunden',
60667            d: processRelativeTime,
60668            dd: processRelativeTime,
60669            w: processRelativeTime,
60670            ww: '%d Wochen',
60671            M: processRelativeTime,
60672            MM: processRelativeTime,
60673            y: processRelativeTime,
60674            yy: processRelativeTime,
60675        },
60676        dayOfMonthOrdinalParse: /\d{1,2}\./,
60677        ordinal: '%d.',
60678        week: {
60679            dow: 1, // Monday is the first day of the week.
60680            doy: 4, // The week that contains Jan 4th is the first week of the year.
60681        },
60682    });
60683
60684    return deAt;
60685
60686})));
60687
60688
60689/***/ }),
60690
vendor: 3,251 bytes, lines 60691-60785
60691/***/ "./node_modules/moment/locale/de-ch.js":
60692/*!*********************************************!*\
60693  !*** ./node_modules/moment/locale/de-ch.js ***!
60694  \*********************************************/
60695/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
60696
60697//! moment.js locale configuration
60698//! locale : German (Switzerland) [de-ch]
60699//! author : sschueller : https://github.com/sschueller
60700
60701;(function (global, factory) {
60702    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
60703   0
60704}(this, (function (moment) { 'use strict';
60705
60706    //! moment.js locale configuration
60707
60708    function processRelativeTime(number, withoutSuffix, key, isFuture) {
60709        var format = {
60710            m: ['eine Minute', 'einer Minute'],
60711            h: ['eine Stunde', 'einer Stunde'],
60712            d: ['ein Tag', 'einem Tag'],
60713            dd: [number + ' Tage', number + ' Tagen'],
60714            w: ['eine Woche', 'einer Woche'],
60715            M: ['ein Monat', 'einem Monat'],
60716            MM: [number + ' Monate', number + ' Monaten'],
60717            y: ['ein Jahr', 'einem Jahr'],
60718            yy: [number + ' Jahre', number + ' Jahren'],
60719        };
60720        return withoutSuffix ? format[key][0] : format[key][1];
60721    }
60722
60723    var deCh = moment.defineLocale('de-ch', {
60724        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
60725            '_'
60726        ),
60727        monthsShort:
60728            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
60729        monthsParseExact: true,
60730        weekdays:
60731            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
60732                '_'
60733            ),
60734        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
60735        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
60736        weekdaysParseExact: true,
60737        longDateFormat: {
60738            LT: 'HH:mm',
60739            LTS: 'HH:mm:ss',
60740            L: 'DD.MM.YYYY',
60741            LL: 'D. MMMM YYYY',
60742            LLL: 'D. MMMM YYYY HH:mm',
60743            LLLL: 'dddd, D. MMMM YYYY HH:mm',
60744        },
60745        calendar: {
60746            sameDay: '[heute um] LT [Uhr]',
60747            sameElse: 'L',
60748            nextDay: '[morgen um] LT [Uhr]',
60749            nextWeek: 'dddd [um] LT [Uhr]',
60750            lastDay: '[gestern um] LT [Uhr]',
60751            lastWeek: '[letzten] dddd [um] LT [Uhr]',
60752        },
60753        relativeTime: {
60754            future: 'in %s',
60755            past: 'vor %s',
60756            s: 'ein paar Sekunden',
60757            ss: '%d Sekunden',
60758            m: processRelativeTime,
60759            mm: '%d Minuten',
60760            h: processRelativeTime,
60761            hh: '%d Stunden',
60762            d: processRelativeTime,
60763            dd: processRelativeTime,
60764            w: processRelativeTime,
60765            ww: '%d Wochen',
60766            M: processRelativeTime,
60767            MM: processRelativeTime,
60768            y: processRelativeTime,
60769            yy: processRelativeTime,
60770        },
60771        dayOfMonthOrdinalParse: /\d{1,2}\./,
60772        ordinal: '%d.',
60773        week: {
60774            dow: 1, // Monday is the first day of the week.
60775            doy: 4, // The week that contains Jan 4th is the first week of the year.
60776        },
60777    });
60778
60779    return deCh;
60780
60781})));
60782
60783
60784/***/ }),
60785
vendor: 3,327 bytes, lines 60786-60882
60786/***/ "./node_modules/moment/locale/de.js":
60787/*!******************************************!*\
60788  !*** ./node_modules/moment/locale/de.js ***!
60789  \******************************************/
60790/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
60791
60792//! moment.js locale configuration
60793//! locale : German [de]
60794//! author : lluchs : https://github.com/lluchs
60795//! author: Menelion Elensúle: https://github.com/Oire
60796//! author : Mikolaj Dadela : https://github.com/mik01aj
60797
60798;(function (global, factory) {
60799    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
60800   0
60801}(this, (function (moment) { 'use strict';
60802
60803    //! moment.js locale configuration
60804
60805    function processRelativeTime(number, withoutSuffix, key, isFuture) {
60806        var format = {
60807            m: ['eine Minute', 'einer Minute'],
60808            h: ['eine Stunde', 'einer Stunde'],
60809            d: ['ein Tag', 'einem Tag'],
60810            dd: [number + ' Tage', number + ' Tagen'],
60811            w: ['eine Woche', 'einer Woche'],
60812            M: ['ein Monat', 'einem Monat'],
60813            MM: [number + ' Monate', number + ' Monaten'],
60814            y: ['ein Jahr', 'einem Jahr'],
60815            yy: [number + ' Jahre', number + ' Jahren'],
60816        };
60817        return withoutSuffix ? format[key][0] : format[key][1];
60818    }
60819
60820    var de = moment.defineLocale('de', {
60821        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
60822            '_'
60823        ),
60824        monthsShort:
60825            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
60826        monthsParseExact: true,
60827        weekdays:
60828            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
60829                '_'
60830            ),
60831        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
60832        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
60833        weekdaysParseExact: true,
60834        longDateFormat: {
60835            LT: 'HH:mm',
60836            LTS: 'HH:mm:ss',
60837            L: 'DD.MM.YYYY',
60838            LL: 'D. MMMM YYYY',
60839            LLL: 'D. MMMM YYYY HH:mm',
60840            LLLL: 'dddd, D. MMMM YYYY HH:mm',
60841        },
60842        calendar: {
60843            sameDay: '[heute um] LT [Uhr]',
60844            sameElse: 'L',
60845            nextDay: '[morgen um] LT [Uhr]',
60846            nextWeek: 'dddd [um] LT [Uhr]',
60847            lastDay: '[gestern um] LT [Uhr]',
60848            lastWeek: '[letzten] dddd [um] LT [Uhr]',
60849        },
60850        relativeTime: {
60851            future: 'in %s',
60852            past: 'vor %s',
60853            s: 'ein paar Sekunden',
60854            ss: '%d Sekunden',
60855            m: processRelativeTime,
60856            mm: '%d Minuten',
60857            h: processRelativeTime,
60858            hh: '%d Stunden',
60859            d: processRelativeTime,
60860            dd: processRelativeTime,
60861            w: processRelativeTime,
60862            ww: '%d Wochen',
60863            M: processRelativeTime,
60864            MM: processRelativeTime,
60865            y: processRelativeTime,
60866            yy: processRelativeTime,
60867        },
60868        dayOfMonthOrdinalParse: /\d{1,2}\./,
60869        ordinal: '%d.',
60870        week: {
60871            dow: 1, // Monday is the first day of the week.
60872            doy: 4, // The week that contains Jan 4th is the first week of the year.
60873        },
60874    });
60875
60876    return de;
60877
60878})));
60879
60880
60881/***/ }),
60882
vendor: 3,285 bytes, lines 60883-60991
60883/***/ "./node_modules/moment/locale/dv.js":
60884/*!******************************************!*\
60885  !*** ./node_modules/moment/locale/dv.js ***!
60886  \******************************************/
60887/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
60888
60889//! moment.js locale configuration
60890//! locale : Maldivian [dv]
60891//! author : Jawish Hameed : https://github.com/jawish
60892
60893;(function (global, factory) {
60894    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
60895   0
60896}(this, (function (moment) { 'use strict';
60897
60898    //! moment.js locale configuration
60899
60900    var months = [
60901            'ޖެނުއަރީ',
60902            'ފެބްރުއަރީ',
60903            'މާރިޗު',
60904            'އޭޕްރީލު',
60905            'މޭ',
60906            'ޖޫން',
60907            'ޖުލައި',
60908            'އޯގަސްޓު',
60909            'ސެޕްޓެމްބަރު',
60910            'އޮކްޓޯބަރު',
60911            'ނޮވެމްބަރު',
60912            'ޑިސެމްބަރު',
60913        ],
60914        weekdays = [
60915            'އާދިއްތަ',
60916            'ހޯމަ',
60917            'އަންގާރަ',
60918            'ބުދަ',
60919            'ބުރާސްފަތި',
60920            'ހުކުރު',
60921            'ހޮނިހިރު',
60922        ];
60923
60924    var dv = moment.defineLocale('dv', {
60925        months: months,
60926        monthsShort: months,
60927        weekdays: weekdays,
60928        weekdaysShort: weekdays,
60929        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
60930        longDateFormat: {
60931            LT: 'HH:mm',
60932            LTS: 'HH:mm:ss',
60933            L: 'D/M/YYYY',
60934            LL: 'D MMMM YYYY',
60935            LLL: 'D MMMM YYYY HH:mm',
60936            LLLL: 'dddd D MMMM YYYY HH:mm',
60937        },
60938        meridiemParse: /މކ|މފ/,
60939        isPM: function (input) {
60940            return 'މފ' === input;
60941        },
60942        meridiem: function (hour, minute, isLower) {
60943            if (hour < 12) {
60944                return 'މކ';
60945            } else {
60946                return 'މފ';
60947            }
60948        },
60949        calendar: {
60950            sameDay: '[މިއަދު] LT',
60951            nextDay: '[މާދަމާ] LT',
60952            nextWeek: 'dddd LT',
60953            lastDay: '[އިއްޔެ] LT',
60954            lastWeek: '[ފާއިތުވި] dddd LT',
60955            sameElse: 'L',
60956        },
60957        relativeTime: {
60958            future: 'ތެރޭގައި %s',
60959            past: 'ކުރިން %s',
60960            s: 'ސިކުންތުކޮޅެއް',
60961            ss: 'd% ސިކުންތު',
60962            m: 'މިނިޓެއް',
60963            mm: 'މިނިޓު %d',
60964            h: 'ގަޑިއިރެއް',
60965            hh: 'ގަޑިއިރު %d',
60966            d: 'ދުވަހެއް',
60967            dd: 'ދުވަސް %d',
60968            M: 'މަހެއް',
60969            MM: 'މަސް %d',
60970            y: 'އަހަރެއް',
60971            yy: 'އަހަރު %d',
60972        },
60973        preparse: function (string) {
60974            return string.replace(/،/g, ',');
60975        },
60976        postformat: function (string) {
60977            return string.replace(/,/g, '،');
60978        },
60979        week: {
60980            dow: 7, // Sunday is the first day of the week.
60981            doy: 12, // The week that contains Jan 12th is the first week of the year.
60982        },
60983    });
60984
60985    return dv;
60986
60987})));
60988
60989
60990/***/ }),
60991
vendor: 4,762 bytes, lines 60992-61116
60992/***/ "./node_modules/moment/locale/el.js":
60993/*!******************************************!*\
60994  !*** ./node_modules/moment/locale/el.js ***!
60995  \******************************************/
60996/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
60997
60998//! moment.js locale configuration
60999//! locale : Greek [el]
61000//! author : Aggelos Karalias : https://github.com/mehiel
61001
61002;(function (global, factory) {
61003    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
61004   0
61005}(this, (function (moment) { 'use strict';
61006
61007    //! moment.js locale configuration
61008
61009    function isFunction(input) {
61010        return (
61011            (typeof Function !== 'undefined' && input instanceof Function) ||
61012            Object.prototype.toString.call(input) === '[object Function]'
61013        );
61014    }
61015
61016    var el = moment.defineLocale('el', {
61017        monthsNominativeEl:
61018            'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
61019                '_'
61020            ),
61021        monthsGenitiveEl:
61022            'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
61023                '_'
61024            ),
61025        months: function (momentToFormat, format) {
61026            if (!momentToFormat) {
61027                return this._monthsNominativeEl;
61028            } else if (
61029                typeof format === 'string' &&
61030                /D/.test(format.substring(0, format.indexOf('MMMM')))
61031            ) {
61032                // if there is a day number before 'MMMM'
61033                return this._monthsGenitiveEl[momentToFormat.month()];
61034            } else {
61035                return this._monthsNominativeEl[momentToFormat.month()];
61036            }
61037        },
61038        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
61039        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
61040            '_'
61041        ),
61042        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
61043        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
61044        meridiem: function (hours, minutes, isLower) {
61045            if (hours > 11) {
61046                return isLower ? 'μμ' : 'ΜΜ';
61047            } else {
61048                return isLower ? 'πμ' : 'ΠΜ';
61049            }
61050        },
61051        isPM: function (input) {
61052            return (input + '').toLowerCase()[0] === 'μ';
61053        },
61054        meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
61055        longDateFormat: {
61056            LT: 'h:mm A',
61057            LTS: 'h:mm:ss A',
61058            L: 'DD/MM/YYYY',
61059            LL: 'D MMMM YYYY',
61060            LLL: 'D MMMM YYYY h:mm A',
61061            LLLL: 'dddd, D MMMM YYYY h:mm A',
61062        },
61063        calendarEl: {
61064            sameDay: '[Σήμερα {}] LT',
61065            nextDay: '[Αύριο {}] LT',
61066            nextWeek: 'dddd [{}] LT',
61067            lastDay: '[Χθες {}] LT',
61068            lastWeek: function () {
61069                switch (this.day()) {
61070                    case 6:
61071                        return '[το προηγούμενο] dddd [{}] LT';
61072                    default:
61073                        return '[την προηγούμενη] dddd [{}] LT';
61074                }
61075            },
61076            sameElse: 'L',
61077        },
61078        calendar: function (key, mom) {
61079            var output = this._calendarEl[key],
61080                hours = mom && mom.hours();
61081            if (isFunction(output)) {
61082                output = output.apply(mom);
61083            }
61084            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
61085        },
61086        relativeTime: {
61087            future: 'σε %s',
61088            past: '%s πριν',
61089            s: 'λίγα δευτερόλεπτα',
61090            ss: '%d δευτερόλεπτα',
61091            m: 'ένα λεπτό',
61092            mm: '%d λεπτά',
61093            h: 'μία ώρα',
61094            hh: '%d ώρες',
61095            d: 'μία μέρα',
61096            dd: '%d μέρες',
61097            M: 'ένας μήνας',
61098            MM: '%d μήνες',
61099            y: 'ένας χρόνος',
61100            yy: '%d χρόνια',
61101        },
61102        dayOfMonthOrdinalParse: /\d{1,2}η/,
61103        ordinal: '%dη',
61104        week: {
61105            dow: 1, // Monday is the first day of the week.
61106            doy: 4, // The week that contains Jan 4st is the first week of the year.
61107        },
61108    });
61109
61110    return el;
61111
61112})));
61113
61114
61115/***/ }),
61116
vendor: 2,806 bytes, lines 61117-61203
61117/***/ "./node_modules/moment/locale/en-au.js":
61118/*!*********************************************!*\
61119  !*** ./node_modules/moment/locale/en-au.js ***!
61120  \*********************************************/
61121/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
61122
61123//! moment.js locale configuration
61124//! locale : English (Australia) [en-au]
61125//! author : Jared Morse : https://github.com/jarcoal
61126
61127;(function (global, factory) {
61128    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
61129   0
61130}(this, (function (moment) { 'use strict';
61131
61132    //! moment.js locale configuration
61133
61134    var enAu = moment.defineLocale('en-au', {
61135        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
61136            '_'
61137        ),
61138        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
61139        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
61140            '_'
61141        ),
61142        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
61143        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
61144        longDateFormat: {
61145            LT: 'h:mm A',
61146            LTS: 'h:mm:ss A',
61147            L: 'DD/MM/YYYY',
61148            LL: 'D MMMM YYYY',
61149            LLL: 'D MMMM YYYY h:mm A',
61150            LLLL: 'dddd, D MMMM YYYY h:mm A',
61151        },
61152        calendar: {
61153            sameDay: '[Today at] LT',
61154            nextDay: '[Tomorrow at] LT',
61155            nextWeek: 'dddd [at] LT',
61156            lastDay: '[Yesterday at] LT',
61157            lastWeek: '[Last] dddd [at] LT',
61158            sameElse: 'L',
61159        },
61160        relativeTime: {
61161            future: 'in %s',
61162            past: '%s ago',
61163            s: 'a few seconds',
61164            ss: '%d seconds',
61165            m: 'a minute',
61166            mm: '%d minutes',
61167            h: 'an hour',
61168            hh: '%d hours',
61169            d: 'a day',
61170            dd: '%d days',
61171            M: 'a month',
61172            MM: '%d months',
61173            y: 'a year',
61174            yy: '%d years',
61175        },
61176        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
61177        ordinal: function (number) {
61178            var b = number % 10,
61179                output =
61180                    ~~((number % 100) / 10) === 1
61181                        ? 'th'
61182                        : b === 1
61183                          ? 'st'
61184                          : b === 2
61185                            ? 'nd'
61186                            : b === 3
61187                              ? 'rd'
61188                              : 'th';
61189            return number + output;
61190        },
61191        week: {
61192            dow: 0, // Sunday is the first day of the week.
61193            doy: 4, // The week that contains Jan 4th is the first week of the year.
61194        },
61195    });
61196
61197    return enAu;
61198
61199})));
61200
61201
61202/***/ }),
61203
vendor: 2,639 bytes, lines 61204-61286
61204/***/ "./node_modules/moment/locale/en-ca.js":
61205/*!*********************************************!*\
61206  !*** ./node_modules/moment/locale/en-ca.js ***!
61207  \*********************************************/
61208/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
61209
61210//! moment.js locale configuration
61211//! locale : English (Canada) [en-ca]
61212//! author : Jonathan Abourbih : https://github.com/jonbca
61213
61214;(function (global, factory) {
61215    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
61216   0
61217}(this, (function (moment) { 'use strict';
61218
61219    //! moment.js locale configuration
61220
61221    var enCa = moment.defineLocale('en-ca', {
61222        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
61223            '_'
61224        ),
61225        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
61226        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
61227            '_'
61228        ),
61229        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
61230        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
61231        longDateFormat: {
61232            LT: 'h:mm A',
61233            LTS: 'h:mm:ss A',
61234            L: 'YYYY-MM-DD',
61235            LL: 'MMMM D, YYYY',
61236            LLL: 'MMMM D, YYYY h:mm A',
61237            LLLL: 'dddd, MMMM D, YYYY h:mm A',
61238        },
61239        calendar: {
61240            sameDay: '[Today at] LT',
61241            nextDay: '[Tomorrow at] LT',
61242            nextWeek: 'dddd [at] LT',
61243            lastDay: '[Yesterday at] LT',
61244            lastWeek: '[Last] dddd [at] LT',
61245            sameElse: 'L',
61246        },
61247        relativeTime: {
61248            future: 'in %s',
61249            past: '%s ago',
61250            s: 'a few seconds',
61251            ss: '%d seconds',
61252            m: 'a minute',
61253            mm: '%d minutes',
61254            h: 'an hour',
61255            hh: '%d hours',
61256            d: 'a day',
61257            dd: '%d days',
61258            M: 'a month',
61259            MM: '%d months',
61260            y: 'a year',
61261            yy: '%d years',
61262        },
61263        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
61264        ordinal: function (number) {
61265            var b = number % 10,
61266                output =
61267                    ~~((number % 100) / 10) === 1
61268                        ? 'th'
61269                        : b === 1
61270                          ? 'st'
61271                          : b === 2
61272                            ? 'nd'
61273                            : b === 3
61274                              ? 'rd'
61275                              : 'th';
61276            return number + output;
61277        },
61278    });
61279
61280    return enCa;
61281
61282})));
61283
61284
61285/***/ }),
61286
vendor: 2,812 bytes, lines 61287-61373
61287/***/ "./node_modules/moment/locale/en-gb.js":
61288/*!*********************************************!*\
61289  !*** ./node_modules/moment/locale/en-gb.js ***!
61290  \*********************************************/
61291/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
61292
61293//! moment.js locale configuration
61294//! locale : English (United Kingdom) [en-gb]
61295//! author : Chris Gedrim : https://github.com/chrisgedrim
61296
61297;(function (global, factory) {
61298    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
61299   0
61300}(this, (function (moment) { 'use strict';
61301
61302    //! moment.js locale configuration
61303
61304    var enGb = moment.defineLocale('en-gb', {
61305        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
61306            '_'
61307        ),
61308        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
61309        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
61310            '_'
61311        ),
61312        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
61313        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
61314        longDateFormat: {
61315            LT: 'HH:mm',
61316            LTS: 'HH:mm:ss',
61317            L: 'DD/MM/YYYY',
61318            LL: 'D MMMM YYYY',
61319            LLL: 'D MMMM YYYY HH:mm',
61320            LLLL: 'dddd, D MMMM YYYY HH:mm',
61321        },
61322        calendar: {
61323            sameDay: '[Today at] LT',
61324            nextDay: '[Tomorrow at] LT',
61325            nextWeek: 'dddd [at] LT',
61326            lastDay: '[Yesterday at] LT',
61327            lastWeek: '[Last] dddd [at] LT',
61328            sameElse: 'L',
61329        },
61330        relativeTime: {
61331            future: 'in %s',
61332            past: '%s ago',
61333            s: 'a few seconds',
61334            ss: '%d seconds',
61335            m: 'a minute',
61336            mm: '%d minutes',
61337            h: 'an hour',
61338            hh: '%d hours',
61339            d: 'a day',
61340            dd: '%d days',
61341            M: 'a month',
61342            MM: '%d months',
61343            y: 'a year',
61344            yy: '%d years',
61345        },
61346        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
61347        ordinal: function (number) {
61348            var b = number % 10,
61349                output =
61350                    ~~((number % 100) / 10) === 1
61351                        ? 'th'
61352                        : b === 1
61353                          ? 'st'
61354                          : b === 2
61355                            ? 'nd'
61356                            : b === 3
61357                              ? 'rd'
61358                              : 'th';
61359            return number + output;
61360        },
61361        week: {
61362            dow: 1, // Monday is the first day of the week.
61363            doy: 4, // The week that contains Jan 4th is the first week of the year.
61364        },
61365    });
61366
61367    return enGb;
61368
61369})));
61370
61371
61372/***/ }),
61373
vendor: 2,810 bytes, lines 61374-61460
61374/***/ "./node_modules/moment/locale/en-ie.js":
61375/*!*********************************************!*\
61376  !*** ./node_modules/moment/locale/en-ie.js ***!
61377  \*********************************************/
61378/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
61379
61380//! moment.js locale configuration
61381//! locale : English (Ireland) [en-ie]
61382//! author : Chris Cartlidge : https://github.com/chriscartlidge
61383
61384;(function (global, factory) {
61385    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
61386   0
61387}(this, (function (moment) { 'use strict';
61388
61389    //! moment.js locale configuration
61390
61391    var enIe = moment.defineLocale('en-ie', {
61392        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
61393            '_'
61394        ),
61395        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
61396        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
61397            '_'
61398        ),
61399        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
61400        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
61401        longDateFormat: {
61402            LT: 'HH:mm',
61403            LTS: 'HH:mm:ss',
61404            L: 'DD/MM/YYYY',
61405            LL: 'D MMMM YYYY',
61406            LLL: 'D MMMM YYYY HH:mm',
61407            LLLL: 'dddd D MMMM YYYY HH:mm',
61408        },
61409        calendar: {
61410            sameDay: '[Today at] LT',
61411            nextDay: '[Tomorrow at] LT',
61412            nextWeek: 'dddd [at] LT',
61413            lastDay: '[Yesterday at] LT',
61414            lastWeek: '[Last] dddd [at] LT',
61415            sameElse: 'L',
61416        },
61417        relativeTime: {
61418            future: 'in %s',
61419            past: '%s ago',
61420            s: 'a few seconds',
61421            ss: '%d seconds',
61422            m: 'a minute',
61423            mm: '%d minutes',
61424            h: 'an hour',
61425            hh: '%d hours',
61426            d: 'a day',
61427            dd: '%d days',
61428            M: 'a month',
61429            MM: '%d months',
61430            y: 'a year',
61431            yy: '%d years',
61432        },
61433        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
61434        ordinal: function (number) {
61435            var b = number % 10,
61436                output =
61437                    ~~((number % 100) / 10) === 1
61438                        ? 'th'
61439                        : b === 1
61440                          ? 'st'
61441                          : b === 2
61442                            ? 'nd'
61443                            : b === 3
61444                              ? 'rd'
61445                              : 'th';
61446            return number + output;
61447        },
61448        week: {
61449            dow: 1, // Monday is the first day of the week.
61450            doy: 4, // The week that contains Jan 4th is the first week of the year.
61451        },
61452    });
61453
61454    return enIe;
61455
61456})));
61457
61458
61459/***/ }),
61460
vendor: 2,632 bytes, lines 61461-61543
61461/***/ "./node_modules/moment/locale/en-il.js":
61462/*!*********************************************!*\
61463  !*** ./node_modules/moment/locale/en-il.js ***!
61464  \*********************************************/
61465/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
61466
61467//! moment.js locale configuration
61468//! locale : English (Israel) [en-il]
61469//! author : Chris Gedrim : https://github.com/chrisgedrim
61470
61471;(function (global, factory) {
61472    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
61473   0
61474}(this, (function (moment) { 'use strict';
61475
61476    //! moment.js locale configuration
61477
61478    var enIl = moment.defineLocale('en-il', {
61479        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
61480            '_'
61481        ),
61482        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
61483        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
61484            '_'
61485        ),
61486        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
61487        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
61488        longDateFormat: {
61489            LT: 'HH:mm',
61490            LTS: 'HH:mm:ss',
61491            L: 'DD/MM/YYYY',
61492            LL: 'D MMMM YYYY',
61493            LLL: 'D MMMM YYYY HH:mm',
61494            LLLL: 'dddd, D MMMM YYYY HH:mm',
61495        },
61496        calendar: {
61497            sameDay: '[Today at] LT',
61498            nextDay: '[Tomorrow at] LT',
61499            nextWeek: 'dddd [at] LT',
61500            lastDay: '[Yesterday at] LT',
61501            lastWeek: '[Last] dddd [at] LT',
61502            sameElse: 'L',
61503        },
61504        relativeTime: {
61505            future: 'in %s',
61506            past: '%s ago',
61507            s: 'a few seconds',
61508            ss: '%d seconds',
61509            m: 'a minute',
61510            mm: '%d minutes',
61511            h: 'an hour',
61512            hh: '%d hours',
61513            d: 'a day',
61514            dd: '%d days',
61515            M: 'a month',
61516            MM: '%d months',
61517            y: 'a year',
61518            yy: '%d years',
61519        },
61520        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
61521        ordinal: function (number) {
61522            var b = number % 10,
61523                output =
61524                    ~~((number % 100) / 10) === 1
61525                        ? 'th'
61526                        : b === 1
61527                          ? 'st'
61528                          : b === 2
61529                            ? 'nd'
61530                            : b === 3
61531                              ? 'rd'
61532                              : 'th';
61533            return number + output;
61534        },
61535    });
61536
61537    return enIl;
61538
61539})));
61540
61541
61542/***/ }),
61543
vendor: 2,806 bytes, lines 61544-61630
61544/***/ "./node_modules/moment/locale/en-in.js":
61545/*!*********************************************!*\
61546  !*** ./node_modules/moment/locale/en-in.js ***!
61547  \*********************************************/
61548/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
61549
61550//! moment.js locale configuration
61551//! locale : English (India) [en-in]
61552//! author : Jatin Agrawal : https://github.com/jatinag22
61553
61554;(function (global, factory) {
61555    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
61556   0
61557}(this, (function (moment) { 'use strict';
61558
61559    //! moment.js locale configuration
61560
61561    var enIn = moment.defineLocale('en-in', {
61562        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
61563            '_'
61564        ),
61565        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
61566        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
61567            '_'
61568        ),
61569        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
61570        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
61571        longDateFormat: {
61572            LT: 'h:mm A',
61573            LTS: 'h:mm:ss A',
61574            L: 'DD/MM/YYYY',
61575            LL: 'D MMMM YYYY',
61576            LLL: 'D MMMM YYYY h:mm A',
61577            LLLL: 'dddd, D MMMM YYYY h:mm A',
61578        },
61579        calendar: {
61580            sameDay: '[Today at] LT',
61581            nextDay: '[Tomorrow at] LT',
61582            nextWeek: 'dddd [at] LT',
61583            lastDay: '[Yesterday at] LT',
61584            lastWeek: '[Last] dddd [at] LT',
61585            sameElse: 'L',
61586        },
61587        relativeTime: {
61588            future: 'in %s',
61589            past: '%s ago',
61590            s: 'a few seconds',
61591            ss: '%d seconds',
61592            m: 'a minute',
61593            mm: '%d minutes',
61594            h: 'an hour',
61595            hh: '%d hours',
61596            d: 'a day',
61597            dd: '%d days',
61598            M: 'a month',
61599            MM: '%d months',
61600            y: 'a year',
61601            yy: '%d years',
61602        },
61603        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
61604        ordinal: function (number) {
61605            var b = number % 10,
61606                output =
61607                    ~~((number % 100) / 10) === 1
61608                        ? 'th'
61609                        : b === 1
61610                          ? 'st'
61611                          : b === 2
61612                            ? 'nd'
61613                            : b === 3
61614                              ? 'rd'
61615                              : 'th';
61616            return number + output;
61617        },
61618        week: {
61619            dow: 0, // Sunday is the first day of the week.
61620            doy: 6, // The week that contains Jan 1st is the first week of the year.
61621        },
61622    });
61623
61624    return enIn;
61625
61626})));
61627
61628
61629/***/ }),
61630
vendor: 2,815 bytes, lines 61631-61717
61631/***/ "./node_modules/moment/locale/en-nz.js":
61632/*!*********************************************!*\
61633  !*** ./node_modules/moment/locale/en-nz.js ***!
61634  \*********************************************/
61635/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
61636
61637//! moment.js locale configuration
61638//! locale : English (New Zealand) [en-nz]
61639//! author : Luke McGregor : https://github.com/lukemcgregor
61640
61641;(function (global, factory) {
61642    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
61643   0
61644}(this, (function (moment) { 'use strict';
61645
61646    //! moment.js locale configuration
61647
61648    var enNz = moment.defineLocale('en-nz', {
61649        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
61650            '_'
61651        ),
61652        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
61653        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
61654            '_'
61655        ),
61656        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
61657        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
61658        longDateFormat: {
61659            LT: 'h:mm A',
61660            LTS: 'h:mm:ss A',
61661            L: 'DD/MM/YYYY',
61662            LL: 'D MMMM YYYY',
61663            LLL: 'D MMMM YYYY h:mm A',
61664            LLLL: 'dddd, D MMMM YYYY h:mm A',
61665        },
61666        calendar: {
61667            sameDay: '[Today at] LT',
61668            nextDay: '[Tomorrow at] LT',
61669            nextWeek: 'dddd [at] LT',
61670            lastDay: '[Yesterday at] LT',
61671            lastWeek: '[Last] dddd [at] LT',
61672            sameElse: 'L',
61673        },
61674        relativeTime: {
61675            future: 'in %s',
61676            past: '%s ago',
61677            s: 'a few seconds',
61678            ss: '%d seconds',
61679            m: 'a minute',
61680            mm: '%d minutes',
61681            h: 'an hour',
61682            hh: '%d hours',
61683            d: 'a day',
61684            dd: '%d days',
61685            M: 'a month',
61686            MM: '%d months',
61687            y: 'a year',
61688            yy: '%d years',
61689        },
61690        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
61691        ordinal: function (number) {
61692            var b = number % 10,
61693                output =
61694                    ~~((number % 100) / 10) === 1
61695                        ? 'th'
61696                        : b === 1
61697                          ? 'st'
61698                          : b === 2
61699                            ? 'nd'
61700                            : b === 3
61701                              ? 'rd'
61702                              : 'th';
61703            return number + output;
61704        },
61705        week: {
61706            dow: 1, // Monday is the first day of the week.
61707            doy: 4, // The week that contains Jan 4th is the first week of the year.
61708        },
61709    });
61710
61711    return enNz;
61712
61713})));
61714
61715
61716/***/ }),
61717
vendor: 2,824 bytes, lines 61718-61804
61718/***/ "./node_modules/moment/locale/en-sg.js":
61719/*!*********************************************!*\
61720  !*** ./node_modules/moment/locale/en-sg.js ***!
61721  \*********************************************/
61722/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
61723
61724//! moment.js locale configuration
61725//! locale : English (Singapore) [en-sg]
61726//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension
61727
61728;(function (global, factory) {
61729    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
61730   0
61731}(this, (function (moment) { 'use strict';
61732
61733    //! moment.js locale configuration
61734
61735    var enSg = moment.defineLocale('en-sg', {
61736        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
61737            '_'
61738        ),
61739        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
61740        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
61741            '_'
61742        ),
61743        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
61744        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
61745        longDateFormat: {
61746            LT: 'HH:mm',
61747            LTS: 'HH:mm:ss',
61748            L: 'DD/MM/YYYY',
61749            LL: 'D MMMM YYYY',
61750            LLL: 'D MMMM YYYY HH:mm',
61751            LLLL: 'dddd, D MMMM YYYY HH:mm',
61752        },
61753        calendar: {
61754            sameDay: '[Today at] LT',
61755            nextDay: '[Tomorrow at] LT',
61756            nextWeek: 'dddd [at] LT',
61757            lastDay: '[Yesterday at] LT',
61758            lastWeek: '[Last] dddd [at] LT',
61759            sameElse: 'L',
61760        },
61761        relativeTime: {
61762            future: 'in %s',
61763            past: '%s ago',
61764            s: 'a few seconds',
61765            ss: '%d seconds',
61766            m: 'a minute',
61767            mm: '%d minutes',
61768            h: 'an hour',
61769            hh: '%d hours',
61770            d: 'a day',
61771            dd: '%d days',
61772            M: 'a month',
61773            MM: '%d months',
61774            y: 'a year',
61775            yy: '%d years',
61776        },
61777        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
61778        ordinal: function (number) {
61779            var b = number % 10,
61780                output =
61781                    ~~((number % 100) / 10) === 1
61782                        ? 'th'
61783                        : b === 1
61784                          ? 'st'
61785                          : b === 2
61786                            ? 'nd'
61787                            : b === 3
61788                              ? 'rd'
61789                              : 'th';
61790            return number + output;
61791        },
61792        week: {
61793            dow: 1, // Monday is the first day of the week.
61794            doy: 4, // The week that contains Jan 4th is the first week of the year.
61795        },
61796    });
61797
61798    return enSg;
61799
61800})));
61801
61802
61803/***/ }),
61804
vendor: 3,063 bytes, lines 61805-61891
61805/***/ "./node_modules/moment/locale/eo.js":
61806/*!******************************************!*\
61807  !*** ./node_modules/moment/locale/eo.js ***!
61808  \******************************************/
61809/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
61810
61811//! moment.js locale configuration
61812//! locale : Esperanto [eo]
61813//! author : Colin Dean : https://github.com/colindean
61814//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia
61815//! comment : miestasmia corrected the translation by colindean
61816//! comment : Vivakvo corrected the translation by colindean and miestasmia
61817
61818;(function (global, factory) {
61819    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
61820   0
61821}(this, (function (moment) { 'use strict';
61822
61823    //! moment.js locale configuration
61824
61825    var eo = moment.defineLocale('eo', {
61826        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split(
61827            '_'
61828        ),
61829        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aÅ­g_sept_okt_nov_dec'.split('_'),
61830        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
61831        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
61832        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
61833        longDateFormat: {
61834            LT: 'HH:mm',
61835            LTS: 'HH:mm:ss',
61836            L: 'YYYY-MM-DD',
61837            LL: '[la] D[-an de] MMMM, YYYY',
61838            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
61839            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
61840            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
61841        },
61842        meridiemParse: /[ap]\.t\.m/i,
61843        isPM: function (input) {
61844            return input.charAt(0).toLowerCase() === 'p';
61845        },
61846        meridiem: function (hours, minutes, isLower) {
61847            if (hours > 11) {
61848                return isLower ? 'p.t.m.' : 'P.T.M.';
61849            } else {
61850                return isLower ? 'a.t.m.' : 'A.T.M.';
61851            }
61852        },
61853        calendar: {
61854            sameDay: '[HodiaÅ­ je] LT',
61855            nextDay: '[MorgaÅ­ je] LT',
61856            nextWeek: 'dddd[n je] LT',
61857            lastDay: '[HieraÅ­ je] LT',
61858            lastWeek: '[pasintan] dddd[n je] LT',
61859            sameElse: 'L',
61860        },
61861        relativeTime: {
61862            future: 'post %s',
61863            past: 'antaÅ­ %s',
61864            s: 'kelkaj sekundoj',
61865            ss: '%d sekundoj',
61866            m: 'unu minuto',
61867            mm: '%d minutoj',
61868            h: 'unu horo',
61869            hh: '%d horoj',
61870            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
61871            dd: '%d tagoj',
61872            M: 'unu monato',
61873            MM: '%d monatoj',
61874            y: 'unu jaro',
61875            yy: '%d jaroj',
61876        },
61877        dayOfMonthOrdinalParse: /\d{1,2}a/,
61878        ordinal: '%da',
61879        week: {
61880            dow: 1, // Monday is the first day of the week.
61881            doy: 7, // The week that contains Jan 7th is the first week of the year.
61882        },
61883    });
61884
61885    return eo;
61886
61887})));
61888
61889
61890/***/ }),
61891
vendor: 4,354 bytes, lines 61892-62018
61892/***/ "./node_modules/moment/locale/es-do.js":
61893/*!*********************************************!*\
61894  !*** ./node_modules/moment/locale/es-do.js ***!
61895  \*********************************************/
61896/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
61897
61898//! moment.js locale configuration
61899//! locale : Spanish (Dominican Republic) [es-do]
61900
61901;(function (global, factory) {
61902    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
61903   0
61904}(this, (function (moment) { 'use strict';
61905
61906    //! moment.js locale configuration
61907
61908    var monthsShortDot =
61909            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
61910                '_'
61911            ),
61912        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
61913        monthsParse = [
61914            /^ene/i,
61915            /^feb/i,
61916            /^mar/i,
61917            /^abr/i,
61918            /^may/i,
61919            /^jun/i,
61920            /^jul/i,
61921            /^ago/i,
61922            /^sep/i,
61923            /^oct/i,
61924            /^nov/i,
61925            /^dic/i,
61926        ],
61927        monthsRegex =
61928            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
61929
61930    var esDo = moment.defineLocale('es-do', {
61931        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
61932            '_'
61933        ),
61934        monthsShort: function (m, format) {
61935            if (!m) {
61936                return monthsShortDot;
61937            } else if (/-MMM-/.test(format)) {
61938                return monthsShort[m.month()];
61939            } else {
61940                return monthsShortDot[m.month()];
61941            }
61942        },
61943        monthsRegex: monthsRegex,
61944        monthsShortRegex: monthsRegex,
61945        monthsStrictRegex:
61946            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
61947        monthsShortStrictRegex:
61948            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
61949        monthsParse: monthsParse,
61950        longMonthsParse: monthsParse,
61951        shortMonthsParse: monthsParse,
61952        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
61953        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
61954        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
61955        weekdaysParseExact: true,
61956        longDateFormat: {
61957            LT: 'h:mm A',
61958            LTS: 'h:mm:ss A',
61959            L: 'DD/MM/YYYY',
61960            LL: 'D [de] MMMM [de] YYYY',
61961            LLL: 'D [de] MMMM [de] YYYY h:mm A',
61962            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
61963        },
61964        calendar: {
61965            sameDay: function () {
61966                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
61967            },
61968            nextDay: function () {
61969                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
61970            },
61971            nextWeek: function () {
61972                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
61973            },
61974            lastDay: function () {
61975                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
61976            },
61977            lastWeek: function () {
61978                return (
61979                    '[el] dddd [pasado a la' +
61980                    (this.hours() !== 1 ? 's' : '') +
61981                    '] LT'
61982                );
61983            },
61984            sameElse: 'L',
61985        },
61986        relativeTime: {
61987            future: 'en %s',
61988            past: 'hace %s',
61989            s: 'unos segundos',
61990            ss: '%d segundos',
61991            m: 'un minuto',
61992            mm: '%d minutos',
61993            h: 'una hora',
61994            hh: '%d horas',
61995            d: 'un día',
61996            dd: '%d días',
61997            w: 'una semana',
61998            ww: '%d semanas',
61999            M: 'un mes',
62000            MM: '%d meses',
62001            y: 'un año',
62002            yy: '%d años',
62003        },
62004        dayOfMonthOrdinalParse: /\d{1,2}º/,
62005        ordinal: '%dº',
62006        week: {
62007            dow: 1, // Monday is the first day of the week.
62008            doy: 4, // The week that contains Jan 4th is the first week of the year.
62009        },
62010    });
62011
62012    return esDo;
62013
62014})));
62015
62016
62017/***/ }),
62018
vendor: 4,427 bytes, lines 62019-62147
62019/***/ "./node_modules/moment/locale/es-mx.js":
62020/*!*********************************************!*\
62021  !*** ./node_modules/moment/locale/es-mx.js ***!
62022  \*********************************************/
62023/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
62024
62025//! moment.js locale configuration
62026//! locale : Spanish (Mexico) [es-mx]
62027//! author : JC Franco : https://github.com/jcfranco
62028
62029;(function (global, factory) {
62030    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
62031   0
62032}(this, (function (moment) { 'use strict';
62033
62034    //! moment.js locale configuration
62035
62036    var monthsShortDot =
62037            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
62038                '_'
62039            ),
62040        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
62041        monthsParse = [
62042            /^ene/i,
62043            /^feb/i,
62044            /^mar/i,
62045            /^abr/i,
62046            /^may/i,
62047            /^jun/i,
62048            /^jul/i,
62049            /^ago/i,
62050            /^sep/i,
62051            /^oct/i,
62052            /^nov/i,
62053            /^dic/i,
62054        ],
62055        monthsRegex =
62056            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
62057
62058    var esMx = moment.defineLocale('es-mx', {
62059        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
62060            '_'
62061        ),
62062        monthsShort: function (m, format) {
62063            if (!m) {
62064                return monthsShortDot;
62065            } else if (/-MMM-/.test(format)) {
62066                return monthsShort[m.month()];
62067            } else {
62068                return monthsShortDot[m.month()];
62069            }
62070        },
62071        monthsRegex: monthsRegex,
62072        monthsShortRegex: monthsRegex,
62073        monthsStrictRegex:
62074            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
62075        monthsShortStrictRegex:
62076            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
62077        monthsParse: monthsParse,
62078        longMonthsParse: monthsParse,
62079        shortMonthsParse: monthsParse,
62080        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
62081        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
62082        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
62083        weekdaysParseExact: true,
62084        longDateFormat: {
62085            LT: 'H:mm',
62086            LTS: 'H:mm:ss',
62087            L: 'DD/MM/YYYY',
62088            LL: 'D [de] MMMM [de] YYYY',
62089            LLL: 'D [de] MMMM [de] YYYY H:mm',
62090            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
62091        },
62092        calendar: {
62093            sameDay: function () {
62094                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
62095            },
62096            nextDay: function () {
62097                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
62098            },
62099            nextWeek: function () {
62100                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
62101            },
62102            lastDay: function () {
62103                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
62104            },
62105            lastWeek: function () {
62106                return (
62107                    '[el] dddd [pasado a la' +
62108                    (this.hours() !== 1 ? 's' : '') +
62109                    '] LT'
62110                );
62111            },
62112            sameElse: 'L',
62113        },
62114        relativeTime: {
62115            future: 'en %s',
62116            past: 'hace %s',
62117            s: 'unos segundos',
62118            ss: '%d segundos',
62119            m: 'un minuto',
62120            mm: '%d minutos',
62121            h: 'una hora',
62122            hh: '%d horas',
62123            d: 'un día',
62124            dd: '%d días',
62125            w: 'una semana',
62126            ww: '%d semanas',
62127            M: 'un mes',
62128            MM: '%d meses',
62129            y: 'un año',
62130            yy: '%d años',
62131        },
62132        dayOfMonthOrdinalParse: /\d{1,2}º/,
62133        ordinal: '%dº',
62134        week: {
62135            dow: 0, // Sunday is the first day of the week.
62136            doy: 4, // The week that contains Jan 4th is the first week of the year.
62137        },
62138        invalidDate: 'Fecha inválida',
62139    });
62140
62141    return esMx;
62142
62143})));
62144
62145
62146/***/ }),
62147
vendor: 4,451 bytes, lines 62148-62276
62148/***/ "./node_modules/moment/locale/es-us.js":
62149/*!*********************************************!*\
62150  !*** ./node_modules/moment/locale/es-us.js ***!
62151  \*********************************************/
62152/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
62153
62154//! moment.js locale configuration
62155//! locale : Spanish (United States) [es-us]
62156//! author : bustta : https://github.com/bustta
62157//! author : chrisrodz : https://github.com/chrisrodz
62158
62159;(function (global, factory) {
62160    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
62161   0
62162}(this, (function (moment) { 'use strict';
62163
62164    //! moment.js locale configuration
62165
62166    var monthsShortDot =
62167            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
62168                '_'
62169            ),
62170        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
62171        monthsParse = [
62172            /^ene/i,
62173            /^feb/i,
62174            /^mar/i,
62175            /^abr/i,
62176            /^may/i,
62177            /^jun/i,
62178            /^jul/i,
62179            /^ago/i,
62180            /^sep/i,
62181            /^oct/i,
62182            /^nov/i,
62183            /^dic/i,
62184        ],
62185        monthsRegex =
62186            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
62187
62188    var esUs = moment.defineLocale('es-us', {
62189        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
62190            '_'
62191        ),
62192        monthsShort: function (m, format) {
62193            if (!m) {
62194                return monthsShortDot;
62195            } else if (/-MMM-/.test(format)) {
62196                return monthsShort[m.month()];
62197            } else {
62198                return monthsShortDot[m.month()];
62199            }
62200        },
62201        monthsRegex: monthsRegex,
62202        monthsShortRegex: monthsRegex,
62203        monthsStrictRegex:
62204            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
62205        monthsShortStrictRegex:
62206            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
62207        monthsParse: monthsParse,
62208        longMonthsParse: monthsParse,
62209        shortMonthsParse: monthsParse,
62210        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
62211        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
62212        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
62213        weekdaysParseExact: true,
62214        longDateFormat: {
62215            LT: 'h:mm A',
62216            LTS: 'h:mm:ss A',
62217            L: 'MM/DD/YYYY',
62218            LL: 'D [de] MMMM [de] YYYY',
62219            LLL: 'D [de] MMMM [de] YYYY h:mm A',
62220            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
62221        },
62222        calendar: {
62223            sameDay: function () {
62224                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
62225            },
62226            nextDay: function () {
62227                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
62228            },
62229            nextWeek: function () {
62230                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
62231            },
62232            lastDay: function () {
62233                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
62234            },
62235            lastWeek: function () {
62236                return (
62237                    '[el] dddd [pasado a la' +
62238                    (this.hours() !== 1 ? 's' : '') +
62239                    '] LT'
62240                );
62241            },
62242            sameElse: 'L',
62243        },
62244        relativeTime: {
62245            future: 'en %s',
62246            past: 'hace %s',
62247            s: 'unos segundos',
62248            ss: '%d segundos',
62249            m: 'un minuto',
62250            mm: '%d minutos',
62251            h: 'una hora',
62252            hh: '%d horas',
62253            d: 'un día',
62254            dd: '%d días',
62255            w: 'una semana',
62256            ww: '%d semanas',
62257            M: 'un mes',
62258            MM: '%d meses',
62259            y: 'un año',
62260            yy: '%d años',
62261        },
62262        dayOfMonthOrdinalParse: /\d{1,2}º/,
62263        ordinal: '%dº',
62264        week: {
62265            dow: 0, // Sunday is the first day of the week.
62266            doy: 6, // The week that contains Jan 6th is the first week of the year.
62267        },
62268    });
62269
62270    return esUs;
62271
62272})));
62273
62274
62275/***/ }),
62276
vendor: 4,399 bytes, lines 62277-62405
62277/***/ "./node_modules/moment/locale/es.js":
62278/*!******************************************!*\
62279  !*** ./node_modules/moment/locale/es.js ***!
62280  \******************************************/
62281/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
62282
62283//! moment.js locale configuration
62284//! locale : Spanish [es]
62285//! author : Julio Napurí : https://github.com/julionc
62286
62287;(function (global, factory) {
62288    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
62289   0
62290}(this, (function (moment) { 'use strict';
62291
62292    //! moment.js locale configuration
62293
62294    var monthsShortDot =
62295            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
62296                '_'
62297            ),
62298        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
62299        monthsParse = [
62300            /^ene/i,
62301            /^feb/i,
62302            /^mar/i,
62303            /^abr/i,
62304            /^may/i,
62305            /^jun/i,
62306            /^jul/i,
62307            /^ago/i,
62308            /^sep/i,
62309            /^oct/i,
62310            /^nov/i,
62311            /^dic/i,
62312        ],
62313        monthsRegex =
62314            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
62315
62316    var es = moment.defineLocale('es', {
62317        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
62318            '_'
62319        ),
62320        monthsShort: function (m, format) {
62321            if (!m) {
62322                return monthsShortDot;
62323            } else if (/-MMM-/.test(format)) {
62324                return monthsShort[m.month()];
62325            } else {
62326                return monthsShortDot[m.month()];
62327            }
62328        },
62329        monthsRegex: monthsRegex,
62330        monthsShortRegex: monthsRegex,
62331        monthsStrictRegex:
62332            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
62333        monthsShortStrictRegex:
62334            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
62335        monthsParse: monthsParse,
62336        longMonthsParse: monthsParse,
62337        shortMonthsParse: monthsParse,
62338        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
62339        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
62340        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
62341        weekdaysParseExact: true,
62342        longDateFormat: {
62343            LT: 'H:mm',
62344            LTS: 'H:mm:ss',
62345            L: 'DD/MM/YYYY',
62346            LL: 'D [de] MMMM [de] YYYY',
62347            LLL: 'D [de] MMMM [de] YYYY H:mm',
62348            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
62349        },
62350        calendar: {
62351            sameDay: function () {
62352                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
62353            },
62354            nextDay: function () {
62355                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
62356            },
62357            nextWeek: function () {
62358                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
62359            },
62360            lastDay: function () {
62361                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
62362            },
62363            lastWeek: function () {
62364                return (
62365                    '[el] dddd [pasado a la' +
62366                    (this.hours() !== 1 ? 's' : '') +
62367                    '] LT'
62368                );
62369            },
62370            sameElse: 'L',
62371        },
62372        relativeTime: {
62373            future: 'en %s',
62374            past: 'hace %s',
62375            s: 'unos segundos',
62376            ss: '%d segundos',
62377            m: 'un minuto',
62378            mm: '%d minutos',
62379            h: 'una hora',
62380            hh: '%d horas',
62381            d: 'un día',
62382            dd: '%d días',
62383            w: 'una semana',
62384            ww: '%d semanas',
62385            M: 'un mes',
62386            MM: '%d meses',
62387            y: 'un año',
62388            yy: '%d años',
62389        },
62390        dayOfMonthOrdinalParse: /\d{1,2}º/,
62391        ordinal: '%dº',
62392        week: {
62393            dow: 1, // Monday is the first day of the week.
62394            doy: 4, // The week that contains Jan 4th is the first week of the year.
62395        },
62396        invalidDate: 'Fecha inválida',
62397    });
62398
62399    return es;
62400
62401})));
62402
62403
62404/***/ }),
62405
vendor: 3,400 bytes, lines 62406-62502
62406/***/ "./node_modules/moment/locale/et.js":
62407/*!******************************************!*\
62408  !*** ./node_modules/moment/locale/et.js ***!
62409  \******************************************/
62410/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
62411
62412//! moment.js locale configuration
62413//! locale : Estonian [et]
62414//! author : Henry Kehlmann : https://github.com/madhenry
62415//! improvements : Illimar Tambek : https://github.com/ragulka
62416
62417;(function (global, factory) {
62418    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
62419   0
62420}(this, (function (moment) { 'use strict';
62421
62422    //! moment.js locale configuration
62423
62424    function processRelativeTime(number, withoutSuffix, key, isFuture) {
62425        var format = {
62426            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
62427            ss: [number + 'sekundi', number + 'sekundit'],
62428            m: ['ühe minuti', 'üks minut'],
62429            mm: [number + ' minuti', number + ' minutit'],
62430            h: ['ühe tunni', 'tund aega', 'üks tund'],
62431            hh: [number + ' tunni', number + ' tundi'],
62432            d: ['ühe päeva', 'üks päev'],
62433            M: ['kuu aja', 'kuu aega', 'üks kuu'],
62434            MM: [number + ' kuu', number + ' kuud'],
62435            y: ['ühe aasta', 'aasta', 'üks aasta'],
62436            yy: [number + ' aasta', number + ' aastat'],
62437        };
62438        if (withoutSuffix) {
62439            return format[key][2] ? format[key][2] : format[key][1];
62440        }
62441        return isFuture ? format[key][0] : format[key][1];
62442    }
62443
62444    var et = moment.defineLocale('et', {
62445        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
62446            '_'
62447        ),
62448        monthsShort:
62449            'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
62450        weekdays:
62451            'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
62452                '_'
62453            ),
62454        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
62455        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
62456        longDateFormat: {
62457            LT: 'H:mm',
62458            LTS: 'H:mm:ss',
62459            L: 'DD.MM.YYYY',
62460            LL: 'D. MMMM YYYY',
62461            LLL: 'D. MMMM YYYY H:mm',
62462            LLLL: 'dddd, D. MMMM YYYY H:mm',
62463        },
62464        calendar: {
62465            sameDay: '[Täna,] LT',
62466            nextDay: '[Homme,] LT',
62467            nextWeek: '[Järgmine] dddd LT',
62468            lastDay: '[Eile,] LT',
62469            lastWeek: '[Eelmine] dddd LT',
62470            sameElse: 'L',
62471        },
62472        relativeTime: {
62473            future: '%s pärast',
62474            past: '%s tagasi',
62475            s: processRelativeTime,
62476            ss: processRelativeTime,
62477            m: processRelativeTime,
62478            mm: processRelativeTime,
62479            h: processRelativeTime,
62480            hh: processRelativeTime,
62481            d: processRelativeTime,
62482            dd: '%d päeva',
62483            M: processRelativeTime,
62484            MM: processRelativeTime,
62485            y: processRelativeTime,
62486            yy: processRelativeTime,
62487        },
62488        dayOfMonthOrdinalParse: /\d{1,2}\./,
62489        ordinal: '%d.',
62490        week: {
62491            dow: 1, // Monday is the first day of the week.
62492            doy: 4, // The week that contains Jan 4th is the first week of the year.
62493        },
62494    });
62495
62496    return et;
62497
62498})));
62499
62500
62501/***/ }),
62502
vendor: 2,689 bytes, lines 62503-62586
62503/***/ "./node_modules/moment/locale/eu.js":
62504/*!******************************************!*\
62505  !*** ./node_modules/moment/locale/eu.js ***!
62506  \******************************************/
62507/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
62508
62509//! moment.js locale configuration
62510//! locale : Basque [eu]
62511//! author : Eneko Illarramendi : https://github.com/eillarra
62512
62513;(function (global, factory) {
62514    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
62515   0
62516}(this, (function (moment) { 'use strict';
62517
62518    //! moment.js locale configuration
62519
62520    var eu = moment.defineLocale('eu', {
62521        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
62522            '_'
62523        ),
62524        monthsShort:
62525            'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
62526                '_'
62527            ),
62528        monthsParseExact: true,
62529        weekdays:
62530            'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
62531                '_'
62532            ),
62533        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
62534        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
62535        weekdaysParseExact: true,
62536        longDateFormat: {
62537            LT: 'HH:mm',
62538            LTS: 'HH:mm:ss',
62539            L: 'YYYY-MM-DD',
62540            LL: 'YYYY[ko] MMMM[ren] D[a]',
62541            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
62542            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
62543            l: 'YYYY-M-D',
62544            ll: 'YYYY[ko] MMM D[a]',
62545            lll: 'YYYY[ko] MMM D[a] HH:mm',
62546            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
62547        },
62548        calendar: {
62549            sameDay: '[gaur] LT[etan]',
62550            nextDay: '[bihar] LT[etan]',
62551            nextWeek: 'dddd LT[etan]',
62552            lastDay: '[atzo] LT[etan]',
62553            lastWeek: '[aurreko] dddd LT[etan]',
62554            sameElse: 'L',
62555        },
62556        relativeTime: {
62557            future: '%s barru',
62558            past: 'duela %s',
62559            s: 'segundo batzuk',
62560            ss: '%d segundo',
62561            m: 'minutu bat',
62562            mm: '%d minutu',
62563            h: 'ordu bat',
62564            hh: '%d ordu',
62565            d: 'egun bat',
62566            dd: '%d egun',
62567            M: 'hilabete bat',
62568            MM: '%d hilabete',
62569            y: 'urte bat',
62570            yy: '%d urte',
62571        },
62572        dayOfMonthOrdinalParse: /\d{1,2}\./,
62573        ordinal: '%d.',
62574        week: {
62575            dow: 1, // Monday is the first day of the week.
62576            doy: 7, // The week that contains Jan 7th is the first week of the year.
62577        },
62578    });
62579
62580    return eu;
62581
62582})));
62583
62584
62585/***/ }),
62586
vendor: 4,143 bytes, lines 62587-62718
62587/***/ "./node_modules/moment/locale/fa.js":
62588/*!******************************************!*\
62589  !*** ./node_modules/moment/locale/fa.js ***!
62590  \******************************************/
62591/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
62592
62593//! moment.js locale configuration
62594//! locale : Persian [fa]
62595//! author : Ebrahim Byagowi : https://github.com/ebraminio
62596
62597;(function (global, factory) {
62598    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
62599   0
62600}(this, (function (moment) { 'use strict';
62601
62602    //! moment.js locale configuration
62603
62604    var symbolMap = {
62605            1: 'Û±',
62606            2: 'Û²',
62607            3: 'Û³',
62608            4: 'Û´',
62609            5: 'Ûµ',
62610            6: 'Û¶',
62611            7: 'Û·',
62612            8: 'Û¸',
62613            9: 'Û¹',
62614            0: 'Û°',
62615        },
62616        numberMap = {
62617            'Û±': '1',
62618            'Û²': '2',
62619            'Û³': '3',
62620            'Û´': '4',
62621            'Ûµ': '5',
62622            'Û¶': '6',
62623            'Û·': '7',
62624            'Û¸': '8',
62625            'Û¹': '9',
62626            'Û°': '0',
62627        };
62628
62629    var fa = moment.defineLocale('fa', {
62630        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
62631            '_'
62632        ),
62633        monthsShort:
62634            'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
62635                '_'
62636            ),
62637        weekdays:
62638            'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
62639                '_'
62640            ),
62641        weekdaysShort:
62642            'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
62643                '_'
62644            ),
62645        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
62646        weekdaysParseExact: true,
62647        longDateFormat: {
62648            LT: 'HH:mm',
62649            LTS: 'HH:mm:ss',
62650            L: 'DD/MM/YYYY',
62651            LL: 'D MMMM YYYY',
62652            LLL: 'D MMMM YYYY HH:mm',
62653            LLLL: 'dddd, D MMMM YYYY HH:mm',
62654        },
62655        meridiemParse: /قبل از ظهر|بعد از ظهر/,
62656        isPM: function (input) {
62657            return /بعد از ظهر/.test(input);
62658        },
62659        meridiem: function (hour, minute, isLower) {
62660            if (hour < 12) {
62661                return 'قبل از ظهر';
62662            } else {
62663                return 'بعد از ظهر';
62664            }
62665        },
62666        calendar: {
62667            sameDay: '[امروز ساعت] LT',
62668            nextDay: '[فردا ساعت] LT',
62669            nextWeek: 'dddd [ساعت] LT',
62670            lastDay: '[دیروز ساعت] LT',
62671            lastWeek: 'dddd [پیش] [ساعت] LT',
62672            sameElse: 'L',
62673        },
62674        relativeTime: {
62675            future: 'در %s',
62676            past: '%s پیش',
62677            s: 'چند ثانیه',
62678            ss: '%d ثانیه',
62679            m: 'یک دقیقه',
62680            mm: '%d دقیقه',
62681            h: 'یک ساعت',
62682            hh: '%d ساعت',
62683            d: 'یک روز',
62684            dd: '%d روز',
62685            M: 'یک ماه',
62686            MM: '%d ماه',
62687            y: 'یک سال',
62688            yy: '%d سال',
62689        },
62690        preparse: function (string) {
62691            return string
62692                .replace(/[Û°-Û¹]/g, function (match) {
62693                    return numberMap[match];
62694                })
62695                .replace(/،/g, ',');
62696        },
62697        postformat: function (string) {
62698            return string
62699                .replace(/\d/g, function (match) {
62700                    return symbolMap[match];
62701                })
62702                .replace(/,/g, '،');
62703        },
62704        dayOfMonthOrdinalParse: /\d{1,2}م/,
62705        ordinal: '%dم',
62706        week: {
62707            dow: 6, // Saturday is the first day of the week.
62708            doy: 12, // The week that contains Jan 12th is the first week of the year.
62709        },
62710    });
62711
62712    return fa;
62713
62714})));
62715
62716
62717/***/ }),
62718
vendor: 4,589 bytes, lines 62719-62861
62719/***/ "./node_modules/moment/locale/fi.js":
62720/*!******************************************!*\
62721  !*** ./node_modules/moment/locale/fi.js ***!
62722  \******************************************/
62723/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
62724
62725//! moment.js locale configuration
62726//! locale : Finnish [fi]
62727//! author : Tarmo Aidantausta : https://github.com/bleadof
62728
62729;(function (global, factory) {
62730    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
62731   0
62732}(this, (function (moment) { 'use strict';
62733
62734    //! moment.js locale configuration
62735
62736    var numbersPast =
62737            'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
62738                ' '
62739            ),
62740        numbersFuture = [
62741            'nolla',
62742            'yhden',
62743            'kahden',
62744            'kolmen',
62745            'neljän',
62746            'viiden',
62747            'kuuden',
62748            numbersPast[7],
62749            numbersPast[8],
62750            numbersPast[9],
62751        ];
62752    function translate(number, withoutSuffix, key, isFuture) {
62753        var result = '';
62754        switch (key) {
62755            case 's':
62756                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
62757            case 'ss':
62758                result = isFuture ? 'sekunnin' : 'sekuntia';
62759                break;
62760            case 'm':
62761                return isFuture ? 'minuutin' : 'minuutti';
62762            case 'mm':
62763                result = isFuture ? 'minuutin' : 'minuuttia';
62764                break;
62765            case 'h':
62766                return isFuture ? 'tunnin' : 'tunti';
62767            case 'hh':
62768                result = isFuture ? 'tunnin' : 'tuntia';
62769                break;
62770            case 'd':
62771                return isFuture ? 'päivän' : 'päivä';
62772            case 'dd':
62773                result = isFuture ? 'päivän' : 'päivää';
62774                break;
62775            case 'M':
62776                return isFuture ? 'kuukauden' : 'kuukausi';
62777            case 'MM':
62778                result = isFuture ? 'kuukauden' : 'kuukautta';
62779                break;
62780            case 'y':
62781                return isFuture ? 'vuoden' : 'vuosi';
62782            case 'yy':
62783                result = isFuture ? 'vuoden' : 'vuotta';
62784                break;
62785        }
62786        result = verbalNumber(number, isFuture) + ' ' + result;
62787        return result;
62788    }
62789    function verbalNumber(number, isFuture) {
62790        return number < 10
62791            ? isFuture
62792                ? numbersFuture[number]
62793                : numbersPast[number]
62794            : number;
62795    }
62796
62797    var fi = moment.defineLocale('fi', {
62798        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
62799            '_'
62800        ),
62801        monthsShort:
62802            'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
62803                '_'
62804            ),
62805        weekdays:
62806            'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
62807                '_'
62808            ),
62809        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
62810        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
62811        longDateFormat: {
62812            LT: 'HH.mm',
62813            LTS: 'HH.mm.ss',
62814            L: 'DD.MM.YYYY',
62815            LL: 'Do MMMM[ta] YYYY',
62816            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
62817            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
62818            l: 'D.M.YYYY',
62819            ll: 'Do MMM YYYY',
62820            lll: 'Do MMM YYYY, [klo] HH.mm',
62821            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
62822        },
62823        calendar: {
62824            sameDay: '[tänään] [klo] LT',
62825            nextDay: '[huomenna] [klo] LT',
62826            nextWeek: 'dddd [klo] LT',
62827            lastDay: '[eilen] [klo] LT',
62828            lastWeek: '[viime] dddd[na] [klo] LT',
62829            sameElse: 'L',
62830        },
62831        relativeTime: {
62832            future: '%s päästä',
62833            past: '%s sitten',
62834            s: translate,
62835            ss: translate,
62836            m: translate,
62837            mm: translate,
62838            h: translate,
62839            hh: translate,
62840            d: translate,
62841            dd: translate,
62842            M: translate,
62843            MM: translate,
62844            y: translate,
62845            yy: translate,
62846        },
62847        dayOfMonthOrdinalParse: /\d{1,2}\./,
62848        ordinal: '%d.',
62849        week: {
62850            dow: 1, // Monday is the first day of the week.
62851            doy: 4, // The week that contains Jan 4th is the first week of the year.
62852        },
62853    });
62854
62855    return fi;
62856
62857})));
62858
62859
62860/***/ }),
62861
vendor: 2,475 bytes, lines 62862-62938
62862/***/ "./node_modules/moment/locale/fil.js":
62863/*!*******************************************!*\
62864  !*** ./node_modules/moment/locale/fil.js ***!
62865  \*******************************************/
62866/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
62867
62868//! moment.js locale configuration
62869//! locale : Filipino [fil]
62870//! author : Dan Hagman : https://github.com/hagmandan
62871//! author : Matthew Co : https://github.com/matthewdeeco
62872
62873;(function (global, factory) {
62874    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
62875   0
62876}(this, (function (moment) { 'use strict';
62877
62878    //! moment.js locale configuration
62879
62880    var fil = moment.defineLocale('fil', {
62881        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
62882            '_'
62883        ),
62884        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
62885        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
62886            '_'
62887        ),
62888        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
62889        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
62890        longDateFormat: {
62891            LT: 'HH:mm',
62892            LTS: 'HH:mm:ss',
62893            L: 'MM/D/YYYY',
62894            LL: 'MMMM D, YYYY',
62895            LLL: 'MMMM D, YYYY HH:mm',
62896            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
62897        },
62898        calendar: {
62899            sameDay: 'LT [ngayong araw]',
62900            nextDay: '[Bukas ng] LT',
62901            nextWeek: 'LT [sa susunod na] dddd',
62902            lastDay: 'LT [kahapon]',
62903            lastWeek: 'LT [noong nakaraang] dddd',
62904            sameElse: 'L',
62905        },
62906        relativeTime: {
62907            future: 'sa loob ng %s',
62908            past: '%s ang nakalipas',
62909            s: 'ilang segundo',
62910            ss: '%d segundo',
62911            m: 'isang minuto',
62912            mm: '%d minuto',
62913            h: 'isang oras',
62914            hh: '%d oras',
62915            d: 'isang araw',
62916            dd: '%d araw',
62917            M: 'isang buwan',
62918            MM: '%d buwan',
62919            y: 'isang taon',
62920            yy: '%d taon',
62921        },
62922        dayOfMonthOrdinalParse: /\d{1,2}/,
62923        ordinal: function (number) {
62924            return number;
62925        },
62926        week: {
62927            dow: 1, // Monday is the first day of the week.
62928            doy: 4, // The week that contains Jan 4th is the first week of the year.
62929        },
62930    });
62931
62932    return fil;
62933
62934})));
62935
62936
62937/***/ }),
62938
vendor: 2,461 bytes, lines 62939-63014
62939/***/ "./node_modules/moment/locale/fo.js":
62940/*!******************************************!*\
62941  !*** ./node_modules/moment/locale/fo.js ***!
62942  \******************************************/
62943/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
62944
62945//! moment.js locale configuration
62946//! locale : Faroese [fo]
62947//! author : Ragnar Johannesen : https://github.com/ragnar123
62948//! author : Kristian Sakarisson : https://github.com/sakarisson
62949
62950;(function (global, factory) {
62951    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
62952   0
62953}(this, (function (moment) { 'use strict';
62954
62955    //! moment.js locale configuration
62956
62957    var fo = moment.defineLocale('fo', {
62958        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
62959            '_'
62960        ),
62961        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
62962        weekdays:
62963            'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
62964                '_'
62965            ),
62966        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
62967        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
62968        longDateFormat: {
62969            LT: 'HH:mm',
62970            LTS: 'HH:mm:ss',
62971            L: 'DD/MM/YYYY',
62972            LL: 'D MMMM YYYY',
62973            LLL: 'D MMMM YYYY HH:mm',
62974            LLLL: 'dddd D. MMMM, YYYY HH:mm',
62975        },
62976        calendar: {
62977            sameDay: '[Í dag kl.] LT',
62978            nextDay: '[Í morgin kl.] LT',
62979            nextWeek: 'dddd [kl.] LT',
62980            lastDay: '[Í gjár kl.] LT',
62981            lastWeek: '[síðstu] dddd [kl] LT',
62982            sameElse: 'L',
62983        },
62984        relativeTime: {
62985            future: 'um %s',
62986            past: '%s síðani',
62987            s: 'fá sekund',
62988            ss: '%d sekundir',
62989            m: 'ein minuttur',
62990            mm: '%d minuttir',
62991            h: 'ein tími',
62992            hh: '%d tímar',
62993            d: 'ein dagur',
62994            dd: '%d dagar',
62995            M: 'ein mánaður',
62996            MM: '%d mánaðir',
62997            y: 'eitt ár',
62998            yy: '%d ár',
62999        },
63000        dayOfMonthOrdinalParse: /\d{1,2}\./,
63001        ordinal: '%d.',
63002        week: {
63003            dow: 1, // Monday is the first day of the week.
63004            doy: 4, // The week that contains Jan 4th is the first week of the year.
63005        },
63006    });
63007
63008    return fo;
63009
63010})));
63011
63012
63013/***/ }),
63014
vendor: 2,861 bytes, lines 63015-63103
63015/***/ "./node_modules/moment/locale/fr-ca.js":
63016/*!*********************************************!*\
63017  !*** ./node_modules/moment/locale/fr-ca.js ***!
63018  \*********************************************/
63019/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
63020
63021//! moment.js locale configuration
63022//! locale : French (Canada) [fr-ca]
63023//! author : Jonathan Abourbih : https://github.com/jonbca
63024
63025;(function (global, factory) {
63026    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
63027   0
63028}(this, (function (moment) { 'use strict';
63029
63030    //! moment.js locale configuration
63031
63032    var frCa = moment.defineLocale('fr-ca', {
63033        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
63034            '_'
63035        ),
63036        monthsShort:
63037            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
63038                '_'
63039            ),
63040        monthsParseExact: true,
63041        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
63042        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
63043        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
63044        weekdaysParseExact: true,
63045        longDateFormat: {
63046            LT: 'HH:mm',
63047            LTS: 'HH:mm:ss',
63048            L: 'YYYY-MM-DD',
63049            LL: 'D MMMM YYYY',
63050            LLL: 'D MMMM YYYY HH:mm',
63051            LLLL: 'dddd D MMMM YYYY HH:mm',
63052        },
63053        calendar: {
63054            sameDay: '[Aujourd’hui à] LT',
63055            nextDay: '[Demain à] LT',
63056            nextWeek: 'dddd [à] LT',
63057            lastDay: '[Hier à] LT',
63058            lastWeek: 'dddd [dernier à] LT',
63059            sameElse: 'L',
63060        },
63061        relativeTime: {
63062            future: 'dans %s',
63063            past: 'il y a %s',
63064            s: 'quelques secondes',
63065            ss: '%d secondes',
63066            m: 'une minute',
63067            mm: '%d minutes',
63068            h: 'une heure',
63069            hh: '%d heures',
63070            d: 'un jour',
63071            dd: '%d jours',
63072            M: 'un mois',
63073            MM: '%d mois',
63074            y: 'un an',
63075            yy: '%d ans',
63076        },
63077        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
63078        ordinal: function (number, period) {
63079            switch (period) {
63080                // Words with masculine grammatical gender: mois, trimestre, jour
63081                default:
63082                case 'M':
63083                case 'Q':
63084                case 'D':
63085                case 'DDD':
63086                case 'd':
63087                    return number + (number === 1 ? 'er' : 'e');
63088
63089                // Words with feminine grammatical gender: semaine
63090                case 'w':
63091                case 'W':
63092                    return number + (number === 1 ? 're' : 'e');
63093            }
63094        },
63095    });
63096
63097    return frCa;
63098
63099})));
63100
63101
63102/***/ }),
63103
vendor: 3,036 bytes, lines 63104-63196
63104/***/ "./node_modules/moment/locale/fr-ch.js":
63105/*!*********************************************!*\
63106  !*** ./node_modules/moment/locale/fr-ch.js ***!
63107  \*********************************************/
63108/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
63109
63110//! moment.js locale configuration
63111//! locale : French (Switzerland) [fr-ch]
63112//! author : Gaspard Bucher : https://github.com/gaspard
63113
63114;(function (global, factory) {
63115    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
63116   0
63117}(this, (function (moment) { 'use strict';
63118
63119    //! moment.js locale configuration
63120
63121    var frCh = moment.defineLocale('fr-ch', {
63122        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
63123            '_'
63124        ),
63125        monthsShort:
63126            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
63127                '_'
63128            ),
63129        monthsParseExact: true,
63130        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
63131        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
63132        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
63133        weekdaysParseExact: true,
63134        longDateFormat: {
63135            LT: 'HH:mm',
63136            LTS: 'HH:mm:ss',
63137            L: 'DD.MM.YYYY',
63138            LL: 'D MMMM YYYY',
63139            LLL: 'D MMMM YYYY HH:mm',
63140            LLLL: 'dddd D MMMM YYYY HH:mm',
63141        },
63142        calendar: {
63143            sameDay: '[Aujourd’hui à] LT',
63144            nextDay: '[Demain à] LT',
63145            nextWeek: 'dddd [à] LT',
63146            lastDay: '[Hier à] LT',
63147            lastWeek: 'dddd [dernier à] LT',
63148            sameElse: 'L',
63149        },
63150        relativeTime: {
63151            future: 'dans %s',
63152            past: 'il y a %s',
63153            s: 'quelques secondes',
63154            ss: '%d secondes',
63155            m: 'une minute',
63156            mm: '%d minutes',
63157            h: 'une heure',
63158            hh: '%d heures',
63159            d: 'un jour',
63160            dd: '%d jours',
63161            M: 'un mois',
63162            MM: '%d mois',
63163            y: 'un an',
63164            yy: '%d ans',
63165        },
63166        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
63167        ordinal: function (number, period) {
63168            switch (period) {
63169                // Words with masculine grammatical gender: mois, trimestre, jour
63170                default:
63171                case 'M':
63172                case 'Q':
63173                case 'D':
63174                case 'DDD':
63175                case 'd':
63176                    return number + (number === 1 ? 'er' : 'e');
63177
63178                // Words with feminine grammatical gender: semaine
63179                case 'w':
63180                case 'W':
63181                    return number + (number === 1 ? 're' : 'e');
63182            }
63183        },
63184        week: {
63185            dow: 1, // Monday is the first day of the week.
63186            doy: 4, // The week that contains Jan 4th is the first week of the year.
63187        },
63188    });
63189
63190    return frCh;
63191
63192})));
63193
63194
63195/***/ }),
63196
vendor: 4,356 bytes, lines 63197-63323
63197/***/ "./node_modules/moment/locale/fr.js":
63198/*!******************************************!*\
63199  !*** ./node_modules/moment/locale/fr.js ***!
63200  \******************************************/
63201/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
63202
63203//! moment.js locale configuration
63204//! locale : French [fr]
63205//! author : John Fischer : https://github.com/jfroffice
63206
63207;(function (global, factory) {
63208    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
63209   0
63210}(this, (function (moment) { 'use strict';
63211
63212    //! moment.js locale configuration
63213
63214    var monthsStrictRegex =
63215            /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
63216        monthsShortStrictRegex =
63217            /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
63218        monthsRegex =
63219            /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
63220        monthsParse = [
63221            /^janv/i,
63222            /^févr/i,
63223            /^mars/i,
63224            /^avr/i,
63225            /^mai/i,
63226            /^juin/i,
63227            /^juil/i,
63228            /^août/i,
63229            /^sept/i,
63230            /^oct/i,
63231            /^nov/i,
63232            /^déc/i,
63233        ];
63234
63235    var fr = moment.defineLocale('fr', {
63236        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
63237            '_'
63238        ),
63239        monthsShort:
63240            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
63241                '_'
63242            ),
63243        monthsRegex: monthsRegex,
63244        monthsShortRegex: monthsRegex,
63245        monthsStrictRegex: monthsStrictRegex,
63246        monthsShortStrictRegex: monthsShortStrictRegex,
63247        monthsParse: monthsParse,
63248        longMonthsParse: monthsParse,
63249        shortMonthsParse: monthsParse,
63250        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
63251        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
63252        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
63253        weekdaysParseExact: true,
63254        longDateFormat: {
63255            LT: 'HH:mm',
63256            LTS: 'HH:mm:ss',
63257            L: 'DD/MM/YYYY',
63258            LL: 'D MMMM YYYY',
63259            LLL: 'D MMMM YYYY HH:mm',
63260            LLLL: 'dddd D MMMM YYYY HH:mm',
63261        },
63262        calendar: {
63263            sameDay: '[Aujourd’hui à] LT',
63264            nextDay: '[Demain à] LT',
63265            nextWeek: 'dddd [à] LT',
63266            lastDay: '[Hier à] LT',
63267            lastWeek: 'dddd [dernier à] LT',
63268            sameElse: 'L',
63269        },
63270        relativeTime: {
63271            future: 'dans %s',
63272            past: 'il y a %s',
63273            s: 'quelques secondes',
63274            ss: '%d secondes',
63275            m: 'une minute',
63276            mm: '%d minutes',
63277            h: 'une heure',
63278            hh: '%d heures',
63279            d: 'un jour',
63280            dd: '%d jours',
63281            w: 'une semaine',
63282            ww: '%d semaines',
63283            M: 'un mois',
63284            MM: '%d mois',
63285            y: 'un an',
63286            yy: '%d ans',
63287        },
63288        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
63289        ordinal: function (number, period) {
63290            switch (period) {
63291                // TODO: Return 'e' when day of month > 1. Move this case inside
63292                // block for masculine words below.
63293                // See https://github.com/moment/moment/issues/3375
63294                case 'D':
63295                    return number + (number === 1 ? 'er' : '');
63296
63297                // Words with masculine grammatical gender: mois, trimestre, jour
63298                default:
63299                case 'M':
63300                case 'Q':
63301                case 'DDD':
63302                case 'd':
63303                    return number + (number === 1 ? 'er' : 'e');
63304
63305                // Words with feminine grammatical gender: semaine
63306                case 'w':
63307                case 'W':
63308                    return number + (number === 1 ? 're' : 'e');
63309            }
63310        },
63311        week: {
63312            dow: 1, // Monday is the first day of the week.
63313            doy: 4, // The week that contains Jan 4th is the first week of the year.
63314        },
63315    });
63316
63317    return fr;
63318
63319})));
63320
63321
63322/***/ }),
63323
vendor: 3,036 bytes, lines 63324-63417
63324/***/ "./node_modules/moment/locale/fy.js":
63325/*!******************************************!*\
63326  !*** ./node_modules/moment/locale/fy.js ***!
63327  \******************************************/
63328/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
63329
63330//! moment.js locale configuration
63331//! locale : Frisian [fy]
63332//! author : Robin van der Vliet : https://github.com/robin0van0der0v
63333
63334;(function (global, factory) {
63335    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
63336   0
63337}(this, (function (moment) { 'use strict';
63338
63339    //! moment.js locale configuration
63340
63341    var monthsShortWithDots =
63342            'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
63343        monthsShortWithoutDots =
63344            'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
63345
63346    var fy = moment.defineLocale('fy', {
63347        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
63348            '_'
63349        ),
63350        monthsShort: function (m, format) {
63351            if (!m) {
63352                return monthsShortWithDots;
63353            } else if (/-MMM-/.test(format)) {
63354                return monthsShortWithoutDots[m.month()];
63355            } else {
63356                return monthsShortWithDots[m.month()];
63357            }
63358        },
63359        monthsParseExact: true,
63360        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
63361            '_'
63362        ),
63363        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
63364        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
63365        weekdaysParseExact: true,
63366        longDateFormat: {
63367            LT: 'HH:mm',
63368            LTS: 'HH:mm:ss',
63369            L: 'DD-MM-YYYY',
63370            LL: 'D MMMM YYYY',
63371            LLL: 'D MMMM YYYY HH:mm',
63372            LLLL: 'dddd D MMMM YYYY HH:mm',
63373        },
63374        calendar: {
63375            sameDay: '[hjoed om] LT',
63376            nextDay: '[moarn om] LT',
63377            nextWeek: 'dddd [om] LT',
63378            lastDay: '[juster om] LT',
63379            lastWeek: '[ôfrûne] dddd [om] LT',
63380            sameElse: 'L',
63381        },
63382        relativeTime: {
63383            future: 'oer %s',
63384            past: '%s lyn',
63385            s: 'in pear sekonden',
63386            ss: '%d sekonden',
63387            m: 'ien minút',
63388            mm: '%d minuten',
63389            h: 'ien oere',
63390            hh: '%d oeren',
63391            d: 'ien dei',
63392            dd: '%d dagen',
63393            M: 'ien moanne',
63394            MM: '%d moannen',
63395            y: 'ien jier',
63396            yy: '%d jierren',
63397        },
63398        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
63399        ordinal: function (number) {
63400            return (
63401                number +
63402                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
63403            );
63404        },
63405        week: {
63406            dow: 1, // Monday is the first day of the week.
63407            doy: 4, // The week that contains Jan 4th is the first week of the year.
63408        },
63409    });
63410
63411    return fy;
63412
63413})));
63414
63415
63416/***/ }),
63417
vendor: 3,201 bytes, lines 63418-63531
63418/***/ "./node_modules/moment/locale/ga.js":
63419/*!******************************************!*\
63420  !*** ./node_modules/moment/locale/ga.js ***!
63421  \******************************************/
63422/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
63423
63424//! moment.js locale configuration
63425//! locale : Irish or Irish Gaelic [ga]
63426//! author : André Silva : https://github.com/askpt
63427
63428;(function (global, factory) {
63429    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
63430   0
63431}(this, (function (moment) { 'use strict';
63432
63433    //! moment.js locale configuration
63434
63435    var months = [
63436            'Eanáir',
63437            'Feabhra',
63438            'Márta',
63439            'Aibreán',
63440            'Bealtaine',
63441            'Meitheamh',
63442            'Iúil',
63443            'Lúnasa',
63444            'Meán Fómhair',
63445            'Deireadh Fómhair',
63446            'Samhain',
63447            'Nollaig',
63448        ],
63449        monthsShort = [
63450            'Ean',
63451            'Feabh',
63452            'Márt',
63453            'Aib',
63454            'Beal',
63455            'Meith',
63456            'Iúil',
63457            'Lún',
63458            'M.F.',
63459            'D.F.',
63460            'Samh',
63461            'Noll',
63462        ],
63463        weekdays = [
63464            'Dé Domhnaigh',
63465            'Dé Luain',
63466            'Dé Máirt',
63467            'Dé Céadaoin',
63468            'Déardaoin',
63469            'Dé hAoine',
63470            'Dé Sathairn',
63471        ],
63472        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
63473        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
63474
63475    var ga = moment.defineLocale('ga', {
63476        months: months,
63477        monthsShort: monthsShort,
63478        monthsParseExact: true,
63479        weekdays: weekdays,
63480        weekdaysShort: weekdaysShort,
63481        weekdaysMin: weekdaysMin,
63482        longDateFormat: {
63483            LT: 'HH:mm',
63484            LTS: 'HH:mm:ss',
63485            L: 'DD/MM/YYYY',
63486            LL: 'D MMMM YYYY',
63487            LLL: 'D MMMM YYYY HH:mm',
63488            LLLL: 'dddd, D MMMM YYYY HH:mm',
63489        },
63490        calendar: {
63491            sameDay: '[Inniu ag] LT',
63492            nextDay: '[Amárach ag] LT',
63493            nextWeek: 'dddd [ag] LT',
63494            lastDay: '[Inné ag] LT',
63495            lastWeek: 'dddd [seo caite] [ag] LT',
63496            sameElse: 'L',
63497        },
63498        relativeTime: {
63499            future: 'i %s',
63500            past: '%s ó shin',
63501            s: 'cúpla soicind',
63502            ss: '%d soicind',
63503            m: 'nóiméad',
63504            mm: '%d nóiméad',
63505            h: 'uair an chloig',
63506            hh: '%d uair an chloig',
63507            d: 'lá',
63508            dd: '%d lá',
63509            M: 'mí',
63510            MM: '%d míonna',
63511            y: 'bliain',
63512            yy: '%d bliain',
63513        },
63514        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
63515        ordinal: function (number) {
63516            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
63517            return number + output;
63518        },
63519        week: {
63520            dow: 1, // Monday is the first day of the week.
63521            doy: 4, // The week that contains Jan 4th is the first week of the year.
63522        },
63523    });
63524
63525    return ga;
63526
63527})));
63528
63529
63530/***/ }),
63531
vendor: 3,221 bytes, lines 63532-63645
63532/***/ "./node_modules/moment/locale/gd.js":
63533/*!******************************************!*\
63534  !*** ./node_modules/moment/locale/gd.js ***!
63535  \******************************************/
63536/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
63537
63538//! moment.js locale configuration
63539//! locale : Scottish Gaelic [gd]
63540//! author : Jon Ashdown : https://github.com/jonashdown
63541
63542;(function (global, factory) {
63543    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
63544   0
63545}(this, (function (moment) { 'use strict';
63546
63547    //! moment.js locale configuration
63548
63549    var months = [
63550            'Am Faoilleach',
63551            'An Gearran',
63552            'Am Màrt',
63553            'An Giblean',
63554            'An Cèitean',
63555            'An t-Ògmhios',
63556            'An t-Iuchar',
63557            'An Lùnastal',
63558            'An t-Sultain',
63559            'An Dàmhair',
63560            'An t-Samhain',
63561            'An Dùbhlachd',
63562        ],
63563        monthsShort = [
63564            'Faoi',
63565            'Gear',
63566            'Màrt',
63567            'Gibl',
63568            'Cèit',
63569            'Ògmh',
63570            'Iuch',
63571            'Lùn',
63572            'Sult',
63573            'Dàmh',
63574            'Samh',
63575            'Dùbh',
63576        ],
63577        weekdays = [
63578            'Didòmhnaich',
63579            'Diluain',
63580            'Dimàirt',
63581            'Diciadain',
63582            'Diardaoin',
63583            'Dihaoine',
63584            'Disathairne',
63585        ],
63586        weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
63587        weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
63588
63589    var gd = moment.defineLocale('gd', {
63590        months: months,
63591        monthsShort: monthsShort,
63592        monthsParseExact: true,
63593        weekdays: weekdays,
63594        weekdaysShort: weekdaysShort,
63595        weekdaysMin: weekdaysMin,
63596        longDateFormat: {
63597            LT: 'HH:mm',
63598            LTS: 'HH:mm:ss',
63599            L: 'DD/MM/YYYY',
63600            LL: 'D MMMM YYYY',
63601            LLL: 'D MMMM YYYY HH:mm',
63602            LLLL: 'dddd, D MMMM YYYY HH:mm',
63603        },
63604        calendar: {
63605            sameDay: '[An-diugh aig] LT',
63606            nextDay: '[A-màireach aig] LT',
63607            nextWeek: 'dddd [aig] LT',
63608            lastDay: '[An-dè aig] LT',
63609            lastWeek: 'dddd [seo chaidh] [aig] LT',
63610            sameElse: 'L',
63611        },
63612        relativeTime: {
63613            future: 'ann an %s',
63614            past: 'bho chionn %s',
63615            s: 'beagan diogan',
63616            ss: '%d diogan',
63617            m: 'mionaid',
63618            mm: '%d mionaidean',
63619            h: 'uair',
63620            hh: '%d uairean',
63621            d: 'latha',
63622            dd: '%d latha',
63623            M: 'mìos',
63624            MM: '%d mìosan',
63625            y: 'bliadhna',
63626            yy: '%d bliadhna',
63627        },
63628        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
63629        ordinal: function (number) {
63630            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
63631            return number + output;
63632        },
63633        week: {
63634            dow: 1, // Monday is the first day of the week.
63635            doy: 4, // The week that contains Jan 4th is the first week of the year.
63636        },
63637    });
63638
63639    return gd;
63640
63641})));
63642
63643
63644/***/ }),
63645
vendor: 3,112 bytes, lines 63646-63739
63646/***/ "./node_modules/moment/locale/gl.js":
63647/*!******************************************!*\
63648  !*** ./node_modules/moment/locale/gl.js ***!
63649  \******************************************/
63650/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
63651
63652//! moment.js locale configuration
63653//! locale : Galician [gl]
63654//! author : Juan G. Hurtado : https://github.com/juanghurtado
63655
63656;(function (global, factory) {
63657    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
63658   0
63659}(this, (function (moment) { 'use strict';
63660
63661    //! moment.js locale configuration
63662
63663    var gl = moment.defineLocale('gl', {
63664        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
63665            '_'
63666        ),
63667        monthsShort:
63668            'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
63669                '_'
63670            ),
63671        monthsParseExact: true,
63672        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
63673        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
63674        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
63675        weekdaysParseExact: true,
63676        longDateFormat: {
63677            LT: 'H:mm',
63678            LTS: 'H:mm:ss',
63679            L: 'DD/MM/YYYY',
63680            LL: 'D [de] MMMM [de] YYYY',
63681            LLL: 'D [de] MMMM [de] YYYY H:mm',
63682            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
63683        },
63684        calendar: {
63685            sameDay: function () {
63686                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
63687            },
63688            nextDay: function () {
63689                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
63690            },
63691            nextWeek: function () {
63692                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
63693            },
63694            lastDay: function () {
63695                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
63696            },
63697            lastWeek: function () {
63698                return (
63699                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
63700                );
63701            },
63702            sameElse: 'L',
63703        },
63704        relativeTime: {
63705            future: function (str) {
63706                if (str.indexOf('un') === 0) {
63707                    return 'n' + str;
63708                }
63709                return 'en ' + str;
63710            },
63711            past: 'hai %s',
63712            s: 'uns segundos',
63713            ss: '%d segundos',
63714            m: 'un minuto',
63715            mm: '%d minutos',
63716            h: 'unha hora',
63717            hh: '%d horas',
63718            d: 'un día',
63719            dd: '%d días',
63720            M: 'un mes',
63721            MM: '%d meses',
63722            y: 'un ano',
63723            yy: '%d anos',
63724        },
63725        dayOfMonthOrdinalParse: /\d{1,2}º/,
63726        ordinal: '%dº',
63727        week: {
63728            dow: 1, // Monday is the first day of the week.
63729            doy: 4, // The week that contains Jan 4th is the first week of the year.
63730        },
63731    });
63732
63733    return gl;
63734
63735})));
63736
63737
63738/***/ }),
63739
vendor: 6,505 bytes, lines 63740-63884
63740/***/ "./node_modules/moment/locale/gom-deva.js":
63741/*!************************************************!*\
63742  !*** ./node_modules/moment/locale/gom-deva.js ***!
63743  \************************************************/
63744/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
63745
63746//! moment.js locale configuration
63747//! locale : Konkani Devanagari script [gom-deva]
63748//! author : The Discoverer : https://github.com/WikiDiscoverer
63749
63750;(function (global, factory) {
63751    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
63752   0
63753}(this, (function (moment) { 'use strict';
63754
63755    //! moment.js locale configuration
63756
63757    function processRelativeTime(number, withoutSuffix, key, isFuture) {
63758        var format = {
63759            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
63760            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
63761            m: ['एका मिणटान', 'एक मिनूट'],
63762            mm: [number + ' मिणटांनी', number + ' मिणटां'],
63763            h: ['एका वरान', 'एक वर'],
63764            hh: [number + ' वरांनी', number + ' वरां'],
63765            d: ['एका दिसान', 'एक दीस'],
63766            dd: [number + ' दिसांनी', number + ' दीस'],
63767            M: ['एका म्हयन्यान', 'एक म्हयनो'],
63768            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
63769            y: ['एका वर्सान', 'एक वर्स'],
63770            yy: [number + ' वर्सांनी', number + ' वर्सां'],
63771        };
63772        return isFuture ? format[key][0] : format[key][1];
63773    }
63774
63775    var gomDeva = moment.defineLocale('gom-deva', {
63776        months: {
63777            standalone:
63778                'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
63779                    '_'
63780                ),
63781            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
63782                '_'
63783            ),
63784            isFormat: /MMMM(\s)+D[oD]?/,
63785        },
63786        monthsShort:
63787            'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
63788                '_'
63789            ),
63790        monthsParseExact: true,
63791        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),
63792        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
63793        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
63794        weekdaysParseExact: true,
63795        longDateFormat: {
63796            LT: 'A h:mm [वाजतां]',
63797            LTS: 'A h:mm:ss [वाजतां]',
63798            L: 'DD-MM-YYYY',
63799            LL: 'D MMMM YYYY',
63800            LLL: 'D MMMM YYYY A h:mm [वाजतां]',
63801            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
63802            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
63803        },
63804        calendar: {
63805            sameDay: '[आयज] LT',
63806            nextDay: '[फाल्यां] LT',
63807            nextWeek: '[फुडलो] dddd[,] LT',
63808            lastDay: '[काल] LT',
63809            lastWeek: '[फाटलो] dddd[,] LT',
63810            sameElse: 'L',
63811        },
63812        relativeTime: {
63813            future: '%s',
63814            past: '%s आदीं',
63815            s: processRelativeTime,
63816            ss: processRelativeTime,
63817            m: processRelativeTime,
63818            mm: processRelativeTime,
63819            h: processRelativeTime,
63820            hh: processRelativeTime,
63821            d: processRelativeTime,
63822            dd: processRelativeTime,
63823            M: processRelativeTime,
63824            MM: processRelativeTime,
63825            y: processRelativeTime,
63826            yy: processRelativeTime,
63827        },
63828        dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
63829        ordinal: function (number, period) {
63830            switch (period) {
63831                // the ordinal 'वेर' only applies to day of the month
63832                case 'D':
63833                    return number + 'वेर';
63834                default:
63835                case 'M':
63836                case 'Q':
63837                case 'DDD':
63838                case 'd':
63839                case 'w':
63840                case 'W':
63841                    return number;
63842            }
63843        },
63844        week: {
63845            dow: 0, // Sunday is the first day of the week
63846            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
63847        },
63848        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
63849        meridiemHour: function (hour, meridiem) {
63850            if (hour === 12) {
63851                hour = 0;
63852            }
63853            if (meridiem === 'राती') {
63854                return hour < 4 ? hour : hour + 12;
63855            } else if (meridiem === 'सकाळीं') {
63856                return hour;
63857            } else if (meridiem === 'दनपारां') {
63858                return hour > 12 ? hour : hour + 12;
63859            } else if (meridiem === 'सांजे') {
63860                return hour + 12;
63861            }
63862        },
63863        meridiem: function (hour, minute, isLower) {
63864            if (hour < 4) {
63865                return 'राती';
63866            } else if (hour < 12) {
63867                return 'सकाळीं';
63868            } else if (hour < 16) {
63869                return 'दनपारां';
63870            } else if (hour < 20) {
63871                return 'सांजे';
63872            } else {
63873                return 'राती';
63874            }
63875        },
63876    });
63877
63878    return gomDeva;
63879
63880})));
63881
63882
63883/***/ }),
63884
vendor: 5,121 bytes, lines 63885-64027
63885/***/ "./node_modules/moment/locale/gom-latn.js":
63886/*!************************************************!*\
63887  !*** ./node_modules/moment/locale/gom-latn.js ***!
63888  \************************************************/
63889/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
63890
63891//! moment.js locale configuration
63892//! locale : Konkani Latin script [gom-latn]
63893//! author : The Discoverer : https://github.com/WikiDiscoverer
63894
63895;(function (global, factory) {
63896    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
63897   0
63898}(this, (function (moment) { 'use strict';
63899
63900    //! moment.js locale configuration
63901
63902    function processRelativeTime(number, withoutSuffix, key, isFuture) {
63903        var format = {
63904            s: ['thoddea sekondamni', 'thodde sekond'],
63905            ss: [number + ' sekondamni', number + ' sekond'],
63906            m: ['eka mintan', 'ek minut'],
63907            mm: [number + ' mintamni', number + ' mintam'],
63908            h: ['eka voran', 'ek vor'],
63909            hh: [number + ' voramni', number + ' voram'],
63910            d: ['eka disan', 'ek dis'],
63911            dd: [number + ' disamni', number + ' dis'],
63912            M: ['eka mhoinean', 'ek mhoino'],
63913            MM: [number + ' mhoineamni', number + ' mhoine'],
63914            y: ['eka vorsan', 'ek voros'],
63915            yy: [number + ' vorsamni', number + ' vorsam'],
63916        };
63917        return isFuture ? format[key][0] : format[key][1];
63918    }
63919
63920    var gomLatn = moment.defineLocale('gom-latn', {
63921        months: {
63922            standalone:
63923                'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
63924                    '_'
63925                ),
63926            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
63927                '_'
63928            ),
63929            isFormat: /MMMM(\s)+D[oD]?/,
63930        },
63931        monthsShort:
63932            'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
63933        monthsParseExact: true,
63934        weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
63935        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
63936        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
63937        weekdaysParseExact: true,
63938        longDateFormat: {
63939            LT: 'A h:mm [vazta]',
63940            LTS: 'A h:mm:ss [vazta]',
63941            L: 'DD-MM-YYYY',
63942            LL: 'D MMMM YYYY',
63943            LLL: 'D MMMM YYYY A h:mm [vazta]',
63944            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
63945            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
63946        },
63947        calendar: {
63948            sameDay: '[Aiz] LT',
63949            nextDay: '[Faleam] LT',
63950            nextWeek: '[Fuddlo] dddd[,] LT',
63951            lastDay: '[Kal] LT',
63952            lastWeek: '[Fattlo] dddd[,] LT',
63953            sameElse: 'L',
63954        },
63955        relativeTime: {
63956            future: '%s',
63957            past: '%s adim',
63958            s: processRelativeTime,
63959            ss: processRelativeTime,
63960            m: processRelativeTime,
63961            mm: processRelativeTime,
63962            h: processRelativeTime,
63963            hh: processRelativeTime,
63964            d: processRelativeTime,
63965            dd: processRelativeTime,
63966            M: processRelativeTime,
63967            MM: processRelativeTime,
63968            y: processRelativeTime,
63969            yy: processRelativeTime,
63970        },
63971        dayOfMonthOrdinalParse: /\d{1,2}(er)/,
63972        ordinal: function (number, period) {
63973            switch (period) {
63974                // the ordinal 'er' only applies to day of the month
63975                case 'D':
63976                    return number + 'er';
63977                default:
63978                case 'M':
63979                case 'Q':
63980                case 'DDD':
63981                case 'd':
63982                case 'w':
63983                case 'W':
63984                    return number;
63985            }
63986        },
63987        week: {
63988            dow: 0, // Sunday is the first day of the week
63989            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
63990        },
63991        meridiemParse: /rati|sokallim|donparam|sanje/,
63992        meridiemHour: function (hour, meridiem) {
63993            if (hour === 12) {
63994                hour = 0;
63995            }
63996            if (meridiem === 'rati') {
63997                return hour < 4 ? hour : hour + 12;
63998            } else if (meridiem === 'sokallim') {
63999                return hour;
64000            } else if (meridiem === 'donparam') {
64001                return hour > 12 ? hour : hour + 12;
64002            } else if (meridiem === 'sanje') {
64003                return hour + 12;
64004            }
64005        },
64006        meridiem: function (hour, minute, isLower) {
64007            if (hour < 4) {
64008                return 'rati';
64009            } else if (hour < 12) {
64010                return 'sokallim';
64011            } else if (hour < 16) {
64012                return 'donparam';
64013            } else if (hour < 20) {
64014                return 'sanje';
64015            } else {
64016                return 'rati';
64017            }
64018        },
64019    });
64020
64021    return gomLatn;
64022
64023})));
64024
64025
64026/***/ }),
64027
vendor: 5,081 bytes, lines 64028-64168
64028/***/ "./node_modules/moment/locale/gu.js":
64029/*!******************************************!*\
64030  !*** ./node_modules/moment/locale/gu.js ***!
64031  \******************************************/
64032/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
64033
64034//! moment.js locale configuration
64035//! locale : Gujarati [gu]
64036//! author : Kaushik Thanki : https://github.com/Kaushik1987
64037
64038;(function (global, factory) {
64039    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
64040   0
64041}(this, (function (moment) { 'use strict';
64042
64043    //! moment.js locale configuration
64044
64045    var symbolMap = {
64046            1: 'à«§',
64047            2: '૨',
64048            3: 'à«©',
64049            4: '૪',
64050            5: 'à««',
64051            6: '૬',
64052            7: 'à«­',
64053            8: 'à«®',
64054            9: '૯',
64055            0: '૦',
64056        },
64057        numberMap = {
64058            'à«§': '1',
64059            '૨': '2',
64060            'à«©': '3',
64061            '૪': '4',
64062            'à««': '5',
64063            '૬': '6',
64064            'à«­': '7',
64065            'à«®': '8',
64066            '૯': '9',
64067            '૦': '0',
64068        };
64069
64070    var gu = moment.defineLocale('gu', {
64071        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
64072            '_'
64073        ),
64074        monthsShort:
64075            'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(
64076                '_'
64077            ),
64078        monthsParseExact: true,
64079        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
64080            '_'
64081        ),
64082        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
64083        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
64084        longDateFormat: {
64085            LT: 'A h:mm વાગ્યે',
64086            LTS: 'A h:mm:ss વાગ્યે',
64087            L: 'DD/MM/YYYY',
64088            LL: 'D MMMM YYYY',
64089            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
64090            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
64091        },
64092        calendar: {
64093            sameDay: '[આજ] LT',
64094            nextDay: '[કાલે] LT',
64095            nextWeek: 'dddd, LT',
64096            lastDay: '[ગઇકાલે] LT',
64097            lastWeek: '[પાછલા] dddd, LT',
64098            sameElse: 'L',
64099        },
64100        relativeTime: {
64101            future: '%s મા',
64102            past: '%s પહેલા',
64103            s: 'અમુક પળો',
64104            ss: '%d સેકંડ',
64105            m: 'એક મિનિટ',
64106            mm: '%d મિનિટ',
64107            h: 'એક કલાક',
64108            hh: '%d કલાક',
64109            d: 'એક દિવસ',
64110            dd: '%d દિવસ',
64111            M: 'એક મહિનો',
64112            MM: '%d મહિનો',
64113            y: 'એક વર્ષ',
64114            yy: '%d વર્ષ',
64115        },
64116        preparse: function (string) {
64117            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
64118                return numberMap[match];
64119            });
64120        },
64121        postformat: function (string) {
64122            return string.replace(/\d/g, function (match) {
64123                return symbolMap[match];
64124            });
64125        },
64126        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
64127        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
64128        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
64129        meridiemHour: function (hour, meridiem) {
64130            if (hour === 12) {
64131                hour = 0;
64132            }
64133            if (meridiem === 'રાત') {
64134                return hour < 4 ? hour : hour + 12;
64135            } else if (meridiem === 'સવાર') {
64136                return hour;
64137            } else if (meridiem === 'બપોર') {
64138                return hour >= 10 ? hour : hour + 12;
64139            } else if (meridiem === 'સાંજ') {
64140                return hour + 12;
64141            }
64142        },
64143        meridiem: function (hour, minute, isLower) {
64144            if (hour < 4) {
64145                return 'રાત';
64146            } else if (hour < 10) {
64147                return 'સવાર';
64148            } else if (hour < 17) {
64149                return 'બપોર';
64150            } else if (hour < 20) {
64151                return 'સાંજ';
64152            } else {
64153                return 'રાત';
64154            }
64155        },
64156        week: {
64157            dow: 0, // Sunday is the first day of the week.
64158            doy: 6, // The week that contains Jan 6th is the first week of the year.
64159        },
64160    });
64161
64162    return gu;
64163
64164})));
64165
64166
64167/***/ }),
64168
vendor: 4,044 bytes, lines 64169-64281
64169/***/ "./node_modules/moment/locale/he.js":
64170/*!******************************************!*\
64171  !*** ./node_modules/moment/locale/he.js ***!
64172  \******************************************/
64173/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
64174
64175//! moment.js locale configuration
64176//! locale : Hebrew [he]
64177//! author : Tomer Cohen : https://github.com/tomer
64178//! author : Moshe Simantov : https://github.com/DevelopmentIL
64179//! author : Tal Ater : https://github.com/TalAter
64180
64181;(function (global, factory) {
64182    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
64183   0
64184}(this, (function (moment) { 'use strict';
64185
64186    //! moment.js locale configuration
64187
64188    var he = moment.defineLocale('he', {
64189        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
64190            '_'
64191        ),
64192        monthsShort:
64193            'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
64194        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
64195        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
64196        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
64197        longDateFormat: {
64198            LT: 'HH:mm',
64199            LTS: 'HH:mm:ss',
64200            L: 'DD/MM/YYYY',
64201            LL: 'D [ב]MMMM YYYY',
64202            LLL: 'D [ב]MMMM YYYY HH:mm',
64203            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
64204            l: 'D/M/YYYY',
64205            ll: 'D MMM YYYY',
64206            lll: 'D MMM YYYY HH:mm',
64207            llll: 'ddd, D MMM YYYY HH:mm',
64208        },
64209        calendar: {
64210            sameDay: '[היום ב־]LT',
64211            nextDay: '[מחר ב־]LT',
64212            nextWeek: 'dddd [בשעה] LT',
64213            lastDay: '[אתמול ב־]LT',
64214            lastWeek: '[ביום] dddd [האחרון בשעה] LT',
64215            sameElse: 'L',
64216        },
64217        relativeTime: {
64218            future: 'בעוד %s',
64219            past: 'לפני %s',
64220            s: 'מספר שניות',
64221            ss: '%d שניות',
64222            m: 'דקה',
64223            mm: '%d דקות',
64224            h: 'שעה',
64225            hh: function (number) {
64226                if (number === 2) {
64227                    return 'שעתיים';
64228                }
64229                return number + ' שעות';
64230            },
64231            d: 'יום',
64232            dd: function (number) {
64233                if (number === 2) {
64234                    return 'יומיים';
64235                }
64236                return number + ' ימים';
64237            },
64238            M: 'חודש',
64239            MM: function (number) {
64240                if (number === 2) {
64241                    return 'חודשיים';
64242                }
64243                return number + ' חודשים';
64244            },
64245            y: 'שנה',
64246            yy: function (number) {
64247                if (number === 2) {
64248                    return 'שנתיים';
64249                } else if (number % 10 === 0 && number !== 10) {
64250                    return number + ' שנה';
64251                }
64252                return number + ' שנים';
64253            },
64254        },
64255        meridiemParse:
64256            /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
64257        isPM: function (input) {
64258            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
64259        },
64260        meridiem: function (hour, minute, isLower) {
64261            if (hour < 5) {
64262                return 'לפנות בוקר';
64263            } else if (hour < 10) {
64264                return 'בבוקר';
64265            } else if (hour < 12) {
64266                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
64267            } else if (hour < 18) {
64268                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
64269            } else {
64270                return 'בערב';
64271            }
64272        },
64273    });
64274
64275    return he;
64276
64277})));
64278
64279
64280/***/ }),
64281
vendor: 7,530 bytes, lines 64282-64468
64282/***/ "./node_modules/moment/locale/hi.js":
64283/*!******************************************!*\
64284  !*** ./node_modules/moment/locale/hi.js ***!
64285  \******************************************/
64286/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
64287
64288//! moment.js locale configuration
64289//! locale : Hindi [hi]
64290//! author : Mayank Singhal : https://github.com/mayanksinghal
64291
64292;(function (global, factory) {
64293    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
64294   0
64295}(this, (function (moment) { 'use strict';
64296
64297    //! moment.js locale configuration
64298
64299    var symbolMap = {
64300            1: '१',
64301            2: '२',
64302            3: '३',
64303            4: '४',
64304            5: '५',
64305            6: '६',
64306            7: '७',
64307            8: '८',
64308            9: '९',
64309            0: '०',
64310        },
64311        numberMap = {
64312            '१': '1',
64313            '२': '2',
64314            '३': '3',
64315            '४': '4',
64316            '५': '5',
64317            '६': '6',
64318            '७': '7',
64319            '८': '8',
64320            '९': '9',
64321            '०': '0',
64322        },
64323        monthsParse = [
64324            /^जन/i,
64325            /^फ़र|फर/i,
64326            /^मार्च/i,
64327            /^अप्रै/i,
64328            /^मई/i,
64329            /^जून/i,
64330            /^जुल/i,
64331            /^अग/i,
64332            /^सितं|सित/i,
64333            /^अक्टू/i,
64334            /^नव|नवं/i,
64335            /^दिसं|दिस/i,
64336        ],
64337        shortMonthsParse = [
64338            /^जन/i,
64339            /^फ़र/i,
64340            /^मार्च/i,
64341            /^अप्रै/i,
64342            /^मई/i,
64343            /^जून/i,
64344            /^जुल/i,
64345            /^अग/i,
64346            /^सित/i,
64347            /^अक्टू/i,
64348            /^नव/i,
64349            /^दिस/i,
64350        ];
64351
64352    var hi = moment.defineLocale('hi', {
64353        months: {
64354            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
64355                '_'
64356            ),
64357            standalone:
64358                'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(
64359                    '_'
64360                ),
64361        },
64362        monthsShort:
64363            'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
64364        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
64365        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
64366        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
64367        longDateFormat: {
64368            LT: 'A h:mm बजे',
64369            LTS: 'A h:mm:ss बजे',
64370            L: 'DD/MM/YYYY',
64371            LL: 'D MMMM YYYY',
64372            LLL: 'D MMMM YYYY, A h:mm बजे',
64373            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
64374        },
64375
64376        monthsParse: monthsParse,
64377        longMonthsParse: monthsParse,
64378        shortMonthsParse: shortMonthsParse,
64379
64380        monthsRegex:
64381            /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
64382
64383        monthsShortRegex:
64384            /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
64385
64386        monthsStrictRegex:
64387            /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,
64388
64389        monthsShortStrictRegex:
64390            /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,
64391
64392        calendar: {
64393            sameDay: '[आज] LT',
64394            nextDay: '[कल] LT',
64395            nextWeek: 'dddd, LT',
64396            lastDay: '[कल] LT',
64397            lastWeek: '[पिछले] dddd, LT',
64398            sameElse: 'L',
64399        },
64400        relativeTime: {
64401            future: '%s में',
64402            past: '%s पहले',
64403            s: 'कुछ ही क्षण',
64404            ss: '%d सेकंड',
64405            m: 'एक मिनट',
64406            mm: '%d मिनट',
64407            h: 'एक घंटा',
64408            hh: '%d घंटे',
64409            d: 'एक दिन',
64410            dd: '%d दिन',
64411            M: 'एक महीने',
64412            MM: '%d महीने',
64413            y: 'एक वर्ष',
64414            yy: '%d वर्ष',
64415        },
64416        preparse: function (string) {
64417            return string.replace(/[१२३४५६७८९०]/g, function (match) {
64418                return numberMap[match];
64419            });
64420        },
64421        postformat: function (string) {
64422            return string.replace(/\d/g, function (match) {
64423                return symbolMap[match];
64424            });
64425        },
64426        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
64427        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
64428        meridiemParse: /रात|सुबह|दोपहर|शाम/,
64429        meridiemHour: function (hour, meridiem) {
64430            if (hour === 12) {
64431                hour = 0;
64432            }
64433            if (meridiem === 'रात') {
64434                return hour < 4 ? hour : hour + 12;
64435            } else if (meridiem === 'सुबह') {
64436                return hour;
64437            } else if (meridiem === 'दोपहर') {
64438                return hour >= 10 ? hour : hour + 12;
64439            } else if (meridiem === 'शाम') {
64440                return hour + 12;
64441            }
64442        },
64443        meridiem: function (hour, minute, isLower) {
64444            if (hour < 4) {
64445                return 'रात';
64446            } else if (hour < 10) {
64447                return 'सुबह';
64448            } else if (hour < 17) {
64449                return 'दोपहर';
64450            } else if (hour < 20) {
64451                return 'शाम';
64452            } else {
64453                return 'रात';
64454            }
64455        },
64456        week: {
64457            dow: 0, // Sunday is the first day of the week.
64458            doy: 6, // The week that contains Jan 6th is the first week of the year.
64459        },
64460    });
64461
64462    return hi;
64463
64464})));
64465
64466
64467/***/ }),
64468
vendor: 5,803 bytes, lines 64469-64643
64469/***/ "./node_modules/moment/locale/hr.js":
64470/*!******************************************!*\
64471  !*** ./node_modules/moment/locale/hr.js ***!
64472  \******************************************/
64473/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
64474
64475//! moment.js locale configuration
64476//! locale : Croatian [hr]
64477//! author : Bojan Marković : https://github.com/bmarkovic
64478
64479;(function (global, factory) {
64480    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
64481   0
64482}(this, (function (moment) { 'use strict';
64483
64484    //! moment.js locale configuration
64485
64486    function translate(number, withoutSuffix, key) {
64487        var result = number + ' ';
64488        switch (key) {
64489            case 'ss':
64490                if (number === 1) {
64491                    result += 'sekunda';
64492                } else if (number === 2 || number === 3 || number === 4) {
64493                    result += 'sekunde';
64494                } else {
64495                    result += 'sekundi';
64496                }
64497                return result;
64498            case 'm':
64499                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
64500            case 'mm':
64501                if (number === 1) {
64502                    result += 'minuta';
64503                } else if (number === 2 || number === 3 || number === 4) {
64504                    result += 'minute';
64505                } else {
64506                    result += 'minuta';
64507                }
64508                return result;
64509            case 'h':
64510                return withoutSuffix ? 'jedan sat' : 'jednog sata';
64511            case 'hh':
64512                if (number === 1) {
64513                    result += 'sat';
64514                } else if (number === 2 || number === 3 || number === 4) {
64515                    result += 'sata';
64516                } else {
64517                    result += 'sati';
64518                }
64519                return result;
64520            case 'dd':
64521                if (number === 1) {
64522                    result += 'dan';
64523                } else {
64524                    result += 'dana';
64525                }
64526                return result;
64527            case 'MM':
64528                if (number === 1) {
64529                    result += 'mjesec';
64530                } else if (number === 2 || number === 3 || number === 4) {
64531                    result += 'mjeseca';
64532                } else {
64533                    result += 'mjeseci';
64534                }
64535                return result;
64536            case 'yy':
64537                if (number === 1) {
64538                    result += 'godina';
64539                } else if (number === 2 || number === 3 || number === 4) {
64540                    result += 'godine';
64541                } else {
64542                    result += 'godina';
64543                }
64544                return result;
64545        }
64546    }
64547
64548    var hr = moment.defineLocale('hr', {
64549        months: {
64550            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
64551                '_'
64552            ),
64553            standalone:
64554                'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
64555                    '_'
64556                ),
64557        },
64558        monthsShort:
64559            'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
64560                '_'
64561            ),
64562        monthsParseExact: true,
64563        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
64564            '_'
64565        ),
64566        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
64567        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
64568        weekdaysParseExact: true,
64569        longDateFormat: {
64570            LT: 'H:mm',
64571            LTS: 'H:mm:ss',
64572            L: 'DD.MM.YYYY',
64573            LL: 'Do MMMM YYYY',
64574            LLL: 'Do MMMM YYYY H:mm',
64575            LLLL: 'dddd, Do MMMM YYYY H:mm',
64576        },
64577        calendar: {
64578            sameDay: '[danas u] LT',
64579            nextDay: '[sutra u] LT',
64580            nextWeek: function () {
64581                switch (this.day()) {
64582                    case 0:
64583                        return '[u] [nedjelju] [u] LT';
64584                    case 3:
64585                        return '[u] [srijedu] [u] LT';
64586                    case 6:
64587                        return '[u] [subotu] [u] LT';
64588                    case 1:
64589                    case 2:
64590                    case 4:
64591                    case 5:
64592                        return '[u] dddd [u] LT';
64593                }
64594            },
64595            lastDay: '[jučer u] LT',
64596            lastWeek: function () {
64597                switch (this.day()) {
64598                    case 0:
64599                        return '[prošlu] [nedjelju] [u] LT';
64600                    case 3:
64601                        return '[prošlu] [srijedu] [u] LT';
64602                    case 6:
64603                        return '[prošle] [subote] [u] LT';
64604                    case 1:
64605                    case 2:
64606                    case 4:
64607                    case 5:
64608                        return '[prošli] dddd [u] LT';
64609                }
64610            },
64611            sameElse: 'L',
64612        },
64613        relativeTime: {
64614            future: 'za %s',
64615            past: 'prije %s',
64616            s: 'par sekundi',
64617            ss: translate,
64618            m: translate,
64619            mm: translate,
64620            h: translate,
64621            hh: translate,
64622            d: 'dan',
64623            dd: translate,
64624            M: 'mjesec',
64625            MM: translate,
64626            y: 'godinu',
64627            yy: translate,
64628        },
64629        dayOfMonthOrdinalParse: /\d{1,2}\./,
64630        ordinal: '%d.',
64631        week: {
64632            dow: 1, // Monday is the first day of the week.
64633            doy: 7, // The week that contains Jan 7th is the first week of the year.
64634        },
64635    });
64636
64637    return hr;
64638
64639})));
64640
64641
64642/***/ }),
64643
vendor: 4,744 bytes, lines 64644-64780
64644/***/ "./node_modules/moment/locale/hu.js":
64645/*!******************************************!*\
64646  !*** ./node_modules/moment/locale/hu.js ***!
64647  \******************************************/
64648/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
64649
64650//! moment.js locale configuration
64651//! locale : Hungarian [hu]
64652//! author : Adam Brunner : https://github.com/adambrunner
64653//! author : Peter Viszt  : https://github.com/passatgt
64654
64655;(function (global, factory) {
64656    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
64657   0
64658}(this, (function (moment) { 'use strict';
64659
64660    //! moment.js locale configuration
64661
64662    var weekEndings =
64663        'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
64664    function translate(number, withoutSuffix, key, isFuture) {
64665        var num = number;
64666        switch (key) {
64667            case 's':
64668                return isFuture || withoutSuffix
64669                    ? 'néhány másodperc'
64670                    : 'néhány másodperce';
64671            case 'ss':
64672                return num + (isFuture || withoutSuffix)
64673                    ? ' másodperc'
64674                    : ' másodperce';
64675            case 'm':
64676                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
64677            case 'mm':
64678                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
64679            case 'h':
64680                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
64681            case 'hh':
64682                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
64683            case 'd':
64684                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
64685            case 'dd':
64686                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
64687            case 'M':
64688                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
64689            case 'MM':
64690                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
64691            case 'y':
64692                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
64693            case 'yy':
64694                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
64695        }
64696        return '';
64697    }
64698    function week(isFuture) {
64699        return (
64700            (isFuture ? '' : '[múlt] ') +
64701            '[' +
64702            weekEndings[this.day()] +
64703            '] LT[-kor]'
64704        );
64705    }
64706
64707    var hu = moment.defineLocale('hu', {
64708        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
64709            '_'
64710        ),
64711        monthsShort:
64712            'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(
64713                '_'
64714            ),
64715        monthsParseExact: true,
64716        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
64717        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
64718        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
64719        longDateFormat: {
64720            LT: 'H:mm',
64721            LTS: 'H:mm:ss',
64722            L: 'YYYY.MM.DD.',
64723            LL: 'YYYY. MMMM D.',
64724            LLL: 'YYYY. MMMM D. H:mm',
64725            LLLL: 'YYYY. MMMM D., dddd H:mm',
64726        },
64727        meridiemParse: /de|du/i,
64728        isPM: function (input) {
64729            return input.charAt(1).toLowerCase() === 'u';
64730        },
64731        meridiem: function (hours, minutes, isLower) {
64732            if (hours < 12) {
64733                return isLower === true ? 'de' : 'DE';
64734            } else {
64735                return isLower === true ? 'du' : 'DU';
64736            }
64737        },
64738        calendar: {
64739            sameDay: '[ma] LT[-kor]',
64740            nextDay: '[holnap] LT[-kor]',
64741            nextWeek: function () {
64742                return week.call(this, true);
64743            },
64744            lastDay: '[tegnap] LT[-kor]',
64745            lastWeek: function () {
64746                return week.call(this, false);
64747            },
64748            sameElse: 'L',
64749        },
64750        relativeTime: {
64751            future: '%s múlva',
64752            past: '%s',
64753            s: translate,
64754            ss: translate,
64755            m: translate,
64756            mm: translate,
64757            h: translate,
64758            hh: translate,
64759            d: translate,
64760            dd: translate,
64761            M: translate,
64762            MM: translate,
64763            y: translate,
64764            yy: translate,
64765        },
64766        dayOfMonthOrdinalParse: /\d{1,2}\./,
64767        ordinal: '%d.',
64768        week: {
64769            dow: 1, // Monday is the first day of the week.
64770            doy: 4, // The week that contains Jan 4th is the first week of the year.
64771        },
64772    });
64773
64774    return hu;
64775
64776})));
64777
64778
64779/***/ }),
64780
vendor: 4,093 bytes, lines 64781-64893
64781/***/ "./node_modules/moment/locale/hy-am.js":
64782/*!*********************************************!*\
64783  !*** ./node_modules/moment/locale/hy-am.js ***!
64784  \*********************************************/
64785/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
64786
64787//! moment.js locale configuration
64788//! locale : Armenian [hy-am]
64789//! author : Armendarabyan : https://github.com/armendarabyan
64790
64791;(function (global, factory) {
64792    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
64793   0
64794}(this, (function (moment) { 'use strict';
64795
64796    //! moment.js locale configuration
64797
64798    var hyAm = moment.defineLocale('hy-am', {
64799        months: {
64800            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
64801                '_'
64802            ),
64803            standalone:
64804                'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
64805                    '_'
64806                ),
64807        },
64808        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
64809        weekdays:
64810            'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
64811                '_'
64812            ),
64813        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
64814        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
64815        longDateFormat: {
64816            LT: 'HH:mm',
64817            LTS: 'HH:mm:ss',
64818            L: 'DD.MM.YYYY',
64819            LL: 'D MMMM YYYY Õ©.',
64820            LLL: 'D MMMM YYYY Õ©., HH:mm',
64821            LLLL: 'dddd, D MMMM YYYY Õ©., HH:mm',
64822        },
64823        calendar: {
64824            sameDay: '[այսօր] LT',
64825            nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',
64826            lastDay: '[երեկ] LT',
64827            nextWeek: function () {
64828                return 'dddd [օրը ժամը] LT';
64829            },
64830            lastWeek: function () {
64831                return '[անցած] dddd [օրը ժամը] LT';
64832            },
64833            sameElse: 'L',
64834        },
64835        relativeTime: {
64836            future: '%s Õ°Õ¥Õ¿Õ¸',
64837            past: '%s Õ¡Õ¼Õ¡Õ»',
64838            s: 'մի քանի վայրկյան',
64839            ss: '%d վայրկյան',
64840            m: 'րոպե',
64841            mm: '%d րոպե',
64842            h: 'ÕªÕ¡Õ´',
64843            hh: '%d ÕªÕ¡Õ´',
64844            d: 'օր',
64845            dd: '%d օր',
64846            M: 'Õ¡Õ´Õ«Õ½',
64847            MM: '%d Õ¡Õ´Õ«Õ½',
64848            y: 'տարի',
64849            yy: '%d տարի',
64850        },
64851        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
64852        isPM: function (input) {
64853            return /^(ցերեկվա|երեկոյան)$/.test(input);
64854        },
64855        meridiem: function (hour) {
64856            if (hour < 4) {
64857                return 'գիշերվա';
64858            } else if (hour < 12) {
64859                return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';
64860            } else if (hour < 17) {
64861                return 'ցերեկվա';
64862            } else {
64863                return 'երեկոյան';
64864            }
64865        },
64866        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
64867        ordinal: function (number, period) {
64868            switch (period) {
64869                case 'DDD':
64870                case 'w':
64871                case 'W':
64872                case 'DDDo':
64873                    if (number === 1) {
64874                        return number + '-Õ«Õ¶';
64875                    }
64876                    return number + '-րդ';
64877                default:
64878                    return number;
64879            }
64880        },
64881        week: {
64882            dow: 1, // Monday is the first day of the week.
64883            doy: 7, // The week that contains Jan 7th is the first week of the year.
64884        },
64885    });
64886
64887    return hyAm;
64888
64889})));
64890
64891
64892/***/ }),
64893
vendor: 3,140 bytes, lines 64894-64988
64894/***/ "./node_modules/moment/locale/id.js":
64895/*!******************************************!*\
64896  !*** ./node_modules/moment/locale/id.js ***!
64897  \******************************************/
64898/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
64899
64900//! moment.js locale configuration
64901//! locale : Indonesian [id]
64902//! author : Mohammad Satrio Utomo : https://github.com/tyok
64903//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
64904
64905;(function (global, factory) {
64906    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
64907   0
64908}(this, (function (moment) { 'use strict';
64909
64910    //! moment.js locale configuration
64911
64912    var id = moment.defineLocale('id', {
64913        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
64914            '_'
64915        ),
64916        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
64917        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
64918        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
64919        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
64920        longDateFormat: {
64921            LT: 'HH.mm',
64922            LTS: 'HH.mm.ss',
64923            L: 'DD/MM/YYYY',
64924            LL: 'D MMMM YYYY',
64925            LLL: 'D MMMM YYYY [pukul] HH.mm',
64926            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
64927        },
64928        meridiemParse: /pagi|siang|sore|malam/,
64929        meridiemHour: function (hour, meridiem) {
64930            if (hour === 12) {
64931                hour = 0;
64932            }
64933            if (meridiem === 'pagi') {
64934                return hour;
64935            } else if (meridiem === 'siang') {
64936                return hour >= 11 ? hour : hour + 12;
64937            } else if (meridiem === 'sore' || meridiem === 'malam') {
64938                return hour + 12;
64939            }
64940        },
64941        meridiem: function (hours, minutes, isLower) {
64942            if (hours < 11) {
64943                return 'pagi';
64944            } else if (hours < 15) {
64945                return 'siang';
64946            } else if (hours < 19) {
64947                return 'sore';
64948            } else {
64949                return 'malam';
64950            }
64951        },
64952        calendar: {
64953            sameDay: '[Hari ini pukul] LT',
64954            nextDay: '[Besok pukul] LT',
64955            nextWeek: 'dddd [pukul] LT',
64956            lastDay: '[Kemarin pukul] LT',
64957            lastWeek: 'dddd [lalu pukul] LT',
64958            sameElse: 'L',
64959        },
64960        relativeTime: {
64961            future: 'dalam %s',
64962            past: '%s yang lalu',
64963            s: 'beberapa detik',
64964            ss: '%d detik',
64965            m: 'semenit',
64966            mm: '%d menit',
64967            h: 'sejam',
64968            hh: '%d jam',
64969            d: 'sehari',
64970            dd: '%d hari',
64971            M: 'sebulan',
64972            MM: '%d bulan',
64973            y: 'setahun',
64974            yy: '%d tahun',
64975        },
64976        week: {
64977            dow: 0, // Sunday is the first day of the week.
64978            doy: 6, // The week that contains Jan 6th is the first week of the year.
64979        },
64980    });
64981
64982    return id;
64983
64984})));
64985
64986
64987/***/ }),
64988
vendor: 5,479 bytes, lines 64989-65147
64989/***/ "./node_modules/moment/locale/is.js":
64990/*!******************************************!*\
64991  !*** ./node_modules/moment/locale/is.js ***!
64992  \******************************************/
64993/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
64994
64995//! moment.js locale configuration
64996//! locale : Icelandic [is]
64997//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
64998
64999;(function (global, factory) {
65000    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
65001   0
65002}(this, (function (moment) { 'use strict';
65003
65004    //! moment.js locale configuration
65005
65006    function plural(n) {
65007        if (n % 100 === 11) {
65008            return true;
65009        } else if (n % 10 === 1) {
65010            return false;
65011        }
65012        return true;
65013    }
65014    function translate(number, withoutSuffix, key, isFuture) {
65015        var result = number + ' ';
65016        switch (key) {
65017            case 's':
65018                return withoutSuffix || isFuture
65019                    ? 'nokkrar sekúndur'
65020                    : 'nokkrum sekúndum';
65021            case 'ss':
65022                if (plural(number)) {
65023                    return (
65024                        result +
65025                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
65026                    );
65027                }
65028                return result + 'sekúnda';
65029            case 'm':
65030                return withoutSuffix ? 'mínúta' : 'mínútu';
65031            case 'mm':
65032                if (plural(number)) {
65033                    return (
65034                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
65035                    );
65036                } else if (withoutSuffix) {
65037                    return result + 'mínúta';
65038                }
65039                return result + 'mínútu';
65040            case 'hh':
65041                if (plural(number)) {
65042                    return (
65043                        result +
65044                        (withoutSuffix || isFuture
65045                            ? 'klukkustundir'
65046                            : 'klukkustundum')
65047                    );
65048                }
65049                return result + 'klukkustund';
65050            case 'd':
65051                if (withoutSuffix) {
65052                    return 'dagur';
65053                }
65054                return isFuture ? 'dag' : 'degi';
65055            case 'dd':
65056                if (plural(number)) {
65057                    if (withoutSuffix) {
65058                        return result + 'dagar';
65059                    }
65060                    return result + (isFuture ? 'daga' : 'dögum');
65061                } else if (withoutSuffix) {
65062                    return result + 'dagur';
65063                }
65064                return result + (isFuture ? 'dag' : 'degi');
65065            case 'M':
65066                if (withoutSuffix) {
65067                    return 'mánuður';
65068                }
65069                return isFuture ? 'mánuð' : 'mánuði';
65070            case 'MM':
65071                if (plural(number)) {
65072                    if (withoutSuffix) {
65073                        return result + 'mánuðir';
65074                    }
65075                    return result + (isFuture ? 'mánuði' : 'mánuðum');
65076                } else if (withoutSuffix) {
65077                    return result + 'mánuður';
65078                }
65079                return result + (isFuture ? 'mánuð' : 'mánuði');
65080            case 'y':
65081                return withoutSuffix || isFuture ? 'ár' : 'ári';
65082            case 'yy':
65083                if (plural(number)) {
65084                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
65085                }
65086                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
65087        }
65088    }
65089
65090    var is = moment.defineLocale('is', {
65091        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
65092            '_'
65093        ),
65094        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
65095        weekdays:
65096            'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
65097                '_'
65098            ),
65099        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
65100        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
65101        longDateFormat: {
65102            LT: 'H:mm',
65103            LTS: 'H:mm:ss',
65104            L: 'DD.MM.YYYY',
65105            LL: 'D. MMMM YYYY',
65106            LLL: 'D. MMMM YYYY [kl.] H:mm',
65107            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
65108        },
65109        calendar: {
65110            sameDay: '[í dag kl.] LT',
65111            nextDay: '[á morgun kl.] LT',
65112            nextWeek: 'dddd [kl.] LT',
65113            lastDay: '[í gær kl.] LT',
65114            lastWeek: '[síðasta] dddd [kl.] LT',
65115            sameElse: 'L',
65116        },
65117        relativeTime: {
65118            future: 'eftir %s',
65119            past: 'fyrir %s síðan',
65120            s: translate,
65121            ss: translate,
65122            m: translate,
65123            mm: translate,
65124            h: 'klukkustund',
65125            hh: translate,
65126            d: translate,
65127            dd: translate,
65128            M: translate,
65129            MM: translate,
65130            y: translate,
65131            yy: translate,
65132        },
65133        dayOfMonthOrdinalParse: /\d{1,2}\./,
65134        ordinal: '%d.',
65135        week: {
65136            dow: 1, // Monday is the first day of the week.
65137            doy: 4, // The week that contains Jan 4th is the first week of the year.
65138        },
65139    });
65140
65141    return is;
65142
65143})));
65144
65145
65146/***/ }),
65147
vendor: 2,678 bytes, lines 65148-65230
65148/***/ "./node_modules/moment/locale/it-ch.js":
65149/*!*********************************************!*\
65150  !*** ./node_modules/moment/locale/it-ch.js ***!
65151  \*********************************************/
65152/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
65153
65154//! moment.js locale configuration
65155//! locale : Italian (Switzerland) [it-ch]
65156//! author : xfh : https://github.com/xfh
65157
65158;(function (global, factory) {
65159    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
65160   0
65161}(this, (function (moment) { 'use strict';
65162
65163    //! moment.js locale configuration
65164
65165    var itCh = moment.defineLocale('it-ch', {
65166        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
65167            '_'
65168        ),
65169        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
65170        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
65171            '_'
65172        ),
65173        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
65174        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
65175        longDateFormat: {
65176            LT: 'HH:mm',
65177            LTS: 'HH:mm:ss',
65178            L: 'DD.MM.YYYY',
65179            LL: 'D MMMM YYYY',
65180            LLL: 'D MMMM YYYY HH:mm',
65181            LLLL: 'dddd D MMMM YYYY HH:mm',
65182        },
65183        calendar: {
65184            sameDay: '[Oggi alle] LT',
65185            nextDay: '[Domani alle] LT',
65186            nextWeek: 'dddd [alle] LT',
65187            lastDay: '[Ieri alle] LT',
65188            lastWeek: function () {
65189                switch (this.day()) {
65190                    case 0:
65191                        return '[la scorsa] dddd [alle] LT';
65192                    default:
65193                        return '[lo scorso] dddd [alle] LT';
65194                }
65195            },
65196            sameElse: 'L',
65197        },
65198        relativeTime: {
65199            future: function (s) {
65200                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
65201            },
65202            past: '%s fa',
65203            s: 'alcuni secondi',
65204            ss: '%d secondi',
65205            m: 'un minuto',
65206            mm: '%d minuti',
65207            h: "un'ora",
65208            hh: '%d ore',
65209            d: 'un giorno',
65210            dd: '%d giorni',
65211            M: 'un mese',
65212            MM: '%d mesi',
65213            y: 'un anno',
65214            yy: '%d anni',
65215        },
65216        dayOfMonthOrdinalParse: /\d{1,2}º/,
65217        ordinal: '%dº',
65218        week: {
65219            dow: 1, // Monday is the first day of the week.
65220            doy: 4, // The week that contains Jan 4th is the first week of the year.
65221        },
65222    });
65223
65224    return itCh;
65225
65226})));
65227
65228
65229/***/ }),
65230
vendor: 4,140 bytes, lines 65231-65355
65231/***/ "./node_modules/moment/locale/it.js":
65232/*!******************************************!*\
65233  !*** ./node_modules/moment/locale/it.js ***!
65234  \******************************************/
65235/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
65236
65237//! moment.js locale configuration
65238//! locale : Italian [it]
65239//! author : Lorenzo : https://github.com/aliem
65240//! author: Mattia Larentis: https://github.com/nostalgiaz
65241//! author: Marco : https://github.com/Manfre98
65242
65243;(function (global, factory) {
65244    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
65245   0
65246}(this, (function (moment) { 'use strict';
65247
65248    //! moment.js locale configuration
65249
65250    var it = moment.defineLocale('it', {
65251        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
65252            '_'
65253        ),
65254        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
65255        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
65256            '_'
65257        ),
65258        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
65259        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
65260        longDateFormat: {
65261            LT: 'HH:mm',
65262            LTS: 'HH:mm:ss',
65263            L: 'DD/MM/YYYY',
65264            LL: 'D MMMM YYYY',
65265            LLL: 'D MMMM YYYY HH:mm',
65266            LLLL: 'dddd D MMMM YYYY HH:mm',
65267        },
65268        calendar: {
65269            sameDay: function () {
65270                return (
65271                    '[Oggi a' +
65272                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
65273                    ']LT'
65274                );
65275            },
65276            nextDay: function () {
65277                return (
65278                    '[Domani a' +
65279                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
65280                    ']LT'
65281                );
65282            },
65283            nextWeek: function () {
65284                return (
65285                    'dddd [a' +
65286                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
65287                    ']LT'
65288                );
65289            },
65290            lastDay: function () {
65291                return (
65292                    '[Ieri a' +
65293                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
65294                    ']LT'
65295                );
65296            },
65297            lastWeek: function () {
65298                switch (this.day()) {
65299                    case 0:
65300                        return (
65301                            '[La scorsa] dddd [a' +
65302                            (this.hours() > 1
65303                                ? 'lle '
65304                                : this.hours() === 0
65305                                  ? ' '
65306                                  : "ll'") +
65307                            ']LT'
65308                        );
65309                    default:
65310                        return (
65311                            '[Lo scorso] dddd [a' +
65312                            (this.hours() > 1
65313                                ? 'lle '
65314                                : this.hours() === 0
65315                                  ? ' '
65316                                  : "ll'") +
65317                            ']LT'
65318                        );
65319                }
65320            },
65321            sameElse: 'L',
65322        },
65323        relativeTime: {
65324            future: 'tra %s',
65325            past: '%s fa',
65326            s: 'alcuni secondi',
65327            ss: '%d secondi',
65328            m: 'un minuto',
65329            mm: '%d minuti',
65330            h: "un'ora",
65331            hh: '%d ore',
65332            d: 'un giorno',
65333            dd: '%d giorni',
65334            w: 'una settimana',
65335            ww: '%d settimane',
65336            M: 'un mese',
65337            MM: '%d mesi',
65338            y: 'un anno',
65339            yy: '%d anni',
65340        },
65341        dayOfMonthOrdinalParse: /\d{1,2}º/,
65342        ordinal: '%dº',
65343        week: {
65344            dow: 1, // Monday is the first day of the week.
65345            doy: 4, // The week that contains Jan 4th is the first week of the year.
65346        },
65347    });
65348
65349    return it;
65350
65351})));
65352
65353
65354/***/ }),
65355
vendor: 5,012 bytes, lines 65356-65522
65356/***/ "./node_modules/moment/locale/ja.js":
65357/*!******************************************!*\
65358  !*** ./node_modules/moment/locale/ja.js ***!
65359  \******************************************/
65360/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
65361
65362//! moment.js locale configuration
65363//! locale : Japanese [ja]
65364//! author : LI Long : https://github.com/baryon
65365
65366;(function (global, factory) {
65367    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
65368   0
65369}(this, (function (moment) { 'use strict';
65370
65371    //! moment.js locale configuration
65372
65373    var ja = moment.defineLocale('ja', {
65374        eras: [
65375            {
65376                since: '2019-05-01',
65377                offset: 1,
65378                name: '令和',
65379                narrow: '㋿',
65380                abbr: 'R',
65381            },
65382            {
65383                since: '1989-01-08',
65384                until: '2019-04-30',
65385                offset: 1,
65386                name: '平成',
65387                narrow: '㍻',
65388                abbr: 'H',
65389            },
65390            {
65391                since: '1926-12-25',
65392                until: '1989-01-07',
65393                offset: 1,
65394                name: '昭和',
65395                narrow: '㍼',
65396                abbr: 'S',
65397            },
65398            {
65399                since: '1912-07-30',
65400                until: '1926-12-24',
65401                offset: 1,
65402                name: '大正',
65403                narrow: '㍽',
65404                abbr: 'T',
65405            },
65406            {
65407                since: '1873-01-01',
65408                until: '1912-07-29',
65409                offset: 6,
65410                name: '明治',
65411                narrow: '㍾',
65412                abbr: 'M',
65413            },
65414            {
65415                since: '0001-01-01',
65416                until: '1873-12-31',
65417                offset: 1,
65418                name: '西暦',
65419                narrow: 'AD',
65420                abbr: 'AD',
65421            },
65422            {
65423                since: '0000-12-31',
65424                until: -Infinity,
65425                offset: 1,
65426                name: '紀元前',
65427                narrow: 'BC',
65428                abbr: 'BC',
65429            },
65430        ],
65431        eraYearOrdinalRegex: /(元|\d+)年/,
65432        eraYearOrdinalParse: function (input, match) {
65433            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
65434        },
65435        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
65436        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
65437            '_'
65438        ),
65439        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
65440        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
65441        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
65442        longDateFormat: {
65443            LT: 'HH:mm',
65444            LTS: 'HH:mm:ss',
65445            L: 'YYYY/MM/DD',
65446            LL: 'YYYY年M月D日',
65447            LLL: 'YYYY年M月D日 HH:mm',
65448            LLLL: 'YYYY年M月D日 dddd HH:mm',
65449            l: 'YYYY/MM/DD',
65450            ll: 'YYYY年M月D日',
65451            lll: 'YYYY年M月D日 HH:mm',
65452            llll: 'YYYY年M月D日(ddd) HH:mm',
65453        },
65454        meridiemParse: /午前|午後/i,
65455        isPM: function (input) {
65456            return input === '午後';
65457        },
65458        meridiem: function (hour, minute, isLower) {
65459            if (hour < 12) {
65460                return '午前';
65461            } else {
65462                return '午後';
65463            }
65464        },
65465        calendar: {
65466            sameDay: '[今日] LT',
65467            nextDay: '[明日] LT',
65468            nextWeek: function (now) {
65469                if (now.week() !== this.week()) {
65470                    return '[来週]dddd LT';
65471                } else {
65472                    return 'dddd LT';
65473                }
65474            },
65475            lastDay: '[昨日] LT',
65476            lastWeek: function (now) {
65477                if (this.week() !== now.week()) {
65478                    return '[先週]dddd LT';
65479                } else {
65480                    return 'dddd LT';
65481                }
65482            },
65483            sameElse: 'L',
65484        },
65485        dayOfMonthOrdinalParse: /\d{1,2}日/,
65486        ordinal: function (number, period) {
65487            switch (period) {
65488                case 'y':
65489                    return number === 1 ? '元年' : number + '年';
65490                case 'd':
65491                case 'D':
65492                case 'DDD':
65493                    return number + '日';
65494                default:
65495                    return number;
65496            }
65497        },
65498        relativeTime: {
65499            future: '%s後',
65500            past: '%s前',
65501            s: '数秒',
65502            ss: '%d秒',
65503            m: '1分',
65504            mm: '%d分',
65505            h: '1時間',
65506            hh: '%d時間',
65507            d: '1日',
65508            dd: '%d日',
65509            M: '1ヶ月',
65510            MM: '%dヶ月',
65511            y: '1å¹´',
65512            yy: '%då¹´',
65513        },
65514    });
65515
65516    return ja;
65517
65518})));
65519
65520
65521/***/ }),
65522
vendor: 3,149 bytes, lines 65523-65617
65523/***/ "./node_modules/moment/locale/jv.js":
65524/*!******************************************!*\
65525  !*** ./node_modules/moment/locale/jv.js ***!
65526  \******************************************/
65527/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
65528
65529//! moment.js locale configuration
65530//! locale : Javanese [jv]
65531//! author : Rony Lantip : https://github.com/lantip
65532//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
65533
65534;(function (global, factory) {
65535    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
65536   0
65537}(this, (function (moment) { 'use strict';
65538
65539    //! moment.js locale configuration
65540
65541    var jv = moment.defineLocale('jv', {
65542        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
65543            '_'
65544        ),
65545        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
65546        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
65547        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
65548        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
65549        longDateFormat: {
65550            LT: 'HH.mm',
65551            LTS: 'HH.mm.ss',
65552            L: 'DD/MM/YYYY',
65553            LL: 'D MMMM YYYY',
65554            LLL: 'D MMMM YYYY [pukul] HH.mm',
65555            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
65556        },
65557        meridiemParse: /enjing|siyang|sonten|ndalu/,
65558        meridiemHour: function (hour, meridiem) {
65559            if (hour === 12) {
65560                hour = 0;
65561            }
65562            if (meridiem === 'enjing') {
65563                return hour;
65564            } else if (meridiem === 'siyang') {
65565                return hour >= 11 ? hour : hour + 12;
65566            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
65567                return hour + 12;
65568            }
65569        },
65570        meridiem: function (hours, minutes, isLower) {
65571            if (hours < 11) {
65572                return 'enjing';
65573            } else if (hours < 15) {
65574                return 'siyang';
65575            } else if (hours < 19) {
65576                return 'sonten';
65577            } else {
65578                return 'ndalu';
65579            }
65580        },
65581        calendar: {
65582            sameDay: '[Dinten puniko pukul] LT',
65583            nextDay: '[Mbenjang pukul] LT',
65584            nextWeek: 'dddd [pukul] LT',
65585            lastDay: '[Kala wingi pukul] LT',
65586            lastWeek: 'dddd [kepengker pukul] LT',
65587            sameElse: 'L',
65588        },
65589        relativeTime: {
65590            future: 'wonten ing %s',
65591            past: '%s ingkang kepengker',
65592            s: 'sawetawis detik',
65593            ss: '%d detik',
65594            m: 'setunggal menit',
65595            mm: '%d menit',
65596            h: 'setunggal jam',
65597            hh: '%d jam',
65598            d: 'sedinten',
65599            dd: '%d dinten',
65600            M: 'sewulan',
65601            MM: '%d wulan',
65602            y: 'setaun',
65603            yy: '%d taun',
65604        },
65605        week: {
65606            dow: 1, // Monday is the first day of the week.
65607            doy: 7, // The week that contains Jan 7th is the first week of the year.
65608        },
65609    });
65610
65611    return jv;
65612
65613})));
65614
65615
65616/***/ }),
65617
vendor: 4,337 bytes, lines 65618-65728
65618/***/ "./node_modules/moment/locale/ka.js":
65619/*!******************************************!*\
65620  !*** ./node_modules/moment/locale/ka.js ***!
65621  \******************************************/
65622/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
65623
65624//! moment.js locale configuration
65625//! locale : Georgian [ka]
65626//! author : Irakli Janiashvili : https://github.com/IrakliJani
65627
65628;(function (global, factory) {
65629    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
65630   0
65631}(this, (function (moment) { 'use strict';
65632
65633    //! moment.js locale configuration
65634
65635    var ka = moment.defineLocale('ka', {
65636        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
65637            '_'
65638        ),
65639        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
65640        weekdays: {
65641            standalone:
65642                'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(
65643                    '_'
65644                ),
65645            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
65646                '_'
65647            ),
65648            isFormat: /(წინა|შემდეგ)/,
65649        },
65650        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
65651        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
65652        longDateFormat: {
65653            LT: 'HH:mm',
65654            LTS: 'HH:mm:ss',
65655            L: 'DD/MM/YYYY',
65656            LL: 'D MMMM YYYY',
65657            LLL: 'D MMMM YYYY HH:mm',
65658            LLLL: 'dddd, D MMMM YYYY HH:mm',
65659        },
65660        calendar: {
65661            sameDay: '[დღეს] LT[-ზე]',
65662            nextDay: '[ხვალ] LT[-ზე]',
65663            lastDay: '[გუშინ] LT[-ზე]',
65664            nextWeek: '[შემდეგ] dddd LT[-ზე]',
65665            lastWeek: '[წინა] dddd LT-ზე',
65666            sameElse: 'L',
65667        },
65668        relativeTime: {
65669            future: function (s) {
65670                return s.replace(
65671                    /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,
65672                    function ($0, $1, $2) {
65673                        return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
65674                    }
65675                );
65676            },
65677            past: function (s) {
65678                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
65679                    return s.replace(/(ი|ე)$/, 'ის წინ');
65680                }
65681                if (/წელი/.test(s)) {
65682                    return s.replace(/წელი$/, 'წლის წინ');
65683                }
65684                return s;
65685            },
65686            s: 'რამდენიმე წამი',
65687            ss: '%d წამი',
65688            m: 'წუთი',
65689            mm: '%d წუთი',
65690            h: 'საათი',
65691            hh: '%d საათი',
65692            d: 'დღე',
65693            dd: '%d დღე',
65694            M: 'თვე',
65695            MM: '%d თვე',
65696            y: 'წელი',
65697            yy: '%d წელი',
65698        },
65699        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
65700        ordinal: function (number) {
65701            if (number === 0) {
65702                return number;
65703            }
65704            if (number === 1) {
65705                return number + '-ლი';
65706            }
65707            if (
65708                number < 20 ||
65709                (number <= 100 && number % 20 === 0) ||
65710                number % 100 === 0
65711            ) {
65712                return 'მე-' + number;
65713            }
65714            return number + '-ე';
65715        },
65716        week: {
65717            dow: 1,
65718            doy: 7,
65719        },
65720    });
65721
65722    return ka;
65723
65724})));
65725
65726
65727/***/ }),
65728
vendor: 3,284 bytes, lines 65729-65829
65729/***/ "./node_modules/moment/locale/kk.js":
65730/*!******************************************!*\
65731  !*** ./node_modules/moment/locale/kk.js ***!
65732  \******************************************/
65733/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
65734
65735//! moment.js locale configuration
65736//! locale : Kazakh [kk]
65737//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
65738
65739;(function (global, factory) {
65740    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
65741   0
65742}(this, (function (moment) { 'use strict';
65743
65744    //! moment.js locale configuration
65745
65746    var suffixes = {
65747        0: '-ші',
65748        1: '-ші',
65749        2: '-ші',
65750        3: '-ші',
65751        4: '-ші',
65752        5: '-ші',
65753        6: '-шы',
65754        7: '-ші',
65755        8: '-ші',
65756        9: '-шы',
65757        10: '-шы',
65758        20: '-шы',
65759        30: '-шы',
65760        40: '-шы',
65761        50: '-ші',
65762        60: '-шы',
65763        70: '-ші',
65764        80: '-ші',
65765        90: '-шы',
65766        100: '-ші',
65767    };
65768
65769    var kk = moment.defineLocale('kk', {
65770        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
65771            '_'
65772        ),
65773        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
65774        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
65775            '_'
65776        ),
65777        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
65778        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
65779        longDateFormat: {
65780            LT: 'HH:mm',
65781            LTS: 'HH:mm:ss',
65782            L: 'DD.MM.YYYY',
65783            LL: 'D MMMM YYYY',
65784            LLL: 'D MMMM YYYY HH:mm',
65785            LLLL: 'dddd, D MMMM YYYY HH:mm',
65786        },
65787        calendar: {
65788            sameDay: '[Бүгін сағат] LT',
65789            nextDay: '[Ертең сағат] LT',
65790            nextWeek: 'dddd [сағат] LT',
65791            lastDay: '[Кеше сағат] LT',
65792            lastWeek: '[Өткен аптаның] dddd [сағат] LT',
65793            sameElse: 'L',
65794        },
65795        relativeTime: {
65796            future: '%s ішінде',
65797            past: '%s бұрын',
65798            s: 'бірнеше секунд',
65799            ss: '%d секунд',
65800            m: 'бір минут',
65801            mm: '%d минут',
65802            h: 'бір сағат',
65803            hh: '%d сағат',
65804            d: 'бір күн',
65805            dd: '%d күн',
65806            M: 'бір ай',
65807            MM: '%d ай',
65808            y: 'бір жыл',
65809            yy: '%d жыл',
65810        },
65811        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
65812        ordinal: function (number) {
65813            var a = number % 10,
65814                b = number >= 100 ? 100 : null;
65815            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
65816        },
65817        week: {
65818            dow: 1, // Monday is the first day of the week.
65819            doy: 7, // The week that contains Jan 7th is the first week of the year.
65820        },
65821    });
65822
65823    return kk;
65824
65825})));
65826
65827
65828/***/ }),
65829
vendor: 4,235 bytes, lines 65830-65951
65830/***/ "./node_modules/moment/locale/km.js":
65831/*!******************************************!*\
65832  !*** ./node_modules/moment/locale/km.js ***!
65833  \******************************************/
65834/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
65835
65836//! moment.js locale configuration
65837//! locale : Cambodian [km]
65838//! author : Kruy Vanna : https://github.com/kruyvanna
65839
65840;(function (global, factory) {
65841    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
65842   0
65843}(this, (function (moment) { 'use strict';
65844
65845    //! moment.js locale configuration
65846
65847    var symbolMap = {
65848            1: '១',
65849            2: '២',
65850            3: '៣',
65851            4: '៤',
65852            5: '៥',
65853            6: '៦',
65854            7: '៧',
65855            8: '៨',
65856            9: '៩',
65857            0: '០',
65858        },
65859        numberMap = {
65860            '១': '1',
65861            '២': '2',
65862            '៣': '3',
65863            '៤': '4',
65864            '៥': '5',
65865            '៦': '6',
65866            '៧': '7',
65867            '៨': '8',
65868            '៩': '9',
65869            '០': '0',
65870        };
65871
65872    var km = moment.defineLocale('km', {
65873        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
65874            '_'
65875        ),
65876        monthsShort:
65877            'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
65878                '_'
65879            ),
65880        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
65881        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
65882        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
65883        weekdaysParseExact: true,
65884        longDateFormat: {
65885            LT: 'HH:mm',
65886            LTS: 'HH:mm:ss',
65887            L: 'DD/MM/YYYY',
65888            LL: 'D MMMM YYYY',
65889            LLL: 'D MMMM YYYY HH:mm',
65890            LLLL: 'dddd, D MMMM YYYY HH:mm',
65891        },
65892        meridiemParse: /ព្រឹក|ល្ងាច/,
65893        isPM: function (input) {
65894            return input === 'ល្ងាច';
65895        },
65896        meridiem: function (hour, minute, isLower) {
65897            if (hour < 12) {
65898                return 'ព្រឹក';
65899            } else {
65900                return 'ល្ងាច';
65901            }
65902        },
65903        calendar: {
65904            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
65905            nextDay: '[ស្អែក ម៉ោង] LT',
65906            nextWeek: 'dddd [ម៉ោង] LT',
65907            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
65908            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
65909            sameElse: 'L',
65910        },
65911        relativeTime: {
65912            future: '%sទៀត',
65913            past: '%sមុន',
65914            s: 'ប៉ុន្មានវិនាទី',
65915            ss: '%d វិនាទី',
65916            m: 'មួយនាទី',
65917            mm: '%d នាទី',
65918            h: 'មួយម៉ោង',
65919            hh: '%d ម៉ោង',
65920            d: 'មួយថ្ងៃ',
65921            dd: '%d ថ្ងៃ',
65922            M: 'មួយខែ',
65923            MM: '%d ខែ',
65924            y: 'មួយឆ្នាំ',
65925            yy: '%d ឆ្នាំ',
65926        },
65927        dayOfMonthOrdinalParse: /ទី\d{1,2}/,
65928        ordinal: 'ទី%d',
65929        preparse: function (string) {
65930            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
65931                return numberMap[match];
65932            });
65933        },
65934        postformat: function (string) {
65935            return string.replace(/\d/g, function (match) {
65936                return symbolMap[match];
65937            });
65938        },
65939        week: {
65940            dow: 1, // Monday is the first day of the week.
65941            doy: 4, // The week that contains Jan 4th is the first week of the year.
65942        },
65943    });
65944
65945    return km;
65946
65947})));
65948
65949
65950/***/ }),
65951
vendor: 5,209 bytes, lines 65952-66094
65952/***/ "./node_modules/moment/locale/kn.js":
65953/*!******************************************!*\
65954  !*** ./node_modules/moment/locale/kn.js ***!
65955  \******************************************/
65956/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
65957
65958//! moment.js locale configuration
65959//! locale : Kannada [kn]
65960//! author : Rajeev Naik : https://github.com/rajeevnaikte
65961
65962;(function (global, factory) {
65963    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
65964   0
65965}(this, (function (moment) { 'use strict';
65966
65967    //! moment.js locale configuration
65968
65969    var symbolMap = {
65970            1: 'à³§',
65971            2: '೨',
65972            3: '೩',
65973            4: '೪',
65974            5: '೫',
65975            6: '೬',
65976            7: 'à³­',
65977            8: 'à³®',
65978            9: '೯',
65979            0: '೦',
65980        },
65981        numberMap = {
65982            'à³§': '1',
65983            '೨': '2',
65984            '೩': '3',
65985            '೪': '4',
65986            '೫': '5',
65987            '೬': '6',
65988            'à³­': '7',
65989            'à³®': '8',
65990            '೯': '9',
65991            '೦': '0',
65992        };
65993
65994    var kn = moment.defineLocale('kn', {
65995        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
65996            '_'
65997        ),
65998        monthsShort:
65999            'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
66000                '_'
66001            ),
66002        monthsParseExact: true,
66003        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
66004            '_'
66005        ),
66006        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
66007        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
66008        longDateFormat: {
66009            LT: 'A h:mm',
66010            LTS: 'A h:mm:ss',
66011            L: 'DD/MM/YYYY',
66012            LL: 'D MMMM YYYY',
66013            LLL: 'D MMMM YYYY, A h:mm',
66014            LLLL: 'dddd, D MMMM YYYY, A h:mm',
66015        },
66016        calendar: {
66017            sameDay: '[ಇಂದು] LT',
66018            nextDay: '[ನಾಳೆ] LT',
66019            nextWeek: 'dddd, LT',
66020            lastDay: '[ನಿನ್ನೆ] LT',
66021            lastWeek: '[ಕೊನೆಯ] dddd, LT',
66022            sameElse: 'L',
66023        },
66024        relativeTime: {
66025            future: '%s ನಂತರ',
66026            past: '%s ಹಿಂದೆ',
66027            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
66028            ss: '%d ಸೆಕೆಂಡುಗಳು',
66029            m: 'ಒಂದು ನಿಮಿಷ',
66030            mm: '%d ನಿಮಿಷ',
66031            h: 'ಒಂದು ಗಂಟೆ',
66032            hh: '%d ಗಂಟೆ',
66033            d: 'ಒಂದು ದಿನ',
66034            dd: '%d ದಿನ',
66035            M: 'ಒಂದು ತಿಂಗಳು',
66036            MM: '%d ತಿಂಗಳು',
66037            y: 'ಒಂದು ವರ್ಷ',
66038            yy: '%d ವರ್ಷ',
66039        },
66040        preparse: function (string) {
66041            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
66042                return numberMap[match];
66043            });
66044        },
66045        postformat: function (string) {
66046            return string.replace(/\d/g, function (match) {
66047                return symbolMap[match];
66048            });
66049        },
66050        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
66051        meridiemHour: function (hour, meridiem) {
66052            if (hour === 12) {
66053                hour = 0;
66054            }
66055            if (meridiem === 'ರಾತ್ರಿ') {
66056                return hour < 4 ? hour : hour + 12;
66057            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
66058                return hour;
66059            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
66060                return hour >= 10 ? hour : hour + 12;
66061            } else if (meridiem === 'ಸಂಜೆ') {
66062                return hour + 12;
66063            }
66064        },
66065        meridiem: function (hour, minute, isLower) {
66066            if (hour < 4) {
66067                return 'ರಾತ್ರಿ';
66068            } else if (hour < 10) {
66069                return 'ಬೆಳಿಗ್ಗೆ';
66070            } else if (hour < 17) {
66071                return 'ಮಧ್ಯಾಹ್ನ';
66072            } else if (hour < 20) {
66073                return 'ಸಂಜೆ';
66074            } else {
66075                return 'ರಾತ್ರಿ';
66076            }
66077        },
66078        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
66079        ordinal: function (number) {
66080            return number + 'ನೇ';
66081        },
66082        week: {
66083            dow: 0, // Sunday is the first day of the week.
66084            doy: 6, // The week that contains Jan 6th is the first week of the year.
66085        },
66086    });
66087
66088    return kn;
66089
66090})));
66091
66092
66093/***/ }),
66094
vendor: 2,984 bytes, lines 66095-66188
66095/***/ "./node_modules/moment/locale/ko.js":
66096/*!******************************************!*\
66097  !*** ./node_modules/moment/locale/ko.js ***!
66098  \******************************************/
66099/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
66100
66101//! moment.js locale configuration
66102//! locale : Korean [ko]
66103//! author : Kyungwook, Park : https://github.com/kyungw00k
66104//! author : Jeeeyul Lee <[email protected]>
66105
66106;(function (global, factory) {
66107    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
66108   0
66109}(this, (function (moment) { 'use strict';
66110
66111    //! moment.js locale configuration
66112
66113    var ko = moment.defineLocale('ko', {
66114        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
66115        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
66116            '_'
66117        ),
66118        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
66119        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
66120        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
66121        longDateFormat: {
66122            LT: 'A h:mm',
66123            LTS: 'A h:mm:ss',
66124            L: 'YYYY.MM.DD.',
66125            LL: 'YYYY년 MMMM D일',
66126            LLL: 'YYYY년 MMMM D일 A h:mm',
66127            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
66128            l: 'YYYY.MM.DD.',
66129            ll: 'YYYY년 MMMM D일',
66130            lll: 'YYYY년 MMMM D일 A h:mm',
66131            llll: 'YYYY년 MMMM D일 dddd A h:mm',
66132        },
66133        calendar: {
66134            sameDay: '오늘 LT',
66135            nextDay: '내일 LT',
66136            nextWeek: 'dddd LT',
66137            lastDay: '어제 LT',
66138            lastWeek: '지난주 dddd LT',
66139            sameElse: 'L',
66140        },
66141        relativeTime: {
66142            future: '%s 후',
66143            past: '%s 전',
66144            s: '몇 초',
66145            ss: '%d초',
66146            m: '1분',
66147            mm: '%d분',
66148            h: '한 시간',
66149            hh: '%d시간',
66150            d: '하루',
66151            dd: '%d일',
66152            M: '한 달',
66153            MM: '%d달',
66154            y: '일 년',
66155            yy: '%d년',
66156        },
66157        dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
66158        ordinal: function (number, period) {
66159            switch (period) {
66160                case 'd':
66161                case 'D':
66162                case 'DDD':
66163                    return number + '일';
66164                case 'M':
66165                    return number + '월';
66166                case 'w':
66167                case 'W':
66168                    return number + '주';
66169                default:
66170                    return number;
66171            }
66172        },
66173        meridiemParse: /오전|오후/,
66174        isPM: function (token) {
66175            return token === '오후';
66176        },
66177        meridiem: function (hour, minute, isUpper) {
66178            return hour < 12 ? '오전' : '오후';
66179        },
66180    });
66181
66182    return ko;
66183
66184})));
66185
66186
66187/***/ }),
66188
vendor: 5,051 bytes, lines 66189-66321
66189/***/ "./node_modules/moment/locale/ku-kmr.js":
66190/*!**********************************************!*\
66191  !*** ./node_modules/moment/locale/ku-kmr.js ***!
66192  \**********************************************/
66193/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
66194
66195//! moment.js locale configuration
66196//! locale : Northern Kurdish [ku-kmr]
66197//! authors : Mazlum Özdogan : https://github.com/mergehez
66198
66199;(function (global, factory) {
66200    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
66201   0
66202}(this, (function (moment) { 'use strict';
66203
66204    //! moment.js locale configuration
66205
66206    function processRelativeTime(num, withoutSuffix, key, isFuture) {
66207        var format = {
66208            s: ['çend sanîye', 'çend sanîyeyan'],
66209            ss: [num + ' sanîye', num + ' sanîyeyan'],
66210            m: ['deqîqeyek', 'deqîqeyekê'],
66211            mm: [num + ' deqîqe', num + ' deqîqeyan'],
66212            h: ['saetek', 'saetekê'],
66213            hh: [num + ' saet', num + ' saetan'],
66214            d: ['rojek', 'rojekê'],
66215            dd: [num + ' roj', num + ' rojan'],
66216            w: ['hefteyek', 'hefteyekê'],
66217            ww: [num + ' hefte', num + ' hefteyan'],
66218            M: ['mehek', 'mehekê'],
66219            MM: [num + ' meh', num + ' mehan'],
66220            y: ['salek', 'salekê'],
66221            yy: [num + ' sal', num + ' salan'],
66222        };
66223        return withoutSuffix ? format[key][0] : format[key][1];
66224    }
66225    // function obliqueNumSuffix(num) {
66226    //     if(num.includes(':'))
66227    //         num = parseInt(num.split(':')[0]);
66228    //     else
66229    //         num = parseInt(num);
66230    //     return num == 0 || num % 10 == 1 ? 'ê'
66231    //                         : (num > 10 && num % 10 == 0 ? 'î' : 'an');
66232    // }
66233    function ezafeNumSuffix(num) {
66234        num = '' + num;
66235        var l = num.substring(num.length - 1),
66236            ll = num.length > 1 ? num.substring(num.length - 2) : '';
66237        if (
66238            !(ll == 12 || ll == 13) &&
66239            (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')
66240        )
66241            return 'yê';
66242        return 'ê';
66243    }
66244
66245    var kuKmr = moment.defineLocale('ku-kmr', {
66246        // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)
66247        // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'
66248        // But the names below are more well known and handy
66249        months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(
66250            '_'
66251        ),
66252        monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),
66253        monthsParseExact: true,
66254        weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),
66255        weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),
66256        weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),
66257        meridiem: function (hours, minutes, isLower) {
66258            if (hours < 12) {
66259                return isLower ? 'bn' : 'BN';
66260            } else {
66261                return isLower ? 'pn' : 'PN';
66262            }
66263        },
66264        meridiemParse: /bn|BN|pn|PN/,
66265        longDateFormat: {
66266            LT: 'HH:mm',
66267            LTS: 'HH:mm:ss',
66268            L: 'DD.MM.YYYY',
66269            LL: 'Do MMMM[a] YYYY[an]',
66270            LLL: 'Do MMMM[a] YYYY[an] HH:mm',
66271            LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',
66272            ll: 'Do MMM[.] YYYY[an]',
66273            lll: 'Do MMM[.] YYYY[an] HH:mm',
66274            llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',
66275        },
66276        calendar: {
66277            sameDay: '[Îro di saet] LT [de]',
66278            nextDay: '[Sibê di saet] LT [de]',
66279            nextWeek: 'dddd [di saet] LT [de]',
66280            lastDay: '[Duh di saet] LT [de]',
66281            lastWeek: 'dddd[a borî di saet] LT [de]',
66282            sameElse: 'L',
66283        },
66284        relativeTime: {
66285            future: 'di %s de',
66286            past: 'berî %s',
66287            s: processRelativeTime,
66288            ss: processRelativeTime,
66289            m: processRelativeTime,
66290            mm: processRelativeTime,
66291            h: processRelativeTime,
66292            hh: processRelativeTime,
66293            d: processRelativeTime,
66294            dd: processRelativeTime,
66295            w: processRelativeTime,
66296            ww: processRelativeTime,
66297            M: processRelativeTime,
66298            MM: processRelativeTime,
66299            y: processRelativeTime,
66300            yy: processRelativeTime,
66301        },
66302        dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/,
66303        ordinal: function (num, period) {
66304            var p = period.toLowerCase();
66305            if (p.includes('w') || p.includes('m')) return num + '.';
66306
66307            return num + ezafeNumSuffix(num);
66308        },
66309        week: {
66310            dow: 1, // Monday is the first day of the week.
66311            doy: 4, // The week that contains Jan 4th is the first week of the year.
66312        },
66313    });
66314
66315    return kuKmr;
66316
66317})));
66318
66319
66320/***/ }),
66321
vendor: 4,263 bytes, lines 66322-66458
66322/***/ "./node_modules/moment/locale/ku.js":
66323/*!******************************************!*\
66324  !*** ./node_modules/moment/locale/ku.js ***!
66325  \******************************************/
66326/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
66327
66328//! moment.js locale configuration
66329//! locale : Kurdish [ku]
66330//! author : Shahram Mebashar : https://github.com/ShahramMebashar
66331
66332;(function (global, factory) {
66333    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
66334   0
66335}(this, (function (moment) { 'use strict';
66336
66337    //! moment.js locale configuration
66338
66339    var symbolMap = {
66340            1: 'Ù¡',
66341            2: 'Ù¢',
66342            3: 'Ù£',
66343            4: 'Ù¤',
66344            5: 'Ù¥',
66345            6: 'Ù¦',
66346            7: 'Ù§',
66347            8: 'Ù¨',
66348            9: 'Ù©',
66349            0: 'Ù ',
66350        },
66351        numberMap = {
66352            'Ù¡': '1',
66353            'Ù¢': '2',
66354            'Ù£': '3',
66355            'Ù¤': '4',
66356            'Ù¥': '5',
66357            'Ù¦': '6',
66358            'Ù§': '7',
66359            'Ù¨': '8',
66360            'Ù©': '9',
66361            'Ù ': '0',
66362        },
66363        months = [
66364            'کانونی دووەم',
66365            'شوبات',
66366            'ئازار',
66367            'نیسان',
66368            'ئایار',
66369            'حوزەیران',
66370            'تەمموز',
66371            'ئاب',
66372            'ئەیلوول',
66373            'تشرینی یەكەم',
66374            'تشرینی دووەم',
66375            'كانونی یەکەم',
66376        ];
66377
66378    var ku = moment.defineLocale('ku', {
66379        months: months,
66380        monthsShort: months,
66381        weekdays:
66382            'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
66383                '_'
66384            ),
66385        weekdaysShort:
66386            'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),
66387        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
66388        weekdaysParseExact: true,
66389        longDateFormat: {
66390            LT: 'HH:mm',
66391            LTS: 'HH:mm:ss',
66392            L: 'DD/MM/YYYY',
66393            LL: 'D MMMM YYYY',
66394            LLL: 'D MMMM YYYY HH:mm',
66395            LLLL: 'dddd, D MMMM YYYY HH:mm',
66396        },
66397        meridiemParse: /ئێواره‌|به‌یانی/,
66398        isPM: function (input) {
66399            return /ئێواره‌/.test(input);
66400        },
66401        meridiem: function (hour, minute, isLower) {
66402            if (hour < 12) {
66403                return 'به‌یانی';
66404            } else {
66405                return 'ئێواره‌';
66406            }
66407        },
66408        calendar: {
66409            sameDay: '[ئه‌مرۆ كاتژمێر] LT',
66410            nextDay: '[به‌یانی كاتژمێر] LT',
66411            nextWeek: 'dddd [كاتژمێر] LT',
66412            lastDay: '[دوێنێ كاتژمێر] LT',
66413            lastWeek: 'dddd [كاتژمێر] LT',
66414            sameElse: 'L',
66415        },
66416        relativeTime: {
66417            future: 'له‌ %s',
66418            past: '%s',
66419            s: 'چه‌ند چركه‌یه‌ك',
66420            ss: 'چركه‌ %d',
66421            m: 'یه‌ك خوله‌ك',
66422            mm: '%d خوله‌ك',
66423            h: 'یه‌ك كاتژمێر',
66424            hh: '%d كاتژمێر',
66425            d: 'یه‌ك ڕۆژ',
66426            dd: '%d ڕۆژ',
66427            M: 'یه‌ك مانگ',
66428            MM: '%d مانگ',
66429            y: 'یه‌ك ساڵ',
66430            yy: '%d ساڵ',
66431        },
66432        preparse: function (string) {
66433            return string
66434                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
66435                    return numberMap[match];
66436                })
66437                .replace(/،/g, ',');
66438        },
66439        postformat: function (string) {
66440            return string
66441                .replace(/\d/g, function (match) {
66442                    return symbolMap[match];
66443                })
66444                .replace(/,/g, '،');
66445        },
66446        week: {
66447            dow: 6, // Saturday is the first day of the week.
66448            doy: 12, // The week that contains Jan 12th is the first week of the year.
66449        },
66450    });
66451
66452    return ku;
66453
66454})));
66455
66456
66457/***/ }),
66458
vendor: 3,318 bytes, lines 66459-66561
66459/***/ "./node_modules/moment/locale/ky.js":
66460/*!******************************************!*\
66461  !*** ./node_modules/moment/locale/ky.js ***!
66462  \******************************************/
66463/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
66464
66465//! moment.js locale configuration
66466//! locale : Kyrgyz [ky]
66467//! author : Chyngyz Arystan uulu : https://github.com/chyngyz
66468
66469;(function (global, factory) {
66470    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
66471   0
66472}(this, (function (moment) { 'use strict';
66473
66474    //! moment.js locale configuration
66475
66476    var suffixes = {
66477        0: '-чү',
66478        1: '-чи',
66479        2: '-чи',
66480        3: '-чү',
66481        4: '-чү',
66482        5: '-чи',
66483        6: '-чы',
66484        7: '-чи',
66485        8: '-чи',
66486        9: '-чу',
66487        10: '-чу',
66488        20: '-чы',
66489        30: '-чу',
66490        40: '-чы',
66491        50: '-чү',
66492        60: '-чы',
66493        70: '-чи',
66494        80: '-чи',
66495        90: '-чу',
66496        100: '-чү',
66497    };
66498
66499    var ky = moment.defineLocale('ky', {
66500        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
66501            '_'
66502        ),
66503        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
66504            '_'
66505        ),
66506        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
66507            '_'
66508        ),
66509        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
66510        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
66511        longDateFormat: {
66512            LT: 'HH:mm',
66513            LTS: 'HH:mm:ss',
66514            L: 'DD.MM.YYYY',
66515            LL: 'D MMMM YYYY',
66516            LLL: 'D MMMM YYYY HH:mm',
66517            LLLL: 'dddd, D MMMM YYYY HH:mm',
66518        },
66519        calendar: {
66520            sameDay: '[Бүгүн саат] LT',
66521            nextDay: '[Эртең саат] LT',
66522            nextWeek: 'dddd [саат] LT',
66523            lastDay: '[Кечээ саат] LT',
66524            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
66525            sameElse: 'L',
66526        },
66527        relativeTime: {
66528            future: '%s ичинде',
66529            past: '%s мурун',
66530            s: 'бирнече секунд',
66531            ss: '%d секунд',
66532            m: 'бир мүнөт',
66533            mm: '%d мүнөт',
66534            h: 'бир саат',
66535            hh: '%d саат',
66536            d: 'бир күн',
66537            dd: '%d күн',
66538            M: 'бир ай',
66539            MM: '%d ай',
66540            y: 'бир жыл',
66541            yy: '%d жыл',
66542        },
66543        dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
66544        ordinal: function (number) {
66545            var a = number % 10,
66546                b = number >= 100 ? 100 : null;
66547            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
66548        },
66549        week: {
66550            dow: 1, // Monday is the first day of the week.
66551            doy: 7, // The week that contains Jan 7th is the first week of the year.
66552        },
66553    });
66554
66555    return ky;
66556
66557})));
66558
66559
66560/***/ }),
66561
vendor: 5,274 bytes, lines 66562-66717
66562/***/ "./node_modules/moment/locale/lb.js":
66563/*!******************************************!*\
66564  !*** ./node_modules/moment/locale/lb.js ***!
66565  \******************************************/
66566/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
66567
66568//! moment.js locale configuration
66569//! locale : Luxembourgish [lb]
66570//! author : mweimerskirch : https://github.com/mweimerskirch
66571//! author : David Raison : https://github.com/kwisatz
66572
66573;(function (global, factory) {
66574    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
66575   0
66576}(this, (function (moment) { 'use strict';
66577
66578    //! moment.js locale configuration
66579
66580    function processRelativeTime(number, withoutSuffix, key, isFuture) {
66581        var format = {
66582            m: ['eng Minutt', 'enger Minutt'],
66583            h: ['eng Stonn', 'enger Stonn'],
66584            d: ['een Dag', 'engem Dag'],
66585            M: ['ee Mount', 'engem Mount'],
66586            y: ['ee Joer', 'engem Joer'],
66587        };
66588        return withoutSuffix ? format[key][0] : format[key][1];
66589    }
66590    function processFutureTime(string) {
66591        var number = string.substr(0, string.indexOf(' '));
66592        if (eifelerRegelAppliesToNumber(number)) {
66593            return 'a ' + string;
66594        }
66595        return 'an ' + string;
66596    }
66597    function processPastTime(string) {
66598        var number = string.substr(0, string.indexOf(' '));
66599        if (eifelerRegelAppliesToNumber(number)) {
66600            return 'viru ' + string;
66601        }
66602        return 'virun ' + string;
66603    }
66604    /**
66605     * Returns true if the word before the given number loses the '-n' ending.
66606     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
66607     *
66608     * @param number {integer}
66609     * @returns {boolean}
66610     */
66611    function eifelerRegelAppliesToNumber(number) {
66612        number = parseInt(number, 10);
66613        if (isNaN(number)) {
66614            return false;
66615        }
66616        if (number < 0) {
66617            // Negative Number --> always true
66618            return true;
66619        } else if (number < 10) {
66620            // Only 1 digit
66621            if (4 <= number && number <= 7) {
66622                return true;
66623            }
66624            return false;
66625        } else if (number < 100) {
66626            // 2 digits
66627            var lastDigit = number % 10,
66628                firstDigit = number / 10;
66629            if (lastDigit === 0) {
66630                return eifelerRegelAppliesToNumber(firstDigit);
66631            }
66632            return eifelerRegelAppliesToNumber(lastDigit);
66633        } else if (number < 10000) {
66634            // 3 or 4 digits --> recursively check first digit
66635            while (number >= 10) {
66636                number = number / 10;
66637            }
66638            return eifelerRegelAppliesToNumber(number);
66639        } else {
66640            // Anything larger than 4 digits: recursively check first n-3 digits
66641            number = number / 1000;
66642            return eifelerRegelAppliesToNumber(number);
66643        }
66644    }
66645
66646    var lb = moment.defineLocale('lb', {
66647        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
66648            '_'
66649        ),
66650        monthsShort:
66651            'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
66652                '_'
66653            ),
66654        monthsParseExact: true,
66655        weekdays:
66656            'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
66657                '_'
66658            ),
66659        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
66660        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
66661        weekdaysParseExact: true,
66662        longDateFormat: {
66663            LT: 'H:mm [Auer]',
66664            LTS: 'H:mm:ss [Auer]',
66665            L: 'DD.MM.YYYY',
66666            LL: 'D. MMMM YYYY',
66667            LLL: 'D. MMMM YYYY H:mm [Auer]',
66668            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
66669        },
66670        calendar: {
66671            sameDay: '[Haut um] LT',
66672            sameElse: 'L',
66673            nextDay: '[Muer um] LT',
66674            nextWeek: 'dddd [um] LT',
66675            lastDay: '[Gëschter um] LT',
66676            lastWeek: function () {
66677                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
66678                switch (this.day()) {
66679                    case 2:
66680                    case 4:
66681                        return '[Leschten] dddd [um] LT';
66682                    default:
66683                        return '[Leschte] dddd [um] LT';
66684                }
66685            },
66686        },
66687        relativeTime: {
66688            future: processFutureTime,
66689            past: processPastTime,
66690            s: 'e puer Sekonnen',
66691            ss: '%d Sekonnen',
66692            m: processRelativeTime,
66693            mm: '%d Minutten',
66694            h: processRelativeTime,
66695            hh: '%d Stonnen',
66696            d: processRelativeTime,
66697            dd: '%d Deeg',
66698            M: processRelativeTime,
66699            MM: '%d Méint',
66700            y: processRelativeTime,
66701            yy: '%d Joer',
66702        },
66703        dayOfMonthOrdinalParse: /\d{1,2}\./,
66704        ordinal: '%d.',
66705        week: {
66706            dow: 1, // Monday is the first day of the week.
66707            doy: 4, // The week that contains Jan 4th is the first week of the year.
66708        },
66709    });
66710
66711    return lb;
66712
66713})));
66714
66715
66716/***/ }),
66717
vendor: 3,314 bytes, lines 66718-66802
66718/***/ "./node_modules/moment/locale/lo.js":
66719/*!******************************************!*\
66720  !*** ./node_modules/moment/locale/lo.js ***!
66721  \******************************************/
66722/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
66723
66724//! moment.js locale configuration
66725//! locale : Lao [lo]
66726//! author : Ryan Hart : https://github.com/ryanhart2
66727
66728;(function (global, factory) {
66729    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
66730   0
66731}(this, (function (moment) { 'use strict';
66732
66733    //! moment.js locale configuration
66734
66735    var lo = moment.defineLocale('lo', {
66736        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
66737            '_'
66738        ),
66739        monthsShort:
66740            'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
66741                '_'
66742            ),
66743        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
66744        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
66745        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
66746        weekdaysParseExact: true,
66747        longDateFormat: {
66748            LT: 'HH:mm',
66749            LTS: 'HH:mm:ss',
66750            L: 'DD/MM/YYYY',
66751            LL: 'D MMMM YYYY',
66752            LLL: 'D MMMM YYYY HH:mm',
66753            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
66754        },
66755        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
66756        isPM: function (input) {
66757            return input === 'ຕອນແລງ';
66758        },
66759        meridiem: function (hour, minute, isLower) {
66760            if (hour < 12) {
66761                return 'ຕອນເຊົ້າ';
66762            } else {
66763                return 'ຕອນແລງ';
66764            }
66765        },
66766        calendar: {
66767            sameDay: '[ມື້ນີ້ເວລາ] LT',
66768            nextDay: '[ມື້ອື່ນເວລາ] LT',
66769            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
66770            lastDay: '[ມື້ວານນີ້ເວລາ] LT',
66771            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
66772            sameElse: 'L',
66773        },
66774        relativeTime: {
66775            future: 'ອີກ %s',
66776            past: '%sຜ່ານມາ',
66777            s: 'ບໍ່ເທົ່າໃດວິນາທີ',
66778            ss: '%d ວິນາທີ',
66779            m: '1 ນາທີ',
66780            mm: '%d ນາທີ',
66781            h: '1 ຊົ່ວໂມງ',
66782            hh: '%d ຊົ່ວໂມງ',
66783            d: '1 ມື້',
66784            dd: '%d ມື້',
66785            M: '1 ເດືອນ',
66786            MM: '%d ເດືອນ',
66787            y: '1 ປີ',
66788            yy: '%d ປີ',
66789        },
66790        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
66791        ordinal: function (number) {
66792            return 'ທີ່' + number;
66793        },
66794    });
66795
66796    return lo;
66797
66798})));
66799
66800
66801/***/ }),
66802
vendor: 4,974 bytes, lines 66803-66946
66803/***/ "./node_modules/moment/locale/lt.js":
66804/*!******************************************!*\
66805  !*** ./node_modules/moment/locale/lt.js ***!
66806  \******************************************/
66807/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
66808
66809//! moment.js locale configuration
66810//! locale : Lithuanian [lt]
66811//! author : Mindaugas Mozūras : https://github.com/mmozuras
66812
66813;(function (global, factory) {
66814    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
66815   0
66816}(this, (function (moment) { 'use strict';
66817
66818    //! moment.js locale configuration
66819
66820    var units = {
66821        ss: 'sekundė_sekundžių_sekundes',
66822        m: 'minutė_minutės_minutę',
66823        mm: 'minutės_minučių_minutes',
66824        h: 'valanda_valandos_valandą',
66825        hh: 'valandos_valandų_valandas',
66826        d: 'diena_dienos_dieną',
66827        dd: 'dienos_dienų_dienas',
66828        M: 'mėnuo_mėnesio_mėnesį',
66829        MM: 'mėnesiai_mėnesių_mėnesius',
66830        y: 'metai_metų_metus',
66831        yy: 'metai_metų_metus',
66832    };
66833    function translateSeconds(number, withoutSuffix, key, isFuture) {
66834        if (withoutSuffix) {
66835            return 'kelios sekundės';
66836        } else {
66837            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
66838        }
66839    }
66840    function translateSingular(number, withoutSuffix, key, isFuture) {
66841        return withoutSuffix
66842            ? forms(key)[0]
66843            : isFuture
66844              ? forms(key)[1]
66845              : forms(key)[2];
66846    }
66847    function special(number) {
66848        return number % 10 === 0 || (number > 10 && number < 20);
66849    }
66850    function forms(key) {
66851        return units[key].split('_');
66852    }
66853    function translate(number, withoutSuffix, key, isFuture) {
66854        var result = number + ' ';
66855        if (number === 1) {
66856            return (
66857                result + translateSingular(number, withoutSuffix, key[0], isFuture)
66858            );
66859        } else if (withoutSuffix) {
66860            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
66861        } else {
66862            if (isFuture) {
66863                return result + forms(key)[1];
66864            } else {
66865                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
66866            }
66867        }
66868    }
66869    var lt = moment.defineLocale('lt', {
66870        months: {
66871            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
66872                '_'
66873            ),
66874            standalone:
66875                'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
66876                    '_'
66877                ),
66878            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
66879        },
66880        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
66881        weekdays: {
66882            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
66883                '_'
66884            ),
66885            standalone:
66886                'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
66887                    '_'
66888                ),
66889            isFormat: /dddd HH:mm/,
66890        },
66891        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
66892        weekdaysMin: 'S_P_A_T_K_Pn_Å '.split('_'),
66893        weekdaysParseExact: true,
66894        longDateFormat: {
66895            LT: 'HH:mm',
66896            LTS: 'HH:mm:ss',
66897            L: 'YYYY-MM-DD',
66898            LL: 'YYYY [m.] MMMM D [d.]',
66899            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
66900            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
66901            l: 'YYYY-MM-DD',
66902            ll: 'YYYY [m.] MMMM D [d.]',
66903            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
66904            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
66905        },
66906        calendar: {
66907            sameDay: '[Å iandien] LT',
66908            nextDay: '[Rytoj] LT',
66909            nextWeek: 'dddd LT',
66910            lastDay: '[Vakar] LT',
66911            lastWeek: '[Praėjusį] dddd LT',
66912            sameElse: 'L',
66913        },
66914        relativeTime: {
66915            future: 'po %s',
66916            past: 'prieš %s',
66917            s: translateSeconds,
66918            ss: translate,
66919            m: translateSingular,
66920            mm: translate,
66921            h: translateSingular,
66922            hh: translate,
66923            d: translateSingular,
66924            dd: translate,
66925            M: translateSingular,
66926            MM: translate,
66927            y: translateSingular,
66928            yy: translate,
66929        },
66930        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
66931        ordinal: function (number) {
66932            return number + '-oji';
66933        },
66934        week: {
66935            dow: 1, // Monday is the first day of the week.
66936            doy: 4, // The week that contains Jan 4th is the first week of the year.
66937        },
66938    });
66939
66940    return lt;
66941
66942})));
66943
66944
66945/***/ }),
66946
vendor: 4,282 bytes, lines 66947-67059
66947/***/ "./node_modules/moment/locale/lv.js":
66948/*!******************************************!*\
66949  !*** ./node_modules/moment/locale/lv.js ***!
66950  \******************************************/
66951/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
66952
66953//! moment.js locale configuration
66954//! locale : Latvian [lv]
66955//! author : Kristaps Karlsons : https://github.com/skakri
66956//! author : Jānis Elmeris : https://github.com/JanisE
66957
66958;(function (global, factory) {
66959    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
66960   0
66961}(this, (function (moment) { 'use strict';
66962
66963    //! moment.js locale configuration
66964
66965    var units = {
66966        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
66967        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
66968        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
66969        h: 'stundas_stundām_stunda_stundas'.split('_'),
66970        hh: 'stundas_stundām_stunda_stundas'.split('_'),
66971        d: 'dienas_dienām_diena_dienas'.split('_'),
66972        dd: 'dienas_dienām_diena_dienas'.split('_'),
66973        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
66974        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
66975        y: 'gada_gadiem_gads_gadi'.split('_'),
66976        yy: 'gada_gadiem_gads_gadi'.split('_'),
66977    };
66978    /**
66979     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
66980     */
66981    function format(forms, number, withoutSuffix) {
66982        if (withoutSuffix) {
66983            // E.g. "21 minūte", "3 minūtes".
66984            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
66985        } else {
66986            // E.g. "21 minūtes" as in "pēc 21 minūtes".
66987            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
66988            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
66989        }
66990    }
66991    function relativeTimeWithPlural(number, withoutSuffix, key) {
66992        return number + ' ' + format(units[key], number, withoutSuffix);
66993    }
66994    function relativeTimeWithSingular(number, withoutSuffix, key) {
66995        return format(units[key], number, withoutSuffix);
66996    }
66997    function relativeSeconds(number, withoutSuffix) {
66998        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
66999    }
67000
67001    var lv = moment.defineLocale('lv', {
67002        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
67003            '_'
67004        ),
67005        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
67006        weekdays:
67007            'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
67008                '_'
67009            ),
67010        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
67011        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
67012        weekdaysParseExact: true,
67013        longDateFormat: {
67014            LT: 'HH:mm',
67015            LTS: 'HH:mm:ss',
67016            L: 'DD.MM.YYYY.',
67017            LL: 'YYYY. [gada] D. MMMM',
67018            LLL: 'YYYY. [gada] D. MMMM, HH:mm',
67019            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
67020        },
67021        calendar: {
67022            sameDay: '[Å odien pulksten] LT',
67023            nextDay: '[Rīt pulksten] LT',
67024            nextWeek: 'dddd [pulksten] LT',
67025            lastDay: '[Vakar pulksten] LT',
67026            lastWeek: '[Pagājušā] dddd [pulksten] LT',
67027            sameElse: 'L',
67028        },
67029        relativeTime: {
67030            future: 'pēc %s',
67031            past: 'pirms %s',
67032            s: relativeSeconds,
67033            ss: relativeTimeWithPlural,
67034            m: relativeTimeWithSingular,
67035            mm: relativeTimeWithPlural,
67036            h: relativeTimeWithSingular,
67037            hh: relativeTimeWithPlural,
67038            d: relativeTimeWithSingular,
67039            dd: relativeTimeWithPlural,
67040            M: relativeTimeWithSingular,
67041            MM: relativeTimeWithPlural,
67042            y: relativeTimeWithSingular,
67043            yy: relativeTimeWithPlural,
67044        },
67045        dayOfMonthOrdinalParse: /\d{1,2}\./,
67046        ordinal: '%d.',
67047        week: {
67048            dow: 1, // Monday is the first day of the week.
67049            doy: 4, // The week that contains Jan 4th is the first week of the year.
67050        },
67051    });
67052
67053    return lv;
67054
67055})));
67056
67057
67058/***/ }),
67059
vendor: 4,590 bytes, lines 67060-67195
67060/***/ "./node_modules/moment/locale/me.js":
67061/*!******************************************!*\
67062  !*** ./node_modules/moment/locale/me.js ***!
67063  \******************************************/
67064/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
67065
67066//! moment.js locale configuration
67067//! locale : Montenegrin [me]
67068//! author : Miodrag Nikač <[email protected]> : https://github.com/miodragnikac
67069
67070;(function (global, factory) {
67071    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
67072   0
67073}(this, (function (moment) { 'use strict';
67074
67075    //! moment.js locale configuration
67076
67077    var translator = {
67078        words: {
67079            //Different grammatical cases
67080            ss: ['sekund', 'sekunda', 'sekundi'],
67081            m: ['jedan minut', 'jednog minuta'],
67082            mm: ['minut', 'minuta', 'minuta'],
67083            h: ['jedan sat', 'jednog sata'],
67084            hh: ['sat', 'sata', 'sati'],
67085            dd: ['dan', 'dana', 'dana'],
67086            MM: ['mjesec', 'mjeseca', 'mjeseci'],
67087            yy: ['godina', 'godine', 'godina'],
67088        },
67089        correctGrammaticalCase: function (number, wordKey) {
67090            return number === 1
67091                ? wordKey[0]
67092                : number >= 2 && number <= 4
67093                  ? wordKey[1]
67094                  : wordKey[2];
67095        },
67096        translate: function (number, withoutSuffix, key) {
67097            var wordKey = translator.words[key];
67098            if (key.length === 1) {
67099                return withoutSuffix ? wordKey[0] : wordKey[1];
67100            } else {
67101                return (
67102                    number +
67103                    ' ' +
67104                    translator.correctGrammaticalCase(number, wordKey)
67105                );
67106            }
67107        },
67108    };
67109
67110    var me = moment.defineLocale('me', {
67111        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
67112            '_'
67113        ),
67114        monthsShort:
67115            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
67116        monthsParseExact: true,
67117        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
67118            '_'
67119        ),
67120        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
67121        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
67122        weekdaysParseExact: true,
67123        longDateFormat: {
67124            LT: 'H:mm',
67125            LTS: 'H:mm:ss',
67126            L: 'DD.MM.YYYY',
67127            LL: 'D. MMMM YYYY',
67128            LLL: 'D. MMMM YYYY H:mm',
67129            LLLL: 'dddd, D. MMMM YYYY H:mm',
67130        },
67131        calendar: {
67132            sameDay: '[danas u] LT',
67133            nextDay: '[sjutra u] LT',
67134
67135            nextWeek: function () {
67136                switch (this.day()) {
67137                    case 0:
67138                        return '[u] [nedjelju] [u] LT';
67139                    case 3:
67140                        return '[u] [srijedu] [u] LT';
67141                    case 6:
67142                        return '[u] [subotu] [u] LT';
67143                    case 1:
67144                    case 2:
67145                    case 4:
67146                    case 5:
67147                        return '[u] dddd [u] LT';
67148                }
67149            },
67150            lastDay: '[juče u] LT',
67151            lastWeek: function () {
67152                var lastWeekDays = [
67153                    '[prošle] [nedjelje] [u] LT',
67154                    '[prošlog] [ponedjeljka] [u] LT',
67155                    '[prošlog] [utorka] [u] LT',
67156                    '[prošle] [srijede] [u] LT',
67157                    '[prošlog] [četvrtka] [u] LT',
67158                    '[prošlog] [petka] [u] LT',
67159                    '[prošle] [subote] [u] LT',
67160                ];
67161                return lastWeekDays[this.day()];
67162            },
67163            sameElse: 'L',
67164        },
67165        relativeTime: {
67166            future: 'za %s',
67167            past: 'prije %s',
67168            s: 'nekoliko sekundi',
67169            ss: translator.translate,
67170            m: translator.translate,
67171            mm: translator.translate,
67172            h: translator.translate,
67173            hh: translator.translate,
67174            d: 'dan',
67175            dd: translator.translate,
67176            M: 'mjesec',
67177            MM: translator.translate,
67178            y: 'godinu',
67179            yy: translator.translate,
67180        },
67181        dayOfMonthOrdinalParse: /\d{1,2}\./,
67182        ordinal: '%d.',
67183        week: {
67184            dow: 1, // Monday is the first day of the week.
67185            doy: 7, // The week that contains Jan 7th is the first week of the year.
67186        },
67187    });
67188
67189    return me;
67190
67191})));
67192
67193
67194/***/ }),
67195
vendor: 2,728 bytes, lines 67196-67274
67196/***/ "./node_modules/moment/locale/mi.js":
67197/*!******************************************!*\
67198  !*** ./node_modules/moment/locale/mi.js ***!
67199  \******************************************/
67200/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
67201
67202//! moment.js locale configuration
67203//! locale : Maori [mi]
67204//! author : John Corrigan <[email protected]> : https://github.com/johnideal
67205
67206;(function (global, factory) {
67207    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
67208   0
67209}(this, (function (moment) { 'use strict';
67210
67211    //! moment.js locale configuration
67212
67213    var mi = moment.defineLocale('mi', {
67214        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(
67215            '_'
67216        ),
67217        monthsShort:
67218            'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
67219                '_'
67220            ),
67221        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
67222        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
67223        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
67224        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
67225        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
67226        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
67227        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
67228        longDateFormat: {
67229            LT: 'HH:mm',
67230            LTS: 'HH:mm:ss',
67231            L: 'DD/MM/YYYY',
67232            LL: 'D MMMM YYYY',
67233            LLL: 'D MMMM YYYY [i] HH:mm',
67234            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
67235        },
67236        calendar: {
67237            sameDay: '[i teie mahana, i] LT',
67238            nextDay: '[apopo i] LT',
67239            nextWeek: 'dddd [i] LT',
67240            lastDay: '[inanahi i] LT',
67241            lastWeek: 'dddd [whakamutunga i] LT',
67242            sameElse: 'L',
67243        },
67244        relativeTime: {
67245            future: 'i roto i %s',
67246            past: '%s i mua',
67247            s: 'te hēkona ruarua',
67248            ss: '%d hēkona',
67249            m: 'he meneti',
67250            mm: '%d meneti',
67251            h: 'te haora',
67252            hh: '%d haora',
67253            d: 'he ra',
67254            dd: '%d ra',
67255            M: 'he marama',
67256            MM: '%d marama',
67257            y: 'he tau',
67258            yy: '%d tau',
67259        },
67260        dayOfMonthOrdinalParse: /\d{1,2}º/,
67261        ordinal: '%dº',
67262        week: {
67263            dow: 1, // Monday is the first day of the week.
67264            doy: 4, // The week that contains Jan 4th is the first week of the year.
67265        },
67266    });
67267
67268    return mi;
67269
67270})));
67271
67272
67273/***/ }),
67274
vendor: 3,827 bytes, lines 67275-67379
67275/***/ "./node_modules/moment/locale/mk.js":
67276/*!******************************************!*\
67277  !*** ./node_modules/moment/locale/mk.js ***!
67278  \******************************************/
67279/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
67280
67281//! moment.js locale configuration
67282//! locale : Macedonian [mk]
67283//! author : Borislav Mickov : https://github.com/B0k0
67284//! author : Sashko Todorov : https://github.com/bkyceh
67285
67286;(function (global, factory) {
67287    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
67288   0
67289}(this, (function (moment) { 'use strict';
67290
67291    //! moment.js locale configuration
67292
67293    var mk = moment.defineLocale('mk', {
67294        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
67295            '_'
67296        ),
67297        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
67298        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
67299            '_'
67300        ),
67301        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
67302        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
67303        longDateFormat: {
67304            LT: 'H:mm',
67305            LTS: 'H:mm:ss',
67306            L: 'D.MM.YYYY',
67307            LL: 'D MMMM YYYY',
67308            LLL: 'D MMMM YYYY H:mm',
67309            LLLL: 'dddd, D MMMM YYYY H:mm',
67310        },
67311        calendar: {
67312            sameDay: '[Денес во] LT',
67313            nextDay: '[Утре во] LT',
67314            nextWeek: '[Во] dddd [во] LT',
67315            lastDay: '[Вчера во] LT',
67316            lastWeek: function () {
67317                switch (this.day()) {
67318                    case 0:
67319                    case 3:
67320                    case 6:
67321                        return '[Изминатата] dddd [во] LT';
67322                    case 1:
67323                    case 2:
67324                    case 4:
67325                    case 5:
67326                        return '[Изминатиот] dddd [во] LT';
67327                }
67328            },
67329            sameElse: 'L',
67330        },
67331        relativeTime: {
67332            future: 'за %s',
67333            past: 'пред %s',
67334            s: 'неколку секунди',
67335            ss: '%d секунди',
67336            m: 'една минута',
67337            mm: '%d минути',
67338            h: 'еден час',
67339            hh: '%d часа',
67340            d: 'еден ден',
67341            dd: '%d дена',
67342            M: 'еден месец',
67343            MM: '%d месеци',
67344            y: 'една година',
67345            yy: '%d години',
67346        },
67347        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
67348        ordinal: function (number) {
67349            var lastDigit = number % 10,
67350                last2Digits = number % 100;
67351            if (number === 0) {
67352                return number + '-ев';
67353            } else if (last2Digits === 0) {
67354                return number + '-ен';
67355            } else if (last2Digits > 10 && last2Digits < 20) {
67356                return number + '-ти';
67357            } else if (lastDigit === 1) {
67358                return number + '-ви';
67359            } else if (lastDigit === 2) {
67360                return number + '-ри';
67361            } else if (lastDigit === 7 || lastDigit === 8) {
67362                return number + '-ми';
67363            } else {
67364                return number + '-ти';
67365            }
67366        },
67367        week: {
67368            dow: 1, // Monday is the first day of the week.
67369            doy: 7, // The week that contains Jan 7th is the first week of the year.
67370        },
67371    });
67372
67373    return mk;
67374
67375})));
67376
67377
67378/***/ }),
67379
vendor: 4,080 bytes, lines 67380-67480
67380/***/ "./node_modules/moment/locale/ml.js":
67381/*!******************************************!*\
67382  !*** ./node_modules/moment/locale/ml.js ***!
67383  \******************************************/
67384/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
67385
67386//! moment.js locale configuration
67387//! locale : Malayalam [ml]
67388//! author : Floyd Pink : https://github.com/floydpink
67389
67390;(function (global, factory) {
67391    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
67392   0
67393}(this, (function (moment) { 'use strict';
67394
67395    //! moment.js locale configuration
67396
67397    var ml = moment.defineLocale('ml', {
67398        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
67399            '_'
67400        ),
67401        monthsShort:
67402            'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
67403                '_'
67404            ),
67405        monthsParseExact: true,
67406        weekdays:
67407            'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
67408                '_'
67409            ),
67410        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
67411        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
67412        longDateFormat: {
67413            LT: 'A h:mm -നു',
67414            LTS: 'A h:mm:ss -നു',
67415            L: 'DD/MM/YYYY',
67416            LL: 'D MMMM YYYY',
67417            LLL: 'D MMMM YYYY, A h:mm -നു',
67418            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
67419        },
67420        calendar: {
67421            sameDay: '[ഇന്ന്] LT',
67422            nextDay: '[നാളെ] LT',
67423            nextWeek: 'dddd, LT',
67424            lastDay: '[ഇന്നലെ] LT',
67425            lastWeek: '[കഴിഞ്ഞ] dddd, LT',
67426            sameElse: 'L',
67427        },
67428        relativeTime: {
67429            future: '%s കഴിഞ്ഞ്',
67430            past: '%s മുൻപ്',
67431            s: 'അൽപ നിമിഷങ്ങൾ',
67432            ss: '%d സെക്കൻഡ്',
67433            m: 'ഒരു മിനിറ്റ്',
67434            mm: '%d മിനിറ്റ്',
67435            h: 'ഒരു മണിക്കൂർ',
67436            hh: '%d മണിക്കൂർ',
67437            d: 'ഒരു ദിവസം',
67438            dd: '%d ദിവസം',
67439            M: 'ഒരു മാസം',
67440            MM: '%d മാസം',
67441            y: 'ഒരു വർഷം',
67442            yy: '%d വർഷം',
67443        },
67444        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
67445        meridiemHour: function (hour, meridiem) {
67446            if (hour === 12) {
67447                hour = 0;
67448            }
67449            if (
67450                (meridiem === 'രാത്രി' && hour >= 4) ||
67451                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
67452                meridiem === 'വൈകുന്നേരം'
67453            ) {
67454                return hour + 12;
67455            } else {
67456                return hour;
67457            }
67458        },
67459        meridiem: function (hour, minute, isLower) {
67460            if (hour < 4) {
67461                return 'രാത്രി';
67462            } else if (hour < 12) {
67463                return 'രാവിലെ';
67464            } else if (hour < 17) {
67465                return 'ഉച്ച കഴിഞ്ഞ്';
67466            } else if (hour < 20) {
67467                return 'വൈകുന്നേരം';
67468            } else {
67469                return 'രാത്രി';
67470            }
67471        },
67472    });
67473
67474    return ml;
67475
67476})));
67477
67478
67479/***/ }),
67480
vendor: 4,275 bytes, lines 67481-67599
67481/***/ "./node_modules/moment/locale/mn.js":
67482/*!******************************************!*\
67483  !*** ./node_modules/moment/locale/mn.js ***!
67484  \******************************************/
67485/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
67486
67487//! moment.js locale configuration
67488//! locale : Mongolian [mn]
67489//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7
67490
67491;(function (global, factory) {
67492    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
67493   0
67494}(this, (function (moment) { 'use strict';
67495
67496    //! moment.js locale configuration
67497
67498    function translate(number, withoutSuffix, key, isFuture) {
67499        switch (key) {
67500            case 's':
67501                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
67502            case 'ss':
67503                return number + (withoutSuffix ? ' секунд' : ' секундын');
67504            case 'm':
67505            case 'mm':
67506                return number + (withoutSuffix ? ' минут' : ' минутын');
67507            case 'h':
67508            case 'hh':
67509                return number + (withoutSuffix ? ' цаг' : ' цагийн');
67510            case 'd':
67511            case 'dd':
67512                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
67513            case 'M':
67514            case 'MM':
67515                return number + (withoutSuffix ? ' сар' : ' сарын');
67516            case 'y':
67517            case 'yy':
67518                return number + (withoutSuffix ? ' жил' : ' жилийн');
67519            default:
67520                return number;
67521        }
67522    }
67523
67524    var mn = moment.defineLocale('mn', {
67525        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
67526            '_'
67527        ),
67528        monthsShort:
67529            '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
67530                '_'
67531            ),
67532        monthsParseExact: true,
67533        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
67534        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
67535        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
67536        weekdaysParseExact: true,
67537        longDateFormat: {
67538            LT: 'HH:mm',
67539            LTS: 'HH:mm:ss',
67540            L: 'YYYY-MM-DD',
67541            LL: 'YYYY оны MMMMын D',
67542            LLL: 'YYYY оны MMMMын D HH:mm',
67543            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
67544        },
67545        meridiemParse: /ҮӨ|ҮХ/i,
67546        isPM: function (input) {
67547            return input === 'ҮХ';
67548        },
67549        meridiem: function (hour, minute, isLower) {
67550            if (hour < 12) {
67551                return 'Ò®Ó¨';
67552            } else {
67553                return 'ҮХ';
67554            }
67555        },
67556        calendar: {
67557            sameDay: '[Өнөөдөр] LT',
67558            nextDay: '[Маргааш] LT',
67559            nextWeek: '[Ирэх] dddd LT',
67560            lastDay: '[Өчигдөр] LT',
67561            lastWeek: '[Өнгөрсөн] dddd LT',
67562            sameElse: 'L',
67563        },
67564        relativeTime: {
67565            future: '%s дараа',
67566            past: '%s өмнө',
67567            s: translate,
67568            ss: translate,
67569            m: translate,
67570            mm: translate,
67571            h: translate,
67572            hh: translate,
67573            d: translate,
67574            dd: translate,
67575            M: translate,
67576            MM: translate,
67577            y: translate,
67578            yy: translate,
67579        },
67580        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
67581        ordinal: function (number, period) {
67582            switch (period) {
67583                case 'd':
67584                case 'D':
67585                case 'DDD':
67586                    return number + ' өдөр';
67587                default:
67588                    return number;
67589            }
67590        },
67591    });
67592
67593    return mn;
67594
67595})));
67596
67597
67598/***/ }),
67599
vendor: 7,839 bytes, lines 67600-67821
67600/***/ "./node_modules/moment/locale/mr.js":
67601/*!******************************************!*\
67602  !*** ./node_modules/moment/locale/mr.js ***!
67603  \******************************************/
67604/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
67605
67606//! moment.js locale configuration
67607//! locale : Marathi [mr]
67608//! author : Harshad Kale : https://github.com/kalehv
67609//! author : Vivek Athalye : https://github.com/vnathalye
67610
67611;(function (global, factory) {
67612    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
67613   0
67614}(this, (function (moment) { 'use strict';
67615
67616    //! moment.js locale configuration
67617
67618    var symbolMap = {
67619            1: '१',
67620            2: '२',
67621            3: '३',
67622            4: '४',
67623            5: '५',
67624            6: '६',
67625            7: '७',
67626            8: '८',
67627            9: '९',
67628            0: '०',
67629        },
67630        numberMap = {
67631            '१': '1',
67632            '२': '2',
67633            '३': '3',
67634            '४': '4',
67635            '५': '5',
67636            '६': '6',
67637            '७': '7',
67638            '८': '8',
67639            '९': '9',
67640            '०': '0',
67641        };
67642
67643    function relativeTimeMr(number, withoutSuffix, string, isFuture) {
67644        var output = '';
67645        if (withoutSuffix) {
67646            switch (string) {
67647                case 's':
67648                    output = 'काही सेकंद';
67649                    break;
67650                case 'ss':
67651                    output = '%d सेकंद';
67652                    break;
67653                case 'm':
67654                    output = 'एक मिनिट';
67655                    break;
67656                case 'mm':
67657                    output = '%d मिनिटे';
67658                    break;
67659                case 'h':
67660                    output = 'एक तास';
67661                    break;
67662                case 'hh':
67663                    output = '%d तास';
67664                    break;
67665                case 'd':
67666                    output = 'एक दिवस';
67667                    break;
67668                case 'dd':
67669                    output = '%d दिवस';
67670                    break;
67671                case 'M':
67672                    output = 'एक महिना';
67673                    break;
67674                case 'MM':
67675                    output = '%d महिने';
67676                    break;
67677                case 'y':
67678                    output = 'एक वर्ष';
67679                    break;
67680                case 'yy':
67681                    output = '%d वर्षे';
67682                    break;
67683            }
67684        } else {
67685            switch (string) {
67686                case 's':
67687                    output = 'काही सेकंदां';
67688                    break;
67689                case 'ss':
67690                    output = '%d सेकंदां';
67691                    break;
67692                case 'm':
67693                    output = 'एका मिनिटा';
67694                    break;
67695                case 'mm':
67696                    output = '%d मिनिटां';
67697                    break;
67698                case 'h':
67699                    output = 'एका तासा';
67700                    break;
67701                case 'hh':
67702                    output = '%d तासां';
67703                    break;
67704                case 'd':
67705                    output = 'एका दिवसा';
67706                    break;
67707                case 'dd':
67708                    output = '%d दिवसां';
67709                    break;
67710                case 'M':
67711                    output = 'एका महिन्या';
67712                    break;
67713                case 'MM':
67714                    output = '%d महिन्यां';
67715                    break;
67716                case 'y':
67717                    output = 'एका वर्षा';
67718                    break;
67719                case 'yy':
67720                    output = '%d वर्षां';
67721                    break;
67722            }
67723        }
67724        return output.replace(/%d/i, number);
67725    }
67726
67727    var mr = moment.defineLocale('mr', {
67728        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
67729            '_'
67730        ),
67731        monthsShort:
67732            'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
67733                '_'
67734            ),
67735        monthsParseExact: true,
67736        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
67737        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
67738        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
67739        longDateFormat: {
67740            LT: 'A h:mm वाजता',
67741            LTS: 'A h:mm:ss वाजता',
67742            L: 'DD/MM/YYYY',
67743            LL: 'D MMMM YYYY',
67744            LLL: 'D MMMM YYYY, A h:mm वाजता',
67745            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
67746        },
67747        calendar: {
67748            sameDay: '[आज] LT',
67749            nextDay: '[उद्या] LT',
67750            nextWeek: 'dddd, LT',
67751            lastDay: '[काल] LT',
67752            lastWeek: '[मागील] dddd, LT',
67753            sameElse: 'L',
67754        },
67755        relativeTime: {
67756            future: '%sमध्ये',
67757            past: '%sपूर्वी',
67758            s: relativeTimeMr,
67759            ss: relativeTimeMr,
67760            m: relativeTimeMr,
67761            mm: relativeTimeMr,
67762            h: relativeTimeMr,
67763            hh: relativeTimeMr,
67764            d: relativeTimeMr,
67765            dd: relativeTimeMr,
67766            M: relativeTimeMr,
67767            MM: relativeTimeMr,
67768            y: relativeTimeMr,
67769            yy: relativeTimeMr,
67770        },
67771        preparse: function (string) {
67772            return string.replace(/[१२३४५६७८९०]/g, function (match) {
67773                return numberMap[match];
67774            });
67775        },
67776        postformat: function (string) {
67777            return string.replace(/\d/g, function (match) {
67778                return symbolMap[match];
67779            });
67780        },
67781        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
67782        meridiemHour: function (hour, meridiem) {
67783            if (hour === 12) {
67784                hour = 0;
67785            }
67786            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
67787                return hour;
67788            } else if (
67789                meridiem === 'दुपारी' ||
67790                meridiem === 'सायंकाळी' ||
67791                meridiem === 'रात्री'
67792            ) {
67793                return hour >= 12 ? hour : hour + 12;
67794            }
67795        },
67796        meridiem: function (hour, minute, isLower) {
67797            if (hour >= 0 && hour < 6) {
67798                return 'पहाटे';
67799            } else if (hour < 12) {
67800                return 'सकाळी';
67801            } else if (hour < 17) {
67802                return 'दुपारी';
67803            } else if (hour < 20) {
67804                return 'सायंकाळी';
67805            } else {
67806                return 'रात्री';
67807            }
67808        },
67809        week: {
67810            dow: 0, // Sunday is the first day of the week.
67811            doy: 6, // The week that contains Jan 6th is the first week of the year.
67812        },
67813    });
67814
67815    return mr;
67816
67817})));
67818
67819
67820/***/ }),
67821
vendor: 3,111 bytes, lines 67822-67916
67822/***/ "./node_modules/moment/locale/ms-my.js":
67823/*!*********************************************!*\
67824  !*** ./node_modules/moment/locale/ms-my.js ***!
67825  \*********************************************/
67826/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
67827
67828//! moment.js locale configuration
67829//! locale : Malay [ms-my]
67830//! note : DEPRECATED, the correct one is [ms]
67831//! author : Weldan Jamili : https://github.com/weldan
67832
67833;(function (global, factory) {
67834    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
67835   0
67836}(this, (function (moment) { 'use strict';
67837
67838    //! moment.js locale configuration
67839
67840    var msMy = moment.defineLocale('ms-my', {
67841        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
67842            '_'
67843        ),
67844        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
67845        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
67846        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
67847        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
67848        longDateFormat: {
67849            LT: 'HH.mm',
67850            LTS: 'HH.mm.ss',
67851            L: 'DD/MM/YYYY',
67852            LL: 'D MMMM YYYY',
67853            LLL: 'D MMMM YYYY [pukul] HH.mm',
67854            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
67855        },
67856        meridiemParse: /pagi|tengahari|petang|malam/,
67857        meridiemHour: function (hour, meridiem) {
67858            if (hour === 12) {
67859                hour = 0;
67860            }
67861            if (meridiem === 'pagi') {
67862                return hour;
67863            } else if (meridiem === 'tengahari') {
67864                return hour >= 11 ? hour : hour + 12;
67865            } else if (meridiem === 'petang' || meridiem === 'malam') {
67866                return hour + 12;
67867            }
67868        },
67869        meridiem: function (hours, minutes, isLower) {
67870            if (hours < 11) {
67871                return 'pagi';
67872            } else if (hours < 15) {
67873                return 'tengahari';
67874            } else if (hours < 19) {
67875                return 'petang';
67876            } else {
67877                return 'malam';
67878            }
67879        },
67880        calendar: {
67881            sameDay: '[Hari ini pukul] LT',
67882            nextDay: '[Esok pukul] LT',
67883            nextWeek: 'dddd [pukul] LT',
67884            lastDay: '[Kelmarin pukul] LT',
67885            lastWeek: 'dddd [lepas pukul] LT',
67886            sameElse: 'L',
67887        },
67888        relativeTime: {
67889            future: 'dalam %s',
67890            past: '%s yang lepas',
67891            s: 'beberapa saat',
67892            ss: '%d saat',
67893            m: 'seminit',
67894            mm: '%d minit',
67895            h: 'sejam',
67896            hh: '%d jam',
67897            d: 'sehari',
67898            dd: '%d hari',
67899            M: 'sebulan',
67900            MM: '%d bulan',
67901            y: 'setahun',
67902            yy: '%d tahun',
67903        },
67904        week: {
67905            dow: 1, // Monday is the first day of the week.
67906            doy: 7, // The week that contains Jan 7th is the first week of the year.
67907        },
67908    });
67909
67910    return msMy;
67911
67912})));
67913
67914
67915/***/ }),
67916
vendor: 3,042 bytes, lines 67917-68010
67917/***/ "./node_modules/moment/locale/ms.js":
67918/*!******************************************!*\
67919  !*** ./node_modules/moment/locale/ms.js ***!
67920  \******************************************/
67921/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
67922
67923//! moment.js locale configuration
67924//! locale : Malay [ms]
67925//! author : Weldan Jamili : https://github.com/weldan
67926
67927;(function (global, factory) {
67928    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
67929   0
67930}(this, (function (moment) { 'use strict';
67931
67932    //! moment.js locale configuration
67933
67934    var ms = moment.defineLocale('ms', {
67935        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
67936            '_'
67937        ),
67938        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
67939        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
67940        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
67941        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
67942        longDateFormat: {
67943            LT: 'HH.mm',
67944            LTS: 'HH.mm.ss',
67945            L: 'DD/MM/YYYY',
67946            LL: 'D MMMM YYYY',
67947            LLL: 'D MMMM YYYY [pukul] HH.mm',
67948            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
67949        },
67950        meridiemParse: /pagi|tengahari|petang|malam/,
67951        meridiemHour: function (hour, meridiem) {
67952            if (hour === 12) {
67953                hour = 0;
67954            }
67955            if (meridiem === 'pagi') {
67956                return hour;
67957            } else if (meridiem === 'tengahari') {
67958                return hour >= 11 ? hour : hour + 12;
67959            } else if (meridiem === 'petang' || meridiem === 'malam') {
67960                return hour + 12;
67961            }
67962        },
67963        meridiem: function (hours, minutes, isLower) {
67964            if (hours < 11) {
67965                return 'pagi';
67966            } else if (hours < 15) {
67967                return 'tengahari';
67968            } else if (hours < 19) {
67969                return 'petang';
67970            } else {
67971                return 'malam';
67972            }
67973        },
67974        calendar: {
67975            sameDay: '[Hari ini pukul] LT',
67976            nextDay: '[Esok pukul] LT',
67977            nextWeek: 'dddd [pukul] LT',
67978            lastDay: '[Kelmarin pukul] LT',
67979            lastWeek: 'dddd [lepas pukul] LT',
67980            sameElse: 'L',
67981        },
67982        relativeTime: {
67983            future: 'dalam %s',
67984            past: '%s yang lepas',
67985            s: 'beberapa saat',
67986            ss: '%d saat',
67987            m: 'seminit',
67988            mm: '%d minit',
67989            h: 'sejam',
67990            hh: '%d jam',
67991            d: 'sehari',
67992            dd: '%d hari',
67993            M: 'sebulan',
67994            MM: '%d bulan',
67995            y: 'setahun',
67996            yy: '%d tahun',
67997        },
67998        week: {
67999            dow: 1, // Monday is the first day of the week.
68000            doy: 7, // The week that contains Jan 7th is the first week of the year.
68001        },
68002    });
68003
68004    return ms;
68005
68006})));
68007
68008
68009/***/ }),
68010
vendor: 2,373 bytes, lines 68011-68085
68011/***/ "./node_modules/moment/locale/mt.js":
68012/*!******************************************!*\
68013  !*** ./node_modules/moment/locale/mt.js ***!
68014  \******************************************/
68015/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
68016
68017//! moment.js locale configuration
68018//! locale : Maltese (Malta) [mt]
68019//! author : Alessandro Maruccia : https://github.com/alesma
68020
68021;(function (global, factory) {
68022    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
68023   0
68024}(this, (function (moment) { 'use strict';
68025
68026    //! moment.js locale configuration
68027
68028    var mt = moment.defineLocale('mt', {
68029        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
68030            '_'
68031        ),
68032        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
68033        weekdays:
68034            'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
68035                '_'
68036            ),
68037        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
68038        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
68039        longDateFormat: {
68040            LT: 'HH:mm',
68041            LTS: 'HH:mm:ss',
68042            L: 'DD/MM/YYYY',
68043            LL: 'D MMMM YYYY',
68044            LLL: 'D MMMM YYYY HH:mm',
68045            LLLL: 'dddd, D MMMM YYYY HH:mm',
68046        },
68047        calendar: {
68048            sameDay: '[Illum fil-]LT',
68049            nextDay: '[Għada fil-]LT',
68050            nextWeek: 'dddd [fil-]LT',
68051            lastDay: '[Il-bieraħ fil-]LT',
68052            lastWeek: 'dddd [li għadda] [fil-]LT',
68053            sameElse: 'L',
68054        },
68055        relativeTime: {
68056            future: 'f’ %s',
68057            past: '%s ilu',
68058            s: 'ftit sekondi',
68059            ss: '%d sekondi',
68060            m: 'minuta',
68061            mm: '%d minuti',
68062            h: 'siegħa',
68063            hh: '%d siegħat',
68064            d: 'ġurnata',
68065            dd: '%d ġranet',
68066            M: 'xahar',
68067            MM: '%d xhur',
68068            y: 'sena',
68069            yy: '%d sni',
68070        },
68071        dayOfMonthOrdinalParse: /\d{1,2}º/,
68072        ordinal: '%dº',
68073        week: {
68074            dow: 1, // Monday is the first day of the week.
68075            doy: 4, // The week that contains Jan 4th is the first week of the year.
68076        },
68077    });
68078
68079    return mt;
68080
68081})));
68082
68083
68084/***/ }),
68085
vendor: 3,907 bytes, lines 68086-68195
68086/***/ "./node_modules/moment/locale/my.js":
68087/*!******************************************!*\
68088  !*** ./node_modules/moment/locale/my.js ***!
68089  \******************************************/
68090/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
68091
68092//! moment.js locale configuration
68093//! locale : Burmese [my]
68094//! author : Squar team, mysquar.com
68095//! author : David Rossellat : https://github.com/gholadr
68096//! author : Tin Aung Lin : https://github.com/thanyawzinmin
68097
68098;(function (global, factory) {
68099    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
68100   0
68101}(this, (function (moment) { 'use strict';
68102
68103    //! moment.js locale configuration
68104
68105    var symbolMap = {
68106            1: '၁',
68107            2: '၂',
68108            3: '၃',
68109            4: '၄',
68110            5: '၅',
68111            6: '၆',
68112            7: '၇',
68113            8: '၈',
68114            9: '၉',
68115            0: '၀',
68116        },
68117        numberMap = {
68118            '၁': '1',
68119            '၂': '2',
68120            '၃': '3',
68121            '၄': '4',
68122            '၅': '5',
68123            '၆': '6',
68124            '၇': '7',
68125            '၈': '8',
68126            '၉': '9',
68127            '၀': '0',
68128        };
68129
68130    var my = moment.defineLocale('my', {
68131        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
68132            '_'
68133        ),
68134        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
68135        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
68136            '_'
68137        ),
68138        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
68139        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
68140
68141        longDateFormat: {
68142            LT: 'HH:mm',
68143            LTS: 'HH:mm:ss',
68144            L: 'DD/MM/YYYY',
68145            LL: 'D MMMM YYYY',
68146            LLL: 'D MMMM YYYY HH:mm',
68147            LLLL: 'dddd D MMMM YYYY HH:mm',
68148        },
68149        calendar: {
68150            sameDay: '[ယနေ.] LT [မှာ]',
68151            nextDay: '[မနက်ဖြန်] LT [မှာ]',
68152            nextWeek: 'dddd LT [မှာ]',
68153            lastDay: '[မနေ.က] LT [မှာ]',
68154            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
68155            sameElse: 'L',
68156        },
68157        relativeTime: {
68158            future: 'လာမည့် %s မှာ',
68159            past: 'လွန်ခဲ့သော %s က',
68160            s: 'စက္ကန်.အနည်းငယ်',
68161            ss: '%d စက္ကန့်',
68162            m: 'တစ်မိနစ်',
68163            mm: '%d မိနစ်',
68164            h: 'တစ်နာရီ',
68165            hh: '%d နာရီ',
68166            d: 'တစ်ရက်',
68167            dd: '%d ရက်',
68168            M: 'တစ်လ',
68169            MM: '%d လ',
68170            y: 'တစ်နှစ်',
68171            yy: '%d နှစ်',
68172        },
68173        preparse: function (string) {
68174            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
68175                return numberMap[match];
68176            });
68177        },
68178        postformat: function (string) {
68179            return string.replace(/\d/g, function (match) {
68180                return symbolMap[match];
68181            });
68182        },
68183        week: {
68184            dow: 1, // Monday is the first day of the week.
68185            doy: 4, // The week that contains Jan 4th is the first week of the year.
68186        },
68187    });
68188
68189    return my;
68190
68191})));
68192
68193
68194/***/ }),
68195
vendor: 2,600 bytes, lines 68196-68274
68196/***/ "./node_modules/moment/locale/nb.js":
68197/*!******************************************!*\
68198  !*** ./node_modules/moment/locale/nb.js ***!
68199  \******************************************/
68200/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
68201
68202//! moment.js locale configuration
68203//! locale : Norwegian Bokmål [nb]
68204//! authors : Espen Hovlandsdal : https://github.com/rexxars
68205//!           Sigurd Gartmann : https://github.com/sigurdga
68206//!           Stephen Ramthun : https://github.com/stephenramthun
68207
68208;(function (global, factory) {
68209    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
68210   0
68211}(this, (function (moment) { 'use strict';
68212
68213    //! moment.js locale configuration
68214
68215    var nb = moment.defineLocale('nb', {
68216        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
68217            '_'
68218        ),
68219        monthsShort:
68220            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
68221        monthsParseExact: true,
68222        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
68223        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
68224        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
68225        weekdaysParseExact: true,
68226        longDateFormat: {
68227            LT: 'HH:mm',
68228            LTS: 'HH:mm:ss',
68229            L: 'DD.MM.YYYY',
68230            LL: 'D. MMMM YYYY',
68231            LLL: 'D. MMMM YYYY [kl.] HH:mm',
68232            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
68233        },
68234        calendar: {
68235            sameDay: '[i dag kl.] LT',
68236            nextDay: '[i morgen kl.] LT',
68237            nextWeek: 'dddd [kl.] LT',
68238            lastDay: '[i går kl.] LT',
68239            lastWeek: '[forrige] dddd [kl.] LT',
68240            sameElse: 'L',
68241        },
68242        relativeTime: {
68243            future: 'om %s',
68244            past: '%s siden',
68245            s: 'noen sekunder',
68246            ss: '%d sekunder',
68247            m: 'ett minutt',
68248            mm: '%d minutter',
68249            h: 'én time',
68250            hh: '%d timer',
68251            d: 'én dag',
68252            dd: '%d dager',
68253            w: 'én uke',
68254            ww: '%d uker',
68255            M: 'én måned',
68256            MM: '%d måneder',
68257            y: 'ett år',
68258            yy: '%d år',
68259        },
68260        dayOfMonthOrdinalParse: /\d{1,2}\./,
68261        ordinal: '%d.',
68262        week: {
68263            dow: 1, // Monday is the first day of the week.
68264            doy: 4, // The week that contains Jan 4th is the first week of the year.
68265        },
68266    });
68267
68268    return nb;
68269
68270})));
68271
68272
68273/***/ }),
68274
vendor: 4,976 bytes, lines 68275-68414
68275/***/ "./node_modules/moment/locale/ne.js":
68276/*!******************************************!*\
68277  !*** ./node_modules/moment/locale/ne.js ***!
68278  \******************************************/
68279/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
68280
68281//! moment.js locale configuration
68282//! locale : Nepalese [ne]
68283//! author : suvash : https://github.com/suvash
68284
68285;(function (global, factory) {
68286    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
68287   0
68288}(this, (function (moment) { 'use strict';
68289
68290    //! moment.js locale configuration
68291
68292    var symbolMap = {
68293            1: '१',
68294            2: '२',
68295            3: '३',
68296            4: '४',
68297            5: '५',
68298            6: '६',
68299            7: '७',
68300            8: '८',
68301            9: '९',
68302            0: '०',
68303        },
68304        numberMap = {
68305            '१': '1',
68306            '२': '2',
68307            '३': '3',
68308            '४': '4',
68309            '५': '5',
68310            '६': '6',
68311            '७': '7',
68312            '८': '8',
68313            '९': '9',
68314            '०': '0',
68315        };
68316
68317    var ne = moment.defineLocale('ne', {
68318        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
68319            '_'
68320        ),
68321        monthsShort:
68322            'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
68323                '_'
68324            ),
68325        monthsParseExact: true,
68326        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
68327            '_'
68328        ),
68329        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
68330        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
68331        weekdaysParseExact: true,
68332        longDateFormat: {
68333            LT: 'Aको h:mm बजे',
68334            LTS: 'Aको h:mm:ss बजे',
68335            L: 'DD/MM/YYYY',
68336            LL: 'D MMMM YYYY',
68337            LLL: 'D MMMM YYYY, Aको h:mm बजे',
68338            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
68339        },
68340        preparse: function (string) {
68341            return string.replace(/[१२३४५६७८९०]/g, function (match) {
68342                return numberMap[match];
68343            });
68344        },
68345        postformat: function (string) {
68346            return string.replace(/\d/g, function (match) {
68347                return symbolMap[match];
68348            });
68349        },
68350        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
68351        meridiemHour: function (hour, meridiem) {
68352            if (hour === 12) {
68353                hour = 0;
68354            }
68355            if (meridiem === 'राति') {
68356                return hour < 4 ? hour : hour + 12;
68357            } else if (meridiem === 'बिहान') {
68358                return hour;
68359            } else if (meridiem === 'दिउँसो') {
68360                return hour >= 10 ? hour : hour + 12;
68361            } else if (meridiem === 'साँझ') {
68362                return hour + 12;
68363            }
68364        },
68365        meridiem: function (hour, minute, isLower) {
68366            if (hour < 3) {
68367                return 'राति';
68368            } else if (hour < 12) {
68369                return 'बिहान';
68370            } else if (hour < 16) {
68371                return 'दिउँसो';
68372            } else if (hour < 20) {
68373                return 'साँझ';
68374            } else {
68375                return 'राति';
68376            }
68377        },
68378        calendar: {
68379            sameDay: '[आज] LT',
68380            nextDay: '[भोलि] LT',
68381            nextWeek: '[आउँदो] dddd[,] LT',
68382            lastDay: '[हिजो] LT',
68383            lastWeek: '[गएको] dddd[,] LT',
68384            sameElse: 'L',
68385        },
68386        relativeTime: {
68387            future: '%sमा',
68388            past: '%s अगाडि',
68389            s: 'केही क्षण',
68390            ss: '%d सेकेण्ड',
68391            m: 'एक मिनेट',
68392            mm: '%d मिनेट',
68393            h: 'एक घण्टा',
68394            hh: '%d घण्टा',
68395            d: 'एक दिन',
68396            dd: '%d दिन',
68397            M: 'एक महिना',
68398            MM: '%d महिना',
68399            y: 'एक बर्ष',
68400            yy: '%d बर्ष',
68401        },
68402        week: {
68403            dow: 0, // Sunday is the first day of the week.
68404            doy: 6, // The week that contains Jan 6th is the first week of the year.
68405        },
68406    });
68407
68408    return ne;
68409
68410})));
68411
68412
68413/***/ }),
68414
vendor: 4,041 bytes, lines 68415-68535
68415/***/ "./node_modules/moment/locale/nl-be.js":
68416/*!*********************************************!*\
68417  !*** ./node_modules/moment/locale/nl-be.js ***!
68418  \*********************************************/
68419/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
68420
68421//! moment.js locale configuration
68422//! locale : Dutch (Belgium) [nl-be]
68423//! author : Joris Röling : https://github.com/jorisroling
68424//! author : Jacob Middag : https://github.com/middagj
68425
68426;(function (global, factory) {
68427    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
68428   0
68429}(this, (function (moment) { 'use strict';
68430
68431    //! moment.js locale configuration
68432
68433    var monthsShortWithDots =
68434            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
68435        monthsShortWithoutDots =
68436            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
68437        monthsParse = [
68438            /^jan/i,
68439            /^feb/i,
68440            /^(maart|mrt\.?)$/i,
68441            /^apr/i,
68442            /^mei$/i,
68443            /^jun[i.]?$/i,
68444            /^jul[i.]?$/i,
68445            /^aug/i,
68446            /^sep/i,
68447            /^okt/i,
68448            /^nov/i,
68449            /^dec/i,
68450        ],
68451        monthsRegex =
68452            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
68453
68454    var nlBe = moment.defineLocale('nl-be', {
68455        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
68456            '_'
68457        ),
68458        monthsShort: function (m, format) {
68459            if (!m) {
68460                return monthsShortWithDots;
68461            } else if (/-MMM-/.test(format)) {
68462                return monthsShortWithoutDots[m.month()];
68463            } else {
68464                return monthsShortWithDots[m.month()];
68465            }
68466        },
68467
68468        monthsRegex: monthsRegex,
68469        monthsShortRegex: monthsRegex,
68470        monthsStrictRegex:
68471            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
68472        monthsShortStrictRegex:
68473            /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
68474
68475        monthsParse: monthsParse,
68476        longMonthsParse: monthsParse,
68477        shortMonthsParse: monthsParse,
68478
68479        weekdays:
68480            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
68481        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
68482        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
68483        weekdaysParseExact: true,
68484        longDateFormat: {
68485            LT: 'HH:mm',
68486            LTS: 'HH:mm:ss',
68487            L: 'DD/MM/YYYY',
68488            LL: 'D MMMM YYYY',
68489            LLL: 'D MMMM YYYY HH:mm',
68490            LLLL: 'dddd D MMMM YYYY HH:mm',
68491        },
68492        calendar: {
68493            sameDay: '[vandaag om] LT',
68494            nextDay: '[morgen om] LT',
68495            nextWeek: 'dddd [om] LT',
68496            lastDay: '[gisteren om] LT',
68497            lastWeek: '[afgelopen] dddd [om] LT',
68498            sameElse: 'L',
68499        },
68500        relativeTime: {
68501            future: 'over %s',
68502            past: '%s geleden',
68503            s: 'een paar seconden',
68504            ss: '%d seconden',
68505            m: 'één minuut',
68506            mm: '%d minuten',
68507            h: 'één uur',
68508            hh: '%d uur',
68509            d: 'één dag',
68510            dd: '%d dagen',
68511            M: 'één maand',
68512            MM: '%d maanden',
68513            y: 'één jaar',
68514            yy: '%d jaar',
68515        },
68516        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
68517        ordinal: function (number) {
68518            return (
68519                number +
68520                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
68521            );
68522        },
68523        week: {
68524            dow: 1, // Monday is the first day of the week.
68525            doy: 4, // The week that contains Jan 4th is the first week of the year.
68526        },
68527    });
68528
68529    return nlBe;
68530
68531})));
68532
68533
68534/***/ }),
68535
vendor: 4,066 bytes, lines 68536-68658
68536/***/ "./node_modules/moment/locale/nl.js":
68537/*!******************************************!*\
68538  !*** ./node_modules/moment/locale/nl.js ***!
68539  \******************************************/
68540/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
68541
68542//! moment.js locale configuration
68543//! locale : Dutch [nl]
68544//! author : Joris Röling : https://github.com/jorisroling
68545//! author : Jacob Middag : https://github.com/middagj
68546
68547;(function (global, factory) {
68548    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
68549   0
68550}(this, (function (moment) { 'use strict';
68551
68552    //! moment.js locale configuration
68553
68554    var monthsShortWithDots =
68555            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
68556        monthsShortWithoutDots =
68557            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
68558        monthsParse = [
68559            /^jan/i,
68560            /^feb/i,
68561            /^(maart|mrt\.?)$/i,
68562            /^apr/i,
68563            /^mei$/i,
68564            /^jun[i.]?$/i,
68565            /^jul[i.]?$/i,
68566            /^aug/i,
68567            /^sep/i,
68568            /^okt/i,
68569            /^nov/i,
68570            /^dec/i,
68571        ],
68572        monthsRegex =
68573            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
68574
68575    var nl = moment.defineLocale('nl', {
68576        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
68577            '_'
68578        ),
68579        monthsShort: function (m, format) {
68580            if (!m) {
68581                return monthsShortWithDots;
68582            } else if (/-MMM-/.test(format)) {
68583                return monthsShortWithoutDots[m.month()];
68584            } else {
68585                return monthsShortWithDots[m.month()];
68586            }
68587        },
68588
68589        monthsRegex: monthsRegex,
68590        monthsShortRegex: monthsRegex,
68591        monthsStrictRegex:
68592            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
68593        monthsShortStrictRegex:
68594            /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
68595
68596        monthsParse: monthsParse,
68597        longMonthsParse: monthsParse,
68598        shortMonthsParse: monthsParse,
68599
68600        weekdays:
68601            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
68602        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
68603        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
68604        weekdaysParseExact: true,
68605        longDateFormat: {
68606            LT: 'HH:mm',
68607            LTS: 'HH:mm:ss',
68608            L: 'DD-MM-YYYY',
68609            LL: 'D MMMM YYYY',
68610            LLL: 'D MMMM YYYY HH:mm',
68611            LLLL: 'dddd D MMMM YYYY HH:mm',
68612        },
68613        calendar: {
68614            sameDay: '[vandaag om] LT',
68615            nextDay: '[morgen om] LT',
68616            nextWeek: 'dddd [om] LT',
68617            lastDay: '[gisteren om] LT',
68618            lastWeek: '[afgelopen] dddd [om] LT',
68619            sameElse: 'L',
68620        },
68621        relativeTime: {
68622            future: 'over %s',
68623            past: '%s geleden',
68624            s: 'een paar seconden',
68625            ss: '%d seconden',
68626            m: 'één minuut',
68627            mm: '%d minuten',
68628            h: 'één uur',
68629            hh: '%d uur',
68630            d: 'één dag',
68631            dd: '%d dagen',
68632            w: 'één week',
68633            ww: '%d weken',
68634            M: 'één maand',
68635            MM: '%d maanden',
68636            y: 'één jaar',
68637            yy: '%d jaar',
68638        },
68639        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
68640        ordinal: function (number) {
68641            return (
68642                number +
68643                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
68644            );
68645        },
68646        week: {
68647            dow: 1, // Monday is the first day of the week.
68648            doy: 4, // The week that contains Jan 4th is the first week of the year.
68649        },
68650    });
68651
68652    return nl;
68653
68654})));
68655
68656
68657/***/ }),
68658
vendor: 2,525 bytes, lines 68659-68736
68659/***/ "./node_modules/moment/locale/nn.js":
68660/*!******************************************!*\
68661  !*** ./node_modules/moment/locale/nn.js ***!
68662  \******************************************/
68663/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
68664
68665//! moment.js locale configuration
68666//! locale : Nynorsk [nn]
68667//! authors : https://github.com/mechuwind
68668//!           Stephen Ramthun : https://github.com/stephenramthun
68669
68670;(function (global, factory) {
68671    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
68672   0
68673}(this, (function (moment) { 'use strict';
68674
68675    //! moment.js locale configuration
68676
68677    var nn = moment.defineLocale('nn', {
68678        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
68679            '_'
68680        ),
68681        monthsShort:
68682            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
68683        monthsParseExact: true,
68684        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
68685        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
68686        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
68687        weekdaysParseExact: true,
68688        longDateFormat: {
68689            LT: 'HH:mm',
68690            LTS: 'HH:mm:ss',
68691            L: 'DD.MM.YYYY',
68692            LL: 'D. MMMM YYYY',
68693            LLL: 'D. MMMM YYYY [kl.] H:mm',
68694            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
68695        },
68696        calendar: {
68697            sameDay: '[I dag klokka] LT',
68698            nextDay: '[I morgon klokka] LT',
68699            nextWeek: 'dddd [klokka] LT',
68700            lastDay: '[I går klokka] LT',
68701            lastWeek: '[Føregåande] dddd [klokka] LT',
68702            sameElse: 'L',
68703        },
68704        relativeTime: {
68705            future: 'om %s',
68706            past: '%s sidan',
68707            s: 'nokre sekund',
68708            ss: '%d sekund',
68709            m: 'eit minutt',
68710            mm: '%d minutt',
68711            h: 'ein time',
68712            hh: '%d timar',
68713            d: 'ein dag',
68714            dd: '%d dagar',
68715            w: 'ei veke',
68716            ww: '%d veker',
68717            M: 'ein månad',
68718            MM: '%d månader',
68719            y: 'eit år',
68720            yy: '%d år',
68721        },
68722        dayOfMonthOrdinalParse: /\d{1,2}\./,
68723        ordinal: '%d.',
68724        week: {
68725            dow: 1, // Monday is the first day of the week.
68726            doy: 4, // The week that contains Jan 4th is the first week of the year.
68727        },
68728    });
68729
68730    return nn;
68731
68732})));
68733
68734
68735/***/ }),
68736
vendor: 3,323 bytes, lines 68737-68840
68737/***/ "./node_modules/moment/locale/oc-lnc.js":
68738/*!**********************************************!*\
68739  !*** ./node_modules/moment/locale/oc-lnc.js ***!
68740  \**********************************************/
68741/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
68742
68743//! moment.js locale configuration
68744//! locale : Occitan, lengadocian dialecte [oc-lnc]
68745//! author : Quentin PAGÈS : https://github.com/Quenty31
68746
68747;(function (global, factory) {
68748    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
68749   0
68750}(this, (function (moment) { 'use strict';
68751
68752    //! moment.js locale configuration
68753
68754    var ocLnc = moment.defineLocale('oc-lnc', {
68755        months: {
68756            standalone:
68757                'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
68758                    '_'
68759                ),
68760            format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split(
68761                '_'
68762            ),
68763            isFormat: /D[oD]?(\s)+MMMM/,
68764        },
68765        monthsShort:
68766            'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
68767                '_'
68768            ),
68769        monthsParseExact: true,
68770        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
68771            '_'
68772        ),
68773        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
68774        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
68775        weekdaysParseExact: true,
68776        longDateFormat: {
68777            LT: 'H:mm',
68778            LTS: 'H:mm:ss',
68779            L: 'DD/MM/YYYY',
68780            LL: 'D MMMM [de] YYYY',
68781            ll: 'D MMM YYYY',
68782            LLL: 'D MMMM [de] YYYY [a] H:mm',
68783            lll: 'D MMM YYYY, H:mm',
68784            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
68785            llll: 'ddd D MMM YYYY, H:mm',
68786        },
68787        calendar: {
68788            sameDay: '[uèi a] LT',
68789            nextDay: '[deman a] LT',
68790            nextWeek: 'dddd [a] LT',
68791            lastDay: '[ièr a] LT',
68792            lastWeek: 'dddd [passat a] LT',
68793            sameElse: 'L',
68794        },
68795        relativeTime: {
68796            future: "d'aquí %s",
68797            past: 'fa %s',
68798            s: 'unas segondas',
68799            ss: '%d segondas',
68800            m: 'una minuta',
68801            mm: '%d minutas',
68802            h: 'una ora',
68803            hh: '%d oras',
68804            d: 'un jorn',
68805            dd: '%d jorns',
68806            M: 'un mes',
68807            MM: '%d meses',
68808            y: 'un an',
68809            yy: '%d ans',
68810        },
68811        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
68812        ordinal: function (number, period) {
68813            var output =
68814                number === 1
68815                    ? 'r'
68816                    : number === 2
68817                      ? 'n'
68818                      : number === 3
68819                        ? 'r'
68820                        : number === 4
68821                          ? 't'
68822                          : 'è';
68823            if (period === 'w' || period === 'W') {
68824                output = 'a';
68825            }
68826            return number + output;
68827        },
68828        week: {
68829            dow: 1, // Monday is the first day of the week.
68830            doy: 4,
68831        },
68832    });
68833
68834    return ocLnc;
68835
68836})));
68837
68838
68839/***/ }),
68840
vendor: 5,163 bytes, lines 68841-68981
68841/***/ "./node_modules/moment/locale/pa-in.js":
68842/*!*********************************************!*\
68843  !*** ./node_modules/moment/locale/pa-in.js ***!
68844  \*********************************************/
68845/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
68846
68847//! moment.js locale configuration
68848//! locale : Punjabi (India) [pa-in]
68849//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
68850
68851;(function (global, factory) {
68852    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
68853   0
68854}(this, (function (moment) { 'use strict';
68855
68856    //! moment.js locale configuration
68857
68858    var symbolMap = {
68859            1: 'à©§',
68860            2: '੨',
68861            3: 'à©©',
68862            4: '੪',
68863            5: 'à©«',
68864            6: '੬',
68865            7: 'à©­',
68866            8: 'à©®',
68867            9: '੯',
68868            0: '੦',
68869        },
68870        numberMap = {
68871            'à©§': '1',
68872            '੨': '2',
68873            'à©©': '3',
68874            '੪': '4',
68875            'à©«': '5',
68876            '੬': '6',
68877            'à©­': '7',
68878            'à©®': '8',
68879            '੯': '9',
68880            '੦': '0',
68881        };
68882
68883    var paIn = moment.defineLocale('pa-in', {
68884        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
68885        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
68886            '_'
68887        ),
68888        monthsShort:
68889            'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
68890                '_'
68891            ),
68892        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
68893            '_'
68894        ),
68895        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
68896        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
68897        longDateFormat: {
68898            LT: 'A h:mm ਵਜੇ',
68899            LTS: 'A h:mm:ss ਵਜੇ',
68900            L: 'DD/MM/YYYY',
68901            LL: 'D MMMM YYYY',
68902            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
68903            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
68904        },
68905        calendar: {
68906            sameDay: '[ਅਜ] LT',
68907            nextDay: '[ਕਲ] LT',
68908            nextWeek: '[ਅਗਲਾ] dddd, LT',
68909            lastDay: '[ਕਲ] LT',
68910            lastWeek: '[ਪਿਛਲੇ] dddd, LT',
68911            sameElse: 'L',
68912        },
68913        relativeTime: {
68914            future: '%s ਵਿੱਚ',
68915            past: '%s ਪਿਛਲੇ',
68916            s: 'ਕੁਝ ਸਕਿੰਟ',
68917            ss: '%d ਸਕਿੰਟ',
68918            m: 'ਇਕ ਮਿੰਟ',
68919            mm: '%d ਮਿੰਟ',
68920            h: 'ਇੱਕ ਘੰਟਾ',
68921            hh: '%d ਘੰਟੇ',
68922            d: 'ਇੱਕ ਦਿਨ',
68923            dd: '%d ਦਿਨ',
68924            M: 'ਇੱਕ ਮਹੀਨਾ',
68925            MM: '%d ਮਹੀਨੇ',
68926            y: 'ਇੱਕ ਸਾਲ',
68927            yy: '%d ਸਾਲ',
68928        },
68929        preparse: function (string) {
68930            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
68931                return numberMap[match];
68932            });
68933        },
68934        postformat: function (string) {
68935            return string.replace(/\d/g, function (match) {
68936                return symbolMap[match];
68937            });
68938        },
68939        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
68940        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
68941        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
68942        meridiemHour: function (hour, meridiem) {
68943            if (hour === 12) {
68944                hour = 0;
68945            }
68946            if (meridiem === 'ਰਾਤ') {
68947                return hour < 4 ? hour : hour + 12;
68948            } else if (meridiem === 'ਸਵੇਰ') {
68949                return hour;
68950            } else if (meridiem === 'ਦੁਪਹਿਰ') {
68951                return hour >= 10 ? hour : hour + 12;
68952            } else if (meridiem === 'ਸ਼ਾਮ') {
68953                return hour + 12;
68954            }
68955        },
68956        meridiem: function (hour, minute, isLower) {
68957            if (hour < 4) {
68958                return 'ਰਾਤ';
68959            } else if (hour < 10) {
68960                return 'ਸਵੇਰ';
68961            } else if (hour < 17) {
68962                return 'ਦੁਪਹਿਰ';
68963            } else if (hour < 20) {
68964                return 'ਸ਼ਾਮ';
68965            } else {
68966                return 'ਰਾਤ';
68967            }
68968        },
68969        week: {
68970            dow: 0, // Sunday is the first day of the week.
68971            doy: 6, // The week that contains Jan 6th is the first week of the year.
68972        },
68973    });
68974
68975    return paIn;
68976
68977})));
68978
68979
68980/***/ }),
68981
vendor: 5,171 bytes, lines 68982-69140
68982/***/ "./node_modules/moment/locale/pl.js":
68983/*!******************************************!*\
68984  !*** ./node_modules/moment/locale/pl.js ***!
68985  \******************************************/
68986/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
68987
68988//! moment.js locale configuration
68989//! locale : Polish [pl]
68990//! author : Rafal Hirsz : https://github.com/evoL
68991
68992;(function (global, factory) {
68993    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
68994   0
68995}(this, (function (moment) { 'use strict';
68996
68997    //! moment.js locale configuration
68998
68999    var monthsNominative =
69000            'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
69001                '_'
69002            ),
69003        monthsSubjective =
69004            'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
69005                '_'
69006            ),
69007        monthsParse = [
69008            /^sty/i,
69009            /^lut/i,
69010            /^mar/i,
69011            /^kwi/i,
69012            /^maj/i,
69013            /^cze/i,
69014            /^lip/i,
69015            /^sie/i,
69016            /^wrz/i,
69017            /^paź/i,
69018            /^lis/i,
69019            /^gru/i,
69020        ];
69021    function plural(n) {
69022        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
69023    }
69024    function translate(number, withoutSuffix, key) {
69025        var result = number + ' ';
69026        switch (key) {
69027            case 'ss':
69028                return result + (plural(number) ? 'sekundy' : 'sekund');
69029            case 'm':
69030                return withoutSuffix ? 'minuta' : 'minutę';
69031            case 'mm':
69032                return result + (plural(number) ? 'minuty' : 'minut');
69033            case 'h':
69034                return withoutSuffix ? 'godzina' : 'godzinę';
69035            case 'hh':
69036                return result + (plural(number) ? 'godziny' : 'godzin');
69037            case 'ww':
69038                return result + (plural(number) ? 'tygodnie' : 'tygodni');
69039            case 'MM':
69040                return result + (plural(number) ? 'miesiące' : 'miesięcy');
69041            case 'yy':
69042                return result + (plural(number) ? 'lata' : 'lat');
69043        }
69044    }
69045
69046    var pl = moment.defineLocale('pl', {
69047        months: function (momentToFormat, format) {
69048            if (!momentToFormat) {
69049                return monthsNominative;
69050            } else if (/D MMMM/.test(format)) {
69051                return monthsSubjective[momentToFormat.month()];
69052            } else {
69053                return monthsNominative[momentToFormat.month()];
69054            }
69055        },
69056        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
69057        monthsParse: monthsParse,
69058        longMonthsParse: monthsParse,
69059        shortMonthsParse: monthsParse,
69060        weekdays:
69061            'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
69062        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
69063        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
69064        longDateFormat: {
69065            LT: 'HH:mm',
69066            LTS: 'HH:mm:ss',
69067            L: 'DD.MM.YYYY',
69068            LL: 'D MMMM YYYY',
69069            LLL: 'D MMMM YYYY HH:mm',
69070            LLLL: 'dddd, D MMMM YYYY HH:mm',
69071        },
69072        calendar: {
69073            sameDay: '[Dziś o] LT',
69074            nextDay: '[Jutro o] LT',
69075            nextWeek: function () {
69076                switch (this.day()) {
69077                    case 0:
69078                        return '[W niedzielę o] LT';
69079
69080                    case 2:
69081                        return '[We wtorek o] LT';
69082
69083                    case 3:
69084                        return '[W środę o] LT';
69085
69086                    case 6:
69087                        return '[W sobotę o] LT';
69088
69089                    default:
69090                        return '[W] dddd [o] LT';
69091                }
69092            },
69093            lastDay: '[Wczoraj o] LT',
69094            lastWeek: function () {
69095                switch (this.day()) {
69096                    case 0:
69097                        return '[W zeszłą niedzielę o] LT';
69098                    case 3:
69099                        return '[W zeszłą środę o] LT';
69100                    case 6:
69101                        return '[W zeszłą sobotę o] LT';
69102                    default:
69103                        return '[W zeszły] dddd [o] LT';
69104                }
69105            },
69106            sameElse: 'L',
69107        },
69108        relativeTime: {
69109            future: 'za %s',
69110            past: '%s temu',
69111            s: 'kilka sekund',
69112            ss: translate,
69113            m: translate,
69114            mm: translate,
69115            h: translate,
69116            hh: translate,
69117            d: '1 dzień',
69118            dd: '%d dni',
69119            w: 'tydzień',
69120            ww: translate,
69121            M: 'miesiąc',
69122            MM: translate,
69123            y: 'rok',
69124            yy: translate,
69125        },
69126        dayOfMonthOrdinalParse: /\d{1,2}\./,
69127        ordinal: '%d.',
69128        week: {
69129            dow: 1, // Monday is the first day of the week.
69130            doy: 4, // The week that contains Jan 4th is the first week of the year.
69131        },
69132    });
69133
69134    return pl;
69135
69136})));
69137
69138
69139/***/ }),
69140
vendor: 2,567 bytes, lines 69141-69217
69141/***/ "./node_modules/moment/locale/pt-br.js":
69142/*!*********************************************!*\
69143  !*** ./node_modules/moment/locale/pt-br.js ***!
69144  \*********************************************/
69145/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
69146
69147//! moment.js locale configuration
69148//! locale : Portuguese (Brazil) [pt-br]
69149//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
69150
69151;(function (global, factory) {
69152    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
69153   0
69154}(this, (function (moment) { 'use strict';
69155
69156    //! moment.js locale configuration
69157
69158    var ptBr = moment.defineLocale('pt-br', {
69159        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
69160            '_'
69161        ),
69162        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
69163        weekdays:
69164            'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
69165                '_'
69166            ),
69167        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
69168        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
69169        weekdaysParseExact: true,
69170        longDateFormat: {
69171            LT: 'HH:mm',
69172            LTS: 'HH:mm:ss',
69173            L: 'DD/MM/YYYY',
69174            LL: 'D [de] MMMM [de] YYYY',
69175            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
69176            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
69177        },
69178        calendar: {
69179            sameDay: '[Hoje às] LT',
69180            nextDay: '[Amanhã às] LT',
69181            nextWeek: 'dddd [às] LT',
69182            lastDay: '[Ontem às] LT',
69183            lastWeek: function () {
69184                return this.day() === 0 || this.day() === 6
69185                    ? '[Último] dddd [às] LT' // Saturday + Sunday
69186                    : '[Última] dddd [às] LT'; // Monday - Friday
69187            },
69188            sameElse: 'L',
69189        },
69190        relativeTime: {
69191            future: 'em %s',
69192            past: 'há %s',
69193            s: 'poucos segundos',
69194            ss: '%d segundos',
69195            m: 'um minuto',
69196            mm: '%d minutos',
69197            h: 'uma hora',
69198            hh: '%d horas',
69199            d: 'um dia',
69200            dd: '%d dias',
69201            M: 'um mês',
69202            MM: '%d meses',
69203            y: 'um ano',
69204            yy: '%d anos',
69205        },
69206        dayOfMonthOrdinalParse: /\d{1,2}º/,
69207        ordinal: '%dº',
69208        invalidDate: 'Data inválida',
69209    });
69210
69211    return ptBr;
69212
69213})));
69214
69215
69216/***/ }),
69217
vendor: 2,685 bytes, lines 69218-69299
69218/***/ "./node_modules/moment/locale/pt.js":
69219/*!******************************************!*\
69220  !*** ./node_modules/moment/locale/pt.js ***!
69221  \******************************************/
69222/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
69223
69224//! moment.js locale configuration
69225//! locale : Portuguese [pt]
69226//! author : Jefferson : https://github.com/jalex79
69227
69228;(function (global, factory) {
69229    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
69230   0
69231}(this, (function (moment) { 'use strict';
69232
69233    //! moment.js locale configuration
69234
69235    var pt = moment.defineLocale('pt', {
69236        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
69237            '_'
69238        ),
69239        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
69240        weekdays:
69241            'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
69242                '_'
69243            ),
69244        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
69245        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
69246        weekdaysParseExact: true,
69247        longDateFormat: {
69248            LT: 'HH:mm',
69249            LTS: 'HH:mm:ss',
69250            L: 'DD/MM/YYYY',
69251            LL: 'D [de] MMMM [de] YYYY',
69252            LLL: 'D [de] MMMM [de] YYYY HH:mm',
69253            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
69254        },
69255        calendar: {
69256            sameDay: '[Hoje às] LT',
69257            nextDay: '[Amanhã às] LT',
69258            nextWeek: 'dddd [às] LT',
69259            lastDay: '[Ontem às] LT',
69260            lastWeek: function () {
69261                return this.day() === 0 || this.day() === 6
69262                    ? '[Último] dddd [às] LT' // Saturday + Sunday
69263                    : '[Última] dddd [às] LT'; // Monday - Friday
69264            },
69265            sameElse: 'L',
69266        },
69267        relativeTime: {
69268            future: 'em %s',
69269            past: 'há %s',
69270            s: 'segundos',
69271            ss: '%d segundos',
69272            m: 'um minuto',
69273            mm: '%d minutos',
69274            h: 'uma hora',
69275            hh: '%d horas',
69276            d: 'um dia',
69277            dd: '%d dias',
69278            w: 'uma semana',
69279            ww: '%d semanas',
69280            M: 'um mês',
69281            MM: '%d meses',
69282            y: 'um ano',
69283            yy: '%d anos',
69284        },
69285        dayOfMonthOrdinalParse: /\d{1,2}º/,
69286        ordinal: '%dº',
69287        week: {
69288            dow: 1, // Monday is the first day of the week.
69289            doy: 4, // The week that contains Jan 4th is the first week of the year.
69290        },
69291    });
69292
69293    return pt;
69294
69295})));
69296
69297
69298/***/ }),
69299
vendor: 3,076 bytes, lines 69300-69394
69300/***/ "./node_modules/moment/locale/ro.js":
69301/*!******************************************!*\
69302  !*** ./node_modules/moment/locale/ro.js ***!
69303  \******************************************/
69304/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
69305
69306//! moment.js locale configuration
69307//! locale : Romanian [ro]
69308//! author : Vlad Gurdiga : https://github.com/gurdiga
69309//! author : Valentin Agachi : https://github.com/avaly
69310//! author : Emanuel Cepoi : https://github.com/cepem
69311
69312;(function (global, factory) {
69313    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
69314   0
69315}(this, (function (moment) { 'use strict';
69316
69317    //! moment.js locale configuration
69318
69319    function relativeTimeWithPlural(number, withoutSuffix, key) {
69320        var format = {
69321                ss: 'secunde',
69322                mm: 'minute',
69323                hh: 'ore',
69324                dd: 'zile',
69325                ww: 'săptămâni',
69326                MM: 'luni',
69327                yy: 'ani',
69328            },
69329            separator = ' ';
69330        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
69331            separator = ' de ';
69332        }
69333        return number + separator + format[key];
69334    }
69335
69336    var ro = moment.defineLocale('ro', {
69337        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
69338            '_'
69339        ),
69340        monthsShort:
69341            'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
69342                '_'
69343            ),
69344        monthsParseExact: true,
69345        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
69346        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
69347        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
69348        longDateFormat: {
69349            LT: 'H:mm',
69350            LTS: 'H:mm:ss',
69351            L: 'DD.MM.YYYY',
69352            LL: 'D MMMM YYYY',
69353            LLL: 'D MMMM YYYY H:mm',
69354            LLLL: 'dddd, D MMMM YYYY H:mm',
69355        },
69356        calendar: {
69357            sameDay: '[azi la] LT',
69358            nextDay: '[mâine la] LT',
69359            nextWeek: 'dddd [la] LT',
69360            lastDay: '[ieri la] LT',
69361            lastWeek: '[fosta] dddd [la] LT',
69362            sameElse: 'L',
69363        },
69364        relativeTime: {
69365            future: 'peste %s',
69366            past: '%s în urmă',
69367            s: 'câteva secunde',
69368            ss: relativeTimeWithPlural,
69369            m: 'un minut',
69370            mm: relativeTimeWithPlural,
69371            h: 'o oră',
69372            hh: relativeTimeWithPlural,
69373            d: 'o zi',
69374            dd: relativeTimeWithPlural,
69375            w: 'o săptămână',
69376            ww: relativeTimeWithPlural,
69377            M: 'o lună',
69378            MM: relativeTimeWithPlural,
69379            y: 'un an',
69380            yy: relativeTimeWithPlural,
69381        },
69382        week: {
69383            dow: 1, // Monday is the first day of the week.
69384            doy: 7, // The week that contains Jan 7th is the first week of the year.
69385        },
69386    });
69387
69388    return ro;
69389
69390})));
69391
69392
69393/***/ }),
69394
vendor: 9,711 bytes, lines 69395-69626
69395/***/ "./node_modules/moment/locale/ru.js":
69396/*!******************************************!*\
69397  !*** ./node_modules/moment/locale/ru.js ***!
69398  \******************************************/
69399/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
69400
69401//! moment.js locale configuration
69402//! locale : Russian [ru]
69403//! author : Viktorminator : https://github.com/Viktorminator
69404//! author : Menelion Elensúle : https://github.com/Oire
69405//! author : Коренберг Марк : https://github.com/socketpair
69406
69407;(function (global, factory) {
69408    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
69409   0
69410}(this, (function (moment) { 'use strict';
69411
69412    //! moment.js locale configuration
69413
69414    function plural(word, num) {
69415        var forms = word.split('_');
69416        return num % 10 === 1 && num % 100 !== 11
69417            ? forms[0]
69418            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
69419              ? forms[1]
69420              : forms[2];
69421    }
69422    function relativeTimeWithPlural(number, withoutSuffix, key) {
69423        var format = {
69424            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
69425            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
69426            hh: 'час_часа_часов',
69427            dd: 'день_дня_дней',
69428            ww: 'неделя_недели_недель',
69429            MM: 'месяц_месяца_месяцев',
69430            yy: 'год_года_лет',
69431        };
69432        if (key === 'm') {
69433            return withoutSuffix ? 'минута' : 'минуту';
69434        } else {
69435            return number + ' ' + plural(format[key], +number);
69436        }
69437    }
69438    var monthsParse = [
69439        /^янв/i,
69440        /^фев/i,
69441        /^мар/i,
69442        /^апр/i,
69443        /^ма[йя]/i,
69444        /^июн/i,
69445        /^июл/i,
69446        /^авг/i,
69447        /^сен/i,
69448        /^окт/i,
69449        /^ноя/i,
69450        /^дек/i,
69451    ];
69452
69453    // http://new.gramota.ru/spravka/rules/139-prop : § 103
69454    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
69455    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
69456    var ru = moment.defineLocale('ru', {
69457        months: {
69458            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
69459                '_'
69460            ),
69461            standalone:
69462                'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
69463                    '_'
69464                ),
69465        },
69466        monthsShort: {
69467            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
69468            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
69469                '_'
69470            ),
69471            standalone:
69472                'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
69473                    '_'
69474                ),
69475        },
69476        weekdays: {
69477            standalone:
69478                'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
69479                    '_'
69480                ),
69481            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
69482                '_'
69483            ),
69484            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
69485        },
69486        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
69487        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
69488        monthsParse: monthsParse,
69489        longMonthsParse: monthsParse,
69490        shortMonthsParse: monthsParse,
69491
69492        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
69493        monthsRegex:
69494            /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
69495
69496        // копия предыдущего
69497        monthsShortRegex:
69498            /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
69499
69500        // полные названия с падежами
69501        monthsStrictRegex:
69502            /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
69503
69504        // Выражение, которое соответствует только сокращённым формам
69505        monthsShortStrictRegex:
69506            /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
69507        longDateFormat: {
69508            LT: 'H:mm',
69509            LTS: 'H:mm:ss',
69510            L: 'DD.MM.YYYY',
69511            LL: 'D MMMM YYYY г.',
69512            LLL: 'D MMMM YYYY г., H:mm',
69513            LLLL: 'dddd, D MMMM YYYY г., H:mm',
69514        },
69515        calendar: {
69516            sameDay: '[Сегодня, в] LT',
69517            nextDay: '[Завтра, в] LT',
69518            lastDay: '[Вчера, в] LT',
69519            nextWeek: function (now) {
69520                if (now.week() !== this.week()) {
69521                    switch (this.day()) {
69522                        case 0:
69523                            return '[В следующее] dddd, [в] LT';
69524                        case 1:
69525                        case 2:
69526                        case 4:
69527                            return '[В следующий] dddd, [в] LT';
69528                        case 3:
69529                        case 5:
69530                        case 6:
69531                            return '[В следующую] dddd, [в] LT';
69532                    }
69533                } else {
69534                    if (this.day() === 2) {
69535                        return '[Во] dddd, [в] LT';
69536                    } else {
69537                        return '[В] dddd, [в] LT';
69538                    }
69539                }
69540            },
69541            lastWeek: function (now) {
69542                if (now.week() !== this.week()) {
69543                    switch (this.day()) {
69544                        case 0:
69545                            return '[В прошлое] dddd, [в] LT';
69546                        case 1:
69547                        case 2:
69548                        case 4:
69549                            return '[В прошлый] dddd, [в] LT';
69550                        case 3:
69551                        case 5:
69552                        case 6:
69553                            return '[В прошлую] dddd, [в] LT';
69554                    }
69555                } else {
69556                    if (this.day() === 2) {
69557                        return '[Во] dddd, [в] LT';
69558                    } else {
69559                        return '[В] dddd, [в] LT';
69560                    }
69561                }
69562            },
69563            sameElse: 'L',
69564        },
69565        relativeTime: {
69566            future: 'через %s',
69567            past: '%s назад',
69568            s: 'несколько секунд',
69569            ss: relativeTimeWithPlural,
69570            m: relativeTimeWithPlural,
69571            mm: relativeTimeWithPlural,
69572            h: 'час',
69573            hh: relativeTimeWithPlural,
69574            d: 'день',
69575            dd: relativeTimeWithPlural,
69576            w: 'неделя',
69577            ww: relativeTimeWithPlural,
69578            M: 'месяц',
69579            MM: relativeTimeWithPlural,
69580            y: 'год',
69581            yy: relativeTimeWithPlural,
69582        },
69583        meridiemParse: /ночи|утра|дня|вечера/i,
69584        isPM: function (input) {
69585            return /^(дня|вечера)$/.test(input);
69586        },
69587        meridiem: function (hour, minute, isLower) {
69588            if (hour < 4) {
69589                return 'ночи';
69590            } else if (hour < 12) {
69591                return 'утра';
69592            } else if (hour < 17) {
69593                return 'дня';
69594            } else {
69595                return 'вечера';
69596            }
69597        },
69598        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
69599        ordinal: function (number, period) {
69600            switch (period) {
69601                case 'M':
69602                case 'd':
69603                case 'DDD':
69604                    return number + '-й';
69605                case 'D':
69606                    return number + '-го';
69607                case 'w':
69608                case 'W':
69609                    return number + '-я';
69610                default:
69611                    return number;
69612            }
69613        },
69614        week: {
69615            dow: 1, // Monday is the first day of the week.
69616            doy: 4, // The week that contains Jan 4th is the first week of the year.
69617        },
69618    });
69619
69620    return ru;
69621
69622})));
69623
69624
69625/***/ }),
69626
vendor: 2,938 bytes, lines 69627-69726
69627/***/ "./node_modules/moment/locale/sd.js":
69628/*!******************************************!*\
69629  !*** ./node_modules/moment/locale/sd.js ***!
69630  \******************************************/
69631/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
69632
69633//! moment.js locale configuration
69634//! locale : Sindhi [sd]
69635//! author : Narain Sagar : https://github.com/narainsagar
69636
69637;(function (global, factory) {
69638    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
69639   0
69640}(this, (function (moment) { 'use strict';
69641
69642    //! moment.js locale configuration
69643
69644    var months = [
69645            'جنوري',
69646            'فيبروري',
69647            'مارچ',
69648            'اپريل',
69649            'مئي',
69650            'جون',
69651            'جولاءِ',
69652            'آگسٽ',
69653            'سيپٽمبر',
69654            'آڪٽوبر',
69655            'نومبر',
69656            'ڊسمبر',
69657        ],
69658        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
69659
69660    var sd = moment.defineLocale('sd', {
69661        months: months,
69662        monthsShort: months,
69663        weekdays: days,
69664        weekdaysShort: days,
69665        weekdaysMin: days,
69666        longDateFormat: {
69667            LT: 'HH:mm',
69668            LTS: 'HH:mm:ss',
69669            L: 'DD/MM/YYYY',
69670            LL: 'D MMMM YYYY',
69671            LLL: 'D MMMM YYYY HH:mm',
69672            LLLL: 'dddd، D MMMM YYYY HH:mm',
69673        },
69674        meridiemParse: /صبح|شام/,
69675        isPM: function (input) {
69676            return 'شام' === input;
69677        },
69678        meridiem: function (hour, minute, isLower) {
69679            if (hour < 12) {
69680                return 'صبح';
69681            }
69682            return 'شام';
69683        },
69684        calendar: {
69685            sameDay: '[اڄ] LT',
69686            nextDay: '[سڀاڻي] LT',
69687            nextWeek: 'dddd [اڳين هفتي تي] LT',
69688            lastDay: '[ڪالهه] LT',
69689            lastWeek: '[گزريل هفتي] dddd [تي] LT',
69690            sameElse: 'L',
69691        },
69692        relativeTime: {
69693            future: '%s پوء',
69694            past: '%s اڳ',
69695            s: 'چند سيڪنڊ',
69696            ss: '%d سيڪنڊ',
69697            m: 'هڪ منٽ',
69698            mm: '%d منٽ',
69699            h: 'هڪ ڪلاڪ',
69700            hh: '%d ڪلاڪ',
69701            d: 'هڪ ڏينهن',
69702            dd: '%d ڏينهن',
69703            M: 'هڪ مهينو',
69704            MM: '%d مهينا',
69705            y: 'هڪ سال',
69706            yy: '%d سال',
69707        },
69708        preparse: function (string) {
69709            return string.replace(/،/g, ',');
69710        },
69711        postformat: function (string) {
69712            return string.replace(/,/g, '،');
69713        },
69714        week: {
69715            dow: 1, // Monday is the first day of the week.
69716            doy: 4, // The week that contains Jan 4th is the first week of the year.
69717        },
69718    });
69719
69720    return sd;
69721
69722})));
69723
69724
69725/***/ }),
69726
vendor: 2,542 bytes, lines 69727-69802
69727/***/ "./node_modules/moment/locale/se.js":
69728/*!******************************************!*\
69729  !*** ./node_modules/moment/locale/se.js ***!
69730  \******************************************/
69731/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
69732
69733//! moment.js locale configuration
69734//! locale : Northern Sami [se]
69735//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell
69736
69737;(function (global, factory) {
69738    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
69739   0
69740}(this, (function (moment) { 'use strict';
69741
69742    //! moment.js locale configuration
69743
69744    var se = moment.defineLocale('se', {
69745        months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(
69746            '_'
69747        ),
69748        monthsShort:
69749            'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
69750        weekdays:
69751            'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
69752                '_'
69753            ),
69754        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
69755        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
69756        longDateFormat: {
69757            LT: 'HH:mm',
69758            LTS: 'HH:mm:ss',
69759            L: 'DD.MM.YYYY',
69760            LL: 'MMMM D. [b.] YYYY',
69761            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
69762            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
69763        },
69764        calendar: {
69765            sameDay: '[otne ti] LT',
69766            nextDay: '[ihttin ti] LT',
69767            nextWeek: 'dddd [ti] LT',
69768            lastDay: '[ikte ti] LT',
69769            lastWeek: '[ovddit] dddd [ti] LT',
69770            sameElse: 'L',
69771        },
69772        relativeTime: {
69773            future: '%s geažes',
69774            past: 'maŋit %s',
69775            s: 'moadde sekunddat',
69776            ss: '%d sekunddat',
69777            m: 'okta minuhta',
69778            mm: '%d minuhtat',
69779            h: 'okta diimmu',
69780            hh: '%d diimmut',
69781            d: 'okta beaivi',
69782            dd: '%d beaivvit',
69783            M: 'okta mánnu',
69784            MM: '%d mánut',
69785            y: 'okta jahki',
69786            yy: '%d jagit',
69787        },
69788        dayOfMonthOrdinalParse: /\d{1,2}\./,
69789        ordinal: '%d.',
69790        week: {
69791            dow: 1, // Monday is the first day of the week.
69792            doy: 4, // The week that contains Jan 4th is the first week of the year.
69793        },
69794    });
69795
69796    return se;
69797
69798})));
69799
69800
69801/***/ }),
69802
vendor: 3,422 bytes, lines 69803-69890
69803/***/ "./node_modules/moment/locale/si.js":
69804/*!******************************************!*\
69805  !*** ./node_modules/moment/locale/si.js ***!
69806  \******************************************/
69807/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
69808
69809//! moment.js locale configuration
69810//! locale : Sinhalese [si]
69811//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
69812
69813;(function (global, factory) {
69814    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
69815   0
69816}(this, (function (moment) { 'use strict';
69817
69818    //! moment.js locale configuration
69819
69820    /*jshint -W100*/
69821    var si = moment.defineLocale('si', {
69822        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
69823            '_'
69824        ),
69825        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
69826            '_'
69827        ),
69828        weekdays:
69829            'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
69830                '_'
69831            ),
69832        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
69833        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
69834        weekdaysParseExact: true,
69835        longDateFormat: {
69836            LT: 'a h:mm',
69837            LTS: 'a h:mm:ss',
69838            L: 'YYYY/MM/DD',
69839            LL: 'YYYY MMMM D',
69840            LLL: 'YYYY MMMM D, a h:mm',
69841            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
69842        },
69843        calendar: {
69844            sameDay: '[අද] LT[ට]',
69845            nextDay: '[හෙට] LT[ට]',
69846            nextWeek: 'dddd LT[à¶§]',
69847            lastDay: '[ඊයේ] LT[ට]',
69848            lastWeek: '[පසුගිය] dddd LT[ට]',
69849            sameElse: 'L',
69850        },
69851        relativeTime: {
69852            future: '%sකින්',
69853            past: '%sකට පෙර',
69854            s: 'තත්පර කිහිපය',
69855            ss: 'තත්පර %d',
69856            m: 'මිනිත්තුව',
69857            mm: 'මිනිත්තු %d',
69858            h: 'පැය',
69859            hh: 'පැය %d',
69860            d: 'දිනය',
69861            dd: 'දින %d',
69862            M: 'මාසය',
69863            MM: 'මාස %d',
69864            y: 'වසර',
69865            yy: 'වසර %d',
69866        },
69867        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
69868        ordinal: function (number) {
69869            return number + ' වැනි';
69870        },
69871        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
69872        isPM: function (input) {
69873            return input === 'ප.ව.' || input === 'පස් වරු';
69874        },
69875        meridiem: function (hours, minutes, isLower) {
69876            if (hours > 11) {
69877                return isLower ? 'ප.ව.' : 'පස් වරු';
69878            } else {
69879                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
69880            }
69881        },
69882    });
69883
69884    return si;
69885
69886})));
69887
69888
69889/***/ }),
69890
vendor: 6,210 bytes, lines 69891-70054
69891/***/ "./node_modules/moment/locale/sk.js":
69892/*!******************************************!*\
69893  !*** ./node_modules/moment/locale/sk.js ***!
69894  \******************************************/
69895/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
69896
69897//! moment.js locale configuration
69898//! locale : Slovak [sk]
69899//! author : Martin Minka : https://github.com/k2s
69900//! based on work of petrbela : https://github.com/petrbela
69901
69902;(function (global, factory) {
69903    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
69904   0
69905}(this, (function (moment) { 'use strict';
69906
69907    //! moment.js locale configuration
69908
69909    var months =
69910            'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
69911                '_'
69912            ),
69913        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
69914    function plural(n) {
69915        return n > 1 && n < 5;
69916    }
69917    function translate(number, withoutSuffix, key, isFuture) {
69918        var result = number + ' ';
69919        switch (key) {
69920            case 's': // a few seconds / in a few seconds / a few seconds ago
69921                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
69922            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
69923                if (withoutSuffix || isFuture) {
69924                    return result + (plural(number) ? 'sekundy' : 'sekúnd');
69925                } else {
69926                    return result + 'sekundami';
69927                }
69928            case 'm': // a minute / in a minute / a minute ago
69929                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
69930            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
69931                if (withoutSuffix || isFuture) {
69932                    return result + (plural(number) ? 'minúty' : 'minút');
69933                } else {
69934                    return result + 'minútami';
69935                }
69936            case 'h': // an hour / in an hour / an hour ago
69937                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
69938            case 'hh': // 9 hours / in 9 hours / 9 hours ago
69939                if (withoutSuffix || isFuture) {
69940                    return result + (plural(number) ? 'hodiny' : 'hodín');
69941                } else {
69942                    return result + 'hodinami';
69943                }
69944            case 'd': // a day / in a day / a day ago
69945                return withoutSuffix || isFuture ? 'deň' : 'dňom';
69946            case 'dd': // 9 days / in 9 days / 9 days ago
69947                if (withoutSuffix || isFuture) {
69948                    return result + (plural(number) ? 'dni' : 'dní');
69949                } else {
69950                    return result + 'dňami';
69951                }
69952            case 'M': // a month / in a month / a month ago
69953                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
69954            case 'MM': // 9 months / in 9 months / 9 months ago
69955                if (withoutSuffix || isFuture) {
69956                    return result + (plural(number) ? 'mesiace' : 'mesiacov');
69957                } else {
69958                    return result + 'mesiacmi';
69959                }
69960            case 'y': // a year / in a year / a year ago
69961                return withoutSuffix || isFuture ? 'rok' : 'rokom';
69962            case 'yy': // 9 years / in 9 years / 9 years ago
69963                if (withoutSuffix || isFuture) {
69964                    return result + (plural(number) ? 'roky' : 'rokov');
69965                } else {
69966                    return result + 'rokmi';
69967                }
69968        }
69969    }
69970
69971    var sk = moment.defineLocale('sk', {
69972        months: months,
69973        monthsShort: monthsShort,
69974        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
69975        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
69976        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
69977        longDateFormat: {
69978            LT: 'H:mm',
69979            LTS: 'H:mm:ss',
69980            L: 'DD.MM.YYYY',
69981            LL: 'D. MMMM YYYY',
69982            LLL: 'D. MMMM YYYY H:mm',
69983            LLLL: 'dddd D. MMMM YYYY H:mm',
69984        },
69985        calendar: {
69986            sameDay: '[dnes o] LT',
69987            nextDay: '[zajtra o] LT',
69988            nextWeek: function () {
69989                switch (this.day()) {
69990                    case 0:
69991                        return '[v nedeľu o] LT';
69992                    case 1:
69993                    case 2:
69994                        return '[v] dddd [o] LT';
69995                    case 3:
69996                        return '[v stredu o] LT';
69997                    case 4:
69998                        return '[vo štvrtok o] LT';
69999                    case 5:
70000                        return '[v piatok o] LT';
70001                    case 6:
70002                        return '[v sobotu o] LT';
70003                }
70004            },
70005            lastDay: '[včera o] LT',
70006            lastWeek: function () {
70007                switch (this.day()) {
70008                    case 0:
70009                        return '[minulú nedeľu o] LT';
70010                    case 1:
70011                    case 2:
70012                        return '[minulý] dddd [o] LT';
70013                    case 3:
70014                        return '[minulú stredu o] LT';
70015                    case 4:
70016                    case 5:
70017                        return '[minulý] dddd [o] LT';
70018                    case 6:
70019                        return '[minulú sobotu o] LT';
70020                }
70021            },
70022            sameElse: 'L',
70023        },
70024        relativeTime: {
70025            future: 'za %s',
70026            past: 'pred %s',
70027            s: translate,
70028            ss: translate,
70029            m: translate,
70030            mm: translate,
70031            h: translate,
70032            hh: translate,
70033            d: translate,
70034            dd: translate,
70035            M: translate,
70036            MM: translate,
70037            y: translate,
70038            yy: translate,
70039        },
70040        dayOfMonthOrdinalParse: /\d{1,2}\./,
70041        ordinal: '%d.',
70042        week: {
70043            dow: 1, // Monday is the first day of the week.
70044            doy: 4, // The week that contains Jan 4th is the first week of the year.
70045        },
70046    });
70047
70048    return sk;
70049
70050})));
70051
70052
70053/***/ }),
70054
vendor: 7,256 bytes, lines 70055-70244
70055/***/ "./node_modules/moment/locale/sl.js":
70056/*!******************************************!*\
70057  !*** ./node_modules/moment/locale/sl.js ***!
70058  \******************************************/
70059/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
70060
70061//! moment.js locale configuration
70062//! locale : Slovenian [sl]
70063//! author : Robert Sedovšek : https://github.com/sedovsek
70064
70065;(function (global, factory) {
70066    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
70067   0
70068}(this, (function (moment) { 'use strict';
70069
70070    //! moment.js locale configuration
70071
70072    function processRelativeTime(number, withoutSuffix, key, isFuture) {
70073        var result = number + ' ';
70074        switch (key) {
70075            case 's':
70076                return withoutSuffix || isFuture
70077                    ? 'nekaj sekund'
70078                    : 'nekaj sekundami';
70079            case 'ss':
70080                if (number === 1) {
70081                    result += withoutSuffix ? 'sekundo' : 'sekundi';
70082                } else if (number === 2) {
70083                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
70084                } else if (number < 5) {
70085                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
70086                } else {
70087                    result += 'sekund';
70088                }
70089                return result;
70090            case 'm':
70091                return withoutSuffix ? 'ena minuta' : 'eno minuto';
70092            case 'mm':
70093                if (number === 1) {
70094                    result += withoutSuffix ? 'minuta' : 'minuto';
70095                } else if (number === 2) {
70096                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
70097                } else if (number < 5) {
70098                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
70099                } else {
70100                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
70101                }
70102                return result;
70103            case 'h':
70104                return withoutSuffix ? 'ena ura' : 'eno uro';
70105            case 'hh':
70106                if (number === 1) {
70107                    result += withoutSuffix ? 'ura' : 'uro';
70108                } else if (number === 2) {
70109                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
70110                } else if (number < 5) {
70111                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
70112                } else {
70113                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
70114                }
70115                return result;
70116            case 'd':
70117                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
70118            case 'dd':
70119                if (number === 1) {
70120                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
70121                } else if (number === 2) {
70122                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
70123                } else {
70124                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
70125                }
70126                return result;
70127            case 'M':
70128                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
70129            case 'MM':
70130                if (number === 1) {
70131                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
70132                } else if (number === 2) {
70133                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
70134                } else if (number < 5) {
70135                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
70136                } else {
70137                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
70138                }
70139                return result;
70140            case 'y':
70141                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
70142            case 'yy':
70143                if (number === 1) {
70144                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
70145                } else if (number === 2) {
70146                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
70147                } else if (number < 5) {
70148                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
70149                } else {
70150                    result += withoutSuffix || isFuture ? 'let' : 'leti';
70151                }
70152                return result;
70153        }
70154    }
70155
70156    var sl = moment.defineLocale('sl', {
70157        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
70158            '_'
70159        ),
70160        monthsShort:
70161            'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
70162                '_'
70163            ),
70164        monthsParseExact: true,
70165        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
70166        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
70167        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
70168        weekdaysParseExact: true,
70169        longDateFormat: {
70170            LT: 'H:mm',
70171            LTS: 'H:mm:ss',
70172            L: 'DD. MM. YYYY',
70173            LL: 'D. MMMM YYYY',
70174            LLL: 'D. MMMM YYYY H:mm',
70175            LLLL: 'dddd, D. MMMM YYYY H:mm',
70176        },
70177        calendar: {
70178            sameDay: '[danes ob] LT',
70179            nextDay: '[jutri ob] LT',
70180
70181            nextWeek: function () {
70182                switch (this.day()) {
70183                    case 0:
70184                        return '[v] [nedeljo] [ob] LT';
70185                    case 3:
70186                        return '[v] [sredo] [ob] LT';
70187                    case 6:
70188                        return '[v] [soboto] [ob] LT';
70189                    case 1:
70190                    case 2:
70191                    case 4:
70192                    case 5:
70193                        return '[v] dddd [ob] LT';
70194                }
70195            },
70196            lastDay: '[včeraj ob] LT',
70197            lastWeek: function () {
70198                switch (this.day()) {
70199                    case 0:
70200                        return '[prejšnjo] [nedeljo] [ob] LT';
70201                    case 3:
70202                        return '[prejšnjo] [sredo] [ob] LT';
70203                    case 6:
70204                        return '[prejšnjo] [soboto] [ob] LT';
70205                    case 1:
70206                    case 2:
70207                    case 4:
70208                    case 5:
70209                        return '[prejšnji] dddd [ob] LT';
70210                }
70211            },
70212            sameElse: 'L',
70213        },
70214        relativeTime: {
70215            future: 'čez %s',
70216            past: 'pred %s',
70217            s: processRelativeTime,
70218            ss: processRelativeTime,
70219            m: processRelativeTime,
70220            mm: processRelativeTime,
70221            h: processRelativeTime,
70222            hh: processRelativeTime,
70223            d: processRelativeTime,
70224            dd: processRelativeTime,
70225            M: processRelativeTime,
70226            MM: processRelativeTime,
70227            y: processRelativeTime,
70228            yy: processRelativeTime,
70229        },
70230        dayOfMonthOrdinalParse: /\d{1,2}\./,
70231        ordinal: '%d.',
70232        week: {
70233            dow: 1, // Monday is the first day of the week.
70234            doy: 7, // The week that contains Jan 7th is the first week of the year.
70235        },
70236    });
70237
70238    return sl;
70239
70240})));
70241
70242
70243/***/ }),
70244
vendor: 2,704 bytes, lines 70245-70328
70245/***/ "./node_modules/moment/locale/sq.js":
70246/*!******************************************!*\
70247  !*** ./node_modules/moment/locale/sq.js ***!
70248  \******************************************/
70249/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
70250
70251//! moment.js locale configuration
70252//! locale : Albanian [sq]
70253//! author : Flakërim Ismani : https://github.com/flakerimi
70254//! author : Menelion Elensúle : https://github.com/Oire
70255//! author : Oerd Cukalla : https://github.com/oerd
70256
70257;(function (global, factory) {
70258    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
70259   0
70260}(this, (function (moment) { 'use strict';
70261
70262    //! moment.js locale configuration
70263
70264    var sq = moment.defineLocale('sq', {
70265        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
70266            '_'
70267        ),
70268        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
70269        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
70270            '_'
70271        ),
70272        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
70273        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
70274        weekdaysParseExact: true,
70275        meridiemParse: /PD|MD/,
70276        isPM: function (input) {
70277            return input.charAt(0) === 'M';
70278        },
70279        meridiem: function (hours, minutes, isLower) {
70280            return hours < 12 ? 'PD' : 'MD';
70281        },
70282        longDateFormat: {
70283            LT: 'HH:mm',
70284            LTS: 'HH:mm:ss',
70285            L: 'DD/MM/YYYY',
70286            LL: 'D MMMM YYYY',
70287            LLL: 'D MMMM YYYY HH:mm',
70288            LLLL: 'dddd, D MMMM YYYY HH:mm',
70289        },
70290        calendar: {
70291            sameDay: '[Sot në] LT',
70292            nextDay: '[Nesër në] LT',
70293            nextWeek: 'dddd [në] LT',
70294            lastDay: '[Dje në] LT',
70295            lastWeek: 'dddd [e kaluar në] LT',
70296            sameElse: 'L',
70297        },
70298        relativeTime: {
70299            future: 'në %s',
70300            past: '%s më parë',
70301            s: 'disa sekonda',
70302            ss: '%d sekonda',
70303            m: 'një minutë',
70304            mm: '%d minuta',
70305            h: 'një orë',
70306            hh: '%d orë',
70307            d: 'një ditë',
70308            dd: '%d ditë',
70309            M: 'një muaj',
70310            MM: '%d muaj',
70311            y: 'një vit',
70312            yy: '%d vite',
70313        },
70314        dayOfMonthOrdinalParse: /\d{1,2}\./,
70315        ordinal: '%d.',
70316        week: {
70317            dow: 1, // Monday is the first day of the week.
70318            doy: 4, // The week that contains Jan 4th is the first week of the year.
70319        },
70320    });
70321
70322    return sq;
70323
70324})));
70325
70326
70327/***/ }),
70328
vendor: 5,743 bytes, lines 70329-70474
70329/***/ "./node_modules/moment/locale/sr-cyrl.js":
70330/*!***********************************************!*\
70331  !*** ./node_modules/moment/locale/sr-cyrl.js ***!
70332  \***********************************************/
70333/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
70334
70335//! moment.js locale configuration
70336//! locale : Serbian Cyrillic [sr-cyrl]
70337//! author : Milan Janačković<[email protected]> : https://github.com/milan-j
70338//! author : Stefan Crnjaković <[email protected]> : https://github.com/crnjakovic
70339
70340;(function (global, factory) {
70341    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
70342   0
70343}(this, (function (moment) { 'use strict';
70344
70345    //! moment.js locale configuration
70346
70347    var translator = {
70348        words: {
70349            //Different grammatical cases
70350            ss: ['секунда', 'секунде', 'секунди'],
70351            m: ['један минут', 'једног минута'],
70352            mm: ['минут', 'минута', 'минута'],
70353            h: ['један сат', 'једног сата'],
70354            hh: ['сат', 'сата', 'сати'],
70355            d: ['један дан', 'једног дана'],
70356            dd: ['дан', 'дана', 'дана'],
70357            M: ['један месец', 'једног месеца'],
70358            MM: ['месец', 'месеца', 'месеци'],
70359            y: ['једну годину', 'једне године'],
70360            yy: ['годину', 'године', 'година'],
70361        },
70362        correctGrammaticalCase: function (number, wordKey) {
70363            if (
70364                number % 10 >= 1 &&
70365                number % 10 <= 4 &&
70366                (number % 100 < 10 || number % 100 >= 20)
70367            ) {
70368                return number % 10 === 1 ? wordKey[0] : wordKey[1];
70369            }
70370            return wordKey[2];
70371        },
70372        translate: function (number, withoutSuffix, key, isFuture) {
70373            var wordKey = translator.words[key],
70374                word;
70375
70376            if (key.length === 1) {
70377                // Nominativ
70378                if (key === 'y' && withoutSuffix) return 'једна година';
70379                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
70380            }
70381
70382            word = translator.correctGrammaticalCase(number, wordKey);
70383            // Nominativ
70384            if (key === 'yy' && withoutSuffix && word === 'годину') {
70385                return number + ' година';
70386            }
70387
70388            return number + ' ' + word;
70389        },
70390    };
70391
70392    var srCyrl = moment.defineLocale('sr-cyrl', {
70393        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(
70394            '_'
70395        ),
70396        monthsShort:
70397            'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
70398        monthsParseExact: true,
70399        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
70400        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
70401        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
70402        weekdaysParseExact: true,
70403        longDateFormat: {
70404            LT: 'H:mm',
70405            LTS: 'H:mm:ss',
70406            L: 'D. M. YYYY.',
70407            LL: 'D. MMMM YYYY.',
70408            LLL: 'D. MMMM YYYY. H:mm',
70409            LLLL: 'dddd, D. MMMM YYYY. H:mm',
70410        },
70411        calendar: {
70412            sameDay: '[данас у] LT',
70413            nextDay: '[сутра у] LT',
70414            nextWeek: function () {
70415                switch (this.day()) {
70416                    case 0:
70417                        return '[у] [недељу] [у] LT';
70418                    case 3:
70419                        return '[у] [среду] [у] LT';
70420                    case 6:
70421                        return '[у] [суботу] [у] LT';
70422                    case 1:
70423                    case 2:
70424                    case 4:
70425                    case 5:
70426                        return '[у] dddd [у] LT';
70427                }
70428            },
70429            lastDay: '[јуче у] LT',
70430            lastWeek: function () {
70431                var lastWeekDays = [
70432                    '[прошле] [недеље] [у] LT',
70433                    '[прошлог] [понедељка] [у] LT',
70434                    '[прошлог] [уторка] [у] LT',
70435                    '[прошле] [среде] [у] LT',
70436                    '[прошлог] [четвртка] [у] LT',
70437                    '[прошлог] [петка] [у] LT',
70438                    '[прошле] [суботе] [у] LT',
70439                ];
70440                return lastWeekDays[this.day()];
70441            },
70442            sameElse: 'L',
70443        },
70444        relativeTime: {
70445            future: 'за %s',
70446            past: 'пре %s',
70447            s: 'неколико секунди',
70448            ss: translator.translate,
70449            m: translator.translate,
70450            mm: translator.translate,
70451            h: translator.translate,
70452            hh: translator.translate,
70453            d: translator.translate,
70454            dd: translator.translate,
70455            M: translator.translate,
70456            MM: translator.translate,
70457            y: translator.translate,
70458            yy: translator.translate,
70459        },
70460        dayOfMonthOrdinalParse: /\d{1,2}\./,
70461        ordinal: '%d.',
70462        week: {
70463            dow: 1, // Monday is the first day of the week.
70464            doy: 7, // The week that contains Jan 1st is the first week of the year.
70465        },
70466    });
70467
70468    return srCyrl;
70469
70470})));
70471
70472
70473/***/ }),
70474
vendor: 5,170 bytes, lines 70475-70622
70475/***/ "./node_modules/moment/locale/sr.js":
70476/*!******************************************!*\
70477  !*** ./node_modules/moment/locale/sr.js ***!
70478  \******************************************/
70479/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
70480
70481//! moment.js locale configuration
70482//! locale : Serbian [sr]
70483//! author : Milan Janačković<[email protected]> : https://github.com/milan-j
70484//! author : Stefan Crnjaković <[email protected]> : https://github.com/crnjakovic
70485
70486;(function (global, factory) {
70487    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
70488   0
70489}(this, (function (moment) { 'use strict';
70490
70491    //! moment.js locale configuration
70492
70493    var translator = {
70494        words: {
70495            //Different grammatical cases
70496            ss: ['sekunda', 'sekunde', 'sekundi'],
70497            m: ['jedan minut', 'jednog minuta'],
70498            mm: ['minut', 'minuta', 'minuta'],
70499            h: ['jedan sat', 'jednog sata'],
70500            hh: ['sat', 'sata', 'sati'],
70501            d: ['jedan dan', 'jednog dana'],
70502            dd: ['dan', 'dana', 'dana'],
70503            M: ['jedan mesec', 'jednog meseca'],
70504            MM: ['mesec', 'meseca', 'meseci'],
70505            y: ['jednu godinu', 'jedne godine'],
70506            yy: ['godinu', 'godine', 'godina'],
70507        },
70508        correctGrammaticalCase: function (number, wordKey) {
70509            if (
70510                number % 10 >= 1 &&
70511                number % 10 <= 4 &&
70512                (number % 100 < 10 || number % 100 >= 20)
70513            ) {
70514                return number % 10 === 1 ? wordKey[0] : wordKey[1];
70515            }
70516            return wordKey[2];
70517        },
70518        translate: function (number, withoutSuffix, key, isFuture) {
70519            var wordKey = translator.words[key],
70520                word;
70521
70522            if (key.length === 1) {
70523                // Nominativ
70524                if (key === 'y' && withoutSuffix) return 'jedna godina';
70525                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
70526            }
70527
70528            word = translator.correctGrammaticalCase(number, wordKey);
70529            // Nominativ
70530            if (key === 'yy' && withoutSuffix && word === 'godinu') {
70531                return number + ' godina';
70532            }
70533
70534            return number + ' ' + word;
70535        },
70536    };
70537
70538    var sr = moment.defineLocale('sr', {
70539        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
70540            '_'
70541        ),
70542        monthsShort:
70543            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
70544        monthsParseExact: true,
70545        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
70546            '_'
70547        ),
70548        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
70549        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
70550        weekdaysParseExact: true,
70551        longDateFormat: {
70552            LT: 'H:mm',
70553            LTS: 'H:mm:ss',
70554            L: 'D. M. YYYY.',
70555            LL: 'D. MMMM YYYY.',
70556            LLL: 'D. MMMM YYYY. H:mm',
70557            LLLL: 'dddd, D. MMMM YYYY. H:mm',
70558        },
70559        calendar: {
70560            sameDay: '[danas u] LT',
70561            nextDay: '[sutra u] LT',
70562            nextWeek: function () {
70563                switch (this.day()) {
70564                    case 0:
70565                        return '[u] [nedelju] [u] LT';
70566                    case 3:
70567                        return '[u] [sredu] [u] LT';
70568                    case 6:
70569                        return '[u] [subotu] [u] LT';
70570                    case 1:
70571                    case 2:
70572                    case 4:
70573                    case 5:
70574                        return '[u] dddd [u] LT';
70575                }
70576            },
70577            lastDay: '[juče u] LT',
70578            lastWeek: function () {
70579                var lastWeekDays = [
70580                    '[prošle] [nedelje] [u] LT',
70581                    '[prošlog] [ponedeljka] [u] LT',
70582                    '[prošlog] [utorka] [u] LT',
70583                    '[prošle] [srede] [u] LT',
70584                    '[prošlog] [četvrtka] [u] LT',
70585                    '[prošlog] [petka] [u] LT',
70586                    '[prošle] [subote] [u] LT',
70587                ];
70588                return lastWeekDays[this.day()];
70589            },
70590            sameElse: 'L',
70591        },
70592        relativeTime: {
70593            future: 'za %s',
70594            past: 'pre %s',
70595            s: 'nekoliko sekundi',
70596            ss: translator.translate,
70597            m: translator.translate,
70598            mm: translator.translate,
70599            h: translator.translate,
70600            hh: translator.translate,
70601            d: translator.translate,
70602            dd: translator.translate,
70603            M: translator.translate,
70604            MM: translator.translate,
70605            y: translator.translate,
70606            yy: translator.translate,
70607        },
70608        dayOfMonthOrdinalParse: /\d{1,2}\./,
70609        ordinal: '%d.',
70610        week: {
70611            dow: 1, // Monday is the first day of the week.
70612            doy: 7, // The week that contains Jan 7th is the first week of the year.
70613        },
70614    });
70615
70616    return sr;
70617
70618})));
70619
70620
70621/***/ }),
70622
vendor: 3,373 bytes, lines 70623-70725
70623/***/ "./node_modules/moment/locale/ss.js":
70624/*!******************************************!*\
70625  !*** ./node_modules/moment/locale/ss.js ***!
70626  \******************************************/
70627/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
70628
70629//! moment.js locale configuration
70630//! locale : siSwati [ss]
70631//! author : Nicolai Davies<[email protected]> : https://github.com/nicolaidavies
70632
70633;(function (global, factory) {
70634    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
70635   0
70636}(this, (function (moment) { 'use strict';
70637
70638    //! moment.js locale configuration
70639
70640    var ss = moment.defineLocale('ss', {
70641        months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
70642            '_'
70643        ),
70644        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
70645        weekdays:
70646            'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
70647                '_'
70648            ),
70649        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
70650        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
70651        weekdaysParseExact: true,
70652        longDateFormat: {
70653            LT: 'h:mm A',
70654            LTS: 'h:mm:ss A',
70655            L: 'DD/MM/YYYY',
70656            LL: 'D MMMM YYYY',
70657            LLL: 'D MMMM YYYY h:mm A',
70658            LLLL: 'dddd, D MMMM YYYY h:mm A',
70659        },
70660        calendar: {
70661            sameDay: '[Namuhla nga] LT',
70662            nextDay: '[Kusasa nga] LT',
70663            nextWeek: 'dddd [nga] LT',
70664            lastDay: '[Itolo nga] LT',
70665            lastWeek: 'dddd [leliphelile] [nga] LT',
70666            sameElse: 'L',
70667        },
70668        relativeTime: {
70669            future: 'nga %s',
70670            past: 'wenteka nga %s',
70671            s: 'emizuzwana lomcane',
70672            ss: '%d mzuzwana',
70673            m: 'umzuzu',
70674            mm: '%d emizuzu',
70675            h: 'lihora',
70676            hh: '%d emahora',
70677            d: 'lilanga',
70678            dd: '%d emalanga',
70679            M: 'inyanga',
70680            MM: '%d tinyanga',
70681            y: 'umnyaka',
70682            yy: '%d iminyaka',
70683        },
70684        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
70685        meridiem: function (hours, minutes, isLower) {
70686            if (hours < 11) {
70687                return 'ekuseni';
70688            } else if (hours < 15) {
70689                return 'emini';
70690            } else if (hours < 19) {
70691                return 'entsambama';
70692            } else {
70693                return 'ebusuku';
70694            }
70695        },
70696        meridiemHour: function (hour, meridiem) {
70697            if (hour === 12) {
70698                hour = 0;
70699            }
70700            if (meridiem === 'ekuseni') {
70701                return hour;
70702            } else if (meridiem === 'emini') {
70703                return hour >= 11 ? hour : hour + 12;
70704            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
70705                if (hour === 0) {
70706                    return 0;
70707                }
70708                return hour + 12;
70709            }
70710        },
70711        dayOfMonthOrdinalParse: /\d{1,2}/,
70712        ordinal: '%d',
70713        week: {
70714            dow: 1, // Monday is the first day of the week.
70715            doy: 4, // The week that contains Jan 4th is the first week of the year.
70716        },
70717    });
70718
70719    return ss;
70720
70721})));
70722
70723
70724/***/ }),
70725
vendor: 2,827 bytes, lines 70726-70812
70726/***/ "./node_modules/moment/locale/sv.js":
70727/*!******************************************!*\
70728  !*** ./node_modules/moment/locale/sv.js ***!
70729  \******************************************/
70730/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
70731
70732//! moment.js locale configuration
70733//! locale : Swedish [sv]
70734//! author : Jens Alm : https://github.com/ulmus
70735
70736;(function (global, factory) {
70737    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
70738   0
70739}(this, (function (moment) { 'use strict';
70740
70741    //! moment.js locale configuration
70742
70743    var sv = moment.defineLocale('sv', {
70744        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
70745            '_'
70746        ),
70747        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
70748        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
70749        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
70750        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
70751        longDateFormat: {
70752            LT: 'HH:mm',
70753            LTS: 'HH:mm:ss',
70754            L: 'YYYY-MM-DD',
70755            LL: 'D MMMM YYYY',
70756            LLL: 'D MMMM YYYY [kl.] HH:mm',
70757            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
70758            lll: 'D MMM YYYY HH:mm',
70759            llll: 'ddd D MMM YYYY HH:mm',
70760        },
70761        calendar: {
70762            sameDay: '[Idag] LT',
70763            nextDay: '[Imorgon] LT',
70764            lastDay: '[Igår] LT',
70765            nextWeek: '[PÃ¥] dddd LT',
70766            lastWeek: '[I] dddd[s] LT',
70767            sameElse: 'L',
70768        },
70769        relativeTime: {
70770            future: 'om %s',
70771            past: 'för %s sedan',
70772            s: 'några sekunder',
70773            ss: '%d sekunder',
70774            m: 'en minut',
70775            mm: '%d minuter',
70776            h: 'en timme',
70777            hh: '%d timmar',
70778            d: 'en dag',
70779            dd: '%d dagar',
70780            M: 'en månad',
70781            MM: '%d månader',
70782            y: 'ett år',
70783            yy: '%d år',
70784        },
70785        dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
70786        ordinal: function (number) {
70787            var b = number % 10,
70788                output =
70789                    ~~((number % 100) / 10) === 1
70790                        ? ':e'
70791                        : b === 1
70792                          ? ':a'
70793                          : b === 2
70794                            ? ':a'
70795                            : b === 3
70796                              ? ':e'
70797                              : ':e';
70798            return number + output;
70799        },
70800        week: {
70801            dow: 1, // Monday is the first day of the week.
70802            doy: 4, // The week that contains Jan 4th is the first week of the year.
70803        },
70804    });
70805
70806    return sv;
70807
70808})));
70809
70810
70811/***/ }),
70812
vendor: 2,336 bytes, lines 70813-70886
70813/***/ "./node_modules/moment/locale/sw.js":
70814/*!******************************************!*\
70815  !*** ./node_modules/moment/locale/sw.js ***!
70816  \******************************************/
70817/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
70818
70819//! moment.js locale configuration
70820//! locale : Swahili [sw]
70821//! author : Fahad Kassim : https://github.com/fadsel
70822
70823;(function (global, factory) {
70824    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
70825   0
70826}(this, (function (moment) { 'use strict';
70827
70828    //! moment.js locale configuration
70829
70830    var sw = moment.defineLocale('sw', {
70831        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
70832            '_'
70833        ),
70834        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
70835        weekdays:
70836            'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
70837                '_'
70838            ),
70839        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
70840        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
70841        weekdaysParseExact: true,
70842        longDateFormat: {
70843            LT: 'hh:mm A',
70844            LTS: 'HH:mm:ss',
70845            L: 'DD.MM.YYYY',
70846            LL: 'D MMMM YYYY',
70847            LLL: 'D MMMM YYYY HH:mm',
70848            LLLL: 'dddd, D MMMM YYYY HH:mm',
70849        },
70850        calendar: {
70851            sameDay: '[leo saa] LT',
70852            nextDay: '[kesho saa] LT',
70853            nextWeek: '[wiki ijayo] dddd [saat] LT',
70854            lastDay: '[jana] LT',
70855            lastWeek: '[wiki iliyopita] dddd [saat] LT',
70856            sameElse: 'L',
70857        },
70858        relativeTime: {
70859            future: '%s baadaye',
70860            past: 'tokea %s',
70861            s: 'hivi punde',
70862            ss: 'sekunde %d',
70863            m: 'dakika moja',
70864            mm: 'dakika %d',
70865            h: 'saa limoja',
70866            hh: 'masaa %d',
70867            d: 'siku moja',
70868            dd: 'siku %d',
70869            M: 'mwezi mmoja',
70870            MM: 'miezi %d',
70871            y: 'mwaka mmoja',
70872            yy: 'miaka %d',
70873        },
70874        week: {
70875            dow: 1, // Monday is the first day of the week.
70876            doy: 7, // The week that contains Jan 7th is the first week of the year.
70877        },
70878    });
70879
70880    return sw;
70881
70882})));
70883
70884
70885/***/ }),
70886
vendor: 5,785 bytes, lines 70887-71036
70887/***/ "./node_modules/moment/locale/ta.js":
70888/*!******************************************!*\
70889  !*** ./node_modules/moment/locale/ta.js ***!
70890  \******************************************/
70891/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
70892
70893//! moment.js locale configuration
70894//! locale : Tamil [ta]
70895//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
70896
70897;(function (global, factory) {
70898    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
70899   0
70900}(this, (function (moment) { 'use strict';
70901
70902    //! moment.js locale configuration
70903
70904    var symbolMap = {
70905            1: '௧',
70906            2: '௨',
70907            3: '௩',
70908            4: '௪',
70909            5: '௫',
70910            6: '௬',
70911            7: '௭',
70912            8: '௮',
70913            9: '௯',
70914            0: '௦',
70915        },
70916        numberMap = {
70917            '௧': '1',
70918            '௨': '2',
70919            '௩': '3',
70920            '௪': '4',
70921            '௫': '5',
70922            '௬': '6',
70923            '௭': '7',
70924            '௮': '8',
70925            '௯': '9',
70926            '௦': '0',
70927        };
70928
70929    var ta = moment.defineLocale('ta', {
70930        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
70931            '_'
70932        ),
70933        monthsShort:
70934            'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
70935                '_'
70936            ),
70937        weekdays:
70938            'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
70939                '_'
70940            ),
70941        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
70942            '_'
70943        ),
70944        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
70945        longDateFormat: {
70946            LT: 'HH:mm',
70947            LTS: 'HH:mm:ss',
70948            L: 'DD/MM/YYYY',
70949            LL: 'D MMMM YYYY',
70950            LLL: 'D MMMM YYYY, HH:mm',
70951            LLLL: 'dddd, D MMMM YYYY, HH:mm',
70952        },
70953        calendar: {
70954            sameDay: '[இன்று] LT',
70955            nextDay: '[நாளை] LT',
70956            nextWeek: 'dddd, LT',
70957            lastDay: '[நேற்று] LT',
70958            lastWeek: '[கடந்த வாரம்] dddd, LT',
70959            sameElse: 'L',
70960        },
70961        relativeTime: {
70962            future: '%s இல்',
70963            past: '%s முன்',
70964            s: 'ஒரு சில விநாடிகள்',
70965            ss: '%d விநாடிகள்',
70966            m: 'ஒரு நிமிடம்',
70967            mm: '%d நிமிடங்கள்',
70968            h: 'ஒரு மணி நேரம்',
70969            hh: '%d மணி நேரம்',
70970            d: 'ஒரு நாள்',
70971            dd: '%d நாட்கள்',
70972            M: 'ஒரு மாதம்',
70973            MM: '%d மாதங்கள்',
70974            y: 'ஒரு வருடம்',
70975            yy: '%d ஆண்டுகள்',
70976        },
70977        dayOfMonthOrdinalParse: /\d{1,2}வது/,
70978        ordinal: function (number) {
70979            return number + 'வது';
70980        },
70981        preparse: function (string) {
70982            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
70983                return numberMap[match];
70984            });
70985        },
70986        postformat: function (string) {
70987            return string.replace(/\d/g, function (match) {
70988                return symbolMap[match];
70989            });
70990        },
70991        // refer http://ta.wikipedia.org/s/1er1
70992        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
70993        meridiem: function (hour, minute, isLower) {
70994            if (hour < 2) {
70995                return ' யாமம்';
70996            } else if (hour < 6) {
70997                return ' வைகறை'; // வைகறை
70998            } else if (hour < 10) {
70999                return ' காலை'; // காலை
71000            } else if (hour < 14) {
71001                return ' நண்பகல்'; // நண்பகல்
71002            } else if (hour < 18) {
71003                return ' எற்பாடு'; // எற்பாடு
71004            } else if (hour < 22) {
71005                return ' மாலை'; // மாலை
71006            } else {
71007                return ' யாமம்';
71008            }
71009        },
71010        meridiemHour: function (hour, meridiem) {
71011            if (hour === 12) {
71012                hour = 0;
71013            }
71014            if (meridiem === 'யாமம்') {
71015                return hour < 2 ? hour : hour + 12;
71016            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
71017                return hour;
71018            } else if (meridiem === 'நண்பகல்') {
71019                return hour >= 10 ? hour : hour + 12;
71020            } else {
71021                return hour + 12;
71022            }
71023        },
71024        week: {
71025            dow: 0, // Sunday is the first day of the week.
71026            doy: 6, // The week that contains Jan 6th is the first week of the year.
71027        },
71028    });
71029
71030    return ta;
71031
71032})));
71033
71034
71035/***/ }),
71036
vendor: 4,209 bytes, lines 71037-71143
71037/***/ "./node_modules/moment/locale/te.js":
71038/*!******************************************!*\
71039  !*** ./node_modules/moment/locale/te.js ***!
71040  \******************************************/
71041/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
71042
71043//! moment.js locale configuration
71044//! locale : Telugu [te]
71045//! author : Krishna Chaitanya Thota : https://github.com/kcthota
71046
71047;(function (global, factory) {
71048    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
71049   0
71050}(this, (function (moment) { 'use strict';
71051
71052    //! moment.js locale configuration
71053
71054    var te = moment.defineLocale('te', {
71055        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
71056            '_'
71057        ),
71058        monthsShort:
71059            'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
71060                '_'
71061            ),
71062        monthsParseExact: true,
71063        weekdays:
71064            'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
71065                '_'
71066            ),
71067        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
71068        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
71069        longDateFormat: {
71070            LT: 'A h:mm',
71071            LTS: 'A h:mm:ss',
71072            L: 'DD/MM/YYYY',
71073            LL: 'D MMMM YYYY',
71074            LLL: 'D MMMM YYYY, A h:mm',
71075            LLLL: 'dddd, D MMMM YYYY, A h:mm',
71076        },
71077        calendar: {
71078            sameDay: '[నేడు] LT',
71079            nextDay: '[రేపు] LT',
71080            nextWeek: 'dddd, LT',
71081            lastDay: '[నిన్న] LT',
71082            lastWeek: '[గత] dddd, LT',
71083            sameElse: 'L',
71084        },
71085        relativeTime: {
71086            future: '%s లో',
71087            past: '%s క్రితం',
71088            s: 'కొన్ని క్షణాలు',
71089            ss: '%d సెకన్లు',
71090            m: 'ఒక నిమిషం',
71091            mm: '%d నిమిషాలు',
71092            h: 'ఒక గంట',
71093            hh: '%d గంటలు',
71094            d: 'ఒక రోజు',
71095            dd: '%d రోజులు',
71096            M: 'ఒక నెల',
71097            MM: '%d నెలలు',
71098            y: 'ఒక సంవత్సరం',
71099            yy: '%d సంవత్సరాలు',
71100        },
71101        dayOfMonthOrdinalParse: /\d{1,2}à°µ/,
71102        ordinal: '%dà°µ',
71103        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
71104        meridiemHour: function (hour, meridiem) {
71105            if (hour === 12) {
71106                hour = 0;
71107            }
71108            if (meridiem === 'రాత్రి') {
71109                return hour < 4 ? hour : hour + 12;
71110            } else if (meridiem === 'ఉదయం') {
71111                return hour;
71112            } else if (meridiem === 'మధ్యాహ్నం') {
71113                return hour >= 10 ? hour : hour + 12;
71114            } else if (meridiem === 'సాయంత్రం') {
71115                return hour + 12;
71116            }
71117        },
71118        meridiem: function (hour, minute, isLower) {
71119            if (hour < 4) {
71120                return 'రాత్రి';
71121            } else if (hour < 10) {
71122                return 'ఉదయం';
71123            } else if (hour < 17) {
71124                return 'మధ్యాహ్నం';
71125            } else if (hour < 20) {
71126                return 'సాయంత్రం';
71127            } else {
71128                return 'రాత్రి';
71129            }
71130        },
71131        week: {
71132            dow: 0, // Sunday is the first day of the week.
71133            doy: 6, // The week that contains Jan 6th is the first week of the year.
71134        },
71135    });
71136
71137    return te;
71138
71139})));
71140
71141
71142/***/ }),
71143
vendor: 2,914 bytes, lines 71144-71230
71144/***/ "./node_modules/moment/locale/tet.js":
71145/*!*******************************************!*\
71146  !*** ./node_modules/moment/locale/tet.js ***!
71147  \*******************************************/
71148/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
71149
71150//! moment.js locale configuration
71151//! locale : Tetun Dili (East Timor) [tet]
71152//! author : Joshua Brooks : https://github.com/joshbrooks
71153//! author : Onorio De J. Afonso : https://github.com/marobo
71154//! author : Sonia Simoes : https://github.com/soniasimoes
71155
71156;(function (global, factory) {
71157    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
71158   0
71159}(this, (function (moment) { 'use strict';
71160
71161    //! moment.js locale configuration
71162
71163    var tet = moment.defineLocale('tet', {
71164        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
71165            '_'
71166        ),
71167        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
71168        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
71169        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
71170        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
71171        longDateFormat: {
71172            LT: 'HH:mm',
71173            LTS: 'HH:mm:ss',
71174            L: 'DD/MM/YYYY',
71175            LL: 'D MMMM YYYY',
71176            LLL: 'D MMMM YYYY HH:mm',
71177            LLLL: 'dddd, D MMMM YYYY HH:mm',
71178        },
71179        calendar: {
71180            sameDay: '[Ohin iha] LT',
71181            nextDay: '[Aban iha] LT',
71182            nextWeek: 'dddd [iha] LT',
71183            lastDay: '[Horiseik iha] LT',
71184            lastWeek: 'dddd [semana kotuk] [iha] LT',
71185            sameElse: 'L',
71186        },
71187        relativeTime: {
71188            future: 'iha %s',
71189            past: '%s liuba',
71190            s: 'segundu balun',
71191            ss: 'segundu %d',
71192            m: 'minutu ida',
71193            mm: 'minutu %d',
71194            h: 'oras ida',
71195            hh: 'oras %d',
71196            d: 'loron ida',
71197            dd: 'loron %d',
71198            M: 'fulan ida',
71199            MM: 'fulan %d',
71200            y: 'tinan ida',
71201            yy: 'tinan %d',
71202        },
71203        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
71204        ordinal: function (number) {
71205            var b = number % 10,
71206                output =
71207                    ~~((number % 100) / 10) === 1
71208                        ? 'th'
71209                        : b === 1
71210                          ? 'st'
71211                          : b === 2
71212                            ? 'nd'
71213                            : b === 3
71214                              ? 'rd'
71215                              : 'th';
71216            return number + output;
71217        },
71218        week: {
71219            dow: 1, // Monday is the first day of the week.
71220            doy: 4, // The week that contains Jan 4th is the first week of the year.
71221        },
71222    });
71223
71224    return tet;
71225
71226})));
71227
71228
71229/***/ }),
71230
vendor: 4,533 bytes, lines 71231-71366
71231/***/ "./node_modules/moment/locale/tg.js":
71232/*!******************************************!*\
71233  !*** ./node_modules/moment/locale/tg.js ***!
71234  \******************************************/
71235/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
71236
71237//! moment.js locale configuration
71238//! locale : Tajik [tg]
71239//! author : Orif N. Jr. : https://github.com/orif-jr
71240
71241;(function (global, factory) {
71242    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
71243   0
71244}(this, (function (moment) { 'use strict';
71245
71246    //! moment.js locale configuration
71247
71248    var suffixes = {
71249        0: '-ум',
71250        1: '-ум',
71251        2: '-юм',
71252        3: '-юм',
71253        4: '-ум',
71254        5: '-ум',
71255        6: '-ум',
71256        7: '-ум',
71257        8: '-ум',
71258        9: '-ум',
71259        10: '-ум',
71260        12: '-ум',
71261        13: '-ум',
71262        20: '-ум',
71263        30: '-юм',
71264        40: '-ум',
71265        50: '-ум',
71266        60: '-ум',
71267        70: '-ум',
71268        80: '-ум',
71269        90: '-ум',
71270        100: '-ум',
71271    };
71272
71273    var tg = moment.defineLocale('tg', {
71274        months: {
71275            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(
71276                '_'
71277            ),
71278            standalone:
71279                'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
71280                    '_'
71281                ),
71282        },
71283        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
71284        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
71285            '_'
71286        ),
71287        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
71288        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
71289        longDateFormat: {
71290            LT: 'HH:mm',
71291            LTS: 'HH:mm:ss',
71292            L: 'DD.MM.YYYY',
71293            LL: 'D MMMM YYYY',
71294            LLL: 'D MMMM YYYY HH:mm',
71295            LLLL: 'dddd, D MMMM YYYY HH:mm',
71296        },
71297        calendar: {
71298            sameDay: '[Имрӯз соати] LT',
71299            nextDay: '[Фардо соати] LT',
71300            lastDay: '[Дирӯз соати] LT',
71301            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
71302            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
71303            sameElse: 'L',
71304        },
71305        relativeTime: {
71306            future: 'баъди %s',
71307            past: '%s пеш',
71308            s: 'якчанд сония',
71309            m: 'як дақиқа',
71310            mm: '%d дақиқа',
71311            h: 'як соат',
71312            hh: '%d соат',
71313            d: 'як рӯз',
71314            dd: '%d рӯз',
71315            M: 'як моҳ',
71316            MM: '%d моҳ',
71317            y: 'як сол',
71318            yy: '%d сол',
71319        },
71320        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
71321        meridiemHour: function (hour, meridiem) {
71322            if (hour === 12) {
71323                hour = 0;
71324            }
71325            if (meridiem === 'шаб') {
71326                return hour < 4 ? hour : hour + 12;
71327            } else if (meridiem === 'субҳ') {
71328                return hour;
71329            } else if (meridiem === 'рӯз') {
71330                return hour >= 11 ? hour : hour + 12;
71331            } else if (meridiem === 'бегоҳ') {
71332                return hour + 12;
71333            }
71334        },
71335        meridiem: function (hour, minute, isLower) {
71336            if (hour < 4) {
71337                return 'шаб';
71338            } else if (hour < 11) {
71339                return 'субҳ';
71340            } else if (hour < 16) {
71341                return 'рӯз';
71342            } else if (hour < 19) {
71343                return 'бегоҳ';
71344            } else {
71345                return 'шаб';
71346            }
71347        },
71348        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
71349        ordinal: function (number) {
71350            var a = number % 10,
71351                b = number >= 100 ? 100 : null;
71352            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
71353        },
71354        week: {
71355            dow: 1, // Monday is the first day of the week.
71356            doy: 7, // The week that contains Jan 1th is the first week of the year.
71357        },
71358    });
71359
71360    return tg;
71361
71362})));
71363
71364
71365/***/ }),
71366
vendor: 3,461 bytes, lines 71367-71450
71367/***/ "./node_modules/moment/locale/th.js":
71368/*!******************************************!*\
71369  !*** ./node_modules/moment/locale/th.js ***!
71370  \******************************************/
71371/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
71372
71373//! moment.js locale configuration
71374//! locale : Thai [th]
71375//! author : Kridsada Thanabulpong : https://github.com/sirn
71376
71377;(function (global, factory) {
71378    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
71379   0
71380}(this, (function (moment) { 'use strict';
71381
71382    //! moment.js locale configuration
71383
71384    var th = moment.defineLocale('th', {
71385        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
71386            '_'
71387        ),
71388        monthsShort:
71389            'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
71390                '_'
71391            ),
71392        monthsParseExact: true,
71393        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
71394        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
71395        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
71396        weekdaysParseExact: true,
71397        longDateFormat: {
71398            LT: 'H:mm',
71399            LTS: 'H:mm:ss',
71400            L: 'DD/MM/YYYY',
71401            LL: 'D MMMM YYYY',
71402            LLL: 'D MMMM YYYY เวลา H:mm',
71403            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
71404        },
71405        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
71406        isPM: function (input) {
71407            return input === 'หลังเที่ยง';
71408        },
71409        meridiem: function (hour, minute, isLower) {
71410            if (hour < 12) {
71411                return 'ก่อนเที่ยง';
71412            } else {
71413                return 'หลังเที่ยง';
71414            }
71415        },
71416        calendar: {
71417            sameDay: '[วันนี้ เวลา] LT',
71418            nextDay: '[พรุ่งนี้ เวลา] LT',
71419            nextWeek: 'dddd[หน้า เวลา] LT',
71420            lastDay: '[เมื่อวานนี้ เวลา] LT',
71421            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
71422            sameElse: 'L',
71423        },
71424        relativeTime: {
71425            future: 'อีก %s',
71426            past: '%sที่แล้ว',
71427            s: 'ไม่กี่วินาที',
71428            ss: '%d วินาที',
71429            m: '1 นาที',
71430            mm: '%d นาที',
71431            h: '1 ชั่วโมง',
71432            hh: '%d ชั่วโมง',
71433            d: '1 วัน',
71434            dd: '%d วัน',
71435            w: '1 สัปดาห์',
71436            ww: '%d สัปดาห์',
71437            M: '1 เดือน',
71438            MM: '%d เดือน',
71439            y: '1 ปี',
71440            yy: '%d ปี',
71441        },
71442    });
71443
71444    return th;
71445
71446})));
71447
71448
71449/***/ }),
71450
vendor: 3,313 bytes, lines 71451-71560
71451/***/ "./node_modules/moment/locale/tk.js":
71452/*!******************************************!*\
71453  !*** ./node_modules/moment/locale/tk.js ***!
71454  \******************************************/
71455/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
71456
71457//! moment.js locale configuration
71458//! locale : Turkmen [tk]
71459//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy
71460
71461;(function (global, factory) {
71462    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
71463   0
71464}(this, (function (moment) { 'use strict';
71465
71466    //! moment.js locale configuration
71467
71468    var suffixes = {
71469        1: "'inji",
71470        5: "'inji",
71471        8: "'inji",
71472        70: "'inji",
71473        80: "'inji",
71474        2: "'nji",
71475        7: "'nji",
71476        20: "'nji",
71477        50: "'nji",
71478        3: "'ünji",
71479        4: "'ünji",
71480        100: "'ünji",
71481        6: "'njy",
71482        9: "'unjy",
71483        10: "'unjy",
71484        30: "'unjy",
71485        60: "'ynjy",
71486        90: "'ynjy",
71487    };
71488
71489    var tk = moment.defineLocale('tk', {
71490        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
71491            '_'
71492        ),
71493        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
71494        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
71495            '_'
71496        ),
71497        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
71498        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
71499        longDateFormat: {
71500            LT: 'HH:mm',
71501            LTS: 'HH:mm:ss',
71502            L: 'DD.MM.YYYY',
71503            LL: 'D MMMM YYYY',
71504            LLL: 'D MMMM YYYY HH:mm',
71505            LLLL: 'dddd, D MMMM YYYY HH:mm',
71506        },
71507        calendar: {
71508            sameDay: '[bugün sagat] LT',
71509            nextDay: '[ertir sagat] LT',
71510            nextWeek: '[indiki] dddd [sagat] LT',
71511            lastDay: '[düýn] LT',
71512            lastWeek: '[geçen] dddd [sagat] LT',
71513            sameElse: 'L',
71514        },
71515        relativeTime: {
71516            future: '%s soň',
71517            past: '%s öň',
71518            s: 'birnäçe sekunt',
71519            m: 'bir minut',
71520            mm: '%d minut',
71521            h: 'bir sagat',
71522            hh: '%d sagat',
71523            d: 'bir gün',
71524            dd: '%d gün',
71525            M: 'bir aý',
71526            MM: '%d aý',
71527            y: 'bir ýyl',
71528            yy: '%d ýyl',
71529        },
71530        ordinal: function (number, period) {
71531            switch (period) {
71532                case 'd':
71533                case 'D':
71534                case 'Do':
71535                case 'DD':
71536                    return number;
71537                default:
71538                    if (number === 0) {
71539                        // special case for zero
71540                        return number + "'unjy";
71541                    }
71542                    var a = number % 10,
71543                        b = (number % 100) - a,
71544                        c = number >= 100 ? 100 : null;
71545                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);
71546            }
71547        },
71548        week: {
71549            dow: 1, // Monday is the first day of the week.
71550            doy: 7, // The week that contains Jan 7th is the first week of the year.
71551        },
71552    });
71553
71554    return tk;
71555
71556})));
71557
71558
71559/***/ }),
71560
vendor: 2,444 bytes, lines 71561-71636
71561/***/ "./node_modules/moment/locale/tl-ph.js":
71562/*!*********************************************!*\
71563  !*** ./node_modules/moment/locale/tl-ph.js ***!
71564  \*********************************************/
71565/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
71566
71567//! moment.js locale configuration
71568//! locale : Tagalog (Philippines) [tl-ph]
71569//! author : Dan Hagman : https://github.com/hagmandan
71570
71571;(function (global, factory) {
71572    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
71573   0
71574}(this, (function (moment) { 'use strict';
71575
71576    //! moment.js locale configuration
71577
71578    var tlPh = moment.defineLocale('tl-ph', {
71579        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
71580            '_'
71581        ),
71582        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
71583        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
71584            '_'
71585        ),
71586        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
71587        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
71588        longDateFormat: {
71589            LT: 'HH:mm',
71590            LTS: 'HH:mm:ss',
71591            L: 'MM/D/YYYY',
71592            LL: 'MMMM D, YYYY',
71593            LLL: 'MMMM D, YYYY HH:mm',
71594            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
71595        },
71596        calendar: {
71597            sameDay: 'LT [ngayong araw]',
71598            nextDay: '[Bukas ng] LT',
71599            nextWeek: 'LT [sa susunod na] dddd',
71600            lastDay: 'LT [kahapon]',
71601            lastWeek: 'LT [noong nakaraang] dddd',
71602            sameElse: 'L',
71603        },
71604        relativeTime: {
71605            future: 'sa loob ng %s',
71606            past: '%s ang nakalipas',
71607            s: 'ilang segundo',
71608            ss: '%d segundo',
71609            m: 'isang minuto',
71610            mm: '%d minuto',
71611            h: 'isang oras',
71612            hh: '%d oras',
71613            d: 'isang araw',
71614            dd: '%d araw',
71615            M: 'isang buwan',
71616            MM: '%d buwan',
71617            y: 'isang taon',
71618            yy: '%d taon',
71619        },
71620        dayOfMonthOrdinalParse: /\d{1,2}/,
71621        ordinal: function (number) {
71622            return number;
71623        },
71624        week: {
71625            dow: 1, // Monday is the first day of the week.
71626            doy: 4, // The week that contains Jan 4th is the first week of the year.
71627        },
71628    });
71629
71630    return tlPh;
71631
71632})));
71633
71634
71635/***/ }),
71636
vendor: 4,726 bytes, lines 71637-71779
71637/***/ "./node_modules/moment/locale/tlh.js":
71638/*!*******************************************!*\
71639  !*** ./node_modules/moment/locale/tlh.js ***!
71640  \*******************************************/
71641/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
71642
71643//! moment.js locale configuration
71644//! locale : Klingon [tlh]
71645//! author : Dominika Kruk : https://github.com/amaranthrose
71646
71647;(function (global, factory) {
71648    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
71649   0
71650}(this, (function (moment) { 'use strict';
71651
71652    //! moment.js locale configuration
71653
71654    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
71655
71656    function translateFuture(output) {
71657        var time = output;
71658        time =
71659            output.indexOf('jaj') !== -1
71660                ? time.slice(0, -3) + 'leS'
71661                : output.indexOf('jar') !== -1
71662                  ? time.slice(0, -3) + 'waQ'
71663                  : output.indexOf('DIS') !== -1
71664                    ? time.slice(0, -3) + 'nem'
71665                    : time + ' pIq';
71666        return time;
71667    }
71668
71669    function translatePast(output) {
71670        var time = output;
71671        time =
71672            output.indexOf('jaj') !== -1
71673                ? time.slice(0, -3) + 'Hu’'
71674                : output.indexOf('jar') !== -1
71675                  ? time.slice(0, -3) + 'wen'
71676                  : output.indexOf('DIS') !== -1
71677                    ? time.slice(0, -3) + 'ben'
71678                    : time + ' ret';
71679        return time;
71680    }
71681
71682    function translate(number, withoutSuffix, string, isFuture) {
71683        var numberNoun = numberAsNoun(number);
71684        switch (string) {
71685            case 'ss':
71686                return numberNoun + ' lup';
71687            case 'mm':
71688                return numberNoun + ' tup';
71689            case 'hh':
71690                return numberNoun + ' rep';
71691            case 'dd':
71692                return numberNoun + ' jaj';
71693            case 'MM':
71694                return numberNoun + ' jar';
71695            case 'yy':
71696                return numberNoun + ' DIS';
71697        }
71698    }
71699
71700    function numberAsNoun(number) {
71701        var hundred = Math.floor((number % 1000) / 100),
71702            ten = Math.floor((number % 100) / 10),
71703            one = number % 10,
71704            word = '';
71705        if (hundred > 0) {
71706            word += numbersNouns[hundred] + 'vatlh';
71707        }
71708        if (ten > 0) {
71709            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
71710        }
71711        if (one > 0) {
71712            word += (word !== '' ? ' ' : '') + numbersNouns[one];
71713        }
71714        return word === '' ? 'pagh' : word;
71715    }
71716
71717    var tlh = moment.defineLocale('tlh', {
71718        months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(
71719            '_'
71720        ),
71721        monthsShort:
71722            'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(
71723                '_'
71724            ),
71725        monthsParseExact: true,
71726        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
71727            '_'
71728        ),
71729        weekdaysShort:
71730            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
71731        weekdaysMin:
71732            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
71733        longDateFormat: {
71734            LT: 'HH:mm',
71735            LTS: 'HH:mm:ss',
71736            L: 'DD.MM.YYYY',
71737            LL: 'D MMMM YYYY',
71738            LLL: 'D MMMM YYYY HH:mm',
71739            LLLL: 'dddd, D MMMM YYYY HH:mm',
71740        },
71741        calendar: {
71742            sameDay: '[DaHjaj] LT',
71743            nextDay: '[wa’leS] LT',
71744            nextWeek: 'LLL',
71745            lastDay: '[wa’Hu’] LT',
71746            lastWeek: 'LLL',
71747            sameElse: 'L',
71748        },
71749        relativeTime: {
71750            future: translateFuture,
71751            past: translatePast,
71752            s: 'puS lup',
71753            ss: translate,
71754            m: 'wa’ tup',
71755            mm: translate,
71756            h: 'wa’ rep',
71757            hh: translate,
71758            d: 'wa’ jaj',
71759            dd: translate,
71760            M: 'wa’ jar',
71761            MM: translate,
71762            y: 'wa’ DIS',
71763            yy: translate,
71764        },
71765        dayOfMonthOrdinalParse: /\d{1,2}\./,
71766        ordinal: '%d.',
71767        week: {
71768            dow: 1, // Monday is the first day of the week.
71769            doy: 4, // The week that contains Jan 4th is the first week of the year.
71770        },
71771    });
71772
71773    return tlh;
71774
71775})));
71776
71777
71778/***/ }),
71779
vendor: 3,808 bytes, lines 71780-71904
71780/***/ "./node_modules/moment/locale/tr.js":
71781/*!******************************************!*\
71782  !*** ./node_modules/moment/locale/tr.js ***!
71783  \******************************************/
71784/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
71785
71786//! moment.js locale configuration
71787//! locale : Turkish [tr]
71788//! authors : Erhan Gundogan : https://github.com/erhangundogan,
71789//!           Burak Yiğit Kaya: https://github.com/BYK
71790
71791;(function (global, factory) {
71792    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
71793   0
71794}(this, (function (moment) { 'use strict';
71795
71796    //! moment.js locale configuration
71797
71798    var suffixes = {
71799        1: "'inci",
71800        5: "'inci",
71801        8: "'inci",
71802        70: "'inci",
71803        80: "'inci",
71804        2: "'nci",
71805        7: "'nci",
71806        20: "'nci",
71807        50: "'nci",
71808        3: "'üncü",
71809        4: "'üncü",
71810        100: "'üncü",
71811        6: "'ncı",
71812        9: "'uncu",
71813        10: "'uncu",
71814        30: "'uncu",
71815        60: "'ıncı",
71816        90: "'ıncı",
71817    };
71818
71819    var tr = moment.defineLocale('tr', {
71820        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
71821            '_'
71822        ),
71823        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
71824        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
71825            '_'
71826        ),
71827        weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),
71828        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
71829        meridiem: function (hours, minutes, isLower) {
71830            if (hours < 12) {
71831                return isLower ? 'öö' : 'ÖÖ';
71832            } else {
71833                return isLower ? 'ös' : 'ÖS';
71834            }
71835        },
71836        meridiemParse: /öö|ÖÖ|ös|ÖS/,
71837        isPM: function (input) {
71838            return input === 'ös' || input === 'ÖS';
71839        },
71840        longDateFormat: {
71841            LT: 'HH:mm',
71842            LTS: 'HH:mm:ss',
71843            L: 'DD.MM.YYYY',
71844            LL: 'D MMMM YYYY',
71845            LLL: 'D MMMM YYYY HH:mm',
71846            LLLL: 'dddd, D MMMM YYYY HH:mm',
71847        },
71848        calendar: {
71849            sameDay: '[bugün saat] LT',
71850            nextDay: '[yarın saat] LT',
71851            nextWeek: '[gelecek] dddd [saat] LT',
71852            lastDay: '[dün] LT',
71853            lastWeek: '[geçen] dddd [saat] LT',
71854            sameElse: 'L',
71855        },
71856        relativeTime: {
71857            future: '%s sonra',
71858            past: '%s önce',
71859            s: 'birkaç saniye',
71860            ss: '%d saniye',
71861            m: 'bir dakika',
71862            mm: '%d dakika',
71863            h: 'bir saat',
71864            hh: '%d saat',
71865            d: 'bir gün',
71866            dd: '%d gün',
71867            w: 'bir hafta',
71868            ww: '%d hafta',
71869            M: 'bir ay',
71870            MM: '%d ay',
71871            y: 'bir yıl',
71872            yy: '%d yıl',
71873        },
71874        ordinal: function (number, period) {
71875            switch (period) {
71876                case 'd':
71877                case 'D':
71878                case 'Do':
71879                case 'DD':
71880                    return number;
71881                default:
71882                    if (number === 0) {
71883                        // special case for zero
71884                        return number + "'ıncı";
71885                    }
71886                    var a = number % 10,
71887                        b = (number % 100) - a,
71888                        c = number >= 100 ? 100 : null;
71889                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);
71890            }
71891        },
71892        week: {
71893            dow: 1, // Monday is the first day of the week.
71894            doy: 7, // The week that contains Jan 7th is the first week of the year.
71895        },
71896    });
71897
71898    return tr;
71899
71900})));
71901
71902
71903/***/ }),
71904
vendor: 3,932 bytes, lines 71905-72012
71905/***/ "./node_modules/moment/locale/tzl.js":
71906/*!*******************************************!*\
71907  !*** ./node_modules/moment/locale/tzl.js ***!
71908  \*******************************************/
71909/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
71910
71911//! moment.js locale configuration
71912//! locale : Talossan [tzl]
71913//! author : Robin van der Vliet : https://github.com/robin0van0der0v
71914//! author : Iustì Canun
71915
71916;(function (global, factory) {
71917    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
71918   0
71919}(this, (function (moment) { 'use strict';
71920
71921    //! moment.js locale configuration
71922
71923    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
71924    // This is currently too difficult (maybe even impossible) to add.
71925    var tzl = moment.defineLocale('tzl', {
71926        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
71927            '_'
71928        ),
71929        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
71930        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
71931        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
71932        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
71933        longDateFormat: {
71934            LT: 'HH.mm',
71935            LTS: 'HH.mm.ss',
71936            L: 'DD.MM.YYYY',
71937            LL: 'D. MMMM [dallas] YYYY',
71938            LLL: 'D. MMMM [dallas] YYYY HH.mm',
71939            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
71940        },
71941        meridiemParse: /d\'o|d\'a/i,
71942        isPM: function (input) {
71943            return "d'o" === input.toLowerCase();
71944        },
71945        meridiem: function (hours, minutes, isLower) {
71946            if (hours > 11) {
71947                return isLower ? "d'o" : "D'O";
71948            } else {
71949                return isLower ? "d'a" : "D'A";
71950            }
71951        },
71952        calendar: {
71953            sameDay: '[oxhi à] LT',
71954            nextDay: '[demà à] LT',
71955            nextWeek: 'dddd [à] LT',
71956            lastDay: '[ieiri à] LT',
71957            lastWeek: '[sür el] dddd [lasteu à] LT',
71958            sameElse: 'L',
71959        },
71960        relativeTime: {
71961            future: 'osprei %s',
71962            past: 'ja%s',
71963            s: processRelativeTime,
71964            ss: processRelativeTime,
71965            m: processRelativeTime,
71966            mm: processRelativeTime,
71967            h: processRelativeTime,
71968            hh: processRelativeTime,
71969            d: processRelativeTime,
71970            dd: processRelativeTime,
71971            M: processRelativeTime,
71972            MM: processRelativeTime,
71973            y: processRelativeTime,
71974            yy: processRelativeTime,
71975        },
71976        dayOfMonthOrdinalParse: /\d{1,2}\./,
71977        ordinal: '%d.',
71978        week: {
71979            dow: 1, // Monday is the first day of the week.
71980            doy: 4, // The week that contains Jan 4th is the first week of the year.
71981        },
71982    });
71983
71984    function processRelativeTime(number, withoutSuffix, key, isFuture) {
71985        var format = {
71986            s: ['viensas secunds', "'iensas secunds"],
71987            ss: [number + ' secunds', '' + number + ' secunds'],
71988            m: ["'n míut", "'iens míut"],
71989            mm: [number + ' míuts', '' + number + ' míuts'],
71990            h: ["'n þora", "'iensa þora"],
71991            hh: [number + ' þoras', '' + number + ' þoras'],
71992            d: ["'n ziua", "'iensa ziua"],
71993            dd: [number + ' ziuas', '' + number + ' ziuas'],
71994            M: ["'n mes", "'iens mes"],
71995            MM: [number + ' mesen', '' + number + ' mesen'],
71996            y: ["'n ar", "'iens ar"],
71997            yy: [number + ' ars', '' + number + ' ars'],
71998        };
71999        return isFuture
72000            ? format[key][0]
72001            : withoutSuffix
72002              ? format[key][0]
72003              : format[key][1];
72004    }
72005
72006    return tzl;
72007
72008})));
72009
72010
72011/***/ }),
72012
vendor: 2,406 bytes, lines 72013-72085
72013/***/ "./node_modules/moment/locale/tzm-latn.js":
72014/*!************************************************!*\
72015  !*** ./node_modules/moment/locale/tzm-latn.js ***!
72016  \************************************************/
72017/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
72018
72019//! moment.js locale configuration
72020//! locale : Central Atlas Tamazight Latin [tzm-latn]
72021//! author : Abdel Said : https://github.com/abdelsaid
72022
72023;(function (global, factory) {
72024    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
72025   0
72026}(this, (function (moment) { 'use strict';
72027
72028    //! moment.js locale configuration
72029
72030    var tzmLatn = moment.defineLocale('tzm-latn', {
72031        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
72032            '_'
72033        ),
72034        monthsShort:
72035            'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
72036                '_'
72037            ),
72038        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
72039        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
72040        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
72041        longDateFormat: {
72042            LT: 'HH:mm',
72043            LTS: 'HH:mm:ss',
72044            L: 'DD/MM/YYYY',
72045            LL: 'D MMMM YYYY',
72046            LLL: 'D MMMM YYYY HH:mm',
72047            LLLL: 'dddd D MMMM YYYY HH:mm',
72048        },
72049        calendar: {
72050            sameDay: '[asdkh g] LT',
72051            nextDay: '[aska g] LT',
72052            nextWeek: 'dddd [g] LT',
72053            lastDay: '[assant g] LT',
72054            lastWeek: 'dddd [g] LT',
72055            sameElse: 'L',
72056        },
72057        relativeTime: {
72058            future: 'dadkh s yan %s',
72059            past: 'yan %s',
72060            s: 'imik',
72061            ss: '%d imik',
72062            m: 'minuḍ',
72063            mm: '%d minuḍ',
72064            h: 'saɛa',
72065            hh: '%d tassaɛin',
72066            d: 'ass',
72067            dd: '%d ossan',
72068            M: 'ayowr',
72069            MM: '%d iyyirn',
72070            y: 'asgas',
72071            yy: '%d isgasn',
72072        },
72073        week: {
72074            dow: 6, // Saturday is the first day of the week.
72075            doy: 12, // The week that contains Jan 12th is the first week of the year.
72076        },
72077    });
72078
72079    return tzmLatn;
72080
72081})));
72082
72083
72084/***/ }),
72085
vendor: 3,009 bytes, lines 72086-72158
72086/***/ "./node_modules/moment/locale/tzm.js":
72087/*!*******************************************!*\
72088  !*** ./node_modules/moment/locale/tzm.js ***!
72089  \*******************************************/
72090/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
72091
72092//! moment.js locale configuration
72093//! locale : Central Atlas Tamazight [tzm]
72094//! author : Abdel Said : https://github.com/abdelsaid
72095
72096;(function (global, factory) {
72097    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
72098   0
72099}(this, (function (moment) { 'use strict';
72100
72101    //! moment.js locale configuration
72102
72103    var tzm = moment.defineLocale('tzm', {
72104        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
72105            '_'
72106        ),
72107        monthsShort:
72108            'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
72109                '_'
72110            ),
72111        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
72112        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
72113        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
72114        longDateFormat: {
72115            LT: 'HH:mm',
72116            LTS: 'HH:mm:ss',
72117            L: 'DD/MM/YYYY',
72118            LL: 'D MMMM YYYY',
72119            LLL: 'D MMMM YYYY HH:mm',
72120            LLLL: 'dddd D MMMM YYYY HH:mm',
72121        },
72122        calendar: {
72123            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
72124            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
72125            nextWeek: 'dddd [â´´] LT',
72126            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
72127            lastWeek: 'dddd [â´´] LT',
72128            sameElse: 'L',
72129        },
72130        relativeTime: {
72131            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
72132            past: 'ⵢⴰⵏ %s',
72133            s: 'ⵉⵎⵉⴽ',
72134            ss: '%d ⵉⵎⵉⴽ',
72135            m: 'ⵎⵉⵏⵓⴺ',
72136            mm: '%d ⵎⵉⵏⵓⴺ',
72137            h: 'ⵙⴰⵄⴰ',
72138            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
72139            d: 'ⴰⵙⵙ',
72140            dd: '%d oⵙⵙⴰⵏ',
72141            M: 'ⴰⵢoⵓⵔ',
72142            MM: '%d ⵉⵢⵢⵉⵔⵏ',
72143            y: 'ⴰⵙⴳⴰⵙ',
72144            yy: '%d ⵉⵙⴳⴰⵙⵏ',
72145        },
72146        week: {
72147            dow: 6, // Saturday is the first day of the week.
72148            doy: 12, // The week that contains Jan 12th is the first week of the year.
72149        },
72150    });
72151
72152    return tzm;
72153
72154})));
72155
72156
72157/***/ }),
72158
vendor: 4,801 bytes, lines 72159-72288
72159/***/ "./node_modules/moment/locale/ug-cn.js":
72160/*!*********************************************!*\
72161  !*** ./node_modules/moment/locale/ug-cn.js ***!
72162  \*********************************************/
72163/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
72164
72165//! moment.js locale configuration
72166//! locale : Uyghur (China) [ug-cn]
72167//! author: boyaq : https://github.com/boyaq
72168
72169;(function (global, factory) {
72170    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
72171   0
72172}(this, (function (moment) { 'use strict';
72173
72174    //! moment.js locale configuration
72175
72176    var ugCn = moment.defineLocale('ug-cn', {
72177        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
72178            '_'
72179        ),
72180        monthsShort:
72181            'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
72182                '_'
72183            ),
72184        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
72185            '_'
72186        ),
72187        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
72188        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
72189        longDateFormat: {
72190            LT: 'HH:mm',
72191            LTS: 'HH:mm:ss',
72192            L: 'YYYY-MM-DD',
72193            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
72194            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
72195            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
72196        },
72197        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
72198        meridiemHour: function (hour, meridiem) {
72199            if (hour === 12) {
72200                hour = 0;
72201            }
72202            if (
72203                meridiem === 'يېرىم كېچە' ||
72204                meridiem === 'سەھەر' ||
72205                meridiem === 'چۈشتىن بۇرۇن'
72206            ) {
72207                return hour;
72208            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
72209                return hour + 12;
72210            } else {
72211                return hour >= 11 ? hour : hour + 12;
72212            }
72213        },
72214        meridiem: function (hour, minute, isLower) {
72215            var hm = hour * 100 + minute;
72216            if (hm < 600) {
72217                return 'يېرىم كېچە';
72218            } else if (hm < 900) {
72219                return 'سەھەر';
72220            } else if (hm < 1130) {
72221                return 'چۈشتىن بۇرۇن';
72222            } else if (hm < 1230) {
72223                return 'چۈش';
72224            } else if (hm < 1800) {
72225                return 'چۈشتىن كېيىن';
72226            } else {
72227                return 'كەچ';
72228            }
72229        },
72230        calendar: {
72231            sameDay: '[بۈگۈن سائەت] LT',
72232            nextDay: '[ئەتە سائەت] LT',
72233            nextWeek: '[كېلەركى] dddd [سائەت] LT',
72234            lastDay: '[تۆنۈگۈن] LT',
72235            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
72236            sameElse: 'L',
72237        },
72238        relativeTime: {
72239            future: '%s كېيىن',
72240            past: '%s بۇرۇن',
72241            s: 'نەچچە سېكونت',
72242            ss: '%d سېكونت',
72243            m: 'بىر مىنۇت',
72244            mm: '%d مىنۇت',
72245            h: 'بىر سائەت',
72246            hh: '%d سائەت',
72247            d: 'بىر كۈن',
72248            dd: '%d كۈن',
72249            M: 'بىر ئاي',
72250            MM: '%d ئاي',
72251            y: 'بىر يىل',
72252            yy: '%d يىل',
72253        },
72254
72255        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
72256        ordinal: function (number, period) {
72257            switch (period) {
72258                case 'd':
72259                case 'D':
72260                case 'DDD':
72261                    return number + '-كۈنى';
72262                case 'w':
72263                case 'W':
72264                    return number + '-ھەپتە';
72265                default:
72266                    return number;
72267            }
72268        },
72269        preparse: function (string) {
72270            return string.replace(/،/g, ',');
72271        },
72272        postformat: function (string) {
72273            return string.replace(/,/g, '،');
72274        },
72275        week: {
72276            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
72277            dow: 1, // Monday is the first day of the week.
72278            doy: 7, // The week that contains Jan 1st is the first week of the year.
72279        },
72280    });
72281
72282    return ugCn;
72283
72284})));
72285
72286
72287/***/ }),
72288
vendor: 7,080 bytes, lines 72289-72474
72289/***/ "./node_modules/moment/locale/uk.js":
72290/*!******************************************!*\
72291  !*** ./node_modules/moment/locale/uk.js ***!
72292  \******************************************/
72293/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
72294
72295//! moment.js locale configuration
72296//! locale : Ukrainian [uk]
72297//! author : zemlanin : https://github.com/zemlanin
72298//! Author : Menelion Elensúle : https://github.com/Oire
72299
72300;(function (global, factory) {
72301    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
72302   0
72303}(this, (function (moment) { 'use strict';
72304
72305    //! moment.js locale configuration
72306
72307    function plural(word, num) {
72308        var forms = word.split('_');
72309        return num % 10 === 1 && num % 100 !== 11
72310            ? forms[0]
72311            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
72312              ? forms[1]
72313              : forms[2];
72314    }
72315    function relativeTimeWithPlural(number, withoutSuffix, key) {
72316        var format = {
72317            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
72318            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
72319            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
72320            dd: 'день_дні_днів',
72321            MM: 'місяць_місяці_місяців',
72322            yy: 'рік_роки_років',
72323        };
72324        if (key === 'm') {
72325            return withoutSuffix ? 'хвилина' : 'хвилину';
72326        } else if (key === 'h') {
72327            return withoutSuffix ? 'година' : 'годину';
72328        } else {
72329            return number + ' ' + plural(format[key], +number);
72330        }
72331    }
72332    function weekdaysCaseReplace(m, format) {
72333        var weekdays = {
72334                nominative:
72335                    'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
72336                        '_'
72337                    ),
72338                accusative:
72339                    'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
72340                        '_'
72341                    ),
72342                genitive:
72343                    'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
72344                        '_'
72345                    ),
72346            },
72347            nounCase;
72348
72349        if (m === true) {
72350            return weekdays['nominative']
72351                .slice(1, 7)
72352                .concat(weekdays['nominative'].slice(0, 1));
72353        }
72354        if (!m) {
72355            return weekdays['nominative'];
72356        }
72357
72358        nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
72359            ? 'accusative'
72360            : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
72361              ? 'genitive'
72362              : 'nominative';
72363        return weekdays[nounCase][m.day()];
72364    }
72365    function processHoursFunction(str) {
72366        return function () {
72367            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
72368        };
72369    }
72370
72371    var uk = moment.defineLocale('uk', {
72372        months: {
72373            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
72374                '_'
72375            ),
72376            standalone:
72377                'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
72378                    '_'
72379                ),
72380        },
72381        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
72382            '_'
72383        ),
72384        weekdays: weekdaysCaseReplace,
72385        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
72386        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
72387        longDateFormat: {
72388            LT: 'HH:mm',
72389            LTS: 'HH:mm:ss',
72390            L: 'DD.MM.YYYY',
72391            LL: 'D MMMM YYYY р.',
72392            LLL: 'D MMMM YYYY р., HH:mm',
72393            LLLL: 'dddd, D MMMM YYYY р., HH:mm',
72394        },
72395        calendar: {
72396            sameDay: processHoursFunction('[Сьогодні '),
72397            nextDay: processHoursFunction('[Завтра '),
72398            lastDay: processHoursFunction('[Вчора '),
72399            nextWeek: processHoursFunction('[У] dddd ['),
72400            lastWeek: function () {
72401                switch (this.day()) {
72402                    case 0:
72403                    case 3:
72404                    case 5:
72405                    case 6:
72406                        return processHoursFunction('[Минулої] dddd [').call(this);
72407                    case 1:
72408                    case 2:
72409                    case 4:
72410                        return processHoursFunction('[Минулого] dddd [').call(this);
72411                }
72412            },
72413            sameElse: 'L',
72414        },
72415        relativeTime: {
72416            future: 'за %s',
72417            past: '%s тому',
72418            s: 'декілька секунд',
72419            ss: relativeTimeWithPlural,
72420            m: relativeTimeWithPlural,
72421            mm: relativeTimeWithPlural,
72422            h: 'годину',
72423            hh: relativeTimeWithPlural,
72424            d: 'день',
72425            dd: relativeTimeWithPlural,
72426            M: 'місяць',
72427            MM: relativeTimeWithPlural,
72428            y: 'рік',
72429            yy: relativeTimeWithPlural,
72430        },
72431        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
72432        meridiemParse: /ночі|ранку|дня|вечора/,
72433        isPM: function (input) {
72434            return /^(дня|вечора)$/.test(input);
72435        },
72436        meridiem: function (hour, minute, isLower) {
72437            if (hour < 4) {
72438                return 'ночі';
72439            } else if (hour < 12) {
72440                return 'ранку';
72441            } else if (hour < 17) {
72442                return 'дня';
72443            } else {
72444                return 'вечора';
72445            }
72446        },
72447        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
72448        ordinal: function (number, period) {
72449            switch (period) {
72450                case 'M':
72451                case 'd':
72452                case 'DDD':
72453                case 'w':
72454                case 'W':
72455                    return number + '-й';
72456                case 'D':
72457                    return number + '-го';
72458                default:
72459                    return number;
72460            }
72461        },
72462        week: {
72463            dow: 1, // Monday is the first day of the week.
72464            doy: 7, // The week that contains Jan 7th is the first week of the year.
72465        },
72466    });
72467
72468    return uk;
72469
72470})));
72471
72472
72473/***/ }),
72474
vendor: 2,985 bytes, lines 72475-72575
72475/***/ "./node_modules/moment/locale/ur.js":
72476/*!******************************************!*\
72477  !*** ./node_modules/moment/locale/ur.js ***!
72478  \******************************************/
72479/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
72480
72481//! moment.js locale configuration
72482//! locale : Urdu [ur]
72483//! author : Sawood Alam : https://github.com/ibnesayeed
72484//! author : Zack : https://github.com/ZackVision
72485
72486;(function (global, factory) {
72487    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
72488   0
72489}(this, (function (moment) { 'use strict';
72490
72491    //! moment.js locale configuration
72492
72493    var months = [
72494            'جنوری',
72495            'فروری',
72496            'مارچ',
72497            'اپریل',
72498            'مئی',
72499            'جون',
72500            'جولائی',
72501            'اگست',
72502            'ستمبر',
72503            'اکتوبر',
72504            'نومبر',
72505            'دسمبر',
72506        ],
72507        days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
72508
72509    var ur = moment.defineLocale('ur', {
72510        months: months,
72511        monthsShort: months,
72512        weekdays: days,
72513        weekdaysShort: days,
72514        weekdaysMin: days,
72515        longDateFormat: {
72516            LT: 'HH:mm',
72517            LTS: 'HH:mm:ss',
72518            L: 'DD/MM/YYYY',
72519            LL: 'D MMMM YYYY',
72520            LLL: 'D MMMM YYYY HH:mm',
72521            LLLL: 'dddd، D MMMM YYYY HH:mm',
72522        },
72523        meridiemParse: /صبح|شام/,
72524        isPM: function (input) {
72525            return 'شام' === input;
72526        },
72527        meridiem: function (hour, minute, isLower) {
72528            if (hour < 12) {
72529                return 'صبح';
72530            }
72531            return 'شام';
72532        },
72533        calendar: {
72534            sameDay: '[آج بوقت] LT',
72535            nextDay: '[کل بوقت] LT',
72536            nextWeek: 'dddd [بوقت] LT',
72537            lastDay: '[گذشتہ روز بوقت] LT',
72538            lastWeek: '[گذشتہ] dddd [بوقت] LT',
72539            sameElse: 'L',
72540        },
72541        relativeTime: {
72542            future: '%s بعد',
72543            past: '%s قبل',
72544            s: 'چند سیکنڈ',
72545            ss: '%d سیکنڈ',
72546            m: 'ایک منٹ',
72547            mm: '%d منٹ',
72548            h: 'ایک گھنٹہ',
72549            hh: '%d گھنٹے',
72550            d: 'ایک دن',
72551            dd: '%d دن',
72552            M: 'ایک ماہ',
72553            MM: '%d ماہ',
72554            y: 'ایک سال',
72555            yy: '%d سال',
72556        },
72557        preparse: function (string) {
72558            return string.replace(/،/g, ',');
72559        },
72560        postformat: function (string) {
72561            return string.replace(/,/g, '،');
72562        },
72563        week: {
72564            dow: 1, // Monday is the first day of the week.
72565            doy: 4, // The week that contains Jan 4th is the first week of the year.
72566        },
72567    });
72568
72569    return ur;
72570
72571})));
72572
72573
72574/***/ }),
72575
vendor: 2,348 bytes, lines 72576-72648
72576/***/ "./node_modules/moment/locale/uz-latn.js":
72577/*!***********************************************!*\
72578  !*** ./node_modules/moment/locale/uz-latn.js ***!
72579  \***********************************************/
72580/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
72581
72582//! moment.js locale configuration
72583//! locale : Uzbek Latin [uz-latn]
72584//! author : Rasulbek Mirzayev : github.com/Rasulbeeek
72585
72586;(function (global, factory) {
72587    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
72588   0
72589}(this, (function (moment) { 'use strict';
72590
72591    //! moment.js locale configuration
72592
72593    var uzLatn = moment.defineLocale('uz-latn', {
72594        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
72595            '_'
72596        ),
72597        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
72598        weekdays:
72599            'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
72600                '_'
72601            ),
72602        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
72603        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
72604        longDateFormat: {
72605            LT: 'HH:mm',
72606            LTS: 'HH:mm:ss',
72607            L: 'DD/MM/YYYY',
72608            LL: 'D MMMM YYYY',
72609            LLL: 'D MMMM YYYY HH:mm',
72610            LLLL: 'D MMMM YYYY, dddd HH:mm',
72611        },
72612        calendar: {
72613            sameDay: '[Bugun soat] LT [da]',
72614            nextDay: '[Ertaga] LT [da]',
72615            nextWeek: 'dddd [kuni soat] LT [da]',
72616            lastDay: '[Kecha soat] LT [da]',
72617            lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
72618            sameElse: 'L',
72619        },
72620        relativeTime: {
72621            future: 'Yaqin %s ichida',
72622            past: 'Bir necha %s oldin',
72623            s: 'soniya',
72624            ss: '%d soniya',
72625            m: 'bir daqiqa',
72626            mm: '%d daqiqa',
72627            h: 'bir soat',
72628            hh: '%d soat',
72629            d: 'bir kun',
72630            dd: '%d kun',
72631            M: 'bir oy',
72632            MM: '%d oy',
72633            y: 'bir yil',
72634            yy: '%d yil',
72635        },
72636        week: {
72637            dow: 1, // Monday is the first day of the week.
72638            doy: 7, // The week that contains Jan 7th is the first week of the year.
72639        },
72640    });
72641
72642    return uzLatn;
72643
72644})));
72645
72646
72647/***/ }),
72648
vendor: 2,554 bytes, lines 72649-72718
72649/***/ "./node_modules/moment/locale/uz.js":
72650/*!******************************************!*\
72651  !*** ./node_modules/moment/locale/uz.js ***!
72652  \******************************************/
72653/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
72654
72655//! moment.js locale configuration
72656//! locale : Uzbek [uz]
72657//! author : Sardor Muminov : https://github.com/muminoff
72658
72659;(function (global, factory) {
72660    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
72661   0
72662}(this, (function (moment) { 'use strict';
72663
72664    //! moment.js locale configuration
72665
72666    var uz = moment.defineLocale('uz', {
72667        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
72668            '_'
72669        ),
72670        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
72671        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
72672        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
72673        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
72674        longDateFormat: {
72675            LT: 'HH:mm',
72676            LTS: 'HH:mm:ss',
72677            L: 'DD/MM/YYYY',
72678            LL: 'D MMMM YYYY',
72679            LLL: 'D MMMM YYYY HH:mm',
72680            LLLL: 'D MMMM YYYY, dddd HH:mm',
72681        },
72682        calendar: {
72683            sameDay: '[Бугун соат] LT [да]',
72684            nextDay: '[Эртага] LT [да]',
72685            nextWeek: 'dddd [куни соат] LT [да]',
72686            lastDay: '[Кеча соат] LT [да]',
72687            lastWeek: '[Утган] dddd [куни соат] LT [да]',
72688            sameElse: 'L',
72689        },
72690        relativeTime: {
72691            future: 'Якин %s ичида',
72692            past: 'Бир неча %s олдин',
72693            s: 'фурсат',
72694            ss: '%d фурсат',
72695            m: 'бир дакика',
72696            mm: '%d дакика',
72697            h: 'бир соат',
72698            hh: '%d соат',
72699            d: 'бир кун',
72700            dd: '%d кун',
72701            M: 'бир ой',
72702            MM: '%d ой',
72703            y: 'бир йил',
72704            yy: '%d йил',
72705        },
72706        week: {
72707            dow: 1, // Monday is the first day of the week.
72708            doy: 7, // The week that contains Jan 4th is the first week of the year.
72709        },
72710    });
72711
72712    return uz;
72713
72714})));
72715
72716
72717/***/ }),
72718
vendor: 3,211 bytes, lines 72719-72817
72719/***/ "./node_modules/moment/locale/vi.js":
72720/*!******************************************!*\
72721  !*** ./node_modules/moment/locale/vi.js ***!
72722  \******************************************/
72723/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
72724
72725//! moment.js locale configuration
72726//! locale : Vietnamese [vi]
72727//! author : Bang Nguyen : https://github.com/bangnk
72728//! author : Chien Kira : https://github.com/chienkira
72729
72730;(function (global, factory) {
72731    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
72732   0
72733}(this, (function (moment) { 'use strict';
72734
72735    //! moment.js locale configuration
72736
72737    var vi = moment.defineLocale('vi', {
72738        months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(
72739            '_'
72740        ),
72741        monthsShort:
72742            'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(
72743                '_'
72744            ),
72745        monthsParseExact: true,
72746        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
72747            '_'
72748        ),
72749        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
72750        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
72751        weekdaysParseExact: true,
72752        meridiemParse: /sa|ch/i,
72753        isPM: function (input) {
72754            return /^ch$/i.test(input);
72755        },
72756        meridiem: function (hours, minutes, isLower) {
72757            if (hours < 12) {
72758                return isLower ? 'sa' : 'SA';
72759            } else {
72760                return isLower ? 'ch' : 'CH';
72761            }
72762        },
72763        longDateFormat: {
72764            LT: 'HH:mm',
72765            LTS: 'HH:mm:ss',
72766            L: 'DD/MM/YYYY',
72767            LL: 'D MMMM [năm] YYYY',
72768            LLL: 'D MMMM [năm] YYYY HH:mm',
72769            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
72770            l: 'DD/M/YYYY',
72771            ll: 'D MMM YYYY',
72772            lll: 'D MMM YYYY HH:mm',
72773            llll: 'ddd, D MMM YYYY HH:mm',
72774        },
72775        calendar: {
72776            sameDay: '[Hôm nay lúc] LT',
72777            nextDay: '[Ngày mai lúc] LT',
72778            nextWeek: 'dddd [tuần tới lúc] LT',
72779            lastDay: '[Hôm qua lúc] LT',
72780            lastWeek: 'dddd [tuần trước lúc] LT',
72781            sameElse: 'L',
72782        },
72783        relativeTime: {
72784            future: '%s tới',
72785            past: '%s trước',
72786            s: 'vài giây',
72787            ss: '%d giây',
72788            m: 'một phút',
72789            mm: '%d phút',
72790            h: 'một giờ',
72791            hh: '%d giờ',
72792            d: 'một ngày',
72793            dd: '%d ngày',
72794            w: 'một tuần',
72795            ww: '%d tuần',
72796            M: 'một tháng',
72797            MM: '%d tháng',
72798            y: 'một năm',
72799            yy: '%d năm',
72800        },
72801        dayOfMonthOrdinalParse: /\d{1,2}/,
72802        ordinal: function (number) {
72803            return number;
72804        },
72805        week: {
72806            dow: 1, // Monday is the first day of the week.
72807            doy: 4, // The week that contains Jan 4th is the first week of the year.
72808        },
72809    });
72810
72811    return vi;
72812
72813})));
72814
72815
72816/***/ }),
72817
vendor: 3,163 bytes, lines 72818-72909
72818/***/ "./node_modules/moment/locale/x-pseudo.js":
72819/*!************************************************!*\
72820  !*** ./node_modules/moment/locale/x-pseudo.js ***!
72821  \************************************************/
72822/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
72823
72824//! moment.js locale configuration
72825//! locale : Pseudo [x-pseudo]
72826//! author : Andrew Hood : https://github.com/andrewhood125
72827
72828;(function (global, factory) {
72829    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
72830   0
72831}(this, (function (moment) { 'use strict';
72832
72833    //! moment.js locale configuration
72834
72835    var xPseudo = moment.defineLocale('x-pseudo', {
72836        months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(
72837            '_'
72838        ),
72839        monthsShort:
72840            'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(
72841                '_'
72842            ),
72843        monthsParseExact: true,
72844        weekdays:
72845            'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
72846                '_'
72847            ),
72848        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
72849        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
72850        weekdaysParseExact: true,
72851        longDateFormat: {
72852            LT: 'HH:mm',
72853            L: 'DD/MM/YYYY',
72854            LL: 'D MMMM YYYY',
72855            LLL: 'D MMMM YYYY HH:mm',
72856            LLLL: 'dddd, D MMMM YYYY HH:mm',
72857        },
72858        calendar: {
72859            sameDay: '[T~ódá~ý át] LT',
72860            nextDay: '[T~ómó~rró~w át] LT',
72861            nextWeek: 'dddd [át] LT',
72862            lastDay: '[Ý~ést~érdá~ý át] LT',
72863            lastWeek: '[L~ást] dddd [át] LT',
72864            sameElse: 'L',
72865        },
72866        relativeTime: {
72867            future: 'í~ñ %s',
72868            past: '%s á~gó',
72869            s: 'á ~féw ~sécó~ñds',
72870            ss: '%d s~écóñ~ds',
72871            m: 'á ~míñ~úté',
72872            mm: '%d m~íñú~tés',
72873            h: 'á~ñ hó~úr',
72874            hh: '%d h~óúrs',
72875            d: 'á ~dáý',
72876            dd: '%d d~áýs',
72877            M: 'á ~móñ~th',
72878            MM: '%d m~óñt~hs',
72879            y: 'á ~ýéár',
72880            yy: '%d ý~éárs',
72881        },
72882        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
72883        ordinal: function (number) {
72884            var b = number % 10,
72885                output =
72886                    ~~((number % 100) / 10) === 1
72887                        ? 'th'
72888                        : b === 1
72889                          ? 'st'
72890                          : b === 2
72891                            ? 'nd'
72892                            : b === 3
72893                              ? 'rd'
72894                              : 'th';
72895            return number + output;
72896        },
72897        week: {
72898            dow: 1, // Monday is the first day of the week.
72899            doy: 4, // The week that contains Jan 4th is the first week of the year.
72900        },
72901    });
72902
72903    return xPseudo;
72904
72905})));
72906
72907
72908/***/ }),
72909
vendor: 2,564 bytes, lines 72910-72981
72910/***/ "./node_modules/moment/locale/yo.js":
72911/*!******************************************!*\
72912  !*** ./node_modules/moment/locale/yo.js ***!
72913  \******************************************/
72914/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
72915
72916//! moment.js locale configuration
72917//! locale : Yoruba Nigeria [yo]
72918//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
72919
72920;(function (global, factory) {
72921    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
72922   0
72923}(this, (function (moment) { 'use strict';
72924
72925    //! moment.js locale configuration
72926
72927    var yo = moment.defineLocale('yo', {
72928        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
72929            '_'
72930        ),
72931        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
72932        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
72933        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
72934        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
72935        longDateFormat: {
72936            LT: 'h:mm A',
72937            LTS: 'h:mm:ss A',
72938            L: 'DD/MM/YYYY',
72939            LL: 'D MMMM YYYY',
72940            LLL: 'D MMMM YYYY h:mm A',
72941            LLLL: 'dddd, D MMMM YYYY h:mm A',
72942        },
72943        calendar: {
72944            sameDay: '[Ònì ni] LT',
72945            nextDay: '[Ọ̀la ni] LT',
72946            nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
72947            lastDay: '[Àna ni] LT',
72948            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
72949            sameElse: 'L',
72950        },
72951        relativeTime: {
72952            future: 'ní %s',
72953            past: '%s kọjá',
72954            s: 'ìsẹjú aayá die',
72955            ss: 'aayá %d',
72956            m: 'ìsẹjú kan',
72957            mm: 'ìsẹjú %d',
72958            h: 'wákati kan',
72959            hh: 'wákati %d',
72960            d: 'ọjọ́ kan',
72961            dd: 'ọjọ́ %d',
72962            M: 'osù kan',
72963            MM: 'osù %d',
72964            y: 'ọdún kan',
72965            yy: 'ọdún %d',
72966        },
72967        dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
72968        ordinal: 'ọjọ́ %d',
72969        week: {
72970            dow: 1, // Monday is the first day of the week.
72971            doy: 4, // The week that contains Jan 4th is the first week of the year.
72972        },
72973    });
72974
72975    return yo;
72976
72977})));
72978
72979
72980/***/ }),
72981
vendor: 4,664 bytes, lines 72982-73120
72982/***/ "./node_modules/moment/locale/zh-cn.js":
72983/*!*********************************************!*\
72984  !*** ./node_modules/moment/locale/zh-cn.js ***!
72985  \*********************************************/
72986/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
72987
72988//! moment.js locale configuration
72989//! locale : Chinese (China) [zh-cn]
72990//! author : suupic : https://github.com/suupic
72991//! author : Zeno Zeng : https://github.com/zenozeng
72992//! author : uu109 : https://github.com/uu109
72993
72994;(function (global, factory) {
72995    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
72996   0
72997}(this, (function (moment) { 'use strict';
72998
72999    //! moment.js locale configuration
73000
73001    var zhCn = moment.defineLocale('zh-cn', {
73002        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
73003            '_'
73004        ),
73005        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
73006            '_'
73007        ),
73008        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
73009        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
73010        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
73011        longDateFormat: {
73012            LT: 'HH:mm',
73013            LTS: 'HH:mm:ss',
73014            L: 'YYYY/MM/DD',
73015            LL: 'YYYY年M月D日',
73016            LLL: 'YYYY年M月D日Ah点mm分',
73017            LLLL: 'YYYY年M月D日ddddAh点mm分',
73018            l: 'YYYY/M/D',
73019            ll: 'YYYY年M月D日',
73020            lll: 'YYYY年M月D日 HH:mm',
73021            llll: 'YYYY年M月D日dddd HH:mm',
73022        },
73023        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
73024        meridiemHour: function (hour, meridiem) {
73025            if (hour === 12) {
73026                hour = 0;
73027            }
73028            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
73029                return hour;
73030            } else if (meridiem === '下午' || meridiem === '晚上') {
73031                return hour + 12;
73032            } else {
73033                // '中午'
73034                return hour >= 11 ? hour : hour + 12;
73035            }
73036        },
73037        meridiem: function (hour, minute, isLower) {
73038            var hm = hour * 100 + minute;
73039            if (hm < 600) {
73040                return '凌晨';
73041            } else if (hm < 900) {
73042                return '早上';
73043            } else if (hm < 1130) {
73044                return '上午';
73045            } else if (hm < 1230) {
73046                return '中午';
73047            } else if (hm < 1800) {
73048                return '下午';
73049            } else {
73050                return '晚上';
73051            }
73052        },
73053        calendar: {
73054            sameDay: '[今天]LT',
73055            nextDay: '[明天]LT',
73056            nextWeek: function (now) {
73057                if (now.week() !== this.week()) {
73058                    return '[下]dddLT';
73059                } else {
73060                    return '[本]dddLT';
73061                }
73062            },
73063            lastDay: '[昨天]LT',
73064            lastWeek: function (now) {
73065                if (this.week() !== now.week()) {
73066                    return '[上]dddLT';
73067                } else {
73068                    return '[本]dddLT';
73069                }
73070            },
73071            sameElse: 'L',
73072        },
73073        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
73074        ordinal: function (number, period) {
73075            switch (period) {
73076                case 'd':
73077                case 'D':
73078                case 'DDD':
73079                    return number + '日';
73080                case 'M':
73081                    return number + '月';
73082                case 'w':
73083                case 'W':
73084                    return number + '周';
73085                default:
73086                    return number;
73087            }
73088        },
73089        relativeTime: {
73090            future: '%s后',
73091            past: '%s前',
73092            s: '几秒',
73093            ss: '%d 秒',
73094            m: '1 分钟',
73095            mm: '%d 分钟',
73096            h: '1 小时',
73097            hh: '%d 小时',
73098            d: '1 天',
73099            dd: '%d 天',
73100            w: '1 周',
73101            ww: '%d 周',
73102            M: '1 个月',
73103            MM: '%d 个月',
73104            y: '1 å¹´',
73105            yy: '%d å¹´',
73106        },
73107        week: {
73108            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
73109            dow: 1, // Monday is the first day of the week.
73110            doy: 4, // The week that contains Jan 4th is the first week of the year.
73111        },
73112    });
73113
73114    return zhCn;
73115
73116})));
73117
73118
73119/***/ }),
73120
vendor: 3,989 bytes, lines 73121-73240
73121/***/ "./node_modules/moment/locale/zh-hk.js":
73122/*!*********************************************!*\
73123  !*** ./node_modules/moment/locale/zh-hk.js ***!
73124  \*********************************************/
73125/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
73126
73127//! moment.js locale configuration
73128//! locale : Chinese (Hong Kong) [zh-hk]
73129//! author : Ben : https://github.com/ben-lin
73130//! author : Chris Lam : https://github.com/hehachris
73131//! author : Konstantin : https://github.com/skfd
73132//! author : Anthony : https://github.com/anthonylau
73133
73134;(function (global, factory) {
73135    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
73136   0
73137}(this, (function (moment) { 'use strict';
73138
73139    //! moment.js locale configuration
73140
73141    var zhHk = moment.defineLocale('zh-hk', {
73142        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
73143            '_'
73144        ),
73145        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
73146            '_'
73147        ),
73148        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
73149        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
73150        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
73151        longDateFormat: {
73152            LT: 'HH:mm',
73153            LTS: 'HH:mm:ss',
73154            L: 'YYYY/MM/DD',
73155            LL: 'YYYY年M月D日',
73156            LLL: 'YYYY年M月D日 HH:mm',
73157            LLLL: 'YYYY年M月D日dddd HH:mm',
73158            l: 'YYYY/M/D',
73159            ll: 'YYYY年M月D日',
73160            lll: 'YYYY年M月D日 HH:mm',
73161            llll: 'YYYY年M月D日dddd HH:mm',
73162        },
73163        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
73164        meridiemHour: function (hour, meridiem) {
73165            if (hour === 12) {
73166                hour = 0;
73167            }
73168            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
73169                return hour;
73170            } else if (meridiem === '中午') {
73171                return hour >= 11 ? hour : hour + 12;
73172            } else if (meridiem === '下午' || meridiem === '晚上') {
73173                return hour + 12;
73174            }
73175        },
73176        meridiem: function (hour, minute, isLower) {
73177            var hm = hour * 100 + minute;
73178            if (hm < 600) {
73179                return '凌晨';
73180            } else if (hm < 900) {
73181                return '早上';
73182            } else if (hm < 1200) {
73183                return '上午';
73184            } else if (hm === 1200) {
73185                return '中午';
73186            } else if (hm < 1800) {
73187                return '下午';
73188            } else {
73189                return '晚上';
73190            }
73191        },
73192        calendar: {
73193            sameDay: '[今天]LT',
73194            nextDay: '[明天]LT',
73195            nextWeek: '[下]ddddLT',
73196            lastDay: '[昨天]LT',
73197            lastWeek: '[上]ddddLT',
73198            sameElse: 'L',
73199        },
73200        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
73201        ordinal: function (number, period) {
73202            switch (period) {
73203                case 'd':
73204                case 'D':
73205                case 'DDD':
73206                    return number + '日';
73207                case 'M':
73208                    return number + '月';
73209                case 'w':
73210                case 'W':
73211                    return number + '週';
73212                default:
73213                    return number;
73214            }
73215        },
73216        relativeTime: {
73217            future: '%s後',
73218            past: '%s前',
73219            s: '幾秒',
73220            ss: '%d 秒',
73221            m: '1 分鐘',
73222            mm: '%d 分鐘',
73223            h: '1 小時',
73224            hh: '%d 小時',
73225            d: '1 天',
73226            dd: '%d 天',
73227            M: '1 個月',
73228            MM: '%d 個月',
73229            y: '1 å¹´',
73230            yy: '%d å¹´',
73231        },
73232    });
73233
73234    return zhHk;
73235
73236})));
73237
73238
73239/***/ }),
73240
vendor: 3,939 bytes, lines 73241-73359
73241/***/ "./node_modules/moment/locale/zh-mo.js":
73242/*!*********************************************!*\
73243  !*** ./node_modules/moment/locale/zh-mo.js ***!
73244  \*********************************************/
73245/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
73246
73247//! moment.js locale configuration
73248//! locale : Chinese (Macau) [zh-mo]
73249//! author : Ben : https://github.com/ben-lin
73250//! author : Chris Lam : https://github.com/hehachris
73251//! author : Tan Yuanhong : https://github.com/le0tan
73252
73253;(function (global, factory) {
73254    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
73255   0
73256}(this, (function (moment) { 'use strict';
73257
73258    //! moment.js locale configuration
73259
73260    var zhMo = moment.defineLocale('zh-mo', {
73261        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
73262            '_'
73263        ),
73264        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
73265            '_'
73266        ),
73267        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
73268        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
73269        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
73270        longDateFormat: {
73271            LT: 'HH:mm',
73272            LTS: 'HH:mm:ss',
73273            L: 'DD/MM/YYYY',
73274            LL: 'YYYY年M月D日',
73275            LLL: 'YYYY年M月D日 HH:mm',
73276            LLLL: 'YYYY年M月D日dddd HH:mm',
73277            l: 'D/M/YYYY',
73278            ll: 'YYYY年M月D日',
73279            lll: 'YYYY年M月D日 HH:mm',
73280            llll: 'YYYY年M月D日dddd HH:mm',
73281        },
73282        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
73283        meridiemHour: function (hour, meridiem) {
73284            if (hour === 12) {
73285                hour = 0;
73286            }
73287            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
73288                return hour;
73289            } else if (meridiem === '中午') {
73290                return hour >= 11 ? hour : hour + 12;
73291            } else if (meridiem === '下午' || meridiem === '晚上') {
73292                return hour + 12;
73293            }
73294        },
73295        meridiem: function (hour, minute, isLower) {
73296            var hm = hour * 100 + minute;
73297            if (hm < 600) {
73298                return '凌晨';
73299            } else if (hm < 900) {
73300                return '早上';
73301            } else if (hm < 1130) {
73302                return '上午';
73303            } else if (hm < 1230) {
73304                return '中午';
73305            } else if (hm < 1800) {
73306                return '下午';
73307            } else {
73308                return '晚上';
73309            }
73310        },
73311        calendar: {
73312            sameDay: '[今天] LT',
73313            nextDay: '[明天] LT',
73314            nextWeek: '[下]dddd LT',
73315            lastDay: '[昨天] LT',
73316            lastWeek: '[上]dddd LT',
73317            sameElse: 'L',
73318        },
73319        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
73320        ordinal: function (number, period) {
73321            switch (period) {
73322                case 'd':
73323                case 'D':
73324                case 'DDD':
73325                    return number + '日';
73326                case 'M':
73327                    return number + '月';
73328                case 'w':
73329                case 'W':
73330                    return number + '週';
73331                default:
73332                    return number;
73333            }
73334        },
73335        relativeTime: {
73336            future: '%s內',
73337            past: '%s前',
73338            s: '幾秒',
73339            ss: '%d 秒',
73340            m: '1 分鐘',
73341            mm: '%d 分鐘',
73342            h: '1 小時',
73343            hh: '%d 小時',
73344            d: '1 天',
73345            dd: '%d 天',
73346            M: '1 個月',
73347            MM: '%d 個月',
73348            y: '1 å¹´',
73349            yy: '%d å¹´',
73350        },
73351    });
73352
73353    return zhMo;
73354
73355})));
73356
73357
73358/***/ }),
73359
vendor: 18,660 bytes, lines 73360-73782
73360/***/ "./node_modules/moment/locale/zh-tw.js":
73361/*!*********************************************!*\
73362  !*** ./node_modules/moment/locale/zh-tw.js ***!
73363  \*********************************************/
73364/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
73365
73366//! moment.js locale configuration
73367//! locale : Chinese (Taiwan) [zh-tw]
73368//! author : Ben : https://github.com/ben-lin
73369//! author : Chris Lam : https://github.com/hehachris
73370
73371;(function (global, factory) {
73372    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
73373   0
73374}(this, (function (moment) { 'use strict';
73375
73376    //! moment.js locale configuration
73377
73378    var zhTw = moment.defineLocale('zh-tw', {
73379        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
73380            '_'
73381        ),
73382        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
73383            '_'
73384        ),
73385        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
73386        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
73387        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
73388        longDateFormat: {
73389            LT: 'HH:mm',
73390            LTS: 'HH:mm:ss',
73391            L: 'YYYY/MM/DD',
73392            LL: 'YYYY年M月D日',
73393            LLL: 'YYYY年M月D日 HH:mm',
73394            LLLL: 'YYYY年M月D日dddd HH:mm',
73395            l: 'YYYY/M/D',
73396            ll: 'YYYY年M月D日',
73397            lll: 'YYYY年M月D日 HH:mm',
73398            llll: 'YYYY年M月D日dddd HH:mm',
73399        },
73400        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
73401        meridiemHour: function (hour, meridiem) {
73402            if (hour === 12) {
73403                hour = 0;
73404            }
73405            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
73406                return hour;
73407            } else if (meridiem === '中午') {
73408                return hour >= 11 ? hour : hour + 12;
73409            } else if (meridiem === '下午' || meridiem === '晚上') {
73410                return hour + 12;
73411            }
73412        },
73413        meridiem: function (hour, minute, isLower) {
73414            var hm = hour * 100 + minute;
73415            if (hm < 600) {
73416                return '凌晨';
73417            } else if (hm < 900) {
73418                return '早上';
73419            } else if (hm < 1130) {
73420                return '上午';
73421            } else if (hm < 1230) {
73422                return '中午';
73423            } else if (hm < 1800) {
73424                return '下午';
73425            } else {
73426                return '晚上';
73427            }
73428        },
73429        calendar: {
73430            sameDay: '[今天] LT',
73431            nextDay: '[明天] LT',
73432            nextWeek: '[下]dddd LT',
73433            lastDay: '[昨天] LT',
73434            lastWeek: '[上]dddd LT',
73435            sameElse: 'L',
73436        },
73437        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
73438        ordinal: function (number, period) {
73439            switch (period) {
73440                case 'd':
73441                case 'D':
73442                case 'DDD':
73443                    return number + '日';
73444                case 'M':
73445                    return number + '月';
73446                case 'w':
73447                case 'W':
73448                    return number + '週';
73449                default:
73450                    return number;
73451            }
73452        },
73453        relativeTime: {
73454            future: '%s後',
73455            past: '%s前',
73456            s: '幾秒',
73457            ss: '%d 秒',
73458            m: '1 分鐘',
73459            mm: '%d 分鐘',
73460            h: '1 小時',
73461            hh: '%d 小時',
73462            d: '1 天',
73463            dd: '%d 天',
73464            M: '1 個月',
73465            MM: '%d 個月',
73466            y: '1 å¹´',
73467            yy: '%d å¹´',
73468        },
73469    });
73470
73471    return zhTw;
73472
73473})));
73474
73475
73476/***/ }),
73477
73478/***/ "./node_modules/moment/locale sync recursive ^\\.\\/.*$":
73479/*!***************************************************!*\
73480  !*** ./node_modules/moment/locale/ sync ^\.\/.*$ ***!
73481  \***************************************************/
73482/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
73483
73484var map = {
73485	"./af": "./node_modules/moment/locale/af.js",
73486	"./af.js": "./node_modules/moment/locale/af.js",
73487	"./ar": "./node_modules/moment/locale/ar.js",
73488	"./ar-dz": "./node_modules/moment/locale/ar-dz.js",
73489	"./ar-dz.js": "./node_modules/moment/locale/ar-dz.js",
73490	"./ar-kw": "./node_modules/moment/locale/ar-kw.js",
73491	"./ar-kw.js": "./node_modules/moment/locale/ar-kw.js",
73492	"./ar-ly": "./node_modules/moment/locale/ar-ly.js",
73493	"./ar-ly.js": "./node_modules/moment/locale/ar-ly.js",
73494	"./ar-ma": "./node_modules/moment/locale/ar-ma.js",
73495	"./ar-ma.js": "./node_modules/moment/locale/ar-ma.js",
73496	"./ar-ps": "./node_modules/moment/locale/ar-ps.js",
73497	"./ar-ps.js": "./node_modules/moment/locale/ar-ps.js",
73498	"./ar-sa": "./node_modules/moment/locale/ar-sa.js",
73499	"./ar-sa.js": "./node_modules/moment/locale/ar-sa.js",
73500	"./ar-tn": "./node_modules/moment/locale/ar-tn.js",
73501	"./ar-tn.js": "./node_modules/moment/locale/ar-tn.js",
73502	"./ar.js": "./node_modules/moment/locale/ar.js",
73503	"./az": "./node_modules/moment/locale/az.js",
73504	"./az.js": "./node_modules/moment/locale/az.js",
73505	"./be": "./node_modules/moment/locale/be.js",
73506	"./be.js": "./node_modules/moment/locale/be.js",
73507	"./bg": "./node_modules/moment/locale/bg.js",
73508	"./bg.js": "./node_modules/moment/locale/bg.js",
73509	"./bm": "./node_modules/moment/locale/bm.js",
73510	"./bm.js": "./node_modules/moment/locale/bm.js",
73511	"./bn": "./node_modules/moment/locale/bn.js",
73512	"./bn-bd": "./node_modules/moment/locale/bn-bd.js",
73513	"./bn-bd.js": "./node_modules/moment/locale/bn-bd.js",
73514	"./bn.js": "./node_modules/moment/locale/bn.js",
73515	"./bo": "./node_modules/moment/locale/bo.js",
73516	"./bo.js": "./node_modules/moment/locale/bo.js",
73517	"./br": "./node_modules/moment/locale/br.js",
73518	"./br.js": "./node_modules/moment/locale/br.js",
73519	"./bs": "./node_modules/moment/locale/bs.js",
73520	"./bs.js": "./node_modules/moment/locale/bs.js",
73521	"./ca": "./node_modules/moment/locale/ca.js",
73522	"./ca.js": "./node_modules/moment/locale/ca.js",
73523	"./cs": "./node_modules/moment/locale/cs.js",
73524	"./cs.js": "./node_modules/moment/locale/cs.js",
73525	"./cv": "./node_modules/moment/locale/cv.js",
73526	"./cv.js": "./node_modules/moment/locale/cv.js",
73527	"./cy": "./node_modules/moment/locale/cy.js",
73528	"./cy.js": "./node_modules/moment/locale/cy.js",
73529	"./da": "./node_modules/moment/locale/da.js",
73530	"./da.js": "./node_modules/moment/locale/da.js",
73531	"./de": "./node_modules/moment/locale/de.js",
73532	"./de-at": "./node_modules/moment/locale/de-at.js",
73533	"./de-at.js": "./node_modules/moment/locale/de-at.js",
73534	"./de-ch": "./node_modules/moment/locale/de-ch.js",
73535	"./de-ch.js": "./node_modules/moment/locale/de-ch.js",
73536	"./de.js": "./node_modules/moment/locale/de.js",
73537	"./dv": "./node_modules/moment/locale/dv.js",
73538	"./dv.js": "./node_modules/moment/locale/dv.js",
73539	"./el": "./node_modules/moment/locale/el.js",
73540	"./el.js": "./node_modules/moment/locale/el.js",
73541	"./en-au": "./node_modules/moment/locale/en-au.js",
73542	"./en-au.js": "./node_modules/moment/locale/en-au.js",
73543	"./en-ca": "./node_modules/moment/locale/en-ca.js",
73544	"./en-ca.js": "./node_modules/moment/locale/en-ca.js",
73545	"./en-gb": "./node_modules/moment/locale/en-gb.js",
73546	"./en-gb.js": "./node_modules/moment/locale/en-gb.js",
73547	"./en-ie": "./node_modules/moment/locale/en-ie.js",
73548	"./en-ie.js": "./node_modules/moment/locale/en-ie.js",
73549	"./en-il": "./node_modules/moment/locale/en-il.js",
73550	"./en-il.js": "./node_modules/moment/locale/en-il.js",
73551	"./en-in": "./node_modules/moment/locale/en-in.js",
73552	"./en-in.js": "./node_modules/moment/locale/en-in.js",
73553	"./en-nz": "./node_modules/moment/locale/en-nz.js",
73554	"./en-nz.js": "./node_modules/moment/locale/en-nz.js",
73555	"./en-sg": "./node_modules/moment/locale/en-sg.js",
73556	"./en-sg.js": "./node_modules/moment/locale/en-sg.js",
73557	"./eo": "./node_modules/moment/locale/eo.js",
73558	"./eo.js": "./node_modules/moment/locale/eo.js",
73559	"./es": "./node_modules/moment/locale/es.js",
73560	"./es-do": "./node_modules/moment/locale/es-do.js",
73561	"./es-do.js": "./node_modules/moment/locale/es-do.js",
73562	"./es-mx": "./node_modules/moment/locale/es-mx.js",
73563	"./es-mx.js": "./node_modules/moment/locale/es-mx.js",
73564	"./es-us": "./node_modules/moment/locale/es-us.js",
73565	"./es-us.js": "./node_modules/moment/locale/es-us.js",
73566	"./es.js": "./node_modules/moment/locale/es.js",
73567	"./et": "./node_modules/moment/locale/et.js",
73568	"./et.js": "./node_modules/moment/locale/et.js",
73569	"./eu": "./node_modules/moment/locale/eu.js",
73570	"./eu.js": "./node_modules/moment/locale/eu.js",
73571	"./fa": "./node_modules/moment/locale/fa.js",
73572	"./fa.js": "./node_modules/moment/locale/fa.js",
73573	"./fi": "./node_modules/moment/locale/fi.js",
73574	"./fi.js": "./node_modules/moment/locale/fi.js",
73575	"./fil": "./node_modules/moment/locale/fil.js",
73576	"./fil.js": "./node_modules/moment/locale/fil.js",
73577	"./fo": "./node_modules/moment/locale/fo.js",
73578	"./fo.js": "./node_modules/moment/locale/fo.js",
73579	"./fr": "./node_modules/moment/locale/fr.js",
73580	"./fr-ca": "./node_modules/moment/locale/fr-ca.js",
73581	"./fr-ca.js": "./node_modules/moment/locale/fr-ca.js",
73582	"./fr-ch": "./node_modules/moment/locale/fr-ch.js",
73583	"./fr-ch.js": "./node_modules/moment/locale/fr-ch.js",
73584	"./fr.js": "./node_modules/moment/locale/fr.js",
73585	"./fy": "./node_modules/moment/locale/fy.js",
73586	"./fy.js": "./node_modules/moment/locale/fy.js",
73587	"./ga": "./node_modules/moment/locale/ga.js",
73588	"./ga.js": "./node_modules/moment/locale/ga.js",
73589	"./gd": "./node_modules/moment/locale/gd.js",
73590	"./gd.js": "./node_modules/moment/locale/gd.js",
73591	"./gl": "./node_modules/moment/locale/gl.js",
73592	"./gl.js": "./node_modules/moment/locale/gl.js",
73593	"./gom-deva": "./node_modules/moment/locale/gom-deva.js",
73594	"./gom-deva.js": "./node_modules/moment/locale/gom-deva.js",
73595	"./gom-latn": "./node_modules/moment/locale/gom-latn.js",
73596	"./gom-latn.js": "./node_modules/moment/locale/gom-latn.js",
73597	"./gu": "./node_modules/moment/locale/gu.js",
73598	"./gu.js": "./node_modules/moment/locale/gu.js",
73599	"./he": "./node_modules/moment/locale/he.js",
73600	"./he.js": "./node_modules/moment/locale/he.js",
73601	"./hi": "./node_modules/moment/locale/hi.js",
73602	"./hi.js": "./node_modules/moment/locale/hi.js",
73603	"./hr": "./node_modules/moment/locale/hr.js",
73604	"./hr.js": "./node_modules/moment/locale/hr.js",
73605	"./hu": "./node_modules/moment/locale/hu.js",
73606	"./hu.js": "./node_modules/moment/locale/hu.js",
73607	"./hy-am": "./node_modules/moment/locale/hy-am.js",
73608	"./hy-am.js": "./node_modules/moment/locale/hy-am.js",
73609	"./id": "./node_modules/moment/locale/id.js",
73610	"./id.js": "./node_modules/moment/locale/id.js",
73611	"./is": "./node_modules/moment/locale/is.js",
73612	"./is.js": "./node_modules/moment/locale/is.js",
73613	"./it": "./node_modules/moment/locale/it.js",
73614	"./it-ch": "./node_modules/moment/locale/it-ch.js",
73615	"./it-ch.js": "./node_modules/moment/locale/it-ch.js",
73616	"./it.js": "./node_modules/moment/locale/it.js",
73617	"./ja": "./node_modules/moment/locale/ja.js",
73618	"./ja.js": "./node_modules/moment/locale/ja.js",
73619	"./jv": "./node_modules/moment/locale/jv.js",
73620	"./jv.js": "./node_modules/moment/locale/jv.js",
73621	"./ka": "./node_modules/moment/locale/ka.js",
73622	"./ka.js": "./node_modules/moment/locale/ka.js",
73623	"./kk": "./node_modules/moment/locale/kk.js",
73624	"./kk.js": "./node_modules/moment/locale/kk.js",
73625	"./km": "./node_modules/moment/locale/km.js",
73626	"./km.js": "./node_modules/moment/locale/km.js",
73627	"./kn": "./node_modules/moment/locale/kn.js",
73628	"./kn.js": "./node_modules/moment/locale/kn.js",
73629	"./ko": "./node_modules/moment/locale/ko.js",
73630	"./ko.js": "./node_modules/moment/locale/ko.js",
73631	"./ku": "./node_modules/moment/locale/ku.js",
73632	"./ku-kmr": "./node_modules/moment/locale/ku-kmr.js",
73633	"./ku-kmr.js": "./node_modules/moment/locale/ku-kmr.js",
73634	"./ku.js": "./node_modules/moment/locale/ku.js",
73635	"./ky": "./node_modules/moment/locale/ky.js",
73636	"./ky.js": "./node_modules/moment/locale/ky.js",
73637	"./lb": "./node_modules/moment/locale/lb.js",
73638	"./lb.js": "./node_modules/moment/locale/lb.js",
73639	"./lo": "./node_modules/moment/locale/lo.js",
73640	"./lo.js": "./node_modules/moment/locale/lo.js",
73641	"./lt": "./node_modules/moment/locale/lt.js",
73642	"./lt.js": "./node_modules/moment/locale/lt.js",
73643	"./lv": "./node_modules/moment/locale/lv.js",
73644	"./lv.js": "./node_modules/moment/locale/lv.js",
73645	"./me": "./node_modules/moment/locale/me.js",
73646	"./me.js": "./node_modules/moment/locale/me.js",
73647	"./mi": "./node_modules/moment/locale/mi.js",
73648	"./mi.js": "./node_modules/moment/locale/mi.js",
73649	"./mk": "./node_modules/moment/locale/mk.js",
73650	"./mk.js": "./node_modules/moment/locale/mk.js",
73651	"./ml": "./node_modules/moment/locale/ml.js",
73652	"./ml.js": "./node_modules/moment/locale/ml.js",
73653	"./mn": "./node_modules/moment/locale/mn.js",
73654	"./mn.js": "./node_modules/moment/locale/mn.js",
73655	"./mr": "./node_modules/moment/locale/mr.js",
73656	"./mr.js": "./node_modules/moment/locale/mr.js",
73657	"./ms": "./node_modules/moment/locale/ms.js",
73658	"./ms-my": "./node_modules/moment/locale/ms-my.js",
73659	"./ms-my.js": "./node_modules/moment/locale/ms-my.js",
73660	"./ms.js": "./node_modules/moment/locale/ms.js",
73661	"./mt": "./node_modules/moment/locale/mt.js",
73662	"./mt.js": "./node_modules/moment/locale/mt.js",
73663	"./my": "./node_modules/moment/locale/my.js",
73664	"./my.js": "./node_modules/moment/locale/my.js",
73665	"./nb": "./node_modules/moment/locale/nb.js",
73666	"./nb.js": "./node_modules/moment/locale/nb.js",
73667	"./ne": "./node_modules/moment/locale/ne.js",
73668	"./ne.js": "./node_modules/moment/locale/ne.js",
73669	"./nl": "./node_modules/moment/locale/nl.js",
73670	"./nl-be": "./node_modules/moment/locale/nl-be.js",
73671	"./nl-be.js": "./node_modules/moment/locale/nl-be.js",
73672	"./nl.js": "./node_modules/moment/locale/nl.js",
73673	"./nn": "./node_modules/moment/locale/nn.js",
73674	"./nn.js": "./node_modules/moment/locale/nn.js",
73675	"./oc-lnc": "./node_modules/moment/locale/oc-lnc.js",
73676	"./oc-lnc.js": "./node_modules/moment/locale/oc-lnc.js",
73677	"./pa-in": "./node_modules/moment/locale/pa-in.js",
73678	"./pa-in.js": "./node_modules/moment/locale/pa-in.js",
73679	"./pl": "./node_modules/moment/locale/pl.js",
73680	"./pl.js": "./node_modules/moment/locale/pl.js",
73681	"./pt": "./node_modules/moment/locale/pt.js",
73682	"./pt-br": "./node_modules/moment/locale/pt-br.js",
73683	"./pt-br.js": "./node_modules/moment/locale/pt-br.js",
73684	"./pt.js": "./node_modules/moment/locale/pt.js",
73685	"./ro": "./node_modules/moment/locale/ro.js",
73686	"./ro.js": "./node_modules/moment/locale/ro.js",
73687	"./ru": "./node_modules/moment/locale/ru.js",
73688	"./ru.js": "./node_modules/moment/locale/ru.js",
73689	"./sd": "./node_modules/moment/locale/sd.js",
73690	"./sd.js": "./node_modules/moment/locale/sd.js",
73691	"./se": "./node_modules/moment/locale/se.js",
73692	"./se.js": "./node_modules/moment/locale/se.js",
73693	"./si": "./node_modules/moment/locale/si.js",
73694	"./si.js": "./node_modules/moment/locale/si.js",
73695	"./sk": "./node_modules/moment/locale/sk.js",
73696	"./sk.js": "./node_modules/moment/locale/sk.js",
73697	"./sl": "./node_modules/moment/locale/sl.js",
73698	"./sl.js": "./node_modules/moment/locale/sl.js",
73699	"./sq": "./node_modules/moment/locale/sq.js",
73700	"./sq.js": "./node_modules/moment/locale/sq.js",
73701	"./sr": "./node_modules/moment/locale/sr.js",
73702	"./sr-cyrl": "./node_modules/moment/locale/sr-cyrl.js",
73703	"./sr-cyrl.js": "./node_modules/moment/locale/sr-cyrl.js",
73704	"./sr.js": "./node_modules/moment/locale/sr.js",
73705	"./ss": "./node_modules/moment/locale/ss.js",
73706	"./ss.js": "./node_modules/moment/locale/ss.js",
73707	"./sv": "./node_modules/moment/locale/sv.js",
73708	"./sv.js": "./node_modules/moment/locale/sv.js",
73709	"./sw": "./node_modules/moment/locale/sw.js",
73710	"./sw.js": "./node_modules/moment/locale/sw.js",
73711	"./ta": "./node_modules/moment/locale/ta.js",
73712	"./ta.js": "./node_modules/moment/locale/ta.js",
73713	"./te": "./node_modules/moment/locale/te.js",
73714	"./te.js": "./node_modules/moment/locale/te.js",
73715	"./tet": "./node_modules/moment/locale/tet.js",
73716	"./tet.js": "./node_modules/moment/locale/tet.js",
73717	"./tg": "./node_modules/moment/locale/tg.js",
73718	"./tg.js": "./node_modules/moment/locale/tg.js",
73719	"./th": "./node_modules/moment/locale/th.js",
73720	"./th.js": "./node_modules/moment/locale/th.js",
73721	"./tk": "./node_modules/moment/locale/tk.js",
73722	"./tk.js": "./node_modules/moment/locale/tk.js",
73723	"./tl-ph": "./node_modules/moment/locale/tl-ph.js",
73724	"./tl-ph.js": "./node_modules/moment/locale/tl-ph.js",
73725	"./tlh": "./node_modules/moment/locale/tlh.js",
73726	"./tlh.js": "./node_modules/moment/locale/tlh.js",
73727	"./tr": "./node_modules/moment/locale/tr.js",
73728	"./tr.js": "./node_modules/moment/locale/tr.js",
73729	"./tzl": "./node_modules/moment/locale/tzl.js",
73730	"./tzl.js": "./node_modules/moment/locale/tzl.js",
73731	"./tzm": "./node_modules/moment/locale/tzm.js",
73732	"./tzm-latn": "./node_modules/moment/locale/tzm-latn.js",
73733	"./tzm-latn.js": "./node_modules/moment/locale/tzm-latn.js",
73734	"./tzm.js": "./node_modules/moment/locale/tzm.js",
73735	"./ug-cn": "./node_modules/moment/locale/ug-cn.js",
73736	"./ug-cn.js": "./node_modules/moment/locale/ug-cn.js",
73737	"./uk": "./node_modules/moment/locale/uk.js",
73738	"./uk.js": "./node_modules/moment/locale/uk.js",
73739	"./ur": "./node_modules/moment/locale/ur.js",
73740	"./ur.js": "./node_modules/moment/locale/ur.js",
73741	"./uz": "./node_modules/moment/locale/uz.js",
73742	"./uz-latn": "./node_modules/moment/locale/uz-latn.js",
73743	"./uz-latn.js": "./node_modules/moment/locale/uz-latn.js",
73744	"./uz.js": "./node_modules/moment/locale/uz.js",
73745	"./vi": "./node_modules/moment/locale/vi.js",
73746	"./vi.js": "./node_modules/moment/locale/vi.js",
73747	"./x-pseudo": "./node_modules/moment/locale/x-pseudo.js",
73748	"./x-pseudo.js": "./node_modules/moment/locale/x-pseudo.js",
73749	"./yo": "./node_modules/moment/locale/yo.js",
73750	"./yo.js": "./node_modules/moment/locale/yo.js",
73751	"./zh-cn": "./node_modules/moment/locale/zh-cn.js",
73752	"./zh-cn.js": "./node_modules/moment/locale/zh-cn.js",
73753	"./zh-hk": "./node_modules/moment/locale/zh-hk.js",
73754	"./zh-hk.js": "./node_modules/moment/locale/zh-hk.js",
73755	"./zh-mo": "./node_modules/moment/locale/zh-mo.js",
73756	"./zh-mo.js": "./node_modules/moment/locale/zh-mo.js",
73757	"./zh-tw": "./node_modules/moment/locale/zh-tw.js",
73758	"./zh-tw.js": "./node_modules/moment/locale/zh-tw.js"
73759};
73760
73761
73762function webpackContext(req) {
73763	var id = webpackContextResolve(req);
73764	return __webpack_require__(id);
73765}
73766function webpackContextResolve(req) {
73767	if(!__webpack_require__.o(map, req)) {
73768		var e = new Error("Cannot find module '" + req + "'");
73769		e.code = 'MODULE_NOT_FOUND';
73770		throw e;
73771	}
73772	return map[req];
73773}
73774webpackContext.keys = function webpackContextKeys() {
73775	return Object.keys(map);
73776};
73777webpackContext.resolve = webpackContextResolve;
73778module.exports = webpackContext;
73779webpackContext.id = "./node_modules/moment/locale sync recursive ^\\.\\/.*$";
73780
73781/***/ }),
73782
vendor: 176,669 bytes, lines 73783-79480
73783/***/ "./node_modules/moment/moment.js":
73784/*!***************************************!*\
73785  !*** ./node_modules/moment/moment.js ***!
73786  \***************************************/
73787/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
73788
73789/* module decorator */ module = __webpack_require__.nmd(module);
73790//! moment.js
73791//! version : 2.30.1
73792//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
73793//! license : MIT
73794//! momentjs.com
73795
73796;(function (global, factory) {
73797     true ? module.exports = factory() :
73798    0
73799}(this, (function () { 'use strict';
73800
73801    var hookCallback;
73802
73803    function hooks() {
73804        return hookCallback.apply(null, arguments);
73805    }
73806
73807    // This is done to register the method called with moment()
73808    // without creating circular dependencies.
73809    function setHookCallback(callback) {
73810        hookCallback = callback;
73811    }
73812
73813    function isArray(input) {
73814        return (
73815            input instanceof Array ||
73816            Object.prototype.toString.call(input) === '[object Array]'
73817        );
73818    }
73819
73820    function isObject(input) {
73821        // IE8 will treat undefined and null as object if it wasn't for
73822        // input != null
73823        return (
73824            input != null &&
73825            Object.prototype.toString.call(input) === '[object Object]'
73826        );
73827    }
73828
73829    function hasOwnProp(a, b) {
73830        return Object.prototype.hasOwnProperty.call(a, b);
73831    }
73832
73833    function isObjectEmpty(obj) {
73834        if (Object.getOwnPropertyNames) {
73835            return Object.getOwnPropertyNames(obj).length === 0;
73836        } else {
73837            var k;
73838            for (k in obj) {
73839                if (hasOwnProp(obj, k)) {
73840                    return false;
73841                }
73842            }
73843            return true;
73844        }
73845    }
73846
73847    function isUndefined(input) {
73848        return input === void 0;
73849    }
73850
73851    function isNumber(input) {
73852        return (
73853            typeof input === 'number' ||
73854            Object.prototype.toString.call(input) === '[object Number]'
73855        );
73856    }
73857
73858    function isDate(input) {
73859        return (
73860            input instanceof Date ||
73861            Object.prototype.toString.call(input) === '[object Date]'
73862        );
73863    }
73864
73865    function map(arr, fn) {
73866        var res = [],
73867            i,
73868            arrLen = arr.length;
73869        for (i = 0; i < arrLen; ++i) {
73870            res.push(fn(arr[i], i));
73871        }
73872        return res;
73873    }
73874
73875    function extend(a, b) {
73876        for (var i in b) {
73877            if (hasOwnProp(b, i)) {
73878                a[i] = b[i];
73879            }
73880        }
73881
73882        if (hasOwnProp(b, 'toString')) {
73883            a.toString = b.toString;
73884        }
73885
73886        if (hasOwnProp(b, 'valueOf')) {
73887            a.valueOf = b.valueOf;
73888        }
73889
73890        return a;
73891    }
73892
73893    function createUTC(input, format, locale, strict) {
73894        return createLocalOrUTC(input, format, locale, strict, true).utc();
73895    }
73896
73897    function defaultParsingFlags() {
73898        // We need to deep clone this object.
73899        return {
73900            empty: false,
73901            unusedTokens: [],
73902            unusedInput: [],
73903            overflow: -2,
73904            charsLeftOver: 0,
73905            nullInput: false,
73906            invalidEra: null,
73907            invalidMonth: null,
73908            invalidFormat: false,
73909            userInvalidated: false,
73910            iso: false,
73911            parsedDateParts: [],
73912            era: null,
73913            meridiem: null,
73914            rfc2822: false,
73915            weekdayMismatch: false,
73916        };
73917    }
73918
73919    function getParsingFlags(m) {
73920        if (m._pf == null) {
73921            m._pf = defaultParsingFlags();
73922        }
73923        return m._pf;
73924    }
73925
73926    var some;
73927    if (Array.prototype.some) {
73928        some = Array.prototype.some;
73929    } else {
73930        some = function (fun) {
73931            var t = Object(this),
73932                len = t.length >>> 0,
73933                i;
73934
73935            for (i = 0; i < len; i++) {
73936                if (i in t && fun.call(this, t[i], i, t)) {
73937                    return true;
73938                }
73939            }
73940
73941            return false;
73942        };
73943    }
73944
73945    function isValid(m) {
73946        var flags = null,
73947            parsedParts = false,
73948            isNowValid = m._d && !isNaN(m._d.getTime());
73949        if (isNowValid) {
73950            flags = getParsingFlags(m);
73951            parsedParts = some.call(flags.parsedDateParts, function (i) {
73952                return i != null;
73953            });
73954            isNowValid =
73955                flags.overflow < 0 &&
73956                !flags.empty &&
73957                !flags.invalidEra &&
73958                !flags.invalidMonth &&
73959                !flags.invalidWeekday &&
73960                !flags.weekdayMismatch &&
73961                !flags.nullInput &&
73962                !flags.invalidFormat &&
73963                !flags.userInvalidated &&
73964                (!flags.meridiem || (flags.meridiem && parsedParts));
73965            if (m._strict) {
73966                isNowValid =
73967                    isNowValid &&
73968                    flags.charsLeftOver === 0 &&
73969                    flags.unusedTokens.length === 0 &&
73970                    flags.bigHour === undefined;
73971            }
73972        }
73973        if (Object.isFrozen == null || !Object.isFrozen(m)) {
73974            m._isValid = isNowValid;
73975        } else {
73976            return isNowValid;
73977        }
73978        return m._isValid;
73979    }
73980
73981    function createInvalid(flags) {
73982        var m = createUTC(NaN);
73983        if (flags != null) {
73984            extend(getParsingFlags(m), flags);
73985        } else {
73986            getParsingFlags(m).userInvalidated = true;
73987        }
73988
73989        return m;
73990    }
73991
73992    // Plugins that add properties should also add the key here (null value),
73993    // so we can properly clone ourselves.
73994    var momentProperties = (hooks.momentProperties = []),
73995        updateInProgress = false;
73996
73997    function copyConfig(to, from) {
73998        var i,
73999            prop,
74000            val,
74001            momentPropertiesLen = momentProperties.length;
74002
74003        if (!isUndefined(from._isAMomentObject)) {
74004            to._isAMomentObject = from._isAMomentObject;
74005        }
74006        if (!isUndefined(from._i)) {
74007            to._i = from._i;
74008        }
74009        if (!isUndefined(from._f)) {
74010            to._f = from._f;
74011        }
74012        if (!isUndefined(from._l)) {
74013            to._l = from._l;
74014        }
74015        if (!isUndefined(from._strict)) {
74016            to._strict = from._strict;
74017        }
74018        if (!isUndefined(from._tzm)) {
74019            to._tzm = from._tzm;
74020        }
74021        if (!isUndefined(from._isUTC)) {
74022            to._isUTC = from._isUTC;
74023        }
74024        if (!isUndefined(from._offset)) {
74025            to._offset = from._offset;
74026        }
74027        if (!isUndefined(from._pf)) {
74028            to._pf = getParsingFlags(from);
74029        }
74030        if (!isUndefined(from._locale)) {
74031            to._locale = from._locale;
74032        }
74033
74034        if (momentPropertiesLen > 0) {
74035            for (i = 0; i < momentPropertiesLen; i++) {
74036                prop = momentProperties[i];
74037                val = from[prop];
74038                if (!isUndefined(val)) {
74039                    to[prop] = val;
74040                }
74041            }
74042        }
74043
74044        return to;
74045    }
74046
74047    // Moment prototype object
74048    function Moment(config) {
74049        copyConfig(this, config);
74050        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
74051        if (!this.isValid()) {
74052            this._d = new Date(NaN);
74053        }
74054        // Prevent infinite loop in case updateOffset creates new moment
74055        // objects.
74056        if (updateInProgress === false) {
74057            updateInProgress = true;
74058            hooks.updateOffset(this);
74059            updateInProgress = false;
74060        }
74061    }
74062
74063    function isMoment(obj) {
74064        return (
74065            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
74066        );
74067    }
74068
74069    function warn(msg) {
74070        if (
74071            hooks.suppressDeprecationWarnings === false &&
74072            typeof console !== 'undefined' &&
74073            console.warn
74074        ) {
74075            console.warn('Deprecation warning: ' + msg);
74076        }
74077    }
74078
74079    function deprecate(msg, fn) {
74080        var firstTime = true;
74081
74082        return extend(function () {
74083            if (hooks.deprecationHandler != null) {
74084                hooks.deprecationHandler(null, msg);
74085            }
74086            if (firstTime) {
74087                var args = [],
74088                    arg,
74089                    i,
74090                    key,
74091                    argLen = arguments.length;
74092                for (i = 0; i < argLen; i++) {
74093                    arg = '';
74094                    if (typeof arguments[i] === 'object') {
74095                        arg += '\n[' + i + '] ';
74096                        for (key in arguments[0]) {
74097                            if (hasOwnProp(arguments[0], key)) {
74098                                arg += key + ': ' + arguments[0][key] + ', ';
74099                            }
74100                        }
74101                        arg = arg.slice(0, -2); // Remove trailing comma and space
74102                    } else {
74103                        arg = arguments[i];
74104                    }
74105                    args.push(arg);
74106                }
74107                warn(
74108                    msg +
74109                        '\nArguments: ' +
74110                        Array.prototype.slice.call(args).join('') +
74111                        '\n' +
74112                        new Error().stack
74113                );
74114                firstTime = false;
74115            }
74116            return fn.apply(this, arguments);
74117        }, fn);
74118    }
74119
74120    var deprecations = {};
74121
74122    function deprecateSimple(name, msg) {
74123        if (hooks.deprecationHandler != null) {
74124            hooks.deprecationHandler(name, msg);
74125        }
74126        if (!deprecations[name]) {
74127            warn(msg);
74128            deprecations[name] = true;
74129        }
74130    }
74131
74132    hooks.suppressDeprecationWarnings = false;
74133    hooks.deprecationHandler = null;
74134
74135    function isFunction(input) {
74136        return (
74137            (typeof Function !== 'undefined' && input instanceof Function) ||
74138            Object.prototype.toString.call(input) === '[object Function]'
74139        );
74140    }
74141
74142    function set(config) {
74143        var prop, i;
74144        for (i in config) {
74145            if (hasOwnProp(config, i)) {
74146                prop = config[i];
74147                if (isFunction(prop)) {
74148                    this[i] = prop;
74149                } else {
74150                    this['_' + i] = prop;
74151                }
74152            }
74153        }
74154        this._config = config;
74155        // Lenient ordinal parsing accepts just a number in addition to
74156        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
74157        // TODO: Remove "ordinalParse" fallback in next major release.
74158        this._dayOfMonthOrdinalParseLenient = new RegExp(
74159            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
74160                '|' +
74161                /\d{1,2}/.source
74162        );
74163    }
74164
74165    function mergeConfigs(parentConfig, childConfig) {
74166        var res = extend({}, parentConfig),
74167            prop;
74168        for (prop in childConfig) {
74169            if (hasOwnProp(childConfig, prop)) {
74170                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
74171                    res[prop] = {};
74172                    extend(res[prop], parentConfig[prop]);
74173                    extend(res[prop], childConfig[prop]);
74174                } else if (childConfig[prop] != null) {
74175                    res[prop] = childConfig[prop];
74176                } else {
74177                    delete res[prop];
74178                }
74179            }
74180        }
74181        for (prop in parentConfig) {
74182            if (
74183                hasOwnProp(parentConfig, prop) &&
74184                !hasOwnProp(childConfig, prop) &&
74185                isObject(parentConfig[prop])
74186            ) {
74187                // make sure changes to properties don't modify parent config
74188                res[prop] = extend({}, res[prop]);
74189            }
74190        }
74191        return res;
74192    }
74193
74194    function Locale(config) {
74195        if (config != null) {
74196            this.set(config);
74197        }
74198    }
74199
74200    var keys;
74201
74202    if (Object.keys) {
74203        keys = Object.keys;
74204    } else {
74205        keys = function (obj) {
74206            var i,
74207                res = [];
74208            for (i in obj) {
74209                if (hasOwnProp(obj, i)) {
74210                    res.push(i);
74211                }
74212            }
74213            return res;
74214        };
74215    }
74216
74217    var defaultCalendar = {
74218        sameDay: '[Today at] LT',
74219        nextDay: '[Tomorrow at] LT',
74220        nextWeek: 'dddd [at] LT',
74221        lastDay: '[Yesterday at] LT',
74222        lastWeek: '[Last] dddd [at] LT',
74223        sameElse: 'L',
74224    };
74225
74226    function calendar(key, mom, now) {
74227        var output = this._calendar[key] || this._calendar['sameElse'];
74228        return isFunction(output) ? output.call(mom, now) : output;
74229    }
74230
74231    function zeroFill(number, targetLength, forceSign) {
74232        var absNumber = '' + Math.abs(number),
74233            zerosToFill = targetLength - absNumber.length,
74234            sign = number >= 0;
74235        return (
74236            (sign ? (forceSign ? '+' : '') : '-') +
74237            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
74238            absNumber
74239        );
74240    }
74241
74242    var formattingTokens =
74243            /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
74244        localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
74245        formatFunctions = {},
74246        formatTokenFunctions = {};
74247
74248    // token:    'M'
74249    // padded:   ['MM', 2]
74250    // ordinal:  'Mo'
74251    // callback: function () { this.month() + 1 }
74252    function addFormatToken(token, padded, ordinal, callback) {
74253        var func = callback;
74254        if (typeof callback === 'string') {
74255            func = function () {
74256                return this[callback]();
74257            };
74258        }
74259        if (token) {
74260            formatTokenFunctions[token] = func;
74261        }
74262        if (padded) {
74263            formatTokenFunctions[padded[0]] = function () {
74264                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
74265            };
74266        }
74267        if (ordinal) {
74268            formatTokenFunctions[ordinal] = function () {
74269                return this.localeData().ordinal(
74270                    func.apply(this, arguments),
74271                    token
74272                );
74273            };
74274        }
74275    }
74276
74277    function removeFormattingTokens(input) {
74278        if (input.match(/\[[\s\S]/)) {
74279            return input.replace(/^\[|\]$/g, '');
74280        }
74281        return input.replace(/\\/g, '');
74282    }
74283
74284    function makeFormatFunction(format) {
74285        var array = format.match(formattingTokens),
74286            i,
74287            length;
74288
74289        for (i = 0, length = array.length; i < length; i++) {
74290            if (formatTokenFunctions[array[i]]) {
74291                array[i] = formatTokenFunctions[array[i]];
74292            } else {
74293                array[i] = removeFormattingTokens(array[i]);
74294            }
74295        }
74296
74297        return function (mom) {
74298            var output = '',
74299                i;
74300            for (i = 0; i < length; i++) {
74301                output += isFunction(array[i])
74302                    ? array[i].call(mom, format)
74303                    : array[i];
74304            }
74305            return output;
74306        };
74307    }
74308
74309    // format date using native date object
74310    function formatMoment(m, format) {
74311        if (!m.isValid()) {
74312            return m.localeData().invalidDate();
74313        }
74314
74315        format = expandFormat(format, m.localeData());
74316        formatFunctions[format] =
74317            formatFunctions[format] || makeFormatFunction(format);
74318
74319        return formatFunctions[format](m);
74320    }
74321
74322    function expandFormat(format, locale) {
74323        var i = 5;
74324
74325        function replaceLongDateFormatTokens(input) {
74326            return locale.longDateFormat(input) || input;
74327        }
74328
74329        localFormattingTokens.lastIndex = 0;
74330        while (i >= 0 && localFormattingTokens.test(format)) {
74331            format = format.replace(
74332                localFormattingTokens,
74333                replaceLongDateFormatTokens
74334            );
74335            localFormattingTokens.lastIndex = 0;
74336            i -= 1;
74337        }
74338
74339        return format;
74340    }
74341
74342    var defaultLongDateFormat = {
74343        LTS: 'h:mm:ss A',
74344        LT: 'h:mm A',
74345        L: 'MM/DD/YYYY',
74346        LL: 'MMMM D, YYYY',
74347        LLL: 'MMMM D, YYYY h:mm A',
74348        LLLL: 'dddd, MMMM D, YYYY h:mm A',
74349    };
74350
74351    function longDateFormat(key) {
74352        var format = this._longDateFormat[key],
74353            formatUpper = this._longDateFormat[key.toUpperCase()];
74354
74355        if (format || !formatUpper) {
74356            return format;
74357        }
74358
74359        this._longDateFormat[key] = formatUpper
74360            .match(formattingTokens)
74361            .map(function (tok) {
74362                if (
74363                    tok === 'MMMM' ||
74364                    tok === 'MM' ||
74365                    tok === 'DD' ||
74366                    tok === 'dddd'
74367                ) {
74368                    return tok.slice(1);
74369                }
74370                return tok;
74371            })
74372            .join('');
74373
74374        return this._longDateFormat[key];
74375    }
74376
74377    var defaultInvalidDate = 'Invalid date';
74378
74379    function invalidDate() {
74380        return this._invalidDate;
74381    }
74382
74383    var defaultOrdinal = '%d',
74384        defaultDayOfMonthOrdinalParse = /\d{1,2}/;
74385
74386    function ordinal(number) {
74387        return this._ordinal.replace('%d', number);
74388    }
74389
74390    var defaultRelativeTime = {
74391        future: 'in %s',
74392        past: '%s ago',
74393        s: 'a few seconds',
74394        ss: '%d seconds',
74395        m: 'a minute',
74396        mm: '%d minutes',
74397        h: 'an hour',
74398        hh: '%d hours',
74399        d: 'a day',
74400        dd: '%d days',
74401        w: 'a week',
74402        ww: '%d weeks',
74403        M: 'a month',
74404        MM: '%d months',
74405        y: 'a year',
74406        yy: '%d years',
74407    };
74408
74409    function relativeTime(number, withoutSuffix, string, isFuture) {
74410        var output = this._relativeTime[string];
74411        return isFunction(output)
74412            ? output(number, withoutSuffix, string, isFuture)
74413            : output.replace(/%d/i, number);
74414    }
74415
74416    function pastFuture(diff, output) {
74417        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
74418        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
74419    }
74420
74421    var aliases = {
74422        D: 'date',
74423        dates: 'date',
74424        date: 'date',
74425        d: 'day',
74426        days: 'day',
74427        day: 'day',
74428        e: 'weekday',
74429        weekdays: 'weekday',
74430        weekday: 'weekday',
74431        E: 'isoWeekday',
74432        isoweekdays: 'isoWeekday',
74433        isoweekday: 'isoWeekday',
74434        DDD: 'dayOfYear',
74435        dayofyears: 'dayOfYear',
74436        dayofyear: 'dayOfYear',
74437        h: 'hour',
74438        hours: 'hour',
74439        hour: 'hour',
74440        ms: 'millisecond',
74441        milliseconds: 'millisecond',
74442        millisecond: 'millisecond',
74443        m: 'minute',
74444        minutes: 'minute',
74445        minute: 'minute',
74446        M: 'month',
74447        months: 'month',
74448        month: 'month',
74449        Q: 'quarter',
74450        quarters: 'quarter',
74451        quarter: 'quarter',
74452        s: 'second',
74453        seconds: 'second',
74454        second: 'second',
74455        gg: 'weekYear',
74456        weekyears: 'weekYear',
74457        weekyear: 'weekYear',
74458        GG: 'isoWeekYear',
74459        isoweekyears: 'isoWeekYear',
74460        isoweekyear: 'isoWeekYear',
74461        w: 'week',
74462        weeks: 'week',
74463        week: 'week',
74464        W: 'isoWeek',
74465        isoweeks: 'isoWeek',
74466        isoweek: 'isoWeek',
74467        y: 'year',
74468        years: 'year',
74469        year: 'year',
74470    };
74471
74472    function normalizeUnits(units) {
74473        return typeof units === 'string'
74474            ? aliases[units] || aliases[units.toLowerCase()]
74475            : undefined;
74476    }
74477
74478    function normalizeObjectUnits(inputObject) {
74479        var normalizedInput = {},
74480            normalizedProp,
74481            prop;
74482
74483        for (prop in inputObject) {
74484            if (hasOwnProp(inputObject, prop)) {
74485                normalizedProp = normalizeUnits(prop);
74486                if (normalizedProp) {
74487                    normalizedInput[normalizedProp] = inputObject[prop];
74488                }
74489            }
74490        }
74491
74492        return normalizedInput;
74493    }
74494
74495    var priorities = {
74496        date: 9,
74497        day: 11,
74498        weekday: 11,
74499        isoWeekday: 11,
74500        dayOfYear: 4,
74501        hour: 13,
74502        millisecond: 16,
74503        minute: 14,
74504        month: 8,
74505        quarter: 7,
74506        second: 15,
74507        weekYear: 1,
74508        isoWeekYear: 1,
74509        week: 5,
74510        isoWeek: 5,
74511        year: 1,
74512    };
74513
74514    function getPrioritizedUnits(unitsObj) {
74515        var units = [],
74516            u;
74517        for (u in unitsObj) {
74518            if (hasOwnProp(unitsObj, u)) {
74519                units.push({ unit: u, priority: priorities[u] });
74520            }
74521        }
74522        units.sort(function (a, b) {
74523            return a.priority - b.priority;
74524        });
74525        return units;
74526    }
74527
74528    var match1 = /\d/, //       0 - 9
74529        match2 = /\d\d/, //      00 - 99
74530        match3 = /\d{3}/, //     000 - 999
74531        match4 = /\d{4}/, //    0000 - 9999
74532        match6 = /[+-]?\d{6}/, // -999999 - 999999
74533        match1to2 = /\d\d?/, //       0 - 99
74534        match3to4 = /\d\d\d\d?/, //     999 - 9999
74535        match5to6 = /\d\d\d\d\d\d?/, //   99999 - 999999
74536        match1to3 = /\d{1,3}/, //       0 - 999
74537        match1to4 = /\d{1,4}/, //       0 - 9999
74538        match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
74539        matchUnsigned = /\d+/, //       0 - inf
74540        matchSigned = /[+-]?\d+/, //    -inf - inf
74541        matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
74542        matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
74543        matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
74544        // any word (or two) characters or numbers including two/three word month in arabic.
74545        // includes scottish gaelic two word and hyphenated months
74546        matchWord =
74547            /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
74548        match1to2NoLeadingZero = /^[1-9]\d?/, //         1-99
74549        match1to2HasZero = /^([1-9]\d|\d)/, //           0-99
74550        regexes;
74551
74552    regexes = {};
74553
74554    function addRegexToken(token, regex, strictRegex) {
74555        regexes[token] = isFunction(regex)
74556            ? regex
74557            : function (isStrict, localeData) {
74558                  return isStrict && strictRegex ? strictRegex : regex;
74559              };
74560    }
74561
74562    function getParseRegexForToken(token, config) {
74563        if (!hasOwnProp(regexes, token)) {
74564            return new RegExp(unescapeFormat(token));
74565        }
74566
74567        return regexes[token](config._strict, config._locale);
74568    }
74569
74570    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
74571    function unescapeFormat(s) {
74572        return regexEscape(
74573            s
74574                .replace('\\', '')
74575                .replace(
74576                    /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,
74577                    function (matched, p1, p2, p3, p4) {
74578                        return p1 || p2 || p3 || p4;
74579                    }
74580                )
74581        );
74582    }
74583
74584    function regexEscape(s) {
74585        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
74586    }
74587
74588    function absFloor(number) {
74589        if (number < 0) {
74590            // -0 -> 0
74591            return Math.ceil(number) || 0;
74592        } else {
74593            return Math.floor(number);
74594        }
74595    }
74596
74597    function toInt(argumentForCoercion) {
74598        var coercedNumber = +argumentForCoercion,
74599            value = 0;
74600
74601        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
74602            value = absFloor(coercedNumber);
74603        }
74604
74605        return value;
74606    }
74607
74608    var tokens = {};
74609
74610    function addParseToken(token, callback) {
74611        var i,
74612            func = callback,
74613            tokenLen;
74614        if (typeof token === 'string') {
74615            token = [token];
74616        }
74617        if (isNumber(callback)) {
74618            func = function (input, array) {
74619                array[callback] = toInt(input);
74620            };
74621        }
74622        tokenLen = token.length;
74623        for (i = 0; i < tokenLen; i++) {
74624            tokens[token[i]] = func;
74625        }
74626    }
74627
74628    function addWeekParseToken(token, callback) {
74629        addParseToken(token, function (input, array, config, token) {
74630            config._w = config._w || {};
74631            callback(input, config._w, config, token);
74632        });
74633    }
74634
74635    function addTimeToArrayFromToken(token, input, config) {
74636        if (input != null && hasOwnProp(tokens, token)) {
74637            tokens[token](input, config._a, config, token);
74638        }
74639    }
74640
74641    function isLeapYear(year) {
74642        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
74643    }
74644
74645    var YEAR = 0,
74646        MONTH = 1,
74647        DATE = 2,
74648        HOUR = 3,
74649        MINUTE = 4,
74650        SECOND = 5,
74651        MILLISECOND = 6,
74652        WEEK = 7,
74653        WEEKDAY = 8;
74654
74655    // FORMATTING
74656
74657    addFormatToken('Y', 0, 0, function () {
74658        var y = this.year();
74659        return y <= 9999 ? zeroFill(y, 4) : '+' + y;
74660    });
74661
74662    addFormatToken(0, ['YY', 2], 0, function () {
74663        return this.year() % 100;
74664    });
74665
74666    addFormatToken(0, ['YYYY', 4], 0, 'year');
74667    addFormatToken(0, ['YYYYY', 5], 0, 'year');
74668    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
74669
74670    // PARSING
74671
74672    addRegexToken('Y', matchSigned);
74673    addRegexToken('YY', match1to2, match2);
74674    addRegexToken('YYYY', match1to4, match4);
74675    addRegexToken('YYYYY', match1to6, match6);
74676    addRegexToken('YYYYYY', match1to6, match6);
74677
74678    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
74679    addParseToken('YYYY', function (input, array) {
74680        array[YEAR] =
74681            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
74682    });
74683    addParseToken('YY', function (input, array) {
74684        array[YEAR] = hooks.parseTwoDigitYear(input);
74685    });
74686    addParseToken('Y', function (input, array) {
74687        array[YEAR] = parseInt(input, 10);
74688    });
74689
74690    // HELPERS
74691
74692    function daysInYear(year) {
74693        return isLeapYear(year) ? 366 : 365;
74694    }
74695
74696    // HOOKS
74697
74698    hooks.parseTwoDigitYear = function (input) {
74699        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
74700    };
74701
74702    // MOMENTS
74703
74704    var getSetYear = makeGetSet('FullYear', true);
74705
74706    function getIsLeapYear() {
74707        return isLeapYear(this.year());
74708    }
74709
74710    function makeGetSet(unit, keepTime) {
74711        return function (value) {
74712            if (value != null) {
74713                set$1(this, unit, value);
74714                hooks.updateOffset(this, keepTime);
74715                return this;
74716            } else {
74717                return get(this, unit);
74718            }
74719        };
74720    }
74721
74722    function get(mom, unit) {
74723        if (!mom.isValid()) {
74724            return NaN;
74725        }
74726
74727        var d = mom._d,
74728            isUTC = mom._isUTC;
74729
74730        switch (unit) {
74731            case 'Milliseconds':
74732                return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();
74733            case 'Seconds':
74734                return isUTC ? d.getUTCSeconds() : d.getSeconds();
74735            case 'Minutes':
74736                return isUTC ? d.getUTCMinutes() : d.getMinutes();
74737            case 'Hours':
74738                return isUTC ? d.getUTCHours() : d.getHours();
74739            case 'Date':
74740                return isUTC ? d.getUTCDate() : d.getDate();
74741            case 'Day':
74742                return isUTC ? d.getUTCDay() : d.getDay();
74743            case 'Month':
74744                return isUTC ? d.getUTCMonth() : d.getMonth();
74745            case 'FullYear':
74746                return isUTC ? d.getUTCFullYear() : d.getFullYear();
74747            default:
74748                return NaN; // Just in case
74749        }
74750    }
74751
74752    function set$1(mom, unit, value) {
74753        var d, isUTC, year, month, date;
74754
74755        if (!mom.isValid() || isNaN(value)) {
74756            return;
74757        }
74758
74759        d = mom._d;
74760        isUTC = mom._isUTC;
74761
74762        switch (unit) {
74763            case 'Milliseconds':
74764                return void (isUTC
74765                    ? d.setUTCMilliseconds(value)
74766                    : d.setMilliseconds(value));
74767            case 'Seconds':
74768                return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));
74769            case 'Minutes':
74770                return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));
74771            case 'Hours':
74772                return void (isUTC ? d.setUTCHours(value) : d.setHours(value));
74773            case 'Date':
74774                return void (isUTC ? d.setUTCDate(value) : d.setDate(value));
74775            // case 'Day': // Not real
74776            //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));
74777            // case 'Month': // Not used because we need to pass two variables
74778            //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));
74779            case 'FullYear':
74780                break; // See below ...
74781            default:
74782                return; // Just in case
74783        }
74784
74785        year = value;
74786        month = mom.month();
74787        date = mom.date();
74788        date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;
74789        void (isUTC
74790            ? d.setUTCFullYear(year, month, date)
74791            : d.setFullYear(year, month, date));
74792    }
74793
74794    // MOMENTS
74795
74796    function stringGet(units) {
74797        units = normalizeUnits(units);
74798        if (isFunction(this[units])) {
74799            return this[units]();
74800        }
74801        return this;
74802    }
74803
74804    function stringSet(units, value) {
74805        if (typeof units === 'object') {
74806            units = normalizeObjectUnits(units);
74807            var prioritized = getPrioritizedUnits(units),
74808                i,
74809                prioritizedLen = prioritized.length;
74810            for (i = 0; i < prioritizedLen; i++) {
74811                this[prioritized[i].unit](units[prioritized[i].unit]);
74812            }
74813        } else {
74814            units = normalizeUnits(units);
74815            if (isFunction(this[units])) {
74816                return this[units](value);
74817            }
74818        }
74819        return this;
74820    }
74821
74822    function mod(n, x) {
74823        return ((n % x) + x) % x;
74824    }
74825
74826    var indexOf;
74827
74828    if (Array.prototype.indexOf) {
74829        indexOf = Array.prototype.indexOf;
74830    } else {
74831        indexOf = function (o) {
74832            // I know
74833            var i;
74834            for (i = 0; i < this.length; ++i) {
74835                if (this[i] === o) {
74836                    return i;
74837                }
74838            }
74839            return -1;
74840        };
74841    }
74842
74843    function daysInMonth(year, month) {
74844        if (isNaN(year) || isNaN(month)) {
74845            return NaN;
74846        }
74847        var modMonth = mod(month, 12);
74848        year += (month - modMonth) / 12;
74849        return modMonth === 1
74850            ? isLeapYear(year)
74851                ? 29
74852                : 28
74853            : 31 - ((modMonth % 7) % 2);
74854    }
74855
74856    // FORMATTING
74857
74858    addFormatToken('M', ['MM', 2], 'Mo', function () {
74859        return this.month() + 1;
74860    });
74861
74862    addFormatToken('MMM', 0, 0, function (format) {
74863        return this.localeData().monthsShort(this, format);
74864    });
74865
74866    addFormatToken('MMMM', 0, 0, function (format) {
74867        return this.localeData().months(this, format);
74868    });
74869
74870    // PARSING
74871
74872    addRegexToken('M', match1to2, match1to2NoLeadingZero);
74873    addRegexToken('MM', match1to2, match2);
74874    addRegexToken('MMM', function (isStrict, locale) {
74875        return locale.monthsShortRegex(isStrict);
74876    });
74877    addRegexToken('MMMM', function (isStrict, locale) {
74878        return locale.monthsRegex(isStrict);
74879    });
74880
74881    addParseToken(['M', 'MM'], function (input, array) {
74882        array[MONTH] = toInt(input) - 1;
74883    });
74884
74885    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
74886        var month = config._locale.monthsParse(input, token, config._strict);
74887        // if we didn't find a month name, mark the date as invalid.
74888        if (month != null) {
74889            array[MONTH] = month;
74890        } else {
74891            getParsingFlags(config).invalidMonth = input;
74892        }
74893    });
74894
74895    // LOCALES
74896
74897    var defaultLocaleMonths =
74898            'January_February_March_April_May_June_July_August_September_October_November_December'.split(
74899                '_'
74900            ),
74901        defaultLocaleMonthsShort =
74902            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
74903        MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
74904        defaultMonthsShortRegex = matchWord,
74905        defaultMonthsRegex = matchWord;
74906
74907    function localeMonths(m, format) {
74908        if (!m) {
74909            return isArray(this._months)
74910                ? this._months
74911                : this._months['standalone'];
74912        }
74913        return isArray(this._months)
74914            ? this._months[m.month()]
74915            : this._months[
74916                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
74917                      ? 'format'
74918                      : 'standalone'
74919              ][m.month()];
74920    }
74921
74922    function localeMonthsShort(m, format) {
74923        if (!m) {
74924            return isArray(this._monthsShort)
74925                ? this._monthsShort
74926                : this._monthsShort['standalone'];
74927        }
74928        return isArray(this._monthsShort)
74929            ? this._monthsShort[m.month()]
74930            : this._monthsShort[
74931                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
74932              ][m.month()];
74933    }
74934
74935    function handleStrictParse(monthName, format, strict) {
74936        var i,
74937            ii,
74938            mom,
74939            llc = monthName.toLocaleLowerCase();
74940        if (!this._monthsParse) {
74941            // this is not used
74942            this._monthsParse = [];
74943            this._longMonthsParse = [];
74944            this._shortMonthsParse = [];
74945            for (i = 0; i < 12; ++i) {
74946                mom = createUTC([2000, i]);
74947                this._shortMonthsParse[i] = this.monthsShort(
74948                    mom,
74949                    ''
74950                ).toLocaleLowerCase();
74951                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
74952            }
74953        }
74954
74955        if (strict) {
74956            if (format === 'MMM') {
74957                ii = indexOf.call(this._shortMonthsParse, llc);
74958                return ii !== -1 ? ii : null;
74959            } else {
74960                ii = indexOf.call(this._longMonthsParse, llc);
74961                return ii !== -1 ? ii : null;
74962            }
74963        } else {
74964            if (format === 'MMM') {
74965                ii = indexOf.call(this._shortMonthsParse, llc);
74966                if (ii !== -1) {
74967                    return ii;
74968                }
74969                ii = indexOf.call(this._longMonthsParse, llc);
74970                return ii !== -1 ? ii : null;
74971            } else {
74972                ii = indexOf.call(this._longMonthsParse, llc);
74973                if (ii !== -1) {
74974                    return ii;
74975                }
74976                ii = indexOf.call(this._shortMonthsParse, llc);
74977                return ii !== -1 ? ii : null;
74978            }
74979        }
74980    }
74981
74982    function localeMonthsParse(monthName, format, strict) {
74983        var i, mom, regex;
74984
74985        if (this._monthsParseExact) {
74986            return handleStrictParse.call(this, monthName, format, strict);
74987        }
74988
74989        if (!this._monthsParse) {
74990            this._monthsParse = [];
74991            this._longMonthsParse = [];
74992            this._shortMonthsParse = [];
74993        }
74994
74995        // TODO: add sorting
74996        // Sorting makes sure if one month (or abbr) is a prefix of another
74997        // see sorting in computeMonthsParse
74998        for (i = 0; i < 12; i++) {
74999            // make the regex if we don't have it already
75000            mom = createUTC([2000, i]);
75001            if (strict && !this._longMonthsParse[i]) {
75002                this._longMonthsParse[i] = new RegExp(
75003                    '^' + this.months(mom, '').replace('.', '') + '$',
75004                    'i'
75005                );
75006                this._shortMonthsParse[i] = new RegExp(
75007                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',
75008                    'i'
75009                );
75010            }
75011            if (!strict && !this._monthsParse[i]) {
75012                regex =
75013                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
75014                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
75015            }
75016            // test the regex
75017            if (
75018                strict &&
75019                format === 'MMMM' &&
75020                this._longMonthsParse[i].test(monthName)
75021            ) {
75022                return i;
75023            } else if (
75024                strict &&
75025                format === 'MMM' &&
75026                this._shortMonthsParse[i].test(monthName)
75027            ) {
75028                return i;
75029            } else if (!strict && this._monthsParse[i].test(monthName)) {
75030                return i;
75031            }
75032        }
75033    }
75034
75035    // MOMENTS
75036
75037    function setMonth(mom, value) {
75038        if (!mom.isValid()) {
75039            // No op
75040            return mom;
75041        }
75042
75043        if (typeof value === 'string') {
75044            if (/^\d+$/.test(value)) {
75045                value = toInt(value);
75046            } else {
75047                value = mom.localeData().monthsParse(value);
75048                // TODO: Another silent failure?
75049                if (!isNumber(value)) {
75050                    return mom;
75051                }
75052            }
75053        }
75054
75055        var month = value,
75056            date = mom.date();
75057
75058        date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));
75059        void (mom._isUTC
75060            ? mom._d.setUTCMonth(month, date)
75061            : mom._d.setMonth(month, date));
75062        return mom;
75063    }
75064
75065    function getSetMonth(value) {
75066        if (value != null) {
75067            setMonth(this, value);
75068            hooks.updateOffset(this, true);
75069            return this;
75070        } else {
75071            return get(this, 'Month');
75072        }
75073    }
75074
75075    function getDaysInMonth() {
75076        return daysInMonth(this.year(), this.month());
75077    }
75078
75079    function monthsShortRegex(isStrict) {
75080        if (this._monthsParseExact) {
75081            if (!hasOwnProp(this, '_monthsRegex')) {
75082                computeMonthsParse.call(this);
75083            }
75084            if (isStrict) {
75085                return this._monthsShortStrictRegex;
75086            } else {
75087                return this._monthsShortRegex;
75088            }
75089        } else {
75090            if (!hasOwnProp(this, '_monthsShortRegex')) {
75091                this._monthsShortRegex = defaultMonthsShortRegex;
75092            }
75093            return this._monthsShortStrictRegex && isStrict
75094                ? this._monthsShortStrictRegex
75095                : this._monthsShortRegex;
75096        }
75097    }
75098
75099    function monthsRegex(isStrict) {
75100        if (this._monthsParseExact) {
75101            if (!hasOwnProp(this, '_monthsRegex')) {
75102                computeMonthsParse.call(this);
75103            }
75104            if (isStrict) {
75105                return this._monthsStrictRegex;
75106            } else {
75107                return this._monthsRegex;
75108            }
75109        } else {
75110            if (!hasOwnProp(this, '_monthsRegex')) {
75111                this._monthsRegex = defaultMonthsRegex;
75112            }
75113            return this._monthsStrictRegex && isStrict
75114                ? this._monthsStrictRegex
75115                : this._monthsRegex;
75116        }
75117    }
75118
75119    function computeMonthsParse() {
75120        function cmpLenRev(a, b) {
75121            return b.length - a.length;
75122        }
75123
75124        var shortPieces = [],
75125            longPieces = [],
75126            mixedPieces = [],
75127            i,
75128            mom,
75129            shortP,
75130            longP;
75131        for (i = 0; i < 12; i++) {
75132            // make the regex if we don't have it already
75133            mom = createUTC([2000, i]);
75134            shortP = regexEscape(this.monthsShort(mom, ''));
75135            longP = regexEscape(this.months(mom, ''));
75136            shortPieces.push(shortP);
75137            longPieces.push(longP);
75138            mixedPieces.push(longP);
75139            mixedPieces.push(shortP);
75140        }
75141        // Sorting makes sure if one month (or abbr) is a prefix of another it
75142        // will match the longer piece.
75143        shortPieces.sort(cmpLenRev);
75144        longPieces.sort(cmpLenRev);
75145        mixedPieces.sort(cmpLenRev);
75146
75147        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
75148        this._monthsShortRegex = this._monthsRegex;
75149        this._monthsStrictRegex = new RegExp(
75150            '^(' + longPieces.join('|') + ')',
75151            'i'
75152        );
75153        this._monthsShortStrictRegex = new RegExp(
75154            '^(' + shortPieces.join('|') + ')',
75155            'i'
75156        );
75157    }
75158
75159    function createDate(y, m, d, h, M, s, ms) {
75160        // can't just apply() to create a date:
75161        // https://stackoverflow.com/q/181348
75162        var date;
75163        // the date constructor remaps years 0-99 to 1900-1999
75164        if (y < 100 && y >= 0) {
75165            // preserve leap years using a full 400 year cycle, then reset
75166            date = new Date(y + 400, m, d, h, M, s, ms);
75167            if (isFinite(date.getFullYear())) {
75168                date.setFullYear(y);
75169            }
75170        } else {
75171            date = new Date(y, m, d, h, M, s, ms);
75172        }
75173
75174        return date;
75175    }
75176
75177    function createUTCDate(y) {
75178        var date, args;
75179        // the Date.UTC function remaps years 0-99 to 1900-1999
75180        if (y < 100 && y >= 0) {
75181            args = Array.prototype.slice.call(arguments);
75182            // preserve leap years using a full 400 year cycle, then reset
75183            args[0] = y + 400;
75184            date = new Date(Date.UTC.apply(null, args));
75185            if (isFinite(date.getUTCFullYear())) {
75186                date.setUTCFullYear(y);
75187            }
75188        } else {
75189            date = new Date(Date.UTC.apply(null, arguments));
75190        }
75191
75192        return date;
75193    }
75194
75195    // start-of-first-week - start-of-year
75196    function firstWeekOffset(year, dow, doy) {
75197        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
75198            fwd = 7 + dow - doy,
75199            // first-week day local weekday -- which local weekday is fwd
75200            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
75201
75202        return -fwdlw + fwd - 1;
75203    }
75204
75205    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
75206    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
75207        var localWeekday = (7 + weekday - dow) % 7,
75208            weekOffset = firstWeekOffset(year, dow, doy),
75209            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
75210            resYear,
75211            resDayOfYear;
75212
75213        if (dayOfYear <= 0) {
75214            resYear = year - 1;
75215            resDayOfYear = daysInYear(resYear) + dayOfYear;
75216        } else if (dayOfYear > daysInYear(year)) {
75217            resYear = year + 1;
75218            resDayOfYear = dayOfYear - daysInYear(year);
75219        } else {
75220            resYear = year;
75221            resDayOfYear = dayOfYear;
75222        }
75223
75224        return {
75225            year: resYear,
75226            dayOfYear: resDayOfYear,
75227        };
75228    }
75229
75230    function weekOfYear(mom, dow, doy) {
75231        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
75232            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
75233            resWeek,
75234            resYear;
75235
75236        if (week < 1) {
75237            resYear = mom.year() - 1;
75238            resWeek = week + weeksInYear(resYear, dow, doy);
75239        } else if (week > weeksInYear(mom.year(), dow, doy)) {
75240            resWeek = week - weeksInYear(mom.year(), dow, doy);
75241            resYear = mom.year() + 1;
75242        } else {
75243            resYear = mom.year();
75244            resWeek = week;
75245        }
75246
75247        return {
75248            week: resWeek,
75249            year: resYear,
75250        };
75251    }
75252
75253    function weeksInYear(year, dow, doy) {
75254        var weekOffset = firstWeekOffset(year, dow, doy),
75255            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
75256        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
75257    }
75258
75259    // FORMATTING
75260
75261    addFormatToken('w', ['ww', 2], 'wo', 'week');
75262    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
75263
75264    // PARSING
75265
75266    addRegexToken('w', match1to2, match1to2NoLeadingZero);
75267    addRegexToken('ww', match1to2, match2);
75268    addRegexToken('W', match1to2, match1to2NoLeadingZero);
75269    addRegexToken('WW', match1to2, match2);
75270
75271    addWeekParseToken(
75272        ['w', 'ww', 'W', 'WW'],
75273        function (input, week, config, token) {
75274            week[token.substr(0, 1)] = toInt(input);
75275        }
75276    );
75277
75278    // HELPERS
75279
75280    // LOCALES
75281
75282    function localeWeek(mom) {
75283        return weekOfYear(mom, this._week.dow, this._week.doy).week;
75284    }
75285
75286    var defaultLocaleWeek = {
75287        dow: 0, // Sunday is the first day of the week.
75288        doy: 6, // The week that contains Jan 6th is the first week of the year.
75289    };
75290
75291    function localeFirstDayOfWeek() {
75292        return this._week.dow;
75293    }
75294
75295    function localeFirstDayOfYear() {
75296        return this._week.doy;
75297    }
75298
75299    // MOMENTS
75300
75301    function getSetWeek(input) {
75302        var week = this.localeData().week(this);
75303        return input == null ? week : this.add((input - week) * 7, 'd');
75304    }
75305
75306    function getSetISOWeek(input) {
75307        var week = weekOfYear(this, 1, 4).week;
75308        return input == null ? week : this.add((input - week) * 7, 'd');
75309    }
75310
75311    // FORMATTING
75312
75313    addFormatToken('d', 0, 'do', 'day');
75314
75315    addFormatToken('dd', 0, 0, function (format) {
75316        return this.localeData().weekdaysMin(this, format);
75317    });
75318
75319    addFormatToken('ddd', 0, 0, function (format) {
75320        return this.localeData().weekdaysShort(this, format);
75321    });
75322
75323    addFormatToken('dddd', 0, 0, function (format) {
75324        return this.localeData().weekdays(this, format);
75325    });
75326
75327    addFormatToken('e', 0, 0, 'weekday');
75328    addFormatToken('E', 0, 0, 'isoWeekday');
75329
75330    // PARSING
75331
75332    addRegexToken('d', match1to2);
75333    addRegexToken('e', match1to2);
75334    addRegexToken('E', match1to2);
75335    addRegexToken('dd', function (isStrict, locale) {
75336        return locale.weekdaysMinRegex(isStrict);
75337    });
75338    addRegexToken('ddd', function (isStrict, locale) {
75339        return locale.weekdaysShortRegex(isStrict);
75340    });
75341    addRegexToken('dddd', function (isStrict, locale) {
75342        return locale.weekdaysRegex(isStrict);
75343    });
75344
75345    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
75346        var weekday = config._locale.weekdaysParse(input, token, config._strict);
75347        // if we didn't get a weekday name, mark the date as invalid
75348        if (weekday != null) {
75349            week.d = weekday;
75350        } else {
75351            getParsingFlags(config).invalidWeekday = input;
75352        }
75353    });
75354
75355    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
75356        week[token] = toInt(input);
75357    });
75358
75359    // HELPERS
75360
75361    function parseWeekday(input, locale) {
75362        if (typeof input !== 'string') {
75363            return input;
75364        }
75365
75366        if (!isNaN(input)) {
75367            return parseInt(input, 10);
75368        }
75369
75370        input = locale.weekdaysParse(input);
75371        if (typeof input === 'number') {
75372            return input;
75373        }
75374
75375        return null;
75376    }
75377
75378    function parseIsoWeekday(input, locale) {
75379        if (typeof input === 'string') {
75380            return locale.weekdaysParse(input) % 7 || 7;
75381        }
75382        return isNaN(input) ? null : input;
75383    }
75384
75385    // LOCALES
75386    function shiftWeekdays(ws, n) {
75387        return ws.slice(n, 7).concat(ws.slice(0, n));
75388    }
75389
75390    var defaultLocaleWeekdays =
75391            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
75392        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
75393        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
75394        defaultWeekdaysRegex = matchWord,
75395        defaultWeekdaysShortRegex = matchWord,
75396        defaultWeekdaysMinRegex = matchWord;
75397
75398    function localeWeekdays(m, format) {
75399        var weekdays = isArray(this._weekdays)
75400            ? this._weekdays
75401            : this._weekdays[
75402                  m && m !== true && this._weekdays.isFormat.test(format)
75403                      ? 'format'
75404                      : 'standalone'
75405              ];
75406        return m === true
75407            ? shiftWeekdays(weekdays, this._week.dow)
75408            : m
75409              ? weekdays[m.day()]
75410              : weekdays;
75411    }
75412
75413    function localeWeekdaysShort(m) {
75414        return m === true
75415            ? shiftWeekdays(this._weekdaysShort, this._week.dow)
75416            : m
75417              ? this._weekdaysShort[m.day()]
75418              : this._weekdaysShort;
75419    }
75420
75421    function localeWeekdaysMin(m) {
75422        return m === true
75423            ? shiftWeekdays(this._weekdaysMin, this._week.dow)
75424            : m
75425              ? this._weekdaysMin[m.day()]
75426              : this._weekdaysMin;
75427    }
75428
75429    function handleStrictParse$1(weekdayName, format, strict) {
75430        var i,
75431            ii,
75432            mom,
75433            llc = weekdayName.toLocaleLowerCase();
75434        if (!this._weekdaysParse) {
75435            this._weekdaysParse = [];
75436            this._shortWeekdaysParse = [];
75437            this._minWeekdaysParse = [];
75438
75439            for (i = 0; i < 7; ++i) {
75440                mom = createUTC([2000, 1]).day(i);
75441                this._minWeekdaysParse[i] = this.weekdaysMin(
75442                    mom,
75443                    ''
75444                ).toLocaleLowerCase();
75445                this._shortWeekdaysParse[i] = this.weekdaysShort(
75446                    mom,
75447                    ''
75448                ).toLocaleLowerCase();
75449                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
75450            }
75451        }
75452
75453        if (strict) {
75454            if (format === 'dddd') {
75455                ii = indexOf.call(this._weekdaysParse, llc);
75456                return ii !== -1 ? ii : null;
75457            } else if (format === 'ddd') {
75458                ii = indexOf.call(this._shortWeekdaysParse, llc);
75459                return ii !== -1 ? ii : null;
75460            } else {
75461                ii = indexOf.call(this._minWeekdaysParse, llc);
75462                return ii !== -1 ? ii : null;
75463            }
75464        } else {
75465            if (format === 'dddd') {
75466                ii = indexOf.call(this._weekdaysParse, llc);
75467                if (ii !== -1) {
75468                    return ii;
75469                }
75470                ii = indexOf.call(this._shortWeekdaysParse, llc);
75471                if (ii !== -1) {
75472                    return ii;
75473                }
75474                ii = indexOf.call(this._minWeekdaysParse, llc);
75475                return ii !== -1 ? ii : null;
75476            } else if (format === 'ddd') {
75477                ii = indexOf.call(this._shortWeekdaysParse, llc);
75478                if (ii !== -1) {
75479                    return ii;
75480                }
75481                ii = indexOf.call(this._weekdaysParse, llc);
75482                if (ii !== -1) {
75483                    return ii;
75484                }
75485                ii = indexOf.call(this._minWeekdaysParse, llc);
75486                return ii !== -1 ? ii : null;
75487            } else {
75488                ii = indexOf.call(this._minWeekdaysParse, llc);
75489                if (ii !== -1) {
75490                    return ii;
75491                }
75492                ii = indexOf.call(this._weekdaysParse, llc);
75493                if (ii !== -1) {
75494                    return ii;
75495                }
75496                ii = indexOf.call(this._shortWeekdaysParse, llc);
75497                return ii !== -1 ? ii : null;
75498            }
75499        }
75500    }
75501
75502    function localeWeekdaysParse(weekdayName, format, strict) {
75503        var i, mom, regex;
75504
75505        if (this._weekdaysParseExact) {
75506            return handleStrictParse$1.call(this, weekdayName, format, strict);
75507        }
75508
75509        if (!this._weekdaysParse) {
75510            this._weekdaysParse = [];
75511            this._minWeekdaysParse = [];
75512            this._shortWeekdaysParse = [];
75513            this._fullWeekdaysParse = [];
75514        }
75515
75516        for (i = 0; i < 7; i++) {
75517            // make the regex if we don't have it already
75518
75519            mom = createUTC([2000, 1]).day(i);
75520            if (strict && !this._fullWeekdaysParse[i]) {
75521                this._fullWeekdaysParse[i] = new RegExp(
75522                    '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
75523                    'i'
75524                );
75525                this._shortWeekdaysParse[i] = new RegExp(
75526                    '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
75527                    'i'
75528                );
75529                this._minWeekdaysParse[i] = new RegExp(
75530                    '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
75531                    'i'
75532                );
75533            }
75534            if (!this._weekdaysParse[i]) {
75535                regex =
75536                    '^' +
75537                    this.weekdays(mom, '') +
75538                    '|^' +
75539                    this.weekdaysShort(mom, '') +
75540                    '|^' +
75541                    this.weekdaysMin(mom, '');
75542                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
75543            }
75544            // test the regex
75545            if (
75546                strict &&
75547                format === 'dddd' &&
75548                this._fullWeekdaysParse[i].test(weekdayName)
75549            ) {
75550                return i;
75551            } else if (
75552                strict &&
75553                format === 'ddd' &&
75554                this._shortWeekdaysParse[i].test(weekdayName)
75555            ) {
75556                return i;
75557            } else if (
75558                strict &&
75559                format === 'dd' &&
75560                this._minWeekdaysParse[i].test(weekdayName)
75561            ) {
75562                return i;
75563            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
75564                return i;
75565            }
75566        }
75567    }
75568
75569    // MOMENTS
75570
75571    function getSetDayOfWeek(input) {
75572        if (!this.isValid()) {
75573            return input != null ? this : NaN;
75574        }
75575
75576        var day = get(this, 'Day');
75577        if (input != null) {
75578            input = parseWeekday(input, this.localeData());
75579            return this.add(input - day, 'd');
75580        } else {
75581            return day;
75582        }
75583    }
75584
75585    function getSetLocaleDayOfWeek(input) {
75586        if (!this.isValid()) {
75587            return input != null ? this : NaN;
75588        }
75589        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
75590        return input == null ? weekday : this.add(input - weekday, 'd');
75591    }
75592
75593    function getSetISODayOfWeek(input) {
75594        if (!this.isValid()) {
75595            return input != null ? this : NaN;
75596        }
75597
75598        // behaves the same as moment#day except
75599        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
75600        // as a setter, sunday should belong to the previous week.
75601
75602        if (input != null) {
75603            var weekday = parseIsoWeekday(input, this.localeData());
75604            return this.day(this.day() % 7 ? weekday : weekday - 7);
75605        } else {
75606            return this.day() || 7;
75607        }
75608    }
75609
75610    function weekdaysRegex(isStrict) {
75611        if (this._weekdaysParseExact) {
75612            if (!hasOwnProp(this, '_weekdaysRegex')) {
75613                computeWeekdaysParse.call(this);
75614            }
75615            if (isStrict) {
75616                return this._weekdaysStrictRegex;
75617            } else {
75618                return this._weekdaysRegex;
75619            }
75620        } else {
75621            if (!hasOwnProp(this, '_weekdaysRegex')) {
75622                this._weekdaysRegex = defaultWeekdaysRegex;
75623            }
75624            return this._weekdaysStrictRegex && isStrict
75625                ? this._weekdaysStrictRegex
75626                : this._weekdaysRegex;
75627        }
75628    }
75629
75630    function weekdaysShortRegex(isStrict) {
75631        if (this._weekdaysParseExact) {
75632            if (!hasOwnProp(this, '_weekdaysRegex')) {
75633                computeWeekdaysParse.call(this);
75634            }
75635            if (isStrict) {
75636                return this._weekdaysShortStrictRegex;
75637            } else {
75638                return this._weekdaysShortRegex;
75639            }
75640        } else {
75641            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
75642                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
75643            }
75644            return this._weekdaysShortStrictRegex && isStrict
75645                ? this._weekdaysShortStrictRegex
75646                : this._weekdaysShortRegex;
75647        }
75648    }
75649
75650    function weekdaysMinRegex(isStrict) {
75651        if (this._weekdaysParseExact) {
75652            if (!hasOwnProp(this, '_weekdaysRegex')) {
75653                computeWeekdaysParse.call(this);
75654            }
75655            if (isStrict) {
75656                return this._weekdaysMinStrictRegex;
75657            } else {
75658                return this._weekdaysMinRegex;
75659            }
75660        } else {
75661            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
75662                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
75663            }
75664            return this._weekdaysMinStrictRegex && isStrict
75665                ? this._weekdaysMinStrictRegex
75666                : this._weekdaysMinRegex;
75667        }
75668    }
75669
75670    function computeWeekdaysParse() {
75671        function cmpLenRev(a, b) {
75672            return b.length - a.length;
75673        }
75674
75675        var minPieces = [],
75676            shortPieces = [],
75677            longPieces = [],
75678            mixedPieces = [],
75679            i,
75680            mom,
75681            minp,
75682            shortp,
75683            longp;
75684        for (i = 0; i < 7; i++) {
75685            // make the regex if we don't have it already
75686            mom = createUTC([2000, 1]).day(i);
75687            minp = regexEscape(this.weekdaysMin(mom, ''));
75688            shortp = regexEscape(this.weekdaysShort(mom, ''));
75689            longp = regexEscape(this.weekdays(mom, ''));
75690            minPieces.push(minp);
75691            shortPieces.push(shortp);
75692            longPieces.push(longp);
75693            mixedPieces.push(minp);
75694            mixedPieces.push(shortp);
75695            mixedPieces.push(longp);
75696        }
75697        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
75698        // will match the longer piece.
75699        minPieces.sort(cmpLenRev);
75700        shortPieces.sort(cmpLenRev);
75701        longPieces.sort(cmpLenRev);
75702        mixedPieces.sort(cmpLenRev);
75703
75704        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
75705        this._weekdaysShortRegex = this._weekdaysRegex;
75706        this._weekdaysMinRegex = this._weekdaysRegex;
75707
75708        this._weekdaysStrictRegex = new RegExp(
75709            '^(' + longPieces.join('|') + ')',
75710            'i'
75711        );
75712        this._weekdaysShortStrictRegex = new RegExp(
75713            '^(' + shortPieces.join('|') + ')',
75714            'i'
75715        );
75716        this._weekdaysMinStrictRegex = new RegExp(
75717            '^(' + minPieces.join('|') + ')',
75718            'i'
75719        );
75720    }
75721
75722    // FORMATTING
75723
75724    function hFormat() {
75725        return this.hours() % 12 || 12;
75726    }
75727
75728    function kFormat() {
75729        return this.hours() || 24;
75730    }
75731
75732    addFormatToken('H', ['HH', 2], 0, 'hour');
75733    addFormatToken('h', ['hh', 2], 0, hFormat);
75734    addFormatToken('k', ['kk', 2], 0, kFormat);
75735
75736    addFormatToken('hmm', 0, 0, function () {
75737        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
75738    });
75739
75740    addFormatToken('hmmss', 0, 0, function () {
75741        return (
75742            '' +
75743            hFormat.apply(this) +
75744            zeroFill(this.minutes(), 2) +
75745            zeroFill(this.seconds(), 2)
75746        );
75747    });
75748
75749    addFormatToken('Hmm', 0, 0, function () {
75750        return '' + this.hours() + zeroFill(this.minutes(), 2);
75751    });
75752
75753    addFormatToken('Hmmss', 0, 0, function () {
75754        return (
75755            '' +
75756            this.hours() +
75757            zeroFill(this.minutes(), 2) +
75758            zeroFill(this.seconds(), 2)
75759        );
75760    });
75761
75762    function meridiem(token, lowercase) {
75763        addFormatToken(token, 0, 0, function () {
75764            return this.localeData().meridiem(
75765                this.hours(),
75766                this.minutes(),
75767                lowercase
75768            );
75769        });
75770    }
75771
75772    meridiem('a', true);
75773    meridiem('A', false);
75774
75775    // PARSING
75776
75777    function matchMeridiem(isStrict, locale) {
75778        return locale._meridiemParse;
75779    }
75780
75781    addRegexToken('a', matchMeridiem);
75782    addRegexToken('A', matchMeridiem);
75783    addRegexToken('H', match1to2, match1to2HasZero);
75784    addRegexToken('h', match1to2, match1to2NoLeadingZero);
75785    addRegexToken('k', match1to2, match1to2NoLeadingZero);
75786    addRegexToken('HH', match1to2, match2);
75787    addRegexToken('hh', match1to2, match2);
75788    addRegexToken('kk', match1to2, match2);
75789
75790    addRegexToken('hmm', match3to4);
75791    addRegexToken('hmmss', match5to6);
75792    addRegexToken('Hmm', match3to4);
75793    addRegexToken('Hmmss', match5to6);
75794
75795    addParseToken(['H', 'HH'], HOUR);
75796    addParseToken(['k', 'kk'], function (input, array, config) {
75797        var kInput = toInt(input);
75798        array[HOUR] = kInput === 24 ? 0 : kInput;
75799    });
75800    addParseToken(['a', 'A'], function (input, array, config) {
75801        config._isPm = config._locale.isPM(input);
75802        config._meridiem = input;
75803    });
75804    addParseToken(['h', 'hh'], function (input, array, config) {
75805        array[HOUR] = toInt(input);
75806        getParsingFlags(config).bigHour = true;
75807    });
75808    addParseToken('hmm', function (input, array, config) {
75809        var pos = input.length - 2;
75810        array[HOUR] = toInt(input.substr(0, pos));
75811        array[MINUTE] = toInt(input.substr(pos));
75812        getParsingFlags(config).bigHour = true;
75813    });
75814    addParseToken('hmmss', function (input, array, config) {
75815        var pos1 = input.length - 4,
75816            pos2 = input.length - 2;
75817        array[HOUR] = toInt(input.substr(0, pos1));
75818        array[MINUTE] = toInt(input.substr(pos1, 2));
75819        array[SECOND] = toInt(input.substr(pos2));
75820        getParsingFlags(config).bigHour = true;
75821    });
75822    addParseToken('Hmm', function (input, array, config) {
75823        var pos = input.length - 2;
75824        array[HOUR] = toInt(input.substr(0, pos));
75825        array[MINUTE] = toInt(input.substr(pos));
75826    });
75827    addParseToken('Hmmss', function (input, array, config) {
75828        var pos1 = input.length - 4,
75829            pos2 = input.length - 2;
75830        array[HOUR] = toInt(input.substr(0, pos1));
75831        array[MINUTE] = toInt(input.substr(pos1, 2));
75832        array[SECOND] = toInt(input.substr(pos2));
75833    });
75834
75835    // LOCALES
75836
75837    function localeIsPM(input) {
75838        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
75839        // Using charAt should be more compatible.
75840        return (input + '').toLowerCase().charAt(0) === 'p';
75841    }
75842
75843    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
75844        // Setting the hour should keep the time, because the user explicitly
75845        // specified which hour they want. So trying to maintain the same hour (in
75846        // a new timezone) makes sense. Adding/subtracting hours does not follow
75847        // this rule.
75848        getSetHour = makeGetSet('Hours', true);
75849
75850    function localeMeridiem(hours, minutes, isLower) {
75851        if (hours > 11) {
75852            return isLower ? 'pm' : 'PM';
75853        } else {
75854            return isLower ? 'am' : 'AM';
75855        }
75856    }
75857
75858    var baseConfig = {
75859        calendar: defaultCalendar,
75860        longDateFormat: defaultLongDateFormat,
75861        invalidDate: defaultInvalidDate,
75862        ordinal: defaultOrdinal,
75863        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
75864        relativeTime: defaultRelativeTime,
75865
75866        months: defaultLocaleMonths,
75867        monthsShort: defaultLocaleMonthsShort,
75868
75869        week: defaultLocaleWeek,
75870
75871        weekdays: defaultLocaleWeekdays,
75872        weekdaysMin: defaultLocaleWeekdaysMin,
75873        weekdaysShort: defaultLocaleWeekdaysShort,
75874
75875        meridiemParse: defaultLocaleMeridiemParse,
75876    };
75877
75878    // internal storage for locale config files
75879    var locales = {},
75880        localeFamilies = {},
75881        globalLocale;
75882
75883    function commonPrefix(arr1, arr2) {
75884        var i,
75885            minl = Math.min(arr1.length, arr2.length);
75886        for (i = 0; i < minl; i += 1) {
75887            if (arr1[i] !== arr2[i]) {
75888                return i;
75889            }
75890        }
75891        return minl;
75892    }
75893
75894    function normalizeLocale(key) {
75895        return key ? key.toLowerCase().replace('_', '-') : key;
75896    }
75897
75898    // pick the locale from the array
75899    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
75900    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
75901    function chooseLocale(names) {
75902        var i = 0,
75903            j,
75904            next,
75905            locale,
75906            split;
75907
75908        while (i < names.length) {
75909            split = normalizeLocale(names[i]).split('-');
75910            j = split.length;
75911            next = normalizeLocale(names[i + 1]);
75912            next = next ? next.split('-') : null;
75913            while (j > 0) {
75914                locale = loadLocale(split.slice(0, j).join('-'));
75915                if (locale) {
75916                    return locale;
75917                }
75918                if (
75919                    next &&
75920                    next.length >= j &&
75921                    commonPrefix(split, next) >= j - 1
75922                ) {
75923                    //the next array item is better than a shallower substring of this one
75924                    break;
75925                }
75926                j--;
75927            }
75928            i++;
75929        }
75930        return globalLocale;
75931    }
75932
75933    function isLocaleNameSane(name) {
75934        // Prevent names that look like filesystem paths, i.e contain '/' or '\'
75935        // Ensure name is available and function returns boolean
75936        return !!(name && name.match('^[^/\\\\]*$'));
75937    }
75938
75939    function loadLocale(name) {
75940        var oldLocale = null,
75941            aliasedRequire;
75942        // TODO: Find a better way to register and load all the locales in Node
75943        if (
75944            locales[name] === undefined &&
75945            "object" !== 'undefined' &&
75946            module &&
75947            module.exports &&
75948            isLocaleNameSane(name)
75949        ) {
75950            try {
75951                oldLocale = globalLocale._abbr;
75952                aliasedRequire = undefined;
75953                __webpack_require__("./node_modules/moment/locale sync recursive ^\\.\\/.*$")("./" + name);
75954                getSetGlobalLocale(oldLocale);
75955            } catch (e) {
75956                // mark as not found to avoid repeating expensive file require call causing high CPU
75957                // when trying to find en-US, en_US, en-us for every format call
75958                locales[name] = null; // null means not found
75959            }
75960        }
75961        return locales[name];
75962    }
75963
75964    // This function will load locale and then set the global locale.  If
75965    // no arguments are passed in, it will simply return the current global
75966    // locale key.
75967    function getSetGlobalLocale(key, values) {
75968        var data;
75969        if (key) {
75970            if (isUndefined(values)) {
75971                data = getLocale(key);
75972            } else {
75973                data = defineLocale(key, values);
75974            }
75975
75976            if (data) {
75977                // moment.duration._locale = moment._locale = data;
75978                globalLocale = data;
75979            } else {
75980                if (typeof console !== 'undefined' && console.warn) {
75981                    //warn user if arguments are passed but the locale could not be set
75982                    console.warn(
75983                        'Locale ' + key + ' not found. Did you forget to load it?'
75984                    );
75985                }
75986            }
75987        }
75988
75989        return globalLocale._abbr;
75990    }
75991
75992    function defineLocale(name, config) {
75993        if (config !== null) {
75994            var locale,
75995                parentConfig = baseConfig;
75996            config.abbr = name;
75997            if (locales[name] != null) {
75998                deprecateSimple(
75999                    'defineLocaleOverride',
76000                    'use moment.updateLocale(localeName, config) to change ' +
76001                        'an existing locale. moment.defineLocale(localeName, ' +
76002                        'config) should only be used for creating a new locale ' +
76003                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
76004                );
76005                parentConfig = locales[name]._config;
76006            } else if (config.parentLocale != null) {
76007                if (locales[config.parentLocale] != null) {
76008                    parentConfig = locales[config.parentLocale]._config;
76009                } else {
76010                    locale = loadLocale(config.parentLocale);
76011                    if (locale != null) {
76012                        parentConfig = locale._config;
76013                    } else {
76014                        if (!localeFamilies[config.parentLocale]) {
76015                            localeFamilies[config.parentLocale] = [];
76016                        }
76017                        localeFamilies[config.parentLocale].push({
76018                            name: name,
76019                            config: config,
76020                        });
76021                        return null;
76022                    }
76023                }
76024            }
76025            locales[name] = new Locale(mergeConfigs(parentConfig, config));
76026
76027            if (localeFamilies[name]) {
76028                localeFamilies[name].forEach(function (x) {
76029                    defineLocale(x.name, x.config);
76030                });
76031            }
76032
76033            // backwards compat for now: also set the locale
76034            // make sure we set the locale AFTER all child locales have been
76035            // created, so we won't end up with the child locale set.
76036            getSetGlobalLocale(name);
76037
76038            return locales[name];
76039        } else {
76040            // useful for testing
76041            delete locales[name];
76042            return null;
76043        }
76044    }
76045
76046    function updateLocale(name, config) {
76047        if (config != null) {
76048            var locale,
76049                tmpLocale,
76050                parentConfig = baseConfig;
76051
76052            if (locales[name] != null && locales[name].parentLocale != null) {
76053                // Update existing child locale in-place to avoid memory-leaks
76054                locales[name].set(mergeConfigs(locales[name]._config, config));
76055            } else {
76056                // MERGE
76057                tmpLocale = loadLocale(name);
76058                if (tmpLocale != null) {
76059                    parentConfig = tmpLocale._config;
76060                }
76061                config = mergeConfigs(parentConfig, config);
76062                if (tmpLocale == null) {
76063                    // updateLocale is called for creating a new locale
76064                    // Set abbr so it will have a name (getters return
76065                    // undefined otherwise).
76066                    config.abbr = name;
76067                }
76068                locale = new Locale(config);
76069                locale.parentLocale = locales[name];
76070                locales[name] = locale;
76071            }
76072
76073            // backwards compat for now: also set the locale
76074            getSetGlobalLocale(name);
76075        } else {
76076            // pass null for config to unupdate, useful for tests
76077            if (locales[name] != null) {
76078                if (locales[name].parentLocale != null) {
76079                    locales[name] = locales[name].parentLocale;
76080                    if (name === getSetGlobalLocale()) {
76081                        getSetGlobalLocale(name);
76082                    }
76083                } else if (locales[name] != null) {
76084                    delete locales[name];
76085                }
76086            }
76087        }
76088        return locales[name];
76089    }
76090
76091    // returns locale data
76092    function getLocale(key) {
76093        var locale;
76094
76095        if (key && key._locale && key._locale._abbr) {
76096            key = key._locale._abbr;
76097        }
76098
76099        if (!key) {
76100            return globalLocale;
76101        }
76102
76103        if (!isArray(key)) {
76104            //short-circuit everything else
76105            locale = loadLocale(key);
76106            if (locale) {
76107                return locale;
76108            }
76109            key = [key];
76110        }
76111
76112        return chooseLocale(key);
76113    }
76114
76115    function listLocales() {
76116        return keys(locales);
76117    }
76118
76119    function checkOverflow(m) {
76120        var overflow,
76121            a = m._a;
76122
76123        if (a && getParsingFlags(m).overflow === -2) {
76124            overflow =
76125                a[MONTH] < 0 || a[MONTH] > 11
76126                    ? MONTH
76127                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
76128                      ? DATE
76129                      : a[HOUR] < 0 ||
76130                          a[HOUR] > 24 ||
76131                          (a[HOUR] === 24 &&
76132                              (a[MINUTE] !== 0 ||
76133                                  a[SECOND] !== 0 ||
76134                                  a[MILLISECOND] !== 0))
76135                        ? HOUR
76136                        : a[MINUTE] < 0 || a[MINUTE] > 59
76137                          ? MINUTE
76138                          : a[SECOND] < 0 || a[SECOND] > 59
76139                            ? SECOND
76140                            : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
76141                              ? MILLISECOND
76142                              : -1;
76143
76144            if (
76145                getParsingFlags(m)._overflowDayOfYear &&
76146                (overflow < YEAR || overflow > DATE)
76147            ) {
76148                overflow = DATE;
76149            }
76150            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
76151                overflow = WEEK;
76152            }
76153            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
76154                overflow = WEEKDAY;
76155            }
76156
76157            getParsingFlags(m).overflow = overflow;
76158        }
76159
76160        return m;
76161    }
76162
76163    // iso 8601 regex
76164    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
76165    var extendedIsoRegex =
76166            /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
76167        basicIsoRegex =
76168            /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
76169        tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
76170        isoDates = [
76171            ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
76172            ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
76173            ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
76174            ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
76175            ['YYYY-DDD', /\d{4}-\d{3}/],
76176            ['YYYY-MM', /\d{4}-\d\d/, false],
76177            ['YYYYYYMMDD', /[+-]\d{10}/],
76178            ['YYYYMMDD', /\d{8}/],
76179            ['GGGG[W]WWE', /\d{4}W\d{3}/],
76180            ['GGGG[W]WW', /\d{4}W\d{2}/, false],
76181            ['YYYYDDD', /\d{7}/],
76182            ['YYYYMM', /\d{6}/, false],
76183            ['YYYY', /\d{4}/, false],
76184        ],
76185        // iso time formats and regexes
76186        isoTimes = [
76187            ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
76188            ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
76189            ['HH:mm:ss', /\d\d:\d\d:\d\d/],
76190            ['HH:mm', /\d\d:\d\d/],
76191            ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
76192            ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
76193            ['HHmmss', /\d\d\d\d\d\d/],
76194            ['HHmm', /\d\d\d\d/],
76195            ['HH', /\d\d/],
76196        ],
76197        aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
76198        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
76199        rfc2822 =
76200            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
76201        obsOffsets = {
76202            UT: 0,
76203            GMT: 0,
76204            EDT: -4 * 60,
76205            EST: -5 * 60,
76206            CDT: -5 * 60,
76207            CST: -6 * 60,
76208            MDT: -6 * 60,
76209            MST: -7 * 60,
76210            PDT: -7 * 60,
76211            PST: -8 * 60,
76212        };
76213
76214    // date from iso format
76215    function configFromISO(config) {
76216        var i,
76217            l,
76218            string = config._i,
76219            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
76220            allowTime,
76221            dateFormat,
76222            timeFormat,
76223            tzFormat,
76224            isoDatesLen = isoDates.length,
76225            isoTimesLen = isoTimes.length;
76226
76227        if (match) {
76228            getParsingFlags(config).iso = true;
76229            for (i = 0, l = isoDatesLen; i < l; i++) {
76230                if (isoDates[i][1].exec(match[1])) {
76231                    dateFormat = isoDates[i][0];
76232                    allowTime = isoDates[i][2] !== false;
76233                    break;
76234                }
76235            }
76236            if (dateFormat == null) {
76237                config._isValid = false;
76238                return;
76239            }
76240            if (match[3]) {
76241                for (i = 0, l = isoTimesLen; i < l; i++) {
76242                    if (isoTimes[i][1].exec(match[3])) {
76243                        // match[2] should be 'T' or space
76244                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
76245                        break;
76246                    }
76247                }
76248                if (timeFormat == null) {
76249                    config._isValid = false;
76250                    return;
76251                }
76252            }
76253            if (!allowTime && timeFormat != null) {
76254                config._isValid = false;
76255                return;
76256            }
76257            if (match[4]) {
76258                if (tzRegex.exec(match[4])) {
76259                    tzFormat = 'Z';
76260                } else {
76261                    config._isValid = false;
76262                    return;
76263                }
76264            }
76265            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
76266            configFromStringAndFormat(config);
76267        } else {
76268            config._isValid = false;
76269        }
76270    }
76271
76272    function extractFromRFC2822Strings(
76273        yearStr,
76274        monthStr,
76275        dayStr,
76276        hourStr,
76277        minuteStr,
76278        secondStr
76279    ) {
76280        var result = [
76281            untruncateYear(yearStr),
76282            defaultLocaleMonthsShort.indexOf(monthStr),
76283            parseInt(dayStr, 10),
76284            parseInt(hourStr, 10),
76285            parseInt(minuteStr, 10),
76286        ];
76287
76288        if (secondStr) {
76289            result.push(parseInt(secondStr, 10));
76290        }
76291
76292        return result;
76293    }
76294
76295    function untruncateYear(yearStr) {
76296        var year = parseInt(yearStr, 10);
76297        if (year <= 49) {
76298            return 2000 + year;
76299        } else if (year <= 999) {
76300            return 1900 + year;
76301        }
76302        return year;
76303    }
76304
76305    function preprocessRFC2822(s) {
76306        // Remove comments and folding whitespace and replace multiple-spaces with a single space
76307        return s
76308            .replace(/\([^()]*\)|[\n\t]/g, ' ')
76309            .replace(/(\s\s+)/g, ' ')
76310            .replace(/^\s\s*/, '')
76311            .replace(/\s\s*$/, '');
76312    }
76313
76314    function checkWeekday(weekdayStr, parsedInput, config) {
76315        if (weekdayStr) {
76316            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
76317            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
76318                weekdayActual = new Date(
76319                    parsedInput[0],
76320                    parsedInput[1],
76321                    parsedInput[2]
76322                ).getDay();
76323            if (weekdayProvided !== weekdayActual) {
76324                getParsingFlags(config).weekdayMismatch = true;
76325                config._isValid = false;
76326                return false;
76327            }
76328        }
76329        return true;
76330    }
76331
76332    function calculateOffset(obsOffset, militaryOffset, numOffset) {
76333        if (obsOffset) {
76334            return obsOffsets[obsOffset];
76335        } else if (militaryOffset) {
76336            // the only allowed military tz is Z
76337            return 0;
76338        } else {
76339            var hm = parseInt(numOffset, 10),
76340                m = hm % 100,
76341                h = (hm - m) / 100;
76342            return h * 60 + m;
76343        }
76344    }
76345
76346    // date and time from ref 2822 format
76347    function configFromRFC2822(config) {
76348        var match = rfc2822.exec(preprocessRFC2822(config._i)),
76349            parsedArray;
76350        if (match) {
76351            parsedArray = extractFromRFC2822Strings(
76352                match[4],
76353                match[3],
76354                match[2],
76355                match[5],
76356                match[6],
76357                match[7]
76358            );
76359            if (!checkWeekday(match[1], parsedArray, config)) {
76360                return;
76361            }
76362
76363            config._a = parsedArray;
76364            config._tzm = calculateOffset(match[8], match[9], match[10]);
76365
76366            config._d = createUTCDate.apply(null, config._a);
76367            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
76368
76369            getParsingFlags(config).rfc2822 = true;
76370        } else {
76371            config._isValid = false;
76372        }
76373    }
76374
76375    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
76376    function configFromString(config) {
76377        var matched = aspNetJsonRegex.exec(config._i);
76378        if (matched !== null) {
76379            config._d = new Date(+matched[1]);
76380            return;
76381        }
76382
76383        configFromISO(config);
76384        if (config._isValid === false) {
76385            delete config._isValid;
76386        } else {
76387            return;
76388        }
76389
76390        configFromRFC2822(config);
76391        if (config._isValid === false) {
76392            delete config._isValid;
76393        } else {
76394            return;
76395        }
76396
76397        if (config._strict) {
76398            config._isValid = false;
76399        } else {
76400            // Final attempt, use Input Fallback
76401            hooks.createFromInputFallback(config);
76402        }
76403    }
76404
76405    hooks.createFromInputFallback = deprecate(
76406        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
76407            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
76408            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',
76409        function (config) {
76410            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
76411        }
76412    );
76413
76414    // Pick the first defined of two or three arguments.
76415    function defaults(a, b, c) {
76416        if (a != null) {
76417            return a;
76418        }
76419        if (b != null) {
76420            return b;
76421        }
76422        return c;
76423    }
76424
76425    function currentDateArray(config) {
76426        // hooks is actually the exported moment object
76427        var nowValue = new Date(hooks.now());
76428        if (config._useUTC) {
76429            return [
76430                nowValue.getUTCFullYear(),
76431                nowValue.getUTCMonth(),
76432                nowValue.getUTCDate(),
76433            ];
76434        }
76435        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
76436    }
76437
76438    // convert an array to a date.
76439    // the array should mirror the parameters below
76440    // note: all values past the year are optional and will default to the lowest possible value.
76441    // [year, month, day , hour, minute, second, millisecond]
76442    function configFromArray(config) {
76443        var i,
76444            date,
76445            input = [],
76446            currentDate,
76447            expectedWeekday,
76448            yearToUse;
76449
76450        if (config._d) {
76451            return;
76452        }
76453
76454        currentDate = currentDateArray(config);
76455
76456        //compute day of the year from weeks and weekdays
76457        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
76458            dayOfYearFromWeekInfo(config);
76459        }
76460
76461        //if the day of the year is set, figure out what it is
76462        if (config._dayOfYear != null) {
76463            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
76464
76465            if (
76466                config._dayOfYear > daysInYear(yearToUse) ||
76467                config._dayOfYear === 0
76468            ) {
76469                getParsingFlags(config)._overflowDayOfYear = true;
76470            }
76471
76472            date = createUTCDate(yearToUse, 0, config._dayOfYear);
76473            config._a[MONTH] = date.getUTCMonth();
76474            config._a[DATE] = date.getUTCDate();
76475        }
76476
76477        // Default to current date.
76478        // * if no year, month, day of month are given, default to today
76479        // * if day of month is given, default month and year
76480        // * if month is given, default only year
76481        // * if year is given, don't default anything
76482        for (i = 0; i < 3 && config._a[i] == null; ++i) {
76483            config._a[i] = input[i] = currentDate[i];
76484        }
76485
76486        // Zero out whatever was not defaulted, including time
76487        for (; i < 7; i++) {
76488            config._a[i] = input[i] =
76489                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
76490        }
76491
76492        // Check for 24:00:00.000
76493        if (
76494            config._a[HOUR] === 24 &&
76495            config._a[MINUTE] === 0 &&
76496            config._a[SECOND] === 0 &&
76497            config._a[MILLISECOND] === 0
76498        ) {
76499            config._nextDay = true;
76500            config._a[HOUR] = 0;
76501        }
76502
76503        config._d = (config._useUTC ? createUTCDate : createDate).apply(
76504            null,
76505            input
76506        );
76507        expectedWeekday = config._useUTC
76508            ? config._d.getUTCDay()
76509            : config._d.getDay();
76510
76511        // Apply timezone offset from input. The actual utcOffset can be changed
76512        // with parseZone.
76513        if (config._tzm != null) {
76514            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
76515        }
76516
76517        if (config._nextDay) {
76518            config._a[HOUR] = 24;
76519        }
76520
76521        // check for mismatching day of week
76522        if (
76523            config._w &&
76524            typeof config._w.d !== 'undefined' &&
76525            config._w.d !== expectedWeekday
76526        ) {
76527            getParsingFlags(config).weekdayMismatch = true;
76528        }
76529    }
76530
76531    function dayOfYearFromWeekInfo(config) {
76532        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
76533
76534        w = config._w;
76535        if (w.GG != null || w.W != null || w.E != null) {
76536            dow = 1;
76537            doy = 4;
76538
76539            // TODO: We need to take the current isoWeekYear, but that depends on
76540            // how we interpret now (local, utc, fixed offset). So create
76541            // a now version of current config (take local/utc/offset flags, and
76542            // create now).
76543            weekYear = defaults(
76544                w.GG,
76545                config._a[YEAR],
76546                weekOfYear(createLocal(), 1, 4).year
76547            );
76548            week = defaults(w.W, 1);
76549            weekday = defaults(w.E, 1);
76550            if (weekday < 1 || weekday > 7) {
76551                weekdayOverflow = true;
76552            }
76553        } else {
76554            dow = config._locale._week.dow;
76555            doy = config._locale._week.doy;
76556
76557            curWeek = weekOfYear(createLocal(), dow, doy);
76558
76559            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
76560
76561            // Default to current week.
76562            week = defaults(w.w, curWeek.week);
76563
76564            if (w.d != null) {
76565                // weekday -- low day numbers are considered next week
76566                weekday = w.d;
76567                if (weekday < 0 || weekday > 6) {
76568                    weekdayOverflow = true;
76569                }
76570            } else if (w.e != null) {
76571                // local weekday -- counting starts from beginning of week
76572                weekday = w.e + dow;
76573                if (w.e < 0 || w.e > 6) {
76574                    weekdayOverflow = true;
76575                }
76576            } else {
76577                // default to beginning of week
76578                weekday = dow;
76579            }
76580        }
76581        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
76582            getParsingFlags(config)._overflowWeeks = true;
76583        } else if (weekdayOverflow != null) {
76584            getParsingFlags(config)._overflowWeekday = true;
76585        } else {
76586            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
76587            config._a[YEAR] = temp.year;
76588            config._dayOfYear = temp.dayOfYear;
76589        }
76590    }
76591
76592    // constant that refers to the ISO standard
76593    hooks.ISO_8601 = function () {};
76594
76595    // constant that refers to the RFC 2822 form
76596    hooks.RFC_2822 = function () {};
76597
76598    // date from string and format string
76599    function configFromStringAndFormat(config) {
76600        // TODO: Move this to another part of the creation flow to prevent circular deps
76601        if (config._f === hooks.ISO_8601) {
76602            configFromISO(config);
76603            return;
76604        }
76605        if (config._f === hooks.RFC_2822) {
76606            configFromRFC2822(config);
76607            return;
76608        }
76609        config._a = [];
76610        getParsingFlags(config).empty = true;
76611
76612        // This array is used to make a Date, either with `new Date` or `Date.UTC`
76613        var string = '' + config._i,
76614            i,
76615            parsedInput,
76616            tokens,
76617            token,
76618            skipped,
76619            stringLength = string.length,
76620            totalParsedInputLength = 0,
76621            era,
76622            tokenLen;
76623
76624        tokens =
76625            expandFormat(config._f, config._locale).match(formattingTokens) || [];
76626        tokenLen = tokens.length;
76627        for (i = 0; i < tokenLen; i++) {
76628            token = tokens[i];
76629            parsedInput = (string.match(getParseRegexForToken(token, config)) ||
76630                [])[0];
76631            if (parsedInput) {
76632                skipped = string.substr(0, string.indexOf(parsedInput));
76633                if (skipped.length > 0) {
76634                    getParsingFlags(config).unusedInput.push(skipped);
76635                }
76636                string = string.slice(
76637                    string.indexOf(parsedInput) + parsedInput.length
76638                );
76639                totalParsedInputLength += parsedInput.length;
76640            }
76641            // don't parse if it's not a known token
76642            if (formatTokenFunctions[token]) {
76643                if (parsedInput) {
76644                    getParsingFlags(config).empty = false;
76645                } else {
76646                    getParsingFlags(config).unusedTokens.push(token);
76647                }
76648                addTimeToArrayFromToken(token, parsedInput, config);
76649            } else if (config._strict && !parsedInput) {
76650                getParsingFlags(config).unusedTokens.push(token);
76651            }
76652        }
76653
76654        // add remaining unparsed input length to the string
76655        getParsingFlags(config).charsLeftOver =
76656            stringLength - totalParsedInputLength;
76657        if (string.length > 0) {
76658            getParsingFlags(config).unusedInput.push(string);
76659        }
76660
76661        // clear _12h flag if hour is <= 12
76662        if (
76663            config._a[HOUR] <= 12 &&
76664            getParsingFlags(config).bigHour === true &&
76665            config._a[HOUR] > 0
76666        ) {
76667            getParsingFlags(config).bigHour = undefined;
76668        }
76669
76670        getParsingFlags(config).parsedDateParts = config._a.slice(0);
76671        getParsingFlags(config).meridiem = config._meridiem;
76672        // handle meridiem
76673        config._a[HOUR] = meridiemFixWrap(
76674            config._locale,
76675            config._a[HOUR],
76676            config._meridiem
76677        );
76678
76679        // handle era
76680        era = getParsingFlags(config).era;
76681        if (era !== null) {
76682            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
76683        }
76684
76685        configFromArray(config);
76686        checkOverflow(config);
76687    }
76688
76689    function meridiemFixWrap(locale, hour, meridiem) {
76690        var isPm;
76691
76692        if (meridiem == null) {
76693            // nothing to do
76694            return hour;
76695        }
76696        if (locale.meridiemHour != null) {
76697            return locale.meridiemHour(hour, meridiem);
76698        } else if (locale.isPM != null) {
76699            // Fallback
76700            isPm = locale.isPM(meridiem);
76701            if (isPm && hour < 12) {
76702                hour += 12;
76703            }
76704            if (!isPm && hour === 12) {
76705                hour = 0;
76706            }
76707            return hour;
76708        } else {
76709            // this is not supposed to happen
76710            return hour;
76711        }
76712    }
76713
76714    // date from string and array of format strings
76715    function configFromStringAndArray(config) {
76716        var tempConfig,
76717            bestMoment,
76718            scoreToBeat,
76719            i,
76720            currentScore,
76721            validFormatFound,
76722            bestFormatIsValid = false,
76723            configfLen = config._f.length;
76724
76725        if (configfLen === 0) {
76726            getParsingFlags(config).invalidFormat = true;
76727            config._d = new Date(NaN);
76728            return;
76729        }
76730
76731        for (i = 0; i < configfLen; i++) {
76732            currentScore = 0;
76733            validFormatFound = false;
76734            tempConfig = copyConfig({}, config);
76735            if (config._useUTC != null) {
76736                tempConfig._useUTC = config._useUTC;
76737            }
76738            tempConfig._f = config._f[i];
76739            configFromStringAndFormat(tempConfig);
76740
76741            if (isValid(tempConfig)) {
76742                validFormatFound = true;
76743            }
76744
76745            // if there is any input that was not parsed add a penalty for that format
76746            currentScore += getParsingFlags(tempConfig).charsLeftOver;
76747
76748            //or tokens
76749            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
76750
76751            getParsingFlags(tempConfig).score = currentScore;
76752
76753            if (!bestFormatIsValid) {
76754                if (
76755                    scoreToBeat == null ||
76756                    currentScore < scoreToBeat ||
76757                    validFormatFound
76758                ) {
76759                    scoreToBeat = currentScore;
76760                    bestMoment = tempConfig;
76761                    if (validFormatFound) {
76762                        bestFormatIsValid = true;
76763                    }
76764                }
76765            } else {
76766                if (currentScore < scoreToBeat) {
76767                    scoreToBeat = currentScore;
76768                    bestMoment = tempConfig;
76769                }
76770            }
76771        }
76772
76773        extend(config, bestMoment || tempConfig);
76774    }
76775
76776    function configFromObject(config) {
76777        if (config._d) {
76778            return;
76779        }
76780
76781        var i = normalizeObjectUnits(config._i),
76782            dayOrDate = i.day === undefined ? i.date : i.day;
76783        config._a = map(
76784            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
76785            function (obj) {
76786                return obj && parseInt(obj, 10);
76787            }
76788        );
76789
76790        configFromArray(config);
76791    }
76792
76793    function createFromConfig(config) {
76794        var res = new Moment(checkOverflow(prepareConfig(config)));
76795        if (res._nextDay) {
76796            // Adding is smart enough around DST
76797            res.add(1, 'd');
76798            res._nextDay = undefined;
76799        }
76800
76801        return res;
76802    }
76803
76804    function prepareConfig(config) {
76805        var input = config._i,
76806            format = config._f;
76807
76808        config._locale = config._locale || getLocale(config._l);
76809
76810        if (input === null || (format === undefined && input === '')) {
76811            return createInvalid({ nullInput: true });
76812        }
76813
76814        if (typeof input === 'string') {
76815            config._i = input = config._locale.preparse(input);
76816        }
76817
76818        if (isMoment(input)) {
76819            return new Moment(checkOverflow(input));
76820        } else if (isDate(input)) {
76821            config._d = input;
76822        } else if (isArray(format)) {
76823            configFromStringAndArray(config);
76824        } else if (format) {
76825            configFromStringAndFormat(config);
76826        } else {
76827            configFromInput(config);
76828        }
76829
76830        if (!isValid(config)) {
76831            config._d = null;
76832        }
76833
76834        return config;
76835    }
76836
76837    function configFromInput(config) {
76838        var input = config._i;
76839        if (isUndefined(input)) {
76840            config._d = new Date(hooks.now());
76841        } else if (isDate(input)) {
76842            config._d = new Date(input.valueOf());
76843        } else if (typeof input === 'string') {
76844            configFromString(config);
76845        } else if (isArray(input)) {
76846            config._a = map(input.slice(0), function (obj) {
76847                return parseInt(obj, 10);
76848            });
76849            configFromArray(config);
76850        } else if (isObject(input)) {
76851            configFromObject(config);
76852        } else if (isNumber(input)) {
76853            // from milliseconds
76854            config._d = new Date(input);
76855        } else {
76856            hooks.createFromInputFallback(config);
76857        }
76858    }
76859
76860    function createLocalOrUTC(input, format, locale, strict, isUTC) {
76861        var c = {};
76862
76863        if (format === true || format === false) {
76864            strict = format;
76865            format = undefined;
76866        }
76867
76868        if (locale === true || locale === false) {
76869            strict = locale;
76870            locale = undefined;
76871        }
76872
76873        if (
76874            (isObject(input) && isObjectEmpty(input)) ||
76875            (isArray(input) && input.length === 0)
76876        ) {
76877            input = undefined;
76878        }
76879        // object construction must be done this way.
76880        // https://github.com/moment/moment/issues/1423
76881        c._isAMomentObject = true;
76882        c._useUTC = c._isUTC = isUTC;
76883        c._l = locale;
76884        c._i = input;
76885        c._f = format;
76886        c._strict = strict;
76887
76888        return createFromConfig(c);
76889    }
76890
76891    function createLocal(input, format, locale, strict) {
76892        return createLocalOrUTC(input, format, locale, strict, false);
76893    }
76894
76895    var prototypeMin = deprecate(
76896            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
76897            function () {
76898                var other = createLocal.apply(null, arguments);
76899                if (this.isValid() && other.isValid()) {
76900                    return other < this ? this : other;
76901                } else {
76902                    return createInvalid();
76903                }
76904            }
76905        ),
76906        prototypeMax = deprecate(
76907            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
76908            function () {
76909                var other = createLocal.apply(null, arguments);
76910                if (this.isValid() && other.isValid()) {
76911                    return other > this ? this : other;
76912                } else {
76913                    return createInvalid();
76914                }
76915            }
76916        );
76917
76918    // Pick a moment m from moments so that m[fn](other) is true for all
76919    // other. This relies on the function fn to be transitive.
76920    //
76921    // moments should either be an array of moment objects or an array, whose
76922    // first element is an array of moment objects.
76923    function pickBy(fn, moments) {
76924        var res, i;
76925        if (moments.length === 1 && isArray(moments[0])) {
76926            moments = moments[0];
76927        }
76928        if (!moments.length) {
76929            return createLocal();
76930        }
76931        res = moments[0];
76932        for (i = 1; i < moments.length; ++i) {
76933            if (!moments[i].isValid() || moments[i][fn](res)) {
76934                res = moments[i];
76935            }
76936        }
76937        return res;
76938    }
76939
76940    // TODO: Use [].sort instead?
76941    function min() {
76942        var args = [].slice.call(arguments, 0);
76943
76944        return pickBy('isBefore', args);
76945    }
76946
76947    function max() {
76948        var args = [].slice.call(arguments, 0);
76949
76950        return pickBy('isAfter', args);
76951    }
76952
76953    var now = function () {
76954        return Date.now ? Date.now() : +new Date();
76955    };
76956
76957    var ordering = [
76958        'year',
76959        'quarter',
76960        'month',
76961        'week',
76962        'day',
76963        'hour',
76964        'minute',
76965        'second',
76966        'millisecond',
76967    ];
76968
76969    function isDurationValid(m) {
76970        var key,
76971            unitHasDecimal = false,
76972            i,
76973            orderLen = ordering.length;
76974        for (key in m) {
76975            if (
76976                hasOwnProp(m, key) &&
76977                !(
76978                    indexOf.call(ordering, key) !== -1 &&
76979                    (m[key] == null || !isNaN(m[key]))
76980                )
76981            ) {
76982                return false;
76983            }
76984        }
76985
76986        for (i = 0; i < orderLen; ++i) {
76987            if (m[ordering[i]]) {
76988                if (unitHasDecimal) {
76989                    return false; // only allow non-integers for smallest unit
76990                }
76991                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
76992                    unitHasDecimal = true;
76993                }
76994            }
76995        }
76996
76997        return true;
76998    }
76999
77000    function isValid$1() {
77001        return this._isValid;
77002    }
77003
77004    function createInvalid$1() {
77005        return createDuration(NaN);
77006    }
77007
77008    function Duration(duration) {
77009        var normalizedInput = normalizeObjectUnits(duration),
77010            years = normalizedInput.year || 0,
77011            quarters = normalizedInput.quarter || 0,
77012            months = normalizedInput.month || 0,
77013            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
77014            days = normalizedInput.day || 0,
77015            hours = normalizedInput.hour || 0,
77016            minutes = normalizedInput.minute || 0,
77017            seconds = normalizedInput.second || 0,
77018            milliseconds = normalizedInput.millisecond || 0;
77019
77020        this._isValid = isDurationValid(normalizedInput);
77021
77022        // representation for dateAddRemove
77023        this._milliseconds =
77024            +milliseconds +
77025            seconds * 1e3 + // 1000
77026            minutes * 6e4 + // 1000 * 60
77027            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
77028        // Because of dateAddRemove treats 24 hours as different from a
77029        // day when working around DST, we need to store them separately
77030        this._days = +days + weeks * 7;
77031        // It is impossible to translate months into days without knowing
77032        // which months you are are talking about, so we have to store
77033        // it separately.
77034        this._months = +months + quarters * 3 + years * 12;
77035
77036        this._data = {};
77037
77038        this._locale = getLocale();
77039
77040        this._bubble();
77041    }
77042
77043    function isDuration(obj) {
77044        return obj instanceof Duration;
77045    }
77046
77047    function absRound(number) {
77048        if (number < 0) {
77049            return Math.round(-1 * number) * -1;
77050        } else {
77051            return Math.round(number);
77052        }
77053    }
77054
77055    // compare two arrays, return the number of differences
77056    function compareArrays(array1, array2, dontConvert) {
77057        var len = Math.min(array1.length, array2.length),
77058            lengthDiff = Math.abs(array1.length - array2.length),
77059            diffs = 0,
77060            i;
77061        for (i = 0; i < len; i++) {
77062            if (
77063                (dontConvert && array1[i] !== array2[i]) ||
77064                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
77065            ) {
77066                diffs++;
77067            }
77068        }
77069        return diffs + lengthDiff;
77070    }
77071
77072    // FORMATTING
77073
77074    function offset(token, separator) {
77075        addFormatToken(token, 0, 0, function () {
77076            var offset = this.utcOffset(),
77077                sign = '+';
77078            if (offset < 0) {
77079                offset = -offset;
77080                sign = '-';
77081            }
77082            return (
77083                sign +
77084                zeroFill(~~(offset / 60), 2) +
77085                separator +
77086                zeroFill(~~offset % 60, 2)
77087            );
77088        });
77089    }
77090
77091    offset('Z', ':');
77092    offset('ZZ', '');
77093
77094    // PARSING
77095
77096    addRegexToken('Z', matchShortOffset);
77097    addRegexToken('ZZ', matchShortOffset);
77098    addParseToken(['Z', 'ZZ'], function (input, array, config) {
77099        config._useUTC = true;
77100        config._tzm = offsetFromString(matchShortOffset, input);
77101    });
77102
77103    // HELPERS
77104
77105    // timezone chunker
77106    // '+10:00' > ['10',  '00']
77107    // '-1530'  > ['-15', '30']
77108    var chunkOffset = /([\+\-]|\d\d)/gi;
77109
77110    function offsetFromString(matcher, string) {
77111        var matches = (string || '').match(matcher),
77112            chunk,
77113            parts,
77114            minutes;
77115
77116        if (matches === null) {
77117            return null;
77118        }
77119
77120        chunk = matches[matches.length - 1] || [];
77121        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
77122        minutes = +(parts[1] * 60) + toInt(parts[2]);
77123
77124        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
77125    }
77126
77127    // Return a moment from input, that is local/utc/zone equivalent to model.
77128    function cloneWithOffset(input, model) {
77129        var res, diff;
77130        if (model._isUTC) {
77131            res = model.clone();
77132            diff =
77133                (isMoment(input) || isDate(input)
77134                    ? input.valueOf()
77135                    : createLocal(input).valueOf()) - res.valueOf();
77136            // Use low-level api, because this fn is low-level api.
77137            res._d.setTime(res._d.valueOf() + diff);
77138            hooks.updateOffset(res, false);
77139            return res;
77140        } else {
77141            return createLocal(input).local();
77142        }
77143    }
77144
77145    function getDateOffset(m) {
77146        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
77147        // https://github.com/moment/moment/pull/1871
77148        return -Math.round(m._d.getTimezoneOffset());
77149    }
77150
77151    // HOOKS
77152
77153    // This function will be called whenever a moment is mutated.
77154    // It is intended to keep the offset in sync with the timezone.
77155    hooks.updateOffset = function () {};
77156
77157    // MOMENTS
77158
77159    // keepLocalTime = true means only change the timezone, without
77160    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
77161    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
77162    // +0200, so we adjust the time as needed, to be valid.
77163    //
77164    // Keeping the time actually adds/subtracts (one hour)
77165    // from the actual represented time. That is why we call updateOffset
77166    // a second time. In case it wants us to change the offset again
77167    // _changeInProgress == true case, then we have to adjust, because
77168    // there is no such time in the given timezone.
77169    function getSetOffset(input, keepLocalTime, keepMinutes) {
77170        var offset = this._offset || 0,
77171            localAdjust;
77172        if (!this.isValid()) {
77173            return input != null ? this : NaN;
77174        }
77175        if (input != null) {
77176            if (typeof input === 'string') {
77177                input = offsetFromString(matchShortOffset, input);
77178                if (input === null) {
77179                    return this;
77180                }
77181            } else if (Math.abs(input) < 16 && !keepMinutes) {
77182                input = input * 60;
77183            }
77184            if (!this._isUTC && keepLocalTime) {
77185                localAdjust = getDateOffset(this);
77186            }
77187            this._offset = input;
77188            this._isUTC = true;
77189            if (localAdjust != null) {
77190                this.add(localAdjust, 'm');
77191            }
77192            if (offset !== input) {
77193                if (!keepLocalTime || this._changeInProgress) {
77194                    addSubtract(
77195                        this,
77196                        createDuration(input - offset, 'm'),
77197                        1,
77198                        false
77199                    );
77200                } else if (!this._changeInProgress) {
77201                    this._changeInProgress = true;
77202                    hooks.updateOffset(this, true);
77203                    this._changeInProgress = null;
77204                }
77205            }
77206            return this;
77207        } else {
77208            return this._isUTC ? offset : getDateOffset(this);
77209        }
77210    }
77211
77212    function getSetZone(input, keepLocalTime) {
77213        if (input != null) {
77214            if (typeof input !== 'string') {
77215                input = -input;
77216            }
77217
77218            this.utcOffset(input, keepLocalTime);
77219
77220            return this;
77221        } else {
77222            return -this.utcOffset();
77223        }
77224    }
77225
77226    function setOffsetToUTC(keepLocalTime) {
77227        return this.utcOffset(0, keepLocalTime);
77228    }
77229
77230    function setOffsetToLocal(keepLocalTime) {
77231        if (this._isUTC) {
77232            this.utcOffset(0, keepLocalTime);
77233            this._isUTC = false;
77234
77235            if (keepLocalTime) {
77236                this.subtract(getDateOffset(this), 'm');
77237            }
77238        }
77239        return this;
77240    }
77241
77242    function setOffsetToParsedOffset() {
77243        if (this._tzm != null) {
77244            this.utcOffset(this._tzm, false, true);
77245        } else if (typeof this._i === 'string') {
77246            var tZone = offsetFromString(matchOffset, this._i);
77247            if (tZone != null) {
77248                this.utcOffset(tZone);
77249            } else {
77250                this.utcOffset(0, true);
77251            }
77252        }
77253        return this;
77254    }
77255
77256    function hasAlignedHourOffset(input) {
77257        if (!this.isValid()) {
77258            return false;
77259        }
77260        input = input ? createLocal(input).utcOffset() : 0;
77261
77262        return (this.utcOffset() - input) % 60 === 0;
77263    }
77264
77265    function isDaylightSavingTime() {
77266        return (
77267            this.utcOffset() > this.clone().month(0).utcOffset() ||
77268            this.utcOffset() > this.clone().month(5).utcOffset()
77269        );
77270    }
77271
77272    function isDaylightSavingTimeShifted() {
77273        if (!isUndefined(this._isDSTShifted)) {
77274            return this._isDSTShifted;
77275        }
77276
77277        var c = {},
77278            other;
77279
77280        copyConfig(c, this);
77281        c = prepareConfig(c);
77282
77283        if (c._a) {
77284            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
77285            this._isDSTShifted =
77286                this.isValid() && compareArrays(c._a, other.toArray()) > 0;
77287        } else {
77288            this._isDSTShifted = false;
77289        }
77290
77291        return this._isDSTShifted;
77292    }
77293
77294    function isLocal() {
77295        return this.isValid() ? !this._isUTC : false;
77296    }
77297
77298    function isUtcOffset() {
77299        return this.isValid() ? this._isUTC : false;
77300    }
77301
77302    function isUtc() {
77303        return this.isValid() ? this._isUTC && this._offset === 0 : false;
77304    }
77305
77306    // ASP.NET json date format regex
77307    var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
77308        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
77309        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
77310        // and further modified to allow for strings containing both week and day
77311        isoRegex =
77312            /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
77313
77314    function createDuration(input, key) {
77315        var duration = input,
77316            // matching against regexp is expensive, do it on demand
77317            match = null,
77318            sign,
77319            ret,
77320            diffRes;
77321
77322        if (isDuration(input)) {
77323            duration = {
77324                ms: input._milliseconds,
77325                d: input._days,
77326                M: input._months,
77327            };
77328        } else if (isNumber(input) || !isNaN(+input)) {
77329            duration = {};
77330            if (key) {
77331                duration[key] = +input;
77332            } else {
77333                duration.milliseconds = +input;
77334            }
77335        } else if ((match = aspNetRegex.exec(input))) {
77336            sign = match[1] === '-' ? -1 : 1;
77337            duration = {
77338                y: 0,
77339                d: toInt(match[DATE]) * sign,
77340                h: toInt(match[HOUR]) * sign,
77341                m: toInt(match[MINUTE]) * sign,
77342                s: toInt(match[SECOND]) * sign,
77343                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
77344            };
77345        } else if ((match = isoRegex.exec(input))) {
77346            sign = match[1] === '-' ? -1 : 1;
77347            duration = {
77348                y: parseIso(match[2], sign),
77349                M: parseIso(match[3], sign),
77350                w: parseIso(match[4], sign),
77351                d: parseIso(match[5], sign),
77352                h: parseIso(match[6], sign),
77353                m: parseIso(match[7], sign),
77354                s: parseIso(match[8], sign),
77355            };
77356        } else if (duration == null) {
77357            // checks for null or undefined
77358            duration = {};
77359        } else if (
77360            typeof duration === 'object' &&
77361            ('from' in duration || 'to' in duration)
77362        ) {
77363            diffRes = momentsDifference(
77364                createLocal(duration.from),
77365                createLocal(duration.to)
77366            );
77367
77368            duration = {};
77369            duration.ms = diffRes.milliseconds;
77370            duration.M = diffRes.months;
77371        }
77372
77373        ret = new Duration(duration);
77374
77375        if (isDuration(input) && hasOwnProp(input, '_locale')) {
77376            ret._locale = input._locale;
77377        }
77378
77379        if (isDuration(input) && hasOwnProp(input, '_isValid')) {
77380            ret._isValid = input._isValid;
77381        }
77382
77383        return ret;
77384    }
77385
77386    createDuration.fn = Duration.prototype;
77387    createDuration.invalid = createInvalid$1;
77388
77389    function parseIso(inp, sign) {
77390        // We'd normally use ~~inp for this, but unfortunately it also
77391        // converts floats to ints.
77392        // inp may be undefined, so careful calling replace on it.
77393        var res = inp && parseFloat(inp.replace(',', '.'));
77394        // apply sign while we're at it
77395        return (isNaN(res) ? 0 : res) * sign;
77396    }
77397
77398    function positiveMomentsDifference(base, other) {
77399        var res = {};
77400
77401        res.months =
77402            other.month() - base.month() + (other.year() - base.year()) * 12;
77403        if (base.clone().add(res.months, 'M').isAfter(other)) {
77404            --res.months;
77405        }
77406
77407        res.milliseconds = +other - +base.clone().add(res.months, 'M');
77408
77409        return res;
77410    }
77411
77412    function momentsDifference(base, other) {
77413        var res;
77414        if (!(base.isValid() && other.isValid())) {
77415            return { milliseconds: 0, months: 0 };
77416        }
77417
77418        other = cloneWithOffset(other, base);
77419        if (base.isBefore(other)) {
77420            res = positiveMomentsDifference(base, other);
77421        } else {
77422            res = positiveMomentsDifference(other, base);
77423            res.milliseconds = -res.milliseconds;
77424            res.months = -res.months;
77425        }
77426
77427        return res;
77428    }
77429
77430    // TODO: remove 'name' arg after deprecation is removed
77431    function createAdder(direction, name) {
77432        return function (val, period) {
77433            var dur, tmp;
77434            //invert the arguments, but complain about it
77435            if (period !== null && !isNaN(+period)) {
77436                deprecateSimple(
77437                    name,
77438                    'moment().' +
77439                        name +
77440                        '(period, number) is deprecated. Please use moment().' +
77441                        name +
77442                        '(number, period). ' +
77443                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
77444                );
77445                tmp = val;
77446                val = period;
77447                period = tmp;
77448            }
77449
77450            dur = createDuration(val, period);
77451            addSubtract(this, dur, direction);
77452            return this;
77453        };
77454    }
77455
77456    function addSubtract(mom, duration, isAdding, updateOffset) {
77457        var milliseconds = duration._milliseconds,
77458            days = absRound(duration._days),
77459            months = absRound(duration._months);
77460
77461        if (!mom.isValid()) {
77462            // No op
77463            return;
77464        }
77465
77466        updateOffset = updateOffset == null ? true : updateOffset;
77467
77468        if (months) {
77469            setMonth(mom, get(mom, 'Month') + months * isAdding);
77470        }
77471        if (days) {
77472            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
77473        }
77474        if (milliseconds) {
77475            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
77476        }
77477        if (updateOffset) {
77478            hooks.updateOffset(mom, days || months);
77479        }
77480    }
77481
77482    var add = createAdder(1, 'add'),
77483        subtract = createAdder(-1, 'subtract');
77484
77485    function isString(input) {
77486        return typeof input === 'string' || input instanceof String;
77487    }
77488
77489    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
77490    function isMomentInput(input) {
77491        return (
77492            isMoment(input) ||
77493            isDate(input) ||
77494            isString(input) ||
77495            isNumber(input) ||
77496            isNumberOrStringArray(input) ||
77497            isMomentInputObject(input) ||
77498            input === null ||
77499            input === undefined
77500        );
77501    }
77502
77503    function isMomentInputObject(input) {
77504        var objectTest = isObject(input) && !isObjectEmpty(input),
77505            propertyTest = false,
77506            properties = [
77507                'years',
77508                'year',
77509                'y',
77510                'months',
77511                'month',
77512                'M',
77513                'days',
77514                'day',
77515                'd',
77516                'dates',
77517                'date',
77518                'D',
77519                'hours',
77520                'hour',
77521                'h',
77522                'minutes',
77523                'minute',
77524                'm',
77525                'seconds',
77526                'second',
77527                's',
77528                'milliseconds',
77529                'millisecond',
77530                'ms',
77531            ],
77532            i,
77533            property,
77534            propertyLen = properties.length;
77535
77536        for (i = 0; i < propertyLen; i += 1) {
77537            property = properties[i];
77538            propertyTest = propertyTest || hasOwnProp(input, property);
77539        }
77540
77541        return objectTest && propertyTest;
77542    }
77543
77544    function isNumberOrStringArray(input) {
77545        var arrayTest = isArray(input),
77546            dataTypeTest = false;
77547        if (arrayTest) {
77548            dataTypeTest =
77549                input.filter(function (item) {
77550                    return !isNumber(item) && isString(input);
77551                }).length === 0;
77552        }
77553        return arrayTest && dataTypeTest;
77554    }
77555
77556    function isCalendarSpec(input) {
77557        var objectTest = isObject(input) && !isObjectEmpty(input),
77558            propertyTest = false,
77559            properties = [
77560                'sameDay',
77561                'nextDay',
77562                'lastDay',
77563                'nextWeek',
77564                'lastWeek',
77565                'sameElse',
77566            ],
77567            i,
77568            property;
77569
77570        for (i = 0; i < properties.length; i += 1) {
77571            property = properties[i];
77572            propertyTest = propertyTest || hasOwnProp(input, property);
77573        }
77574
77575        return objectTest && propertyTest;
77576    }
77577
77578    function getCalendarFormat(myMoment, now) {
77579        var diff = myMoment.diff(now, 'days', true);
77580        return diff < -6
77581            ? 'sameElse'
77582            : diff < -1
77583              ? 'lastWeek'
77584              : diff < 0
77585                ? 'lastDay'
77586                : diff < 1
77587                  ? 'sameDay'
77588                  : diff < 2
77589                    ? 'nextDay'
77590                    : diff < 7
77591                      ? 'nextWeek'
77592                      : 'sameElse';
77593    }
77594
77595    function calendar$1(time, formats) {
77596        // Support for single parameter, formats only overload to the calendar function
77597        if (arguments.length === 1) {
77598            if (!arguments[0]) {
77599                time = undefined;
77600                formats = undefined;
77601            } else if (isMomentInput(arguments[0])) {
77602                time = arguments[0];
77603                formats = undefined;
77604            } else if (isCalendarSpec(arguments[0])) {
77605                formats = arguments[0];
77606                time = undefined;
77607            }
77608        }
77609        // We want to compare the start of today, vs this.
77610        // Getting start-of-today depends on whether we're local/utc/offset or not.
77611        var now = time || createLocal(),
77612            sod = cloneWithOffset(now, this).startOf('day'),
77613            format = hooks.calendarFormat(this, sod) || 'sameElse',
77614            output =
77615                formats &&
77616                (isFunction(formats[format])
77617                    ? formats[format].call(this, now)
77618                    : formats[format]);
77619
77620        return this.format(
77621            output || this.localeData().calendar(format, this, createLocal(now))
77622        );
77623    }
77624
77625    function clone() {
77626        return new Moment(this);
77627    }
77628
77629    function isAfter(input, units) {
77630        var localInput = isMoment(input) ? input : createLocal(input);
77631        if (!(this.isValid() && localInput.isValid())) {
77632            return false;
77633        }
77634        units = normalizeUnits(units) || 'millisecond';
77635        if (units === 'millisecond') {
77636            return this.valueOf() > localInput.valueOf();
77637        } else {
77638            return localInput.valueOf() < this.clone().startOf(units).valueOf();
77639        }
77640    }
77641
77642    function isBefore(input, units) {
77643        var localInput = isMoment(input) ? input : createLocal(input);
77644        if (!(this.isValid() && localInput.isValid())) {
77645            return false;
77646        }
77647        units = normalizeUnits(units) || 'millisecond';
77648        if (units === 'millisecond') {
77649            return this.valueOf() < localInput.valueOf();
77650        } else {
77651            return this.clone().endOf(units).valueOf() < localInput.valueOf();
77652        }
77653    }
77654
77655    function isBetween(from, to, units, inclusivity) {
77656        var localFrom = isMoment(from) ? from : createLocal(from),
77657            localTo = isMoment(to) ? to : createLocal(to);
77658        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
77659            return false;
77660        }
77661        inclusivity = inclusivity || '()';
77662        return (
77663            (inclusivity[0] === '('
77664                ? this.isAfter(localFrom, units)
77665                : !this.isBefore(localFrom, units)) &&
77666            (inclusivity[1] === ')'
77667                ? this.isBefore(localTo, units)
77668                : !this.isAfter(localTo, units))
77669        );
77670    }
77671
77672    function isSame(input, units) {
77673        var localInput = isMoment(input) ? input : createLocal(input),
77674            inputMs;
77675        if (!(this.isValid() && localInput.isValid())) {
77676            return false;
77677        }
77678        units = normalizeUnits(units) || 'millisecond';
77679        if (units === 'millisecond') {
77680            return this.valueOf() === localInput.valueOf();
77681        } else {
77682            inputMs = localInput.valueOf();
77683            return (
77684                this.clone().startOf(units).valueOf() <= inputMs &&
77685                inputMs <= this.clone().endOf(units).valueOf()
77686            );
77687        }
77688    }
77689
77690    function isSameOrAfter(input, units) {
77691        return this.isSame(input, units) || this.isAfter(input, units);
77692    }
77693
77694    function isSameOrBefore(input, units) {
77695        return this.isSame(input, units) || this.isBefore(input, units);
77696    }
77697
77698    function diff(input, units, asFloat) {
77699        var that, zoneDelta, output;
77700
77701        if (!this.isValid()) {
77702            return NaN;
77703        }
77704
77705        that = cloneWithOffset(input, this);
77706
77707        if (!that.isValid()) {
77708            return NaN;
77709        }
77710
77711        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
77712
77713        units = normalizeUnits(units);
77714
77715        switch (units) {
77716            case 'year':
77717                output = monthDiff(this, that) / 12;
77718                break;
77719            case 'month':
77720                output = monthDiff(this, that);
77721                break;
77722            case 'quarter':
77723                output = monthDiff(this, that) / 3;
77724                break;
77725            case 'second':
77726                output = (this - that) / 1e3;
77727                break; // 1000
77728            case 'minute':
77729                output = (this - that) / 6e4;
77730                break; // 1000 * 60
77731            case 'hour':
77732                output = (this - that) / 36e5;
77733                break; // 1000 * 60 * 60
77734            case 'day':
77735                output = (this - that - zoneDelta) / 864e5;
77736                break; // 1000 * 60 * 60 * 24, negate dst
77737            case 'week':
77738                output = (this - that - zoneDelta) / 6048e5;
77739                break; // 1000 * 60 * 60 * 24 * 7, negate dst
77740            default:
77741                output = this - that;
77742        }
77743
77744        return asFloat ? output : absFloor(output);
77745    }
77746
77747    function monthDiff(a, b) {
77748        if (a.date() < b.date()) {
77749            // end-of-month calculations work correct when the start month has more
77750            // days than the end month.
77751            return -monthDiff(b, a);
77752        }
77753        // difference in months
77754        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
77755            // b is in (anchor - 1 month, anchor + 1 month)
77756            anchor = a.clone().add(wholeMonthDiff, 'months'),
77757            anchor2,
77758            adjust;
77759
77760        if (b - anchor < 0) {
77761            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
77762            // linear across the month
77763            adjust = (b - anchor) / (anchor - anchor2);
77764        } else {
77765            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
77766            // linear across the month
77767            adjust = (b - anchor) / (anchor2 - anchor);
77768        }
77769
77770        //check for negative zero, return zero if negative zero
77771        return -(wholeMonthDiff + adjust) || 0;
77772    }
77773
77774    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
77775    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
77776
77777    function toString() {
77778        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
77779    }
77780
77781    function toISOString(keepOffset) {
77782        if (!this.isValid()) {
77783            return null;
77784        }
77785        var utc = keepOffset !== true,
77786            m = utc ? this.clone().utc() : this;
77787        if (m.year() < 0 || m.year() > 9999) {
77788            return formatMoment(
77789                m,
77790                utc
77791                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
77792                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
77793            );
77794        }
77795        if (isFunction(Date.prototype.toISOString)) {
77796            // native implementation is ~50x faster, use it when we can
77797            if (utc) {
77798                return this.toDate().toISOString();
77799            } else {
77800                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
77801                    .toISOString()
77802                    .replace('Z', formatMoment(m, 'Z'));
77803            }
77804        }
77805        return formatMoment(
77806            m,
77807            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
77808        );
77809    }
77810
77811    /**
77812     * Return a human readable representation of a moment that can
77813     * also be evaluated to get a new moment which is the same
77814     *
77815     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
77816     */
77817    function inspect() {
77818        if (!this.isValid()) {
77819            return 'moment.invalid(/* ' + this._i + ' */)';
77820        }
77821        var func = 'moment',
77822            zone = '',
77823            prefix,
77824            year,
77825            datetime,
77826            suffix;
77827        if (!this.isLocal()) {
77828            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
77829            zone = 'Z';
77830        }
77831        prefix = '[' + func + '("]';
77832        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
77833        datetime = '-MM-DD[T]HH:mm:ss.SSS';
77834        suffix = zone + '[")]';
77835
77836        return this.format(prefix + year + datetime + suffix);
77837    }
77838
77839    function format(inputString) {
77840        if (!inputString) {
77841            inputString = this.isUtc()
77842                ? hooks.defaultFormatUtc
77843                : hooks.defaultFormat;
77844        }
77845        var output = formatMoment(this, inputString);
77846        return this.localeData().postformat(output);
77847    }
77848
77849    function from(time, withoutSuffix) {
77850        if (
77851            this.isValid() &&
77852            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
77853        ) {
77854            return createDuration({ to: this, from: time })
77855                .locale(this.locale())
77856                .humanize(!withoutSuffix);
77857        } else {
77858            return this.localeData().invalidDate();
77859        }
77860    }
77861
77862    function fromNow(withoutSuffix) {
77863        return this.from(createLocal(), withoutSuffix);
77864    }
77865
77866    function to(time, withoutSuffix) {
77867        if (
77868            this.isValid() &&
77869            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
77870        ) {
77871            return createDuration({ from: this, to: time })
77872                .locale(this.locale())
77873                .humanize(!withoutSuffix);
77874        } else {
77875            return this.localeData().invalidDate();
77876        }
77877    }
77878
77879    function toNow(withoutSuffix) {
77880        return this.to(createLocal(), withoutSuffix);
77881    }
77882
77883    // If passed a locale key, it will set the locale for this
77884    // instance.  Otherwise, it will return the locale configuration
77885    // variables for this instance.
77886    function locale(key) {
77887        var newLocaleData;
77888
77889        if (key === undefined) {
77890            return this._locale._abbr;
77891        } else {
77892            newLocaleData = getLocale(key);
77893            if (newLocaleData != null) {
77894                this._locale = newLocaleData;
77895            }
77896            return this;
77897        }
77898    }
77899
77900    var lang = deprecate(
77901        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
77902        function (key) {
77903            if (key === undefined) {
77904                return this.localeData();
77905            } else {
77906                return this.locale(key);
77907            }
77908        }
77909    );
77910
77911    function localeData() {
77912        return this._locale;
77913    }
77914
77915    var MS_PER_SECOND = 1000,
77916        MS_PER_MINUTE = 60 * MS_PER_SECOND,
77917        MS_PER_HOUR = 60 * MS_PER_MINUTE,
77918        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
77919
77920    // actual modulo - handles negative numbers (for dates before 1970):
77921    function mod$1(dividend, divisor) {
77922        return ((dividend % divisor) + divisor) % divisor;
77923    }
77924
77925    function localStartOfDate(y, m, d) {
77926        // the date constructor remaps years 0-99 to 1900-1999
77927        if (y < 100 && y >= 0) {
77928            // preserve leap years using a full 400 year cycle, then reset
77929            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
77930        } else {
77931            return new Date(y, m, d).valueOf();
77932        }
77933    }
77934
77935    function utcStartOfDate(y, m, d) {
77936        // Date.UTC remaps years 0-99 to 1900-1999
77937        if (y < 100 && y >= 0) {
77938            // preserve leap years using a full 400 year cycle, then reset
77939            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
77940        } else {
77941            return Date.UTC(y, m, d);
77942        }
77943    }
77944
77945    function startOf(units) {
77946        var time, startOfDate;
77947        units = normalizeUnits(units);
77948        if (units === undefined || units === 'millisecond' || !this.isValid()) {
77949            return this;
77950        }
77951
77952        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
77953
77954        switch (units) {
77955            case 'year':
77956                time = startOfDate(this.year(), 0, 1);
77957                break;
77958            case 'quarter':
77959                time = startOfDate(
77960                    this.year(),
77961                    this.month() - (this.month() % 3),
77962                    1
77963                );
77964                break;
77965            case 'month':
77966                time = startOfDate(this.year(), this.month(), 1);
77967                break;
77968            case 'week':
77969                time = startOfDate(
77970                    this.year(),
77971                    this.month(),
77972                    this.date() - this.weekday()
77973                );
77974                break;
77975            case 'isoWeek':
77976                time = startOfDate(
77977                    this.year(),
77978                    this.month(),
77979                    this.date() - (this.isoWeekday() - 1)
77980                );
77981                break;
77982            case 'day':
77983            case 'date':
77984                time = startOfDate(this.year(), this.month(), this.date());
77985                break;
77986            case 'hour':
77987                time = this._d.valueOf();
77988                time -= mod$1(
77989                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
77990                    MS_PER_HOUR
77991                );
77992                break;
77993            case 'minute':
77994                time = this._d.valueOf();
77995                time -= mod$1(time, MS_PER_MINUTE);
77996                break;
77997            case 'second':
77998                time = this._d.valueOf();
77999                time -= mod$1(time, MS_PER_SECOND);
78000                break;
78001        }
78002
78003        this._d.setTime(time);
78004        hooks.updateOffset(this, true);
78005        return this;
78006    }
78007
78008    function endOf(units) {
78009        var time, startOfDate;
78010        units = normalizeUnits(units);
78011        if (units === undefined || units === 'millisecond' || !this.isValid()) {
78012            return this;
78013        }
78014
78015        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
78016
78017        switch (units) {
78018            case 'year':
78019                time = startOfDate(this.year() + 1, 0, 1) - 1;
78020                break;
78021            case 'quarter':
78022                time =
78023                    startOfDate(
78024                        this.year(),
78025                        this.month() - (this.month() % 3) + 3,
78026                        1
78027                    ) - 1;
78028                break;
78029            case 'month':
78030                time = startOfDate(this.year(), this.month() + 1, 1) - 1;
78031                break;
78032            case 'week':
78033                time =
78034                    startOfDate(
78035                        this.year(),
78036                        this.month(),
78037                        this.date() - this.weekday() + 7
78038                    ) - 1;
78039                break;
78040            case 'isoWeek':
78041                time =
78042                    startOfDate(
78043                        this.year(),
78044                        this.month(),
78045                        this.date() - (this.isoWeekday() - 1) + 7
78046                    ) - 1;
78047                break;
78048            case 'day':
78049            case 'date':
78050                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
78051                break;
78052            case 'hour':
78053                time = this._d.valueOf();
78054                time +=
78055                    MS_PER_HOUR -
78056                    mod$1(
78057                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
78058                        MS_PER_HOUR
78059                    ) -
78060                    1;
78061                break;
78062            case 'minute':
78063                time = this._d.valueOf();
78064                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
78065                break;
78066            case 'second':
78067                time = this._d.valueOf();
78068                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
78069                break;
78070        }
78071
78072        this._d.setTime(time);
78073        hooks.updateOffset(this, true);
78074        return this;
78075    }
78076
78077    function valueOf() {
78078        return this._d.valueOf() - (this._offset || 0) * 60000;
78079    }
78080
78081    function unix() {
78082        return Math.floor(this.valueOf() / 1000);
78083    }
78084
78085    function toDate() {
78086        return new Date(this.valueOf());
78087    }
78088
78089    function toArray() {
78090        var m = this;
78091        return [
78092            m.year(),
78093            m.month(),
78094            m.date(),
78095            m.hour(),
78096            m.minute(),
78097            m.second(),
78098            m.millisecond(),
78099        ];
78100    }
78101
78102    function toObject() {
78103        var m = this;
78104        return {
78105            years: m.year(),
78106            months: m.month(),
78107            date: m.date(),
78108            hours: m.hours(),
78109            minutes: m.minutes(),
78110            seconds: m.seconds(),
78111            milliseconds: m.milliseconds(),
78112        };
78113    }
78114
78115    function toJSON() {
78116        // new Date(NaN).toJSON() === null
78117        return this.isValid() ? this.toISOString() : null;
78118    }
78119
78120    function isValid$2() {
78121        return isValid(this);
78122    }
78123
78124    function parsingFlags() {
78125        return extend({}, getParsingFlags(this));
78126    }
78127
78128    function invalidAt() {
78129        return getParsingFlags(this).overflow;
78130    }
78131
78132    function creationData() {
78133        return {
78134            input: this._i,
78135            format: this._f,
78136            locale: this._locale,
78137            isUTC: this._isUTC,
78138            strict: this._strict,
78139        };
78140    }
78141
78142    addFormatToken('N', 0, 0, 'eraAbbr');
78143    addFormatToken('NN', 0, 0, 'eraAbbr');
78144    addFormatToken('NNN', 0, 0, 'eraAbbr');
78145    addFormatToken('NNNN', 0, 0, 'eraName');
78146    addFormatToken('NNNNN', 0, 0, 'eraNarrow');
78147
78148    addFormatToken('y', ['y', 1], 'yo', 'eraYear');
78149    addFormatToken('y', ['yy', 2], 0, 'eraYear');
78150    addFormatToken('y', ['yyy', 3], 0, 'eraYear');
78151    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
78152
78153    addRegexToken('N', matchEraAbbr);
78154    addRegexToken('NN', matchEraAbbr);
78155    addRegexToken('NNN', matchEraAbbr);
78156    addRegexToken('NNNN', matchEraName);
78157    addRegexToken('NNNNN', matchEraNarrow);
78158
78159    addParseToken(
78160        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],
78161        function (input, array, config, token) {
78162            var era = config._locale.erasParse(input, token, config._strict);
78163            if (era) {
78164                getParsingFlags(config).era = era;
78165            } else {
78166                getParsingFlags(config).invalidEra = input;
78167            }
78168        }
78169    );
78170
78171    addRegexToken('y', matchUnsigned);
78172    addRegexToken('yy', matchUnsigned);
78173    addRegexToken('yyy', matchUnsigned);
78174    addRegexToken('yyyy', matchUnsigned);
78175    addRegexToken('yo', matchEraYearOrdinal);
78176
78177    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
78178    addParseToken(['yo'], function (input, array, config, token) {
78179        var match;
78180        if (config._locale._eraYearOrdinalRegex) {
78181            match = input.match(config._locale._eraYearOrdinalRegex);
78182        }
78183
78184        if (config._locale.eraYearOrdinalParse) {
78185            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
78186        } else {
78187            array[YEAR] = parseInt(input, 10);
78188        }
78189    });
78190
78191    function localeEras(m, format) {
78192        var i,
78193            l,
78194            date,
78195            eras = this._eras || getLocale('en')._eras;
78196        for (i = 0, l = eras.length; i < l; ++i) {
78197            switch (typeof eras[i].since) {
78198                case 'string':
78199                    // truncate time
78200                    date = hooks(eras[i].since).startOf('day');
78201                    eras[i].since = date.valueOf();
78202                    break;
78203            }
78204
78205            switch (typeof eras[i].until) {
78206                case 'undefined':
78207                    eras[i].until = +Infinity;
78208                    break;
78209                case 'string':
78210                    // truncate time
78211                    date = hooks(eras[i].until).startOf('day').valueOf();
78212                    eras[i].until = date.valueOf();
78213                    break;
78214            }
78215        }
78216        return eras;
78217    }
78218
78219    function localeErasParse(eraName, format, strict) {
78220        var i,
78221            l,
78222            eras = this.eras(),
78223            name,
78224            abbr,
78225            narrow;
78226        eraName = eraName.toUpperCase();
78227
78228        for (i = 0, l = eras.length; i < l; ++i) {
78229            name = eras[i].name.toUpperCase();
78230            abbr = eras[i].abbr.toUpperCase();
78231            narrow = eras[i].narrow.toUpperCase();
78232
78233            if (strict) {
78234                switch (format) {
78235                    case 'N':
78236                    case 'NN':
78237                    case 'NNN':
78238                        if (abbr === eraName) {
78239                            return eras[i];
78240                        }
78241                        break;
78242
78243                    case 'NNNN':
78244                        if (name === eraName) {
78245                            return eras[i];
78246                        }
78247                        break;
78248
78249                    case 'NNNNN':
78250                        if (narrow === eraName) {
78251                            return eras[i];
78252                        }
78253                        break;
78254                }
78255            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
78256                return eras[i];
78257            }
78258        }
78259    }
78260
78261    function localeErasConvertYear(era, year) {
78262        var dir = era.since <= era.until ? +1 : -1;
78263        if (year === undefined) {
78264            return hooks(era.since).year();
78265        } else {
78266            return hooks(era.since).year() + (year - era.offset) * dir;
78267        }
78268    }
78269
78270    function getEraName() {
78271        var i,
78272            l,
78273            val,
78274            eras = this.localeData().eras();
78275        for (i = 0, l = eras.length; i < l; ++i) {
78276            // truncate time
78277            val = this.clone().startOf('day').valueOf();
78278
78279            if (eras[i].since <= val && val <= eras[i].until) {
78280                return eras[i].name;
78281            }
78282            if (eras[i].until <= val && val <= eras[i].since) {
78283                return eras[i].name;
78284            }
78285        }
78286
78287        return '';
78288    }
78289
78290    function getEraNarrow() {
78291        var i,
78292            l,
78293            val,
78294            eras = this.localeData().eras();
78295        for (i = 0, l = eras.length; i < l; ++i) {
78296            // truncate time
78297            val = this.clone().startOf('day').valueOf();
78298
78299            if (eras[i].since <= val && val <= eras[i].until) {
78300                return eras[i].narrow;
78301            }
78302            if (eras[i].until <= val && val <= eras[i].since) {
78303                return eras[i].narrow;
78304            }
78305        }
78306
78307        return '';
78308    }
78309
78310    function getEraAbbr() {
78311        var i,
78312            l,
78313            val,
78314            eras = this.localeData().eras();
78315        for (i = 0, l = eras.length; i < l; ++i) {
78316            // truncate time
78317            val = this.clone().startOf('day').valueOf();
78318
78319            if (eras[i].since <= val && val <= eras[i].until) {
78320                return eras[i].abbr;
78321            }
78322            if (eras[i].until <= val && val <= eras[i].since) {
78323                return eras[i].abbr;
78324            }
78325        }
78326
78327        return '';
78328    }
78329
78330    function getEraYear() {
78331        var i,
78332            l,
78333            dir,
78334            val,
78335            eras = this.localeData().eras();
78336        for (i = 0, l = eras.length; i < l; ++i) {
78337            dir = eras[i].since <= eras[i].until ? +1 : -1;
78338
78339            // truncate time
78340            val = this.clone().startOf('day').valueOf();
78341
78342            if (
78343                (eras[i].since <= val && val <= eras[i].until) ||
78344                (eras[i].until <= val && val <= eras[i].since)
78345            ) {
78346                return (
78347                    (this.year() - hooks(eras[i].since).year()) * dir +
78348                    eras[i].offset
78349                );
78350            }
78351        }
78352
78353        return this.year();
78354    }
78355
78356    function erasNameRegex(isStrict) {
78357        if (!hasOwnProp(this, '_erasNameRegex')) {
78358            computeErasParse.call(this);
78359        }
78360        return isStrict ? this._erasNameRegex : this._erasRegex;
78361    }
78362
78363    function erasAbbrRegex(isStrict) {
78364        if (!hasOwnProp(this, '_erasAbbrRegex')) {
78365            computeErasParse.call(this);
78366        }
78367        return isStrict ? this._erasAbbrRegex : this._erasRegex;
78368    }
78369
78370    function erasNarrowRegex(isStrict) {
78371        if (!hasOwnProp(this, '_erasNarrowRegex')) {
78372            computeErasParse.call(this);
78373        }
78374        return isStrict ? this._erasNarrowRegex : this._erasRegex;
78375    }
78376
78377    function matchEraAbbr(isStrict, locale) {
78378        return locale.erasAbbrRegex(isStrict);
78379    }
78380
78381    function matchEraName(isStrict, locale) {
78382        return locale.erasNameRegex(isStrict);
78383    }
78384
78385    function matchEraNarrow(isStrict, locale) {
78386        return locale.erasNarrowRegex(isStrict);
78387    }
78388
78389    function matchEraYearOrdinal(isStrict, locale) {
78390        return locale._eraYearOrdinalRegex || matchUnsigned;
78391    }
78392
78393    function computeErasParse() {
78394        var abbrPieces = [],
78395            namePieces = [],
78396            narrowPieces = [],
78397            mixedPieces = [],
78398            i,
78399            l,
78400            erasName,
78401            erasAbbr,
78402            erasNarrow,
78403            eras = this.eras();
78404
78405        for (i = 0, l = eras.length; i < l; ++i) {
78406            erasName = regexEscape(eras[i].name);
78407            erasAbbr = regexEscape(eras[i].abbr);
78408            erasNarrow = regexEscape(eras[i].narrow);
78409
78410            namePieces.push(erasName);
78411            abbrPieces.push(erasAbbr);
78412            narrowPieces.push(erasNarrow);
78413            mixedPieces.push(erasName);
78414            mixedPieces.push(erasAbbr);
78415            mixedPieces.push(erasNarrow);
78416        }
78417
78418        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
78419        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
78420        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
78421        this._erasNarrowRegex = new RegExp(
78422            '^(' + narrowPieces.join('|') + ')',
78423            'i'
78424        );
78425    }
78426
78427    // FORMATTING
78428
78429    addFormatToken(0, ['gg', 2], 0, function () {
78430        return this.weekYear() % 100;
78431    });
78432
78433    addFormatToken(0, ['GG', 2], 0, function () {
78434        return this.isoWeekYear() % 100;
78435    });
78436
78437    function addWeekYearFormatToken(token, getter) {
78438        addFormatToken(0, [token, token.length], 0, getter);
78439    }
78440
78441    addWeekYearFormatToken('gggg', 'weekYear');
78442    addWeekYearFormatToken('ggggg', 'weekYear');
78443    addWeekYearFormatToken('GGGG', 'isoWeekYear');
78444    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
78445
78446    // ALIASES
78447
78448    // PARSING
78449
78450    addRegexToken('G', matchSigned);
78451    addRegexToken('g', matchSigned);
78452    addRegexToken('GG', match1to2, match2);
78453    addRegexToken('gg', match1to2, match2);
78454    addRegexToken('GGGG', match1to4, match4);
78455    addRegexToken('gggg', match1to4, match4);
78456    addRegexToken('GGGGG', match1to6, match6);
78457    addRegexToken('ggggg', match1to6, match6);
78458
78459    addWeekParseToken(
78460        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],
78461        function (input, week, config, token) {
78462            week[token.substr(0, 2)] = toInt(input);
78463        }
78464    );
78465
78466    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
78467        week[token] = hooks.parseTwoDigitYear(input);
78468    });
78469
78470    // MOMENTS
78471
78472    function getSetWeekYear(input) {
78473        return getSetWeekYearHelper.call(
78474            this,
78475            input,
78476            this.week(),
78477            this.weekday() + this.localeData()._week.dow,
78478            this.localeData()._week.dow,
78479            this.localeData()._week.doy
78480        );
78481    }
78482
78483    function getSetISOWeekYear(input) {
78484        return getSetWeekYearHelper.call(
78485            this,
78486            input,
78487            this.isoWeek(),
78488            this.isoWeekday(),
78489            1,
78490            4
78491        );
78492    }
78493
78494    function getISOWeeksInYear() {
78495        return weeksInYear(this.year(), 1, 4);
78496    }
78497
78498    function getISOWeeksInISOWeekYear() {
78499        return weeksInYear(this.isoWeekYear(), 1, 4);
78500    }
78501
78502    function getWeeksInYear() {
78503        var weekInfo = this.localeData()._week;
78504        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
78505    }
78506
78507    function getWeeksInWeekYear() {
78508        var weekInfo = this.localeData()._week;
78509        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
78510    }
78511
78512    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
78513        var weeksTarget;
78514        if (input == null) {
78515            return weekOfYear(this, dow, doy).year;
78516        } else {
78517            weeksTarget = weeksInYear(input, dow, doy);
78518            if (week > weeksTarget) {
78519                week = weeksTarget;
78520            }
78521            return setWeekAll.call(this, input, week, weekday, dow, doy);
78522        }
78523    }
78524
78525    function setWeekAll(weekYear, week, weekday, dow, doy) {
78526        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
78527            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
78528
78529        this.year(date.getUTCFullYear());
78530        this.month(date.getUTCMonth());
78531        this.date(date.getUTCDate());
78532        return this;
78533    }
78534
78535    // FORMATTING
78536
78537    addFormatToken('Q', 0, 'Qo', 'quarter');
78538
78539    // PARSING
78540
78541    addRegexToken('Q', match1);
78542    addParseToken('Q', function (input, array) {
78543        array[MONTH] = (toInt(input) - 1) * 3;
78544    });
78545
78546    // MOMENTS
78547
78548    function getSetQuarter(input) {
78549        return input == null
78550            ? Math.ceil((this.month() + 1) / 3)
78551            : this.month((input - 1) * 3 + (this.month() % 3));
78552    }
78553
78554    // FORMATTING
78555
78556    addFormatToken('D', ['DD', 2], 'Do', 'date');
78557
78558    // PARSING
78559
78560    addRegexToken('D', match1to2, match1to2NoLeadingZero);
78561    addRegexToken('DD', match1to2, match2);
78562    addRegexToken('Do', function (isStrict, locale) {
78563        // TODO: Remove "ordinalParse" fallback in next major release.
78564        return isStrict
78565            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
78566            : locale._dayOfMonthOrdinalParseLenient;
78567    });
78568
78569    addParseToken(['D', 'DD'], DATE);
78570    addParseToken('Do', function (input, array) {
78571        array[DATE] = toInt(input.match(match1to2)[0]);
78572    });
78573
78574    // MOMENTS
78575
78576    var getSetDayOfMonth = makeGetSet('Date', true);
78577
78578    // FORMATTING
78579
78580    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
78581
78582    // PARSING
78583
78584    addRegexToken('DDD', match1to3);
78585    addRegexToken('DDDD', match3);
78586    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
78587        config._dayOfYear = toInt(input);
78588    });
78589
78590    // HELPERS
78591
78592    // MOMENTS
78593
78594    function getSetDayOfYear(input) {
78595        var dayOfYear =
78596            Math.round(
78597                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
78598            ) + 1;
78599        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
78600    }
78601
78602    // FORMATTING
78603
78604    addFormatToken('m', ['mm', 2], 0, 'minute');
78605
78606    // PARSING
78607
78608    addRegexToken('m', match1to2, match1to2HasZero);
78609    addRegexToken('mm', match1to2, match2);
78610    addParseToken(['m', 'mm'], MINUTE);
78611
78612    // MOMENTS
78613
78614    var getSetMinute = makeGetSet('Minutes', false);
78615
78616    // FORMATTING
78617
78618    addFormatToken('s', ['ss', 2], 0, 'second');
78619
78620    // PARSING
78621
78622    addRegexToken('s', match1to2, match1to2HasZero);
78623    addRegexToken('ss', match1to2, match2);
78624    addParseToken(['s', 'ss'], SECOND);
78625
78626    // MOMENTS
78627
78628    var getSetSecond = makeGetSet('Seconds', false);
78629
78630    // FORMATTING
78631
78632    addFormatToken('S', 0, 0, function () {
78633        return ~~(this.millisecond() / 100);
78634    });
78635
78636    addFormatToken(0, ['SS', 2], 0, function () {
78637        return ~~(this.millisecond() / 10);
78638    });
78639
78640    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
78641    addFormatToken(0, ['SSSS', 4], 0, function () {
78642        return this.millisecond() * 10;
78643    });
78644    addFormatToken(0, ['SSSSS', 5], 0, function () {
78645        return this.millisecond() * 100;
78646    });
78647    addFormatToken(0, ['SSSSSS', 6], 0, function () {
78648        return this.millisecond() * 1000;
78649    });
78650    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
78651        return this.millisecond() * 10000;
78652    });
78653    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
78654        return this.millisecond() * 100000;
78655    });
78656    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
78657        return this.millisecond() * 1000000;
78658    });
78659
78660    // PARSING
78661
78662    addRegexToken('S', match1to3, match1);
78663    addRegexToken('SS', match1to3, match2);
78664    addRegexToken('SSS', match1to3, match3);
78665
78666    var token, getSetMillisecond;
78667    for (token = 'SSSS'; token.length <= 9; token += 'S') {
78668        addRegexToken(token, matchUnsigned);
78669    }
78670
78671    function parseMs(input, array) {
78672        array[MILLISECOND] = toInt(('0.' + input) * 1000);
78673    }
78674
78675    for (token = 'S'; token.length <= 9; token += 'S') {
78676        addParseToken(token, parseMs);
78677    }
78678
78679    getSetMillisecond = makeGetSet('Milliseconds', false);
78680
78681    // FORMATTING
78682
78683    addFormatToken('z', 0, 0, 'zoneAbbr');
78684    addFormatToken('zz', 0, 0, 'zoneName');
78685
78686    // MOMENTS
78687
78688    function getZoneAbbr() {
78689        return this._isUTC ? 'UTC' : '';
78690    }
78691
78692    function getZoneName() {
78693        return this._isUTC ? 'Coordinated Universal Time' : '';
78694    }
78695
78696    var proto = Moment.prototype;
78697
78698    proto.add = add;
78699    proto.calendar = calendar$1;
78700    proto.clone = clone;
78701    proto.diff = diff;
78702    proto.endOf = endOf;
78703    proto.format = format;
78704    proto.from = from;
78705    proto.fromNow = fromNow;
78706    proto.to = to;
78707    proto.toNow = toNow;
78708    proto.get = stringGet;
78709    proto.invalidAt = invalidAt;
78710    proto.isAfter = isAfter;
78711    proto.isBefore = isBefore;
78712    proto.isBetween = isBetween;
78713    proto.isSame = isSame;
78714    proto.isSameOrAfter = isSameOrAfter;
78715    proto.isSameOrBefore = isSameOrBefore;
78716    proto.isValid = isValid$2;
78717    proto.lang = lang;
78718    proto.locale = locale;
78719    proto.localeData = localeData;
78720    proto.max = prototypeMax;
78721    proto.min = prototypeMin;
78722    proto.parsingFlags = parsingFlags;
78723    proto.set = stringSet;
78724    proto.startOf = startOf;
78725    proto.subtract = subtract;
78726    proto.toArray = toArray;
78727    proto.toObject = toObject;
78728    proto.toDate = toDate;
78729    proto.toISOString = toISOString;
78730    proto.inspect = inspect;
78731    if (typeof Symbol !== 'undefined' && Symbol.for != null) {
78732        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
78733            return 'Moment<' + this.format() + '>';
78734        };
78735    }
78736    proto.toJSON = toJSON;
78737    proto.toString = toString;
78738    proto.unix = unix;
78739    proto.valueOf = valueOf;
78740    proto.creationData = creationData;
78741    proto.eraName = getEraName;
78742    proto.eraNarrow = getEraNarrow;
78743    proto.eraAbbr = getEraAbbr;
78744    proto.eraYear = getEraYear;
78745    proto.year = getSetYear;
78746    proto.isLeapYear = getIsLeapYear;
78747    proto.weekYear = getSetWeekYear;
78748    proto.isoWeekYear = getSetISOWeekYear;
78749    proto.quarter = proto.quarters = getSetQuarter;
78750    proto.month = getSetMonth;
78751    proto.daysInMonth = getDaysInMonth;
78752    proto.week = proto.weeks = getSetWeek;
78753    proto.isoWeek = proto.isoWeeks = getSetISOWeek;
78754    proto.weeksInYear = getWeeksInYear;
78755    proto.weeksInWeekYear = getWeeksInWeekYear;
78756    proto.isoWeeksInYear = getISOWeeksInYear;
78757    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
78758    proto.date = getSetDayOfMonth;
78759    proto.day = proto.days = getSetDayOfWeek;
78760    proto.weekday = getSetLocaleDayOfWeek;
78761    proto.isoWeekday = getSetISODayOfWeek;
78762    proto.dayOfYear = getSetDayOfYear;
78763    proto.hour = proto.hours = getSetHour;
78764    proto.minute = proto.minutes = getSetMinute;
78765    proto.second = proto.seconds = getSetSecond;
78766    proto.millisecond = proto.milliseconds = getSetMillisecond;
78767    proto.utcOffset = getSetOffset;
78768    proto.utc = setOffsetToUTC;
78769    proto.local = setOffsetToLocal;
78770    proto.parseZone = setOffsetToParsedOffset;
78771    proto.hasAlignedHourOffset = hasAlignedHourOffset;
78772    proto.isDST = isDaylightSavingTime;
78773    proto.isLocal = isLocal;
78774    proto.isUtcOffset = isUtcOffset;
78775    proto.isUtc = isUtc;
78776    proto.isUTC = isUtc;
78777    proto.zoneAbbr = getZoneAbbr;
78778    proto.zoneName = getZoneName;
78779    proto.dates = deprecate(
78780        'dates accessor is deprecated. Use date instead.',
78781        getSetDayOfMonth
78782    );
78783    proto.months = deprecate(
78784        'months accessor is deprecated. Use month instead',
78785        getSetMonth
78786    );
78787    proto.years = deprecate(
78788        'years accessor is deprecated. Use year instead',
78789        getSetYear
78790    );
78791    proto.zone = deprecate(
78792        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
78793        getSetZone
78794    );
78795    proto.isDSTShifted = deprecate(
78796        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
78797        isDaylightSavingTimeShifted
78798    );
78799
78800    function createUnix(input) {
78801        return createLocal(input * 1000);
78802    }
78803
78804    function createInZone() {
78805        return createLocal.apply(null, arguments).parseZone();
78806    }
78807
78808    function preParsePostFormat(string) {
78809        return string;
78810    }
78811
78812    var proto$1 = Locale.prototype;
78813
78814    proto$1.calendar = calendar;
78815    proto$1.longDateFormat = longDateFormat;
78816    proto$1.invalidDate = invalidDate;
78817    proto$1.ordinal = ordinal;
78818    proto$1.preparse = preParsePostFormat;
78819    proto$1.postformat = preParsePostFormat;
78820    proto$1.relativeTime = relativeTime;
78821    proto$1.pastFuture = pastFuture;
78822    proto$1.set = set;
78823    proto$1.eras = localeEras;
78824    proto$1.erasParse = localeErasParse;
78825    proto$1.erasConvertYear = localeErasConvertYear;
78826    proto$1.erasAbbrRegex = erasAbbrRegex;
78827    proto$1.erasNameRegex = erasNameRegex;
78828    proto$1.erasNarrowRegex = erasNarrowRegex;
78829
78830    proto$1.months = localeMonths;
78831    proto$1.monthsShort = localeMonthsShort;
78832    proto$1.monthsParse = localeMonthsParse;
78833    proto$1.monthsRegex = monthsRegex;
78834    proto$1.monthsShortRegex = monthsShortRegex;
78835    proto$1.week = localeWeek;
78836    proto$1.firstDayOfYear = localeFirstDayOfYear;
78837    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
78838
78839    proto$1.weekdays = localeWeekdays;
78840    proto$1.weekdaysMin = localeWeekdaysMin;
78841    proto$1.weekdaysShort = localeWeekdaysShort;
78842    proto$1.weekdaysParse = localeWeekdaysParse;
78843
78844    proto$1.weekdaysRegex = weekdaysRegex;
78845    proto$1.weekdaysShortRegex = weekdaysShortRegex;
78846    proto$1.weekdaysMinRegex = weekdaysMinRegex;
78847
78848    proto$1.isPM = localeIsPM;
78849    proto$1.meridiem = localeMeridiem;
78850
78851    function get$1(format, index, field, setter) {
78852        var locale = getLocale(),
78853            utc = createUTC().set(setter, index);
78854        return locale[field](utc, format);
78855    }
78856
78857    function listMonthsImpl(format, index, field) {
78858        if (isNumber(format)) {
78859            index = format;
78860            format = undefined;
78861        }
78862
78863        format = format || '';
78864
78865        if (index != null) {
78866            return get$1(format, index, field, 'month');
78867        }
78868
78869        var i,
78870            out = [];
78871        for (i = 0; i < 12; i++) {
78872            out[i] = get$1(format, i, field, 'month');
78873        }
78874        return out;
78875    }
78876
78877    // ()
78878    // (5)
78879    // (fmt, 5)
78880    // (fmt)
78881    // (true)
78882    // (true, 5)
78883    // (true, fmt, 5)
78884    // (true, fmt)
78885    function listWeekdaysImpl(localeSorted, format, index, field) {
78886        if (typeof localeSorted === 'boolean') {
78887            if (isNumber(format)) {
78888                index = format;
78889                format = undefined;
78890            }
78891
78892            format = format || '';
78893        } else {
78894            format = localeSorted;
78895            index = format;
78896            localeSorted = false;
78897
78898            if (isNumber(format)) {
78899                index = format;
78900                format = undefined;
78901            }
78902
78903            format = format || '';
78904        }
78905
78906        var locale = getLocale(),
78907            shift = localeSorted ? locale._week.dow : 0,
78908            i,
78909            out = [];
78910
78911        if (index != null) {
78912            return get$1(format, (index + shift) % 7, field, 'day');
78913        }
78914
78915        for (i = 0; i < 7; i++) {
78916            out[i] = get$1(format, (i + shift) % 7, field, 'day');
78917        }
78918        return out;
78919    }
78920
78921    function listMonths(format, index) {
78922        return listMonthsImpl(format, index, 'months');
78923    }
78924
78925    function listMonthsShort(format, index) {
78926        return listMonthsImpl(format, index, 'monthsShort');
78927    }
78928
78929    function listWeekdays(localeSorted, format, index) {
78930        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
78931    }
78932
78933    function listWeekdaysShort(localeSorted, format, index) {
78934        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
78935    }
78936
78937    function listWeekdaysMin(localeSorted, format, index) {
78938        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
78939    }
78940
78941    getSetGlobalLocale('en', {
78942        eras: [
78943            {
78944                since: '0001-01-01',
78945                until: +Infinity,
78946                offset: 1,
78947                name: 'Anno Domini',
78948                narrow: 'AD',
78949                abbr: 'AD',
78950            },
78951            {
78952                since: '0000-12-31',
78953                until: -Infinity,
78954                offset: 1,
78955                name: 'Before Christ',
78956                narrow: 'BC',
78957                abbr: 'BC',
78958            },
78959        ],
78960        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
78961        ordinal: function (number) {
78962            var b = number % 10,
78963                output =
78964                    toInt((number % 100) / 10) === 1
78965                        ? 'th'
78966                        : b === 1
78967                          ? 'st'
78968                          : b === 2
78969                            ? 'nd'
78970                            : b === 3
78971                              ? 'rd'
78972                              : 'th';
78973            return number + output;
78974        },
78975    });
78976
78977    // Side effect imports
78978
78979    hooks.lang = deprecate(
78980        'moment.lang is deprecated. Use moment.locale instead.',
78981        getSetGlobalLocale
78982    );
78983    hooks.langData = deprecate(
78984        'moment.langData is deprecated. Use moment.localeData instead.',
78985        getLocale
78986    );
78987
78988    var mathAbs = Math.abs;
78989
78990    function abs() {
78991        var data = this._data;
78992
78993        this._milliseconds = mathAbs(this._milliseconds);
78994        this._days = mathAbs(this._days);
78995        this._months = mathAbs(this._months);
78996
78997        data.milliseconds = mathAbs(data.milliseconds);
78998        data.seconds = mathAbs(data.seconds);
78999        data.minutes = mathAbs(data.minutes);
79000        data.hours = mathAbs(data.hours);
79001        data.months = mathAbs(data.months);
79002        data.years = mathAbs(data.years);
79003
79004        return this;
79005    }
79006
79007    function addSubtract$1(duration, input, value, direction) {
79008        var other = createDuration(input, value);
79009
79010        duration._milliseconds += direction * other._milliseconds;
79011        duration._days += direction * other._days;
79012        duration._months += direction * other._months;
79013
79014        return duration._bubble();
79015    }
79016
79017    // supports only 2.0-style add(1, 's') or add(duration)
79018    function add$1(input, value) {
79019        return addSubtract$1(this, input, value, 1);
79020    }
79021
79022    // supports only 2.0-style subtract(1, 's') or subtract(duration)
79023    function subtract$1(input, value) {
79024        return addSubtract$1(this, input, value, -1);
79025    }
79026
79027    function absCeil(number) {
79028        if (number < 0) {
79029            return Math.floor(number);
79030        } else {
79031            return Math.ceil(number);
79032        }
79033    }
79034
79035    function bubble() {
79036        var milliseconds = this._milliseconds,
79037            days = this._days,
79038            months = this._months,
79039            data = this._data,
79040            seconds,
79041            minutes,
79042            hours,
79043            years,
79044            monthsFromDays;
79045
79046        // if we have a mix of positive and negative values, bubble down first
79047        // check: https://github.com/moment/moment/issues/2166
79048        if (
79049            !(
79050                (milliseconds >= 0 && days >= 0 && months >= 0) ||
79051                (milliseconds <= 0 && days <= 0 && months <= 0)
79052            )
79053        ) {
79054            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
79055            days = 0;
79056            months = 0;
79057        }
79058
79059        // The following code bubbles up values, see the tests for
79060        // examples of what that means.
79061        data.milliseconds = milliseconds % 1000;
79062
79063        seconds = absFloor(milliseconds / 1000);
79064        data.seconds = seconds % 60;
79065
79066        minutes = absFloor(seconds / 60);
79067        data.minutes = minutes % 60;
79068
79069        hours = absFloor(minutes / 60);
79070        data.hours = hours % 24;
79071
79072        days += absFloor(hours / 24);
79073
79074        // convert days to months
79075        monthsFromDays = absFloor(daysToMonths(days));
79076        months += monthsFromDays;
79077        days -= absCeil(monthsToDays(monthsFromDays));
79078
79079        // 12 months -> 1 year
79080        years = absFloor(months / 12);
79081        months %= 12;
79082
79083        data.days = days;
79084        data.months = months;
79085        data.years = years;
79086
79087        return this;
79088    }
79089
79090    function daysToMonths(days) {
79091        // 400 years have 146097 days (taking into account leap year rules)
79092        // 400 years have 12 months === 4800
79093        return (days * 4800) / 146097;
79094    }
79095
79096    function monthsToDays(months) {
79097        // the reverse of daysToMonths
79098        return (months * 146097) / 4800;
79099    }
79100
79101    function as(units) {
79102        if (!this.isValid()) {
79103            return NaN;
79104        }
79105        var days,
79106            months,
79107            milliseconds = this._milliseconds;
79108
79109        units = normalizeUnits(units);
79110
79111        if (units === 'month' || units === 'quarter' || units === 'year') {
79112            days = this._days + milliseconds / 864e5;
79113            months = this._months + daysToMonths(days);
79114            switch (units) {
79115                case 'month':
79116                    return months;
79117                case 'quarter':
79118                    return months / 3;
79119                case 'year':
79120                    return months / 12;
79121            }
79122        } else {
79123            // handle milliseconds separately because of floating point math errors (issue #1867)
79124            days = this._days + Math.round(monthsToDays(this._months));
79125            switch (units) {
79126                case 'week':
79127                    return days / 7 + milliseconds / 6048e5;
79128                case 'day':
79129                    return days + milliseconds / 864e5;
79130                case 'hour':
79131                    return days * 24 + milliseconds / 36e5;
79132                case 'minute':
79133                    return days * 1440 + milliseconds / 6e4;
79134                case 'second':
79135                    return days * 86400 + milliseconds / 1000;
79136                // Math.floor prevents floating point math errors here
79137                case 'millisecond':
79138                    return Math.floor(days * 864e5) + milliseconds;
79139                default:
79140                    throw new Error('Unknown unit ' + units);
79141            }
79142        }
79143    }
79144
79145    function makeAs(alias) {
79146        return function () {
79147            return this.as(alias);
79148        };
79149    }
79150
79151    var asMilliseconds = makeAs('ms'),
79152        asSeconds = makeAs('s'),
79153        asMinutes = makeAs('m'),
79154        asHours = makeAs('h'),
79155        asDays = makeAs('d'),
79156        asWeeks = makeAs('w'),
79157        asMonths = makeAs('M'),
79158        asQuarters = makeAs('Q'),
79159        asYears = makeAs('y'),
79160        valueOf$1 = asMilliseconds;
79161
79162    function clone$1() {
79163        return createDuration(this);
79164    }
79165
79166    function get$2(units) {
79167        units = normalizeUnits(units);
79168        return this.isValid() ? this[units + 's']() : NaN;
79169    }
79170
79171    function makeGetter(name) {
79172        return function () {
79173            return this.isValid() ? this._data[name] : NaN;
79174        };
79175    }
79176
79177    var milliseconds = makeGetter('milliseconds'),
79178        seconds = makeGetter('seconds'),
79179        minutes = makeGetter('minutes'),
79180        hours = makeGetter('hours'),
79181        days = makeGetter('days'),
79182        months = makeGetter('months'),
79183        years = makeGetter('years');
79184
79185    function weeks() {
79186        return absFloor(this.days() / 7);
79187    }
79188
79189    var round = Math.round,
79190        thresholds = {
79191            ss: 44, // a few seconds to seconds
79192            s: 45, // seconds to minute
79193            m: 45, // minutes to hour
79194            h: 22, // hours to day
79195            d: 26, // days to month/week
79196            w: null, // weeks to month
79197            M: 11, // months to year
79198        };
79199
79200    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
79201    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
79202        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
79203    }
79204
79205    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
79206        var duration = createDuration(posNegDuration).abs(),
79207            seconds = round(duration.as('s')),
79208            minutes = round(duration.as('m')),
79209            hours = round(duration.as('h')),
79210            days = round(duration.as('d')),
79211            months = round(duration.as('M')),
79212            weeks = round(duration.as('w')),
79213            years = round(duration.as('y')),
79214            a =
79215                (seconds <= thresholds.ss && ['s', seconds]) ||
79216                (seconds < thresholds.s && ['ss', seconds]) ||
79217                (minutes <= 1 && ['m']) ||
79218                (minutes < thresholds.m && ['mm', minutes]) ||
79219                (hours <= 1 && ['h']) ||
79220                (hours < thresholds.h && ['hh', hours]) ||
79221                (days <= 1 && ['d']) ||
79222                (days < thresholds.d && ['dd', days]);
79223
79224        if (thresholds.w != null) {
79225            a =
79226                a ||
79227                (weeks <= 1 && ['w']) ||
79228                (weeks < thresholds.w && ['ww', weeks]);
79229        }
79230        a = a ||
79231            (months <= 1 && ['M']) ||
79232            (months < thresholds.M && ['MM', months]) ||
79233            (years <= 1 && ['y']) || ['yy', years];
79234
79235        a[2] = withoutSuffix;
79236        a[3] = +posNegDuration > 0;
79237        a[4] = locale;
79238        return substituteTimeAgo.apply(null, a);
79239    }
79240
79241    // This function allows you to set the rounding function for relative time strings
79242    function getSetRelativeTimeRounding(roundingFunction) {
79243        if (roundingFunction === undefined) {
79244            return round;
79245        }
79246        if (typeof roundingFunction === 'function') {
79247            round = roundingFunction;
79248            return true;
79249        }
79250        return false;
79251    }
79252
79253    // This function allows you to set a threshold for relative time strings
79254    function getSetRelativeTimeThreshold(threshold, limit) {
79255        if (thresholds[threshold] === undefined) {
79256            return false;
79257        }
79258        if (limit === undefined) {
79259            return thresholds[threshold];
79260        }
79261        thresholds[threshold] = limit;
79262        if (threshold === 's') {
79263            thresholds.ss = limit - 1;
79264        }
79265        return true;
79266    }
79267
79268    function humanize(argWithSuffix, argThresholds) {
79269        if (!this.isValid()) {
79270            return this.localeData().invalidDate();
79271        }
79272
79273        var withSuffix = false,
79274            th = thresholds,
79275            locale,
79276            output;
79277
79278        if (typeof argWithSuffix === 'object') {
79279            argThresholds = argWithSuffix;
79280            argWithSuffix = false;
79281        }
79282        if (typeof argWithSuffix === 'boolean') {
79283            withSuffix = argWithSuffix;
79284        }
79285        if (typeof argThresholds === 'object') {
79286            th = Object.assign({}, thresholds, argThresholds);
79287            if (argThresholds.s != null && argThresholds.ss == null) {
79288                th.ss = argThresholds.s - 1;
79289            }
79290        }
79291
79292        locale = this.localeData();
79293        output = relativeTime$1(this, !withSuffix, th, locale);
79294
79295        if (withSuffix) {
79296            output = locale.pastFuture(+this, output);
79297        }
79298
79299        return locale.postformat(output);
79300    }
79301
79302    var abs$1 = Math.abs;
79303
79304    function sign(x) {
79305        return (x > 0) - (x < 0) || +x;
79306    }
79307
79308    function toISOString$1() {
79309        // for ISO strings we do not use the normal bubbling rules:
79310        //  * milliseconds bubble up until they become hours
79311        //  * days do not bubble at all
79312        //  * months bubble up until they become years
79313        // This is because there is no context-free conversion between hours and days
79314        // (think of clock changes)
79315        // and also not between days and months (28-31 days per month)
79316        if (!this.isValid()) {
79317            return this.localeData().invalidDate();
79318        }
79319
79320        var seconds = abs$1(this._milliseconds) / 1000,
79321            days = abs$1(this._days),
79322            months = abs$1(this._months),
79323            minutes,
79324            hours,
79325            years,
79326            s,
79327            total = this.asSeconds(),
79328            totalSign,
79329            ymSign,
79330            daysSign,
79331            hmsSign;
79332
79333        if (!total) {
79334            // this is the same as C#'s (Noda) and python (isodate)...
79335            // but not other JS (goog.date)
79336            return 'P0D';
79337        }
79338
79339        // 3600 seconds -> 60 minutes -> 1 hour
79340        minutes = absFloor(seconds / 60);
79341        hours = absFloor(minutes / 60);
79342        seconds %= 60;
79343        minutes %= 60;
79344
79345        // 12 months -> 1 year
79346        years = absFloor(months / 12);
79347        months %= 12;
79348
79349        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
79350        s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
79351
79352        totalSign = total < 0 ? '-' : '';
79353        ymSign = sign(this._months) !== sign(total) ? '-' : '';
79354        daysSign = sign(this._days) !== sign(total) ? '-' : '';
79355        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
79356
79357        return (
79358            totalSign +
79359            'P' +
79360            (years ? ymSign + years + 'Y' : '') +
79361            (months ? ymSign + months + 'M' : '') +
79362            (days ? daysSign + days + 'D' : '') +
79363            (hours || minutes || seconds ? 'T' : '') +
79364            (hours ? hmsSign + hours + 'H' : '') +
79365            (minutes ? hmsSign + minutes + 'M' : '') +
79366            (seconds ? hmsSign + s + 'S' : '')
79367        );
79368    }
79369
79370    var proto$2 = Duration.prototype;
79371
79372    proto$2.isValid = isValid$1;
79373    proto$2.abs = abs;
79374    proto$2.add = add$1;
79375    proto$2.subtract = subtract$1;
79376    proto$2.as = as;
79377    proto$2.asMilliseconds = asMilliseconds;
79378    proto$2.asSeconds = asSeconds;
79379    proto$2.asMinutes = asMinutes;
79380    proto$2.asHours = asHours;
79381    proto$2.asDays = asDays;
79382    proto$2.asWeeks = asWeeks;
79383    proto$2.asMonths = asMonths;
79384    proto$2.asQuarters = asQuarters;
79385    proto$2.asYears = asYears;
79386    proto$2.valueOf = valueOf$1;
79387    proto$2._bubble = bubble;
79388    proto$2.clone = clone$1;
79389    proto$2.get = get$2;
79390    proto$2.milliseconds = milliseconds;
79391    proto$2.seconds = seconds;
79392    proto$2.minutes = minutes;
79393    proto$2.hours = hours;
79394    proto$2.days = days;
79395    proto$2.weeks = weeks;
79396    proto$2.months = months;
79397    proto$2.years = years;
79398    proto$2.humanize = humanize;
79399    proto$2.toISOString = toISOString$1;
79400    proto$2.toString = toISOString$1;
79401    proto$2.toJSON = toISOString$1;
79402    proto$2.locale = locale;
79403    proto$2.localeData = localeData;
79404
79405    proto$2.toIsoString = deprecate(
79406        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
79407        toISOString$1
79408    );
79409    proto$2.lang = lang;
79410
79411    // FORMATTING
79412
79413    addFormatToken('X', 0, 0, 'unix');
79414    addFormatToken('x', 0, 0, 'valueOf');
79415
79416    // PARSING
79417
79418    addRegexToken('x', matchSigned);
79419    addRegexToken('X', matchTimestamp);
79420    addParseToken('X', function (input, array, config) {
79421        config._d = new Date(parseFloat(input) * 1000);
79422    });
79423    addParseToken('x', function (input, array, config) {
79424        config._d = new Date(toInt(input));
79425    });
79426
79427    //! moment.js
79428
79429    hooks.version = '2.30.1';
79430
79431    setHookCallback(createLocal);
79432
79433    hooks.fn = proto;
79434    hooks.min = min;
79435    hooks.max = max;
79436    hooks.now = now;
79437    hooks.utc = createUTC;
79438    hooks.unix = createUnix;
79439    hooks.months = listMonths;
79440    hooks.isDate = isDate;
79441    hooks.locale = getSetGlobalLocale;
79442    hooks.invalid = createInvalid;
79443    hooks.duration = createDuration;
79444    hooks.isMoment = isMoment;
79445    hooks.weekdays = listWeekdays;
79446    hooks.parseZone = createInZone;
79447    hooks.localeData = getLocale;
79448    hooks.isDuration = isDuration;
79449    hooks.monthsShort = listMonthsShort;
79450    hooks.weekdaysMin = listWeekdaysMin;
79451    hooks.defineLocale = defineLocale;
79452    hooks.updateLocale = updateLocale;
79453    hooks.locales = listLocales;
79454    hooks.weekdaysShort = listWeekdaysShort;
79455    hooks.normalizeUnits = normalizeUnits;
79456    hooks.relativeTimeRounding = getSetRelativeTimeRounding;
79457    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
79458    hooks.calendarFormat = getCalendarFormat;
79459    hooks.prototype = proto;
79460
79461    // currently HTML5 input type only supports 24-hour formats
79462    hooks.HTML5_FMT = {
79463        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
79464        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
79465        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
79466        DATE: 'YYYY-MM-DD', // <input type="date" />
79467        TIME: 'HH:mm', // <input type="time" />
79468        TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
79469        TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
79470        WEEK: 'GGGG-[W]WW', // <input type="week" />
79471        MONTH: 'YYYY-MM', // <input type="month" />
79472    };
79473
79474    return hooks;
79475
79476})));
79477
79478
79479/***/ }),
79480
vendor: 85,598 bytes, lines 79481-82763
79481/***/ "./node_modules/owl.carousel2/dist/owl.carousel.js":
79482/*!*********************************************************!*\
79483  !*** ./node_modules/owl.carousel2/dist/owl.carousel.js ***!
79484  \*********************************************************/
79485/***/ (() => {
79486
79487/**
79488 * Owl Carousel v2.2.1
79489 * Copyright 2013-2017 Saurabh Sharma
79490 * Licensed under  ()
79491 */
79492/**
79493 * Owl carousel
79494 * @version 2.1.6
79495 * @author Bartosz Wojciechowski
79496 * @author Saurabh Sharma
79497 * @license The MIT License (MIT)
79498 * @todo Lazy Load Icon
79499 * @todo prevent animationend bubling
79500 * @todo itemsScaleUp
79501 * @todo Test Zepto
79502 * @todo stagePadding calculate wrong active classes
79503 */
79504;(function($, window, document, undefined) {
79505
79506	/**
79507	 * Creates a carousel.
79508	 * @class The Owl Carousel.
79509	 * @public
79510	 * @param {HTMLElement|jQuery} element - The element to create the carousel for.
79511	 * @param {Object} [options] - The options
79512	 */
79513	function Owl(element, options) {
79514
79515		/**
79516		 * Current settings for the carousel.
79517		 * @public
79518		 */
79519		this.settings = null;
79520
79521		/**
79522		 * Current options set by the caller including defaults.
79523		 * @public
79524		 */
79525		this.options = $.extend({}, Owl.Defaults, options);
79526
79527		/**
79528		 * Plugin element.
79529		 * @public
79530		 */
79531		this.$element = $(element);
79532
79533		/**
79534		 * Proxied event handlers.
79535		 * @protected
79536		 */
79537		this._handlers = {};
79538
79539		/**
79540		 * References to the running plugins of this carousel.
79541		 * @protected
79542		 */
79543		this._plugins = {};
79544
79545		/**
79546		 * Currently suppressed events to prevent them from beeing retriggered.
79547		 * @protected
79548		 */
79549		this._supress = {};
79550
79551		/**
79552		 * Absolute current position.
79553		 * @protected
79554		 */
79555		this._current = null;
79556
79557		/**
79558		 * Animation speed in milliseconds.
79559		 * @protected
79560		 */
79561		this._speed = null;
79562
79563		/**
79564		 * Coordinates of all items in pixel.
79565		 * @todo The name of this member is missleading.
79566		 * @protected
79567		 */
79568		this._coordinates = [];
79569
79570		/**
79571		 * Current breakpoint.
79572		 * @todo Real media queries would be nice.
79573		 * @protected
79574		 */
79575		this._breakpoint = null;
79576
79577		/**
79578		 * Current width of the plugin element.
79579		 */
79580		this._width = null;
79581
79582		/**
79583		 * All real items.
79584		 * @protected
79585		 */
79586		this._items = [];
79587
79588		/**
79589		 * All cloned items.
79590		 * @protected
79591		 */
79592		this._clones = [];
79593
79594		/**
79595		 * Merge values of all items.
79596		 * @todo Maybe this could be part of a plugin.
79597		 * @protected
79598		 */
79599		this._mergers = [];
79600
79601		/**
79602		 * Widths of all items.
79603		 */
79604		this._widths = [];
79605
79606		/**
79607		 * Invalidated parts within the update process.
79608		 * @protected
79609		 */
79610		this._invalidated = {};
79611
79612		/**
79613		 * Ordered list of workers for the update process.
79614		 * @protected
79615		 */
79616		this._pipe = [];
79617
79618		/**
79619		 * Current state information for the drag operation.
79620		 * @todo #261
79621		 * @protected
79622		 */
79623		this._drag = {
79624			time: null,
79625			target: null,
79626			pointer: null,
79627			stage: {
79628				start: null,
79629				current: null
79630			},
79631			direction: null
79632		};
79633
79634		/**
79635		 * Current state information and their tags.
79636		 * @type {Object}
79637		 * @protected
79638		 */
79639		this._states = {
79640			current: {},
79641			tags: {
79642				'initializing': [ 'busy' ],
79643				'animating': [ 'busy' ],
79644				'dragging': [ 'interacting' ]
79645			}
79646		};
79647
79648		$.each([ 'onResize', 'onThrottledResize' ], $.proxy(function(i, handler) {
79649			this._handlers[handler] = $.proxy(this[handler], this);
79650		}, this));
79651
79652		$.each(Owl.Plugins, $.proxy(function(key, plugin) {
79653			this._plugins[key.charAt(0).toLowerCase() + key.slice(1)]
79654				= new plugin(this);
79655		}, this));
79656
79657		$.each(Owl.Workers, $.proxy(function(priority, worker) {
79658			this._pipe.push({
79659				'filter': worker.filter,
79660				'run': $.proxy(worker.run, this)
79661			});
79662		}, this));
79663
79664		this.setup();
79665		this.initialize();
79666	}
79667
79668	/**
79669	 * Default options for the carousel.
79670	 * @public
79671	 */
79672	Owl.Defaults = {
79673		items: 3,
79674		loop: false,
79675		center: false,
79676		rewind: false,
79677
79678		mouseDrag: true,
79679		touchDrag: true,
79680		pullDrag: true,
79681		freeDrag: false,
79682
79683		margin: 0,
79684		stagePadding: 0,
79685
79686		merge: false,
79687		mergeFit: true,
79688		autoWidth: false,
79689
79690		startPosition: 0,
79691		rtl: false,
79692
79693		smartSpeed: 250,
79694		fluidSpeed: false,
79695		dragEndSpeed: false,
79696
79697		responsive: {},
79698		responsiveRefreshRate: 200,
79699		responsiveBaseElement: window,
79700
79701		fallbackEasing: 'swing',
79702
79703		info: false,
79704
79705		nestedItemSelector: false,
79706		itemElement: 'div',
79707		stageElement: 'div',
79708
79709		refreshClass: 'owl-refresh',
79710		loadedClass: 'owl-loaded',
79711		loadingClass: 'owl-loading',
79712		rtlClass: 'owl-rtl',
79713		responsiveClass: 'owl-responsive',
79714		dragClass: 'owl-drag',
79715		itemClass: 'owl-item',
79716		stageClass: 'owl-stage',
79717		stageOuterClass: 'owl-stage-outer',
79718		grabClass: 'owl-grab'
79719	};
79720
79721	/**
79722	 * Enumeration for width.
79723	 * @public
79724	 * @readonly
79725	 * @enum {String}
79726	 */
79727	Owl.Width = {
79728		Default: 'default',
79729		Inner: 'inner',
79730		Outer: 'outer'
79731	};
79732
79733	/**
79734	 * Enumeration for types.
79735	 * @public
79736	 * @readonly
79737	 * @enum {String}
79738	 */
79739	Owl.Type = {
79740		Event: 'event',
79741		State: 'state'
79742	};
79743
79744	/**
79745	 * Contains all registered plugins.
79746	 * @public
79747	 */
79748	Owl.Plugins = {};
79749
79750	/**
79751	 * List of workers involved in the update process.
79752	 */
79753	Owl.Workers = [ {
79754		filter: [ 'width', 'settings' ],
79755		run: function() {
79756			this._width = this.$element.width();
79757		}
79758	}, {
79759		filter: [ 'width', 'items', 'settings' ],
79760		run: function(cache) {
79761			cache.current = this._items && this._items[this.relative(this._current)];
79762		}
79763	}, {
79764		filter: [ 'items', 'settings' ],
79765		run: function() {
79766			this.$stage.children('.cloned').remove();
79767		}
79768	}, {
79769		filter: [ 'width', 'items', 'settings' ],
79770		run: function(cache) {
79771			var margin = this.settings.margin || '',
79772				grid = !this.settings.autoWidth,
79773				rtl = this.settings.rtl,
79774				css = {
79775					'width': 'auto',
79776					'margin-left': rtl ? margin : '',
79777					'margin-right': rtl ? '' : margin
79778				};
79779
79780			!grid && this.$stage.children().css(css);
79781
79782			cache.css = css;
79783		}
79784	}, {
79785		filter: [ 'width', 'items', 'settings' ],
79786		run: function(cache) {
79787			var width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin,
79788				merge = null,
79789				iterator = this._items.length,
79790				grid = !this.settings.autoWidth,
79791				widths = [];
79792
79793			cache.items = {
79794				merge: false,
79795				width: width
79796			};
79797
79798			while (iterator--) {
79799				merge = this._mergers[iterator];
79800				merge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge;
79801
79802				cache.items.merge = merge > 1 || cache.items.merge;
79803
79804				widths[iterator] = !grid ? this._items[iterator].width() : width * merge;
79805			}
79806
79807			this._widths = widths;
79808		}
79809	}, {
79810		filter: [ 'items', 'settings' ],
79811		run: function() {
79812			var clones = [],
79813				items = this._items,
79814				settings = this.settings,
79815				// TODO: Should be computed from number of min width items in stage
79816				view = Math.max(settings.items * 2, 4),
79817				size = Math.ceil(items.length / 2) * 2,
79818				repeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0,
79819				append = '',
79820				prepend = '';
79821
79822			repeat /= 2;
79823
79824			while (repeat--) {
79825				// Switch to only using appended clones
79826				clones.push(this.normalize(clones.length / 2, true));
79827				$(items[clones[clones.length - 1]][0]).clone(true).addClass('cloned').appendTo(this.$stage);
79828				clones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true));
79829				$(items[clones[clones.length - 1]][0]).clone(true).addClass('cloned').prependTo(this.$stage);
79830			}
79831
79832			this._clones = clones;
79833
79834		}
79835	}, {
79836		filter: [ 'width', 'items', 'settings' ],
79837		run: function() {
79838			var rtl = this.settings.rtl ? 1 : -1,
79839				size = this._clones.length + this._items.length,
79840				iterator = -1,
79841				previous = 0,
79842				current = 0,
79843				coordinates = [];
79844
79845			while (++iterator < size) {
79846				previous = coordinates[iterator - 1] || 0;
79847				current = this._widths[this.relative(iterator)] + this.settings.margin;
79848				coordinates.push(previous + current * rtl);
79849			}
79850
79851			this._coordinates = coordinates;
79852		}
79853	}, {
79854		filter: [ 'width', 'items', 'settings' ],
79855		run: function() {
79856			var padding = this.settings.stagePadding,
79857				coordinates = this._coordinates,
79858				css = {
79859					'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2,
79860					'padding-left': padding || '',
79861					'padding-right': padding || ''
79862				};
79863
79864			this.$stage.css(css);
79865		}
79866	}, {
79867		filter: [ 'width', 'items', 'settings' ],
79868		run: function(cache) {
79869			var iterator = this._coordinates.length,
79870				grid = !this.settings.autoWidth,
79871				items = this.$stage.children();
79872
79873			if (grid && cache.items.merge) {
79874				while (iterator--) {
79875					cache.css.width = this._widths[this.relative(iterator)];
79876					items.eq(iterator).css(cache.css);
79877				}
79878			} else if (grid) {
79879				cache.css.width = cache.items.width;
79880				items.css(cache.css);
79881			}
79882		}
79883	}, {
79884		filter: [ 'items' ],
79885		run: function() {
79886			this._coordinates.length < 1 && this.$stage.removeAttr('style');
79887		}
79888	}, {
79889		filter: [ 'width', 'items', 'settings' ],
79890		run: function(cache) {
79891			cache.current = cache.current ? this.$stage.children().index(cache.current) : 0;
79892			cache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current));
79893			this.reset(cache.current);
79894		}
79895	}, {
79896		filter: [ 'position' ],
79897		run: function() {
79898			this.animate(this.coordinates(this._current));
79899		}
79900	}, {
79901		filter: [ 'width', 'position', 'items', 'settings' ],
79902		run: function() {
79903			var rtl = this.settings.rtl ? 1 : -1,
79904				padding = this.settings.stagePadding * 2,
79905				begin = this.coordinates(this.current()) + padding,
79906				end = begin + this.width() * rtl,
79907				inner, outer, matches = [], i, n;
79908
79909			for (i = 0, n = this._coordinates.length; i < n; i++) {
79910				inner = this._coordinates[i - 1] || 0;
79911				outer = Math.abs(this._coordinates[i]) + padding * rtl;
79912
79913				if ((this.op(inner, '<=', begin) && (this.op(inner, '>', end)))
79914					|| (this.op(outer, '<', begin) && this.op(outer, '>', end))) {
79915					matches.push(i);
79916				}
79917			}
79918
79919			this.$stage.children('.active').removeClass('active');
79920			this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active');
79921
79922			if (this.settings.center) {
79923				this.$stage.children('.center').removeClass('center');
79924				this.$stage.children().eq(this.current()).addClass('center');
79925			}
79926		}
79927	} ];
79928
79929	/**
79930	 * Initializes the carousel.
79931	 * @protected
79932	 */
79933	Owl.prototype.initialize = function() {
79934		this.enter('initializing');
79935		this.trigger('initialize');
79936
79937		this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl);
79938
79939		if (this.settings.autoWidth && !this.is('pre-loading')) {
79940			var imgs, nestedSelector, width;
79941			imgs = this.$element.find('img');
79942			nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined;
79943			width = this.$element.children(nestedSelector).width();
79944
79945			if (imgs.length && width <= 0) {
79946				this.preloadAutoWidthImages(imgs);
79947			}
79948		}
79949
79950		this.$element.addClass(this.options.loadingClass);
79951
79952		// create stage
79953		this.$stage = $('<' + this.settings.stageElement + ' class="' + this.settings.stageClass + '"/>')
79954			.wrap('<div class="' + this.settings.stageOuterClass + '"/>');
79955
79956		// append stage
79957		this.$element.append(this.$stage.parent());
79958
79959		// append content
79960		this.replace(this.$element.children().not(this.$stage.parent()));
79961
79962		// check visibility
79963		if (this.$element.is(':visible')) {
79964			// update view
79965			this.refresh();
79966		} else {
79967			// invalidate width
79968			this.invalidate('width');
79969		}
79970
79971		this.$element
79972			.removeClass(this.options.loadingClass)
79973			.addClass(this.options.loadedClass);
79974
79975		// register event handlers
79976		this.registerEventHandlers();
79977
79978		this.leave('initializing');
79979		this.trigger('initialized');
79980	};
79981
79982	/**
79983	 * Setups the current settings.
79984	 * @todo Remove responsive classes. Why should adaptive designs be brought into IE8?
79985	 * @todo Support for media queries by using `matchMedia` would be nice.
79986	 * @public
79987	 */
79988	Owl.prototype.setup = function() {
79989		var viewport = this.viewport(),
79990			overwrites = this.options.responsive,
79991			match = -1,
79992			settings = null;
79993
79994		if (!overwrites) {
79995			settings = $.extend({}, this.options);
79996		} else {
79997			$.each(overwrites, function(breakpoint) {
79998				if (breakpoint <= viewport && breakpoint > match) {
79999					match = Number(breakpoint);
80000				}
80001			});
80002
80003			settings = $.extend({}, this.options, overwrites[match]);
80004			if (typeof settings.stagePadding === 'function') {
80005				settings.stagePadding = settings.stagePadding();
80006			}
80007			delete settings.responsive;
80008
80009			// responsive class
80010			if (settings.responsiveClass) {
80011				this.$element.attr('class',
80012					this.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\S+\\s', 'g'), '$1' + match)
80013				);
80014			}
80015		}
80016
80017		this.trigger('change', { property: { name: 'settings', value: settings } });
80018		this._breakpoint = match;
80019		this.settings = settings;
80020		this.invalidate('settings');
80021		this.trigger('changed', { property: { name: 'settings', value: this.settings } });
80022	};
80023
80024	/**
80025	 * Updates option logic if necessery.
80026	 * @protected
80027	 */
80028	Owl.prototype.optionsLogic = function() {
80029		if (this.settings.autoWidth) {
80030			this.settings.stagePadding = false;
80031			this.settings.merge = false;
80032		}
80033	};
80034
80035	/**
80036	 * Prepares an item before add.
80037	 * @todo Rename event parameter `content` to `item`.
80038	 * @protected
80039	 * @returns {jQuery|HTMLElement} - The item container.
80040	 */
80041	Owl.prototype.prepare = function(item) {
80042		var event = this.trigger('prepare', { content: item });
80043
80044		if (!event.data) {
80045			event.data = $('<' + this.settings.itemElement + '/>')
80046				.addClass(this.options.itemClass).append(item)
80047		}
80048
80049		this.trigger('prepared', { content: event.data });
80050
80051		return event.data;
80052	};
80053
80054	/**
80055	 * Updates the view.
80056	 * @public
80057	 */
80058	Owl.prototype.update = function() {
80059		var i = 0,
80060			n = this._pipe.length,
80061			filter = $.proxy(function(p) { return this[p] }, this._invalidated),
80062			cache = {};
80063
80064		while (i < n) {
80065			if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) {
80066				this._pipe[i].run(cache);
80067			}
80068			i++;
80069		}
80070
80071		this._invalidated = {};
80072
80073		!this.is('valid') && this.enter('valid');
80074	};
80075
80076	/**
80077	 * Gets the width of the view.
80078	 * @public
80079	 * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return.
80080	 * @returns {Number} - The width of the view in pixel.
80081	 */
80082	Owl.prototype.width = function(dimension) {
80083		dimension = dimension || Owl.Width.Default;
80084		switch (dimension) {
80085			case Owl.Width.Inner:
80086			case Owl.Width.Outer:
80087				return this._width;
80088			default:
80089				return this._width - this.settings.stagePadding * 2 + this.settings.margin;
80090		}
80091	};
80092
80093	/**
80094	 * Refreshes the carousel primarily for adaptive purposes.
80095	 * @public
80096	 */
80097	Owl.prototype.refresh = function() {
80098		this.enter('refreshing');
80099		this.trigger('refresh');
80100
80101		this.setup();
80102
80103		this.optionsLogic();
80104
80105		this.$element.addClass(this.options.refreshClass);
80106
80107		this.update();
80108
80109		this.$element.removeClass(this.options.refreshClass);
80110
80111		this.leave('refreshing');
80112		this.trigger('refreshed');
80113	};
80114
80115	/**
80116	 * Checks window `resize` event.
80117	 * @protected
80118	 */
80119	Owl.prototype.onThrottledResize = function() {
80120		window.clearTimeout(this.resizeTimer);
80121		this.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate);
80122	};
80123
80124	/**
80125	 * Checks window `resize` event.
80126	 * @protected
80127	 */
80128	Owl.prototype.onResize = function() {
80129		if (!this._items.length) {
80130			return false;
80131		}
80132
80133		if (this._width === this.$element.width()) {
80134			return false;
80135		}
80136
80137		if (!this.$element.is(':visible')) {
80138			return false;
80139		}
80140
80141		this.enter('resizing');
80142
80143		if (this.trigger('resize').isDefaultPrevented()) {
80144			this.leave('resizing');
80145			return false;
80146		}
80147
80148		this.invalidate('width');
80149
80150		this.refresh();
80151
80152		this.leave('resizing');
80153		this.trigger('resized');
80154	};
80155
80156	/**
80157	 * Registers event handlers.
80158	 * @todo Check `msPointerEnabled`
80159	 * @todo #261
80160	 * @protected
80161	 */
80162	Owl.prototype.registerEventHandlers = function() {
80163		if ($.support.transition) {
80164			this.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this));
80165		}
80166
80167		if (this.settings.responsive !== false) {
80168			this.on(window, 'resize', this._handlers.onThrottledResize);
80169		}
80170
80171		if (this.settings.mouseDrag) {
80172			this.$element.addClass(this.options.dragClass);
80173			this.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this));
80174			this.$stage.on('dragstart.owl.core selectstart.owl.core', function() { return false });
80175		}
80176
80177		if (this.settings.touchDrag){
80178			this.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this));
80179			this.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this));
80180		}
80181	};
80182
80183	/**
80184	 * Handles `touchstart` and `mousedown` events.
80185	 * @todo Horizontal swipe threshold as option
80186	 * @todo #261
80187	 * @protected
80188	 * @param {Event} event - The event arguments.
80189	 */
80190	Owl.prototype.onDragStart = function(event) {
80191		var stage = null;
80192
80193		if (event.which === 3) {
80194			return;
80195		}
80196
80197		if ($.support.transform) {
80198			stage = this.$stage.css('transform').replace(/.*\(|\)| /g, '').split(',');
80199			stage = {
80200				x: stage[stage.length === 16 ? 12 : 4],
80201				y: stage[stage.length === 16 ? 13 : 5]
80202			};
80203		} else {
80204			stage = this.$stage.position();
80205			stage = {
80206				x: this.settings.rtl ?
80207					stage.left + this.$stage.width() - this.width() + this.settings.margin :
80208					stage.left,
80209				y: stage.top
80210			};
80211		}
80212
80213		if (this.is('animating')) {
80214			$.support.transform ? this.animate(stage.x) : this.$stage.stop()
80215			this.invalidate('position');
80216		}
80217
80218		this.$element.toggleClass(this.options.grabClass, event.type === 'mousedown');
80219
80220		this.speed(0);
80221
80222		this._drag.time = new Date().getTime();
80223		this._drag.target = $(event.target);
80224		this._drag.stage.start = stage;
80225		this._drag.stage.current = stage;
80226		this._drag.pointer = this.pointer(event);
80227
80228		$(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this));
80229
80230		$(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function(event) {
80231			var delta = this.difference(this._drag.pointer, this.pointer(event));
80232
80233			$(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this));
80234
80235			if (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) {
80236				return;
80237			}
80238
80239			event.preventDefault();
80240
80241			this.enter('dragging');
80242			this.trigger('drag');
80243		}, this));
80244	};
80245
80246	/**
80247	 * Handles the `touchmove` and `mousemove` events.
80248	 * @todo #261
80249	 * @protected
80250	 * @param {Event} event - The event arguments.
80251	 */
80252	Owl.prototype.onDragMove = function(event) {
80253		var minimum = null,
80254			maximum = null,
80255			pull = null,
80256			delta = this.difference(this._drag.pointer, this.pointer(event)),
80257			stage = this.difference(this._drag.stage.start, delta);
80258
80259		if (!this.is('dragging')) {
80260			return;
80261		}
80262
80263		event.preventDefault();
80264
80265		if (this.settings.loop) {
80266			minimum = this.coordinates(this.minimum());
80267			maximum = this.coordinates(this.maximum() + 1) - minimum;
80268			stage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum;
80269		} else {
80270			minimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());
80271			maximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());
80272			pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0;
80273			stage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull);
80274		}
80275
80276		this._drag.stage.current = stage;
80277
80278		this.animate(stage.x);
80279	};
80280
80281	/**
80282	 * Handles the `touchend` and `mouseup` events.
80283	 * @todo #261
80284	 * @todo Threshold for click event
80285	 * @protected
80286	 * @param {Event} event - The event arguments.
80287	 */
80288	Owl.prototype.onDragEnd = function(event) {
80289		var delta = this.difference(this._drag.pointer, this.pointer(event)),
80290			stage = this._drag.stage.current,
80291			direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right';
80292
80293		$(document).off('.owl.core');
80294
80295		this.$element.removeClass(this.options.grabClass);
80296
80297		if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) {
80298			this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);
80299			this.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction));
80300			this.invalidate('position');
80301			this.update();
80302
80303			this._drag.direction = direction;
80304
80305			if (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) {
80306				this._drag.target.one('click.owl.core', function() { return false; });
80307			}
80308		}
80309
80310		if (!this.is('dragging')) {
80311			return;
80312		}
80313
80314		this.leave('dragging');
80315		this.trigger('dragged');
80316	};
80317
80318	/**
80319	 * Gets absolute position of the closest item for a coordinate.
80320	 * @todo Setting `freeDrag` makes `closest` not reusable. See #165.
80321	 * @protected
80322	 * @param {Number} coordinate - The coordinate in pixel.
80323	 * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`.
80324	 * @return {Number} - The absolute position of the closest item.
80325	 */
80326	Owl.prototype.closest = function(coordinate, direction) {
80327		var position = -1,
80328			pull = 30,
80329			width = this.width(),
80330			coordinates = this.coordinates();
80331
80332		if (!this.settings.freeDrag) {
80333			// check closest item
80334			$.each(coordinates, $.proxy(function(index, value) {
80335				// on a left pull, check on current index
80336				if (direction === 'left' && coordinate > value - pull && coordinate < value + pull) {
80337					position = index;
80338				// on a right pull, check on previous index
80339				// to do so, subtract width from value and set position = index + 1
80340				} else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) {
80341					position = index + 1;
80342				} else if (this.op(coordinate, '<', value)
80343					&& this.op(coordinate, '>', coordinates[index + 1] || value - width)) {
80344					position = direction === 'left' ? index + 1 : index;
80345				}
80346				return position === -1;
80347			}, this));
80348		}
80349
80350		if (!this.settings.loop) {
80351			// non loop boundries
80352			if (this.op(coordinate, '>', coordinates[this.minimum()])) {
80353				position = coordinate = this.minimum();
80354			} else if (this.op(coordinate, '<', coordinates[this.maximum()])) {
80355				position = coordinate = this.maximum();
80356			}
80357		}
80358
80359		return position;
80360	};
80361
80362	/**
80363	 * Animates the stage.
80364	 * @todo #270
80365	 * @public
80366	 * @param {Number} coordinate - The coordinate in pixels.
80367	 */
80368	Owl.prototype.animate = function(coordinate) {
80369		var animate = this.speed() > 0;
80370
80371		this.is('animating') && this.onTransitionEnd();
80372
80373		if (animate) {
80374			this.enter('animating');
80375			this.trigger('translate');
80376		}
80377
80378		if ($.support.transform3d && $.support.transition) {
80379			this.$stage.css({
80380				transform: 'translate3d(' + coordinate + 'px,0px,0px)',
80381				transition: (this.speed() / 1000) + 's'
80382			});
80383		} else if (animate) {
80384			this.$stage.animate({
80385				left: coordinate + 'px'
80386			}, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this));
80387		} else {
80388			this.$stage.css({
80389				left: coordinate + 'px'
80390			});
80391		}
80392	};
80393
80394	/**
80395	 * Checks whether the carousel is in a specific state or not.
80396	 * @param {String} state - The state to check.
80397	 * @returns {Boolean} - The flag which indicates if the carousel is busy.
80398	 */
80399	Owl.prototype.is = function(state) {
80400		return this._states.current[state] && this._states.current[state] > 0;
80401	};
80402
80403	/**
80404	 * Sets the absolute position of the current item.
80405	 * @public
80406	 * @param {Number} [position] - The new absolute position or nothing to leave it unchanged.
80407	 * @returns {Number} - The absolute position of the current item.
80408	 */
80409	Owl.prototype.current = function(position) {
80410		if (position === undefined) {
80411			return this._current;
80412		}
80413
80414		if (this._items.length === 0) {
80415			return undefined;
80416		}
80417
80418		position = this.normalize(position);
80419
80420		if (this._current !== position) {
80421			var event = this.trigger('change', { property: { name: 'position', value: position } });
80422
80423			if (event.data !== undefined) {
80424				position = this.normalize(event.data);
80425			}
80426
80427			this._current = position;
80428
80429			this.invalidate('position');
80430
80431			this.trigger('changed', { property: { name: 'position', value: this._current } });
80432		}
80433
80434		return this._current;
80435	};
80436
80437	/**
80438	 * Invalidates the given part of the update routine.
80439	 * @param {String} [part] - The part to invalidate.
80440	 * @returns {Array.<String>} - The invalidated parts.
80441	 */
80442	Owl.prototype.invalidate = function(part) {
80443		if ($.type(part) === 'string') {
80444			this._invalidated[part] = true;
80445			this.is('valid') && this.leave('valid');
80446		}
80447		return $.map(this._invalidated, function(v, i) { return i });
80448	};
80449
80450	/**
80451	 * Resets the absolute position of the current item.
80452	 * @public
80453	 * @param {Number} position - The absolute position of the new item.
80454	 */
80455	Owl.prototype.reset = function(position) {
80456		position = this.normalize(position);
80457
80458		if (position === undefined) {
80459			return;
80460		}
80461
80462		this._speed = 0;
80463		this._current = position;
80464
80465		this.suppress([ 'translate', 'translated' ]);
80466
80467		this.animate(this.coordinates(position));
80468
80469		this.release([ 'translate', 'translated' ]);
80470	};
80471
80472	/**
80473	 * Normalizes an absolute or a relative position of an item.
80474	 * @public
80475	 * @param {Number} position - The absolute or relative position to normalize.
80476	 * @param {Boolean} [relative=false] - Whether the given position is relative or not.
80477	 * @returns {Number} - The normalized position.
80478	 */
80479	Owl.prototype.normalize = function(position, relative) {
80480		var n = this._items.length,
80481			m = relative ? 0 : this._clones.length;
80482
80483		if (!this.isNumeric(position) || n < 1) {
80484			position = undefined;
80485		} else if (position < 0 || position >= n + m) {
80486			position = ((position - m / 2) % n + n) % n + m / 2;
80487		}
80488
80489		return position;
80490	};
80491
80492	/**
80493	 * Converts an absolute position of an item into a relative one.
80494	 * @public
80495	 * @param {Number} position - The absolute position to convert.
80496	 * @returns {Number} - The converted position.
80497	 */
80498	Owl.prototype.relative = function(position) {
80499		position -= this._clones.length / 2;
80500		return this.normalize(position, true);
80501	};
80502
80503	/**
80504	 * Gets the maximum position for the current item.
80505	 * @public
80506	 * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.
80507	 * @returns {Number}
80508	 */
80509	Owl.prototype.maximum = function(relative) {
80510		var settings = this.settings,
80511			maximum = this._coordinates.length,
80512			iterator,
80513			reciprocalItemsWidth,
80514			elementWidth;
80515
80516		if (settings.loop) {
80517			maximum = this._clones.length / 2 + this._items.length - 1;
80518		} else if (settings.autoWidth || settings.merge) {
80519			iterator = this._items.length;
80520			reciprocalItemsWidth = this._items[--iterator].width();
80521			elementWidth = this.$element.width();
80522			while (iterator--) {
80523				reciprocalItemsWidth += this._items[iterator].width() + this.settings.margin;
80524				if (reciprocalItemsWidth > elementWidth) {
80525					break;
80526				}
80527			}
80528			maximum = iterator + 1;
80529		} else if (settings.center) {
80530			maximum = this._items.length - 1;
80531		} else {
80532			maximum = this._items.length - settings.items;
80533		}
80534
80535		if (relative) {
80536			maximum -= this._clones.length / 2;
80537		}
80538
80539		return Math.max(maximum, 0);
80540	};
80541
80542	/**
80543	 * Gets the minimum position for the current item.
80544	 * @public
80545	 * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.
80546	 * @returns {Number}
80547	 */
80548	Owl.prototype.minimum = function(relative) {
80549		return relative ? 0 : this._clones.length / 2;
80550	};
80551
80552	/**
80553	 * Gets an item at the specified relative position.
80554	 * @public
80555	 * @param {Number} [position] - The relative position of the item.
80556	 * @return {jQuery|Array.<jQuery>} - The item at the given position or all items if no position was given.
80557	 */
80558	Owl.prototype.items = function(position) {
80559		if (position === undefined) {
80560			return this._items.slice();
80561		}
80562
80563		position = this.normalize(position, true);
80564		return this._items[position];
80565	};
80566
80567	/**
80568	 * Gets an item at the specified relative position.
80569	 * @public
80570	 * @param {Number} [position] - The relative position of the item.
80571	 * @return {jQuery|Array.<jQuery>} - The item at the given position or all items if no position was given.
80572	 */
80573	Owl.prototype.mergers = function(position) {
80574		if (position === undefined) {
80575			return this._mergers.slice();
80576		}
80577
80578		position = this.normalize(position, true);
80579		return this._mergers[position];
80580	};
80581
80582	/**
80583	 * Gets the absolute positions of clones for an item.
80584	 * @public
80585	 * @param {Number} [position] - The relative position of the item.
80586	 * @returns {Array.<Number>} - The absolute positions of clones for the item or all if no position was given.
80587	 */
80588	Owl.prototype.clones = function(position) {
80589		var odd = this._clones.length / 2,
80590			even = odd + this._items.length,
80591			map = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 };
80592
80593		if (position === undefined) {
80594			return $.map(this._clones, function(v, i) { return map(i) });
80595		}
80596
80597		return $.map(this._clones, function(v, i) { return v === position ? map(i) : null });
80598	};
80599
80600	/**
80601	 * Sets the current animation speed.
80602	 * @public
80603	 * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged.
80604	 * @returns {Number} - The current animation speed in milliseconds.
80605	 */
80606	Owl.prototype.speed = function(speed) {
80607		if (speed !== undefined) {
80608			this._speed = speed;
80609		}
80610
80611		return this._speed;
80612	};
80613
80614	/**
80615	 * Gets the coordinate of an item.
80616	 * @todo The name of this method is missleanding.
80617	 * @public
80618	 * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`.
80619	 * @returns {Number|Array.<Number>} - The coordinate of the item in pixel or all coordinates.
80620	 */
80621	Owl.prototype.coordinates = function(position) {
80622		var multiplier = 1,
80623			newPosition = position - 1,
80624			coordinate;
80625
80626		if (position === undefined) {
80627			return $.map(this._coordinates, $.proxy(function(coordinate, index) {
80628				return this.coordinates(index);
80629			}, this));
80630		}
80631
80632		if (this.settings.center) {
80633			if (this.settings.rtl) {
80634				multiplier = -1;
80635				newPosition = position + 1;
80636			}
80637
80638			coordinate = this._coordinates[position];
80639			coordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier;
80640		} else {
80641			coordinate = this._coordinates[newPosition] || 0;
80642		}
80643
80644		coordinate = Math.ceil(coordinate);
80645
80646		return coordinate;
80647	};
80648
80649	/**
80650	 * Calculates the speed for a translation.
80651	 * @protected
80652	 * @param {Number} from - The absolute position of the start item.
80653	 * @param {Number} to - The absolute position of the target item.
80654	 * @param {Number} [factor=undefined] - The time factor in milliseconds.
80655	 * @returns {Number} - The time in milliseconds for the translation.
80656	 */
80657	Owl.prototype.duration = function(from, to, factor) {
80658		if (factor === 0) {
80659			return 0;
80660		}
80661
80662		return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed));
80663	};
80664
80665	/**
80666	 * Slides to the specified item.
80667	 * @public
80668	 * @param {Number} position - The position of the item.
80669	 * @param {Number} [speed] - The time in milliseconds for the transition.
80670	 */
80671	Owl.prototype.to = function(position, speed) {
80672		var current = this.current(),
80673			revert = null,
80674			distance = position - this.relative(current),
80675			direction = (distance > 0) - (distance < 0),
80676			items = this._items.length,
80677			minimum = this.minimum(),
80678			maximum = this.maximum();
80679
80680		if (this.settings.loop) {
80681			if (!this.settings.rewind && Math.abs(distance) > items / 2) {
80682				distance += direction * -1 * items;
80683			}
80684
80685			position = current + distance;
80686			revert = ((position - minimum) % items + items) % items + minimum;
80687
80688			if (revert !== position && revert - distance <= maximum && revert - distance > 0) {
80689				current = revert - distance;
80690				position = revert;
80691				this.reset(current);
80692			}
80693		} else if (this.settings.rewind) {
80694			maximum += 1;
80695			position = (position % maximum + maximum) % maximum;
80696		} else {
80697			position = Math.max(minimum, Math.min(maximum, position));
80698		}
80699
80700		this.speed(this.duration(current, position, speed));
80701		this.current(position);
80702
80703		if (this.$element.is(':visible')) {
80704			this.update();
80705		}
80706	};
80707
80708	/**
80709	 * Slides to the next item.
80710	 * @public
80711	 * @param {Number} [speed] - The time in milliseconds for the transition.
80712	 */
80713	Owl.prototype.next = function(speed) {
80714		speed = speed || false;
80715		this.to(this.relative(this.current()) + 1, speed);
80716	};
80717
80718	/**
80719	 * Slides to the previous item.
80720	 * @public
80721	 * @param {Number} [speed] - The time in milliseconds for the transition.
80722	 */
80723	Owl.prototype.prev = function(speed) {
80724		speed = speed || false;
80725		this.to(this.relative(this.current()) - 1, speed);
80726	};
80727
80728	/**
80729	 * Handles the end of an animation.
80730	 * @protected
80731	 * @param {Event} event - The event arguments.
80732	 */
80733	Owl.prototype.onTransitionEnd = function(event) {
80734
80735		// if css2 animation then event object is undefined
80736		if (event !== undefined) {
80737			event.stopPropagation();
80738
80739			// Catch only owl-stage transitionEnd event
80740			if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) {
80741				return false;
80742			}
80743		}
80744
80745		this.leave('animating');
80746		this.trigger('translated');
80747	};
80748
80749	/**
80750	 * Gets viewport width.
80751	 * @protected
80752	 * @return {Number} - The width in pixel.
80753	 */
80754	Owl.prototype.viewport = function() {
80755		var width;
80756		if (this.options.responsiveBaseElement !== window) {
80757			width = $(this.options.responsiveBaseElement).width();
80758		} else if (window.innerWidth) {
80759			width = window.innerWidth;
80760		} else if (document.documentElement && document.documentElement.clientWidth) {
80761			width = document.documentElement.clientWidth;
80762		} else {
80763			console.warn('Can not detect viewport width.');
80764		}
80765		return width;
80766	};
80767
80768	/**
80769	 * Replaces the current content.
80770	 * @public
80771	 * @param {HTMLElement|jQuery|String} content - The new content.
80772	 */
80773	Owl.prototype.replace = function(content) {
80774		this.$stage.empty();
80775		this._items = [];
80776
80777		if (content) {
80778			content = (content instanceof jQuery) ? content : $(content);
80779		}
80780
80781		if (this.settings.nestedItemSelector) {
80782			content = content.find('.' + this.settings.nestedItemSelector);
80783		}
80784
80785		content.filter(function() {
80786			return this.nodeType === 1;
80787		}).each($.proxy(function(index, item) {
80788			item = this.prepare(item);
80789			this.$stage.append(item);
80790			this._items.push(item);
80791			this._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);
80792		}, this));
80793
80794		this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0);
80795
80796		this.invalidate('items');
80797	};
80798
80799	/**
80800	 * Adds an item.
80801	 * @todo Use `item` instead of `content` for the event arguments.
80802	 * @public
80803	 * @param {HTMLElement|jQuery|String} content - The item content to add.
80804	 * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end.
80805	 */
80806	Owl.prototype.add = function(content, position) {
80807		var current = this.relative(this._current);
80808
80809		position = position === undefined ? this._items.length : this.normalize(position, true);
80810		content = content instanceof jQuery ? content : $(content);
80811
80812		this.trigger('add', { content: content, position: position });
80813
80814		content = this.prepare(content);
80815
80816		if (this._items.length === 0 || position === this._items.length) {
80817			this._items.length === 0 && this.$stage.append(content);
80818			this._items.length !== 0 && this._items[position - 1].after(content);
80819			this._items.push(content);
80820			this._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);
80821		} else {
80822			this._items[position].before(content);
80823			this._items.splice(position, 0, content);
80824			this._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);
80825		}
80826
80827		this._items[current] && this.reset(this._items[current].index());
80828
80829		this.invalidate('items');
80830
80831		this.trigger('added', { content: content, position: position });
80832	};
80833
80834	/**
80835	 * Removes an item by its position.
80836	 * @todo Use `item` instead of `content` for the event arguments.
80837	 * @public
80838	 * @param {Number} position - The relative position of the item to remove.
80839	 */
80840	Owl.prototype.remove = function(position) {
80841		position = this.normalize(position, true);
80842
80843		if (position === undefined) {
80844			return;
80845		}
80846
80847		this.trigger('remove', { content: this._items[position], position: position });
80848
80849		this._items[position].remove();
80850		this._items.splice(position, 1);
80851		this._mergers.splice(position, 1);
80852
80853		this.invalidate('items');
80854
80855		this.trigger('removed', { content: null, position: position });
80856	};
80857
80858	/**
80859	 * Preloads images with auto width.
80860	 * @todo Replace by a more generic approach
80861	 * @protected
80862	 */
80863	Owl.prototype.preloadAutoWidthImages = function(images) {
80864		images.each($.proxy(function(i, element) {
80865			this.enter('pre-loading');
80866			element = $(element);
80867			$(new Image()).one('load', $.proxy(function(e) {
80868				element.attr('src', e.target.src);
80869				element.css('opacity', 1);
80870				this.leave('pre-loading');
80871				!this.is('pre-loading') && !this.is('initializing') && this.refresh();
80872			}, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina'));
80873		}, this));
80874	};
80875
80876	/**
80877	 * Destroys the carousel.
80878	 * @public
80879	 */
80880	Owl.prototype.destroy = function() {
80881
80882		this.$element.off('.owl.core');
80883		this.$stage.off('.owl.core');
80884		$(document).off('.owl.core');
80885
80886		if (this.settings.responsive !== false) {
80887			window.clearTimeout(this.resizeTimer);
80888			this.off(window, 'resize', this._handlers.onThrottledResize);
80889		}
80890
80891		for (var i in this._plugins) {
80892			this._plugins[i].destroy();
80893		}
80894
80895		this.$stage.children('.cloned').remove();
80896
80897		this.$stage.unwrap();
80898		this.$stage.children().contents().unwrap();
80899		this.$stage.children().unwrap();
80900
80901		this.$element
80902			.removeClass(this.options.refreshClass)
80903			.removeClass(this.options.loadingClass)
80904			.removeClass(this.options.loadedClass)
80905			.removeClass(this.options.rtlClass)
80906			.removeClass(this.options.dragClass)
80907			.removeClass(this.options.grabClass)
80908			.attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\S+\\s', 'g'), ''))
80909			.removeData('owl.carousel');
80910	};
80911
80912	/**
80913	 * Operators to calculate right-to-left and left-to-right.
80914	 * @protected
80915	 * @param {Number} [a] - The left side operand.
80916	 * @param {String} [o] - The operator.
80917	 * @param {Number} [b] - The right side operand.
80918	 */
80919	Owl.prototype.op = function(a, o, b) {
80920		var rtl = this.settings.rtl;
80921		switch (o) {
80922			case '<':
80923				return rtl ? a > b : a < b;
80924			case '>':
80925				return rtl ? a < b : a > b;
80926			case '>=':
80927				return rtl ? a <= b : a >= b;
80928			case '<=':
80929				return rtl ? a >= b : a <= b;
80930			default:
80931				break;
80932		}
80933	};
80934
80935	/**
80936	 * Attaches to an internal event.
80937	 * @protected
80938	 * @param {HTMLElement} element - The event source.
80939	 * @param {String} event - The event name.
80940	 * @param {Function} listener - The event handler to attach.
80941	 * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not.
80942	 */
80943	Owl.prototype.on = function(element, event, listener, capture) {
80944		if (element.addEventListener) {
80945			element.addEventListener(event, listener, capture);
80946		} else if (element.attachEvent) {
80947			element.attachEvent('on' + event, listener);
80948		}
80949	};
80950
80951	/**
80952	 * Detaches from an internal event.
80953	 * @protected
80954	 * @param {HTMLElement} element - The event source.
80955	 * @param {String} event - The event name.
80956	 * @param {Function} listener - The attached event handler to detach.
80957	 * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not.
80958	 */
80959	Owl.prototype.off = function(element, event, listener, capture) {
80960		if (element.removeEventListener) {
80961			element.removeEventListener(event, listener, capture);
80962		} else if (element.detachEvent) {
80963			element.detachEvent('on' + event, listener);
80964		}
80965	};
80966
80967	/**
80968	 * Triggers a public event.
80969	 * @todo Remove `status`, `relatedTarget` should be used instead.
80970	 * @protected
80971	 * @param {String} name - The event name.
80972	 * @param {*} [data=null] - The event data.
80973	 * @param {String} [namespace=carousel] - The event namespace.
80974	 * @param {String} [state] - The state which is associated with the event.
80975	 * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not.
80976	 * @returns {Event} - The event arguments.
80977	 */
80978	Owl.prototype.trigger = function(name, data, namespace, state, enter) {
80979		var status = {
80980			item: { count: this._items.length, index: this.current() }
80981		}, handler = $.camelCase(
80982			$.grep([ 'on', name, namespace ], function(v) { return v })
80983				.join('-').toLowerCase()
80984		), event = $.Event(
80985			[ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(),
80986			$.extend({ relatedTarget: this }, status, data)
80987		);
80988
80989		if (!this._supress[name]) {
80990			$.each(this._plugins, function(name, plugin) {
80991				if (plugin.onTrigger) {
80992					plugin.onTrigger(event);
80993				}
80994			});
80995
80996			this.register({ type: Owl.Type.Event, name: name });
80997			this.$element.trigger(event);
80998
80999			if (this.settings && typeof this.settings[handler] === 'function') {
81000				this.settings[handler].call(this, event);
81001			}
81002		}
81003
81004		return event;
81005	};
81006
81007	/**
81008	 * Enters a state.
81009	 * @param name - The state name.
81010	 */
81011	Owl.prototype.enter = function(name) {
81012		$.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) {
81013			if (this._states.current[name] === undefined) {
81014				this._states.current[name] = 0;
81015			}
81016
81017			this._states.current[name]++;
81018		}, this));
81019	};
81020
81021	/**
81022	 * Leaves a state.
81023	 * @param name - The state name.
81024	 */
81025	Owl.prototype.leave = function(name) {
81026		$.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) {
81027			this._states.current[name]--;
81028		}, this));
81029	};
81030
81031	/**
81032	 * Registers an event or state.
81033	 * @public
81034	 * @param {Object} object - The event or state to register.
81035	 */
81036	Owl.prototype.register = function(object) {
81037		if (object.type === Owl.Type.Event) {
81038			if (!$.event.special[object.name]) {
81039				$.event.special[object.name] = {};
81040			}
81041
81042			if (!$.event.special[object.name].owl) {
81043				var _default = $.event.special[object.name]._default;
81044				$.event.special[object.name]._default = function(e) {
81045					if (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) {
81046						return _default.apply(this, arguments);
81047					}
81048					return e.namespace && e.namespace.indexOf('owl') > -1;
81049				};
81050				$.event.special[object.name].owl = true;
81051			}
81052		} else if (object.type === Owl.Type.State) {
81053			if (!this._states.tags[object.name]) {
81054				this._states.tags[object.name] = object.tags;
81055			} else {
81056				this._states.tags[object.name] = this._states.tags[object.name].concat(object.tags);
81057			}
81058
81059			this._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function(tag, i) {
81060				return $.inArray(tag, this._states.tags[object.name]) === i;
81061			}, this));
81062		}
81063	};
81064
81065	/**
81066	 * Suppresses events.
81067	 * @protected
81068	 * @param {Array.<String>} events - The events to suppress.
81069	 */
81070	Owl.prototype.suppress = function(events) {
81071		$.each(events, $.proxy(function(index, event) {
81072			this._supress[event] = true;
81073		}, this));
81074	};
81075
81076	/**
81077	 * Releases suppressed events.
81078	 * @protected
81079	 * @param {Array.<String>} events - The events to release.
81080	 */
81081	Owl.prototype.release = function(events) {
81082		$.each(events, $.proxy(function(index, event) {
81083			delete this._supress[event];
81084		}, this));
81085	};
81086
81087	/**
81088	 * Gets unified pointer coordinates from event.
81089	 * @todo #261
81090	 * @protected
81091	 * @param {Event} - The `mousedown` or `touchstart` event.
81092	 * @returns {Object} - Contains `x` and `y` coordinates of current pointer position.
81093	 */
81094	Owl.prototype.pointer = function(event) {
81095		var result = { x: null, y: null };
81096
81097		event = event.originalEvent || event || window.event;
81098
81099		event = event.touches && event.touches.length ?
81100			event.touches[0] : event.changedTouches && event.changedTouches.length ?
81101				event.changedTouches[0] : event;
81102
81103		if (event.pageX) {
81104			result.x = event.pageX;
81105			result.y = event.pageY;
81106		} else {
81107			result.x = event.clientX;
81108			result.y = event.clientY;
81109		}
81110
81111		return result;
81112	};
81113
81114	/**
81115	 * Determines if the input is a Number or something that can be coerced to a Number
81116	 * @protected
81117	 * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested
81118	 * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number
81119	 */
81120	Owl.prototype.isNumeric = function(number) {
81121		return !isNaN(parseFloat(number));
81122	};
81123
81124	/**
81125	 * Gets the difference of two vectors.
81126	 * @todo #261
81127	 * @protected
81128	 * @param {Object} - The first vector.
81129	 * @param {Object} - The second vector.
81130	 * @returns {Object} - The difference.
81131	 */
81132	Owl.prototype.difference = function(first, second) {
81133		return {
81134			x: first.x - second.x,
81135			y: first.y - second.y
81136		};
81137	};
81138
81139	/**
81140	 * The jQuery Plugin for the Owl Carousel
81141	 * @todo Navigation plugin `next` and `prev`
81142	 * @public
81143	 */
81144	$.fn.owlCarousel = function(option) {
81145		var args = Array.prototype.slice.call(arguments, 1);
81146
81147		return this.each(function() {
81148			var $this = $(this),
81149				data = $this.data('owl.carousel');
81150
81151			if (!data) {
81152				data = new Owl(this, typeof option == 'object' && option);
81153				$this.data('owl.carousel', data);
81154
81155				$.each([
81156					'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove'
81157				], function(i, event) {
81158					data.register({ type: Owl.Type.Event, name: event });
81159					data.$element.on(event + '.owl.carousel.core', $.proxy(function(e) {
81160						if (e.namespace && e.relatedTarget !== this) {
81161							this.suppress([ event ]);
81162							data[event].apply(this, [].slice.call(arguments, 1));
81163							this.release([ event ]);
81164						}
81165					}, data));
81166				});
81167			}
81168
81169			if (typeof option == 'string' && option.charAt(0) !== '_') {
81170				data[option].apply(data, args);
81171			}
81172		});
81173	};
81174
81175	/**
81176	 * The constructor for the jQuery Plugin
81177	 * @public
81178	 */
81179	$.fn.owlCarousel.Constructor = Owl;
81180
81181})(window.Zepto || window.jQuery, window, document);
81182
81183/**
81184 * AutoRefresh Plugin
81185 * @version 2.1.0
81186 * @author Artus Kolanowski
81187 * @author Saurabh Sharma
81188 * @license The MIT License (MIT)
81189 */
81190;(function($, window, document, undefined) {
81191
81192	/**
81193	 * Creates the auto refresh plugin.
81194	 * @class The Auto Refresh Plugin
81195	 * @param {Owl} carousel - The Owl Carousel
81196	 */
81197	var AutoRefresh = function(carousel) {
81198		/**
81199		 * Reference to the core.
81200		 * @protected
81201		 * @type {Owl}
81202		 */
81203		this._core = carousel;
81204
81205		/**
81206		 * Refresh interval.
81207		 * @protected
81208		 * @type {number}
81209		 */
81210		this._interval = null;
81211
81212		/**
81213		 * Whether the element is currently visible or not.
81214		 * @protected
81215		 * @type {Boolean}
81216		 */
81217		this._visible = null;
81218
81219		/**
81220		 * All event handlers.
81221		 * @protected
81222		 * @type {Object}
81223		 */
81224		this._handlers = {
81225			'initialized.owl.carousel': $.proxy(function(e) {
81226				if (e.namespace && this._core.settings.autoRefresh) {
81227					this.watch();
81228				}
81229			}, this)
81230		};
81231
81232		// set default options
81233		this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options);
81234
81235		// register event handlers
81236		this._core.$element.on(this._handlers);
81237	};
81238
81239	/**
81240	 * Default options.
81241	 * @public
81242	 */
81243	AutoRefresh.Defaults = {
81244		autoRefresh: true,
81245		autoRefreshInterval: 500
81246	};
81247
81248	/**
81249	 * Watches the element.
81250	 */
81251	AutoRefresh.prototype.watch = function() {
81252		if (this._interval) {
81253			return;
81254		}
81255
81256		this._visible = this._core.$element.is(':visible');
81257		this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval);
81258	};
81259
81260	/**
81261	 * Refreshes the element.
81262	 */
81263	AutoRefresh.prototype.refresh = function() {
81264		if (this._core.$element.is(':visible') === this._visible) {
81265			return;
81266		}
81267
81268		this._visible = !this._visible;
81269
81270		this._core.$element.toggleClass('owl-hidden', !this._visible);
81271
81272		this._visible && (this._core.invalidate('width') && this._core.refresh());
81273	};
81274
81275	/**
81276	 * Destroys the plugin.
81277	 */
81278	AutoRefresh.prototype.destroy = function() {
81279		var handler, property;
81280
81281		window.clearInterval(this._interval);
81282
81283		for (handler in this._handlers) {
81284			this._core.$element.off(handler, this._handlers[handler]);
81285		}
81286		for (property in Object.getOwnPropertyNames(this)) {
81287			typeof this[property] != 'function' && (this[property] = null);
81288		}
81289	};
81290
81291	$.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh;
81292
81293})(window.Zepto || window.jQuery, window, document);
81294
81295/**
81296 * Lazy Plugin
81297 * @version 2.1.0
81298 * @author Bartosz Wojciechowski
81299 * @author Saurabh Sharma
81300 * @license The MIT License (MIT)
81301 */
81302;(function($, window, document, undefined) {
81303
81304	/**
81305	 * Creates the lazy plugin.
81306	 * @class The Lazy Plugin
81307	 * @param {Owl} carousel - The Owl Carousel
81308	 */
81309	var Lazy = function(carousel) {
81310
81311		/**
81312		 * Reference to the core.
81313		 * @protected
81314		 * @type {Owl}
81315		 */
81316		this._core = carousel;
81317
81318		/**
81319		 * Already loaded items.
81320		 * @protected
81321		 * @type {Array.<jQuery>}
81322		 */
81323		this._loaded = [];
81324
81325		/**
81326		 * Event handlers.
81327		 * @protected
81328		 * @type {Object}
81329		 */
81330		this._handlers = {
81331			'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function(e) {
81332				if (!e.namespace) {
81333					return;
81334				}
81335
81336				if (!this._core.settings || !this._core.settings.lazyLoad) {
81337					return;
81338				}
81339
81340				if ((e.property && e.property.name == 'position') || e.type == 'initialized') {
81341					var settings = this._core.settings,
81342						n = (settings.center && Math.ceil(settings.items / 2) || settings.items),
81343						i = ((settings.center && n * -1) || 0),
81344						position = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i,
81345						clones = this._core.clones().length,
81346						load = $.proxy(function(i, v) { this.load(v) }, this);
81347
81348					while (i++ < n) {
81349						this.load(clones / 2 + this._core.relative(position));
81350						clones && $.each(this._core.clones(this._core.relative(position)), load);
81351						position++;
81352					}
81353				}
81354			}, this)
81355		};
81356
81357		// set the default options
81358		this._core.options = $.extend({}, Lazy.Defaults, this._core.options);
81359
81360		// register event handler
81361		this._core.$element.on(this._handlers);
81362	};
81363
81364	/**
81365	 * Default options.
81366	 * @public
81367	 */
81368	Lazy.Defaults = {
81369		lazyLoad: false
81370	};
81371
81372	/**
81373	 * Loads all resources of an item at the specified position.
81374	 * @param {Number} position - The absolute position of the item.
81375	 * @protected
81376	 */
81377	Lazy.prototype.load = function(position) {
81378		var $item = this._core.$stage.children().eq(position),
81379			$elements = $item && $item.find('.owl-lazy');
81380
81381		if (!$elements || $.inArray($item.get(0), this._loaded) > -1) {
81382			return;
81383		}
81384
81385		$elements.each($.proxy(function(index, element) {
81386			var $element = $(element), image,
81387				url = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src');
81388
81389			this._core.trigger('load', { element: $element, url: url }, 'lazy');
81390
81391			if ($element.is('img')) {
81392				$element.one('load.owl.lazy', $.proxy(function() {
81393					$element.css('opacity', 1);
81394					this._core.trigger('loaded', { element: $element, url: url }, 'lazy');
81395				}, this)).attr('src', url);
81396			} else {
81397				image = new Image();
81398				image.onload = $.proxy(function() {
81399					$element.css({
81400						'background-image': 'url("' + url + '")',
81401						'opacity': '1'
81402					});
81403					this._core.trigger('loaded', { element: $element, url: url }, 'lazy');
81404				}, this);
81405				image.src = url;
81406			}
81407		}, this));
81408
81409		this._loaded.push($item.get(0));
81410	};
81411
81412	/**
81413	 * Destroys the plugin.
81414	 * @public
81415	 */
81416	Lazy.prototype.destroy = function() {
81417		var handler, property;
81418
81419		for (handler in this.handlers) {
81420			this._core.$element.off(handler, this.handlers[handler]);
81421		}
81422		for (property in Object.getOwnPropertyNames(this)) {
81423			typeof this[property] != 'function' && (this[property] = null);
81424		}
81425	};
81426
81427	$.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy;
81428
81429})(window.Zepto || window.jQuery, window, document);
81430
81431/**
81432 * AutoHeight Plugin
81433 * @version 2.1.0
81434 * @author Bartosz Wojciechowski
81435 * @author Saurabh Sharma
81436 * @license The MIT License (MIT)
81437 */
81438;(function($, window, document, undefined) {
81439
81440	/**
81441	 * Creates the auto height plugin.
81442	 * @class The Auto Height Plugin
81443	 * @param {Owl} carousel - The Owl Carousel
81444	 */
81445	var AutoHeight = function(carousel) {
81446		/**
81447		 * Reference to the core.
81448		 * @protected
81449		 * @type {Owl}
81450		 */
81451		this._core = carousel;
81452
81453		/**
81454		 * All event handlers.
81455		 * @protected
81456		 * @type {Object}
81457		 */
81458		this._handlers = {
81459			'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function(e) {
81460				if (e.namespace && this._core.settings.autoHeight) {
81461					this.update();
81462				}
81463			}, this),
81464			'changed.owl.carousel': $.proxy(function(e) {
81465				if (e.namespace && this._core.settings.autoHeight && e.property.name == 'position'){
81466					this.update();
81467				}
81468			}, this),
81469			'loaded.owl.lazy': $.proxy(function(e) {
81470				if (e.namespace && this._core.settings.autoHeight
81471					&& e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) {
81472					this.update();
81473				}
81474			}, this)
81475		};
81476
81477		// set default options
81478		this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options);
81479
81480		// register event handlers
81481		this._core.$element.on(this._handlers);
81482	};
81483
81484	/**
81485	 * Default options.
81486	 * @public
81487	 */
81488	AutoHeight.Defaults = {
81489		autoHeight: false,
81490		autoHeightClass: 'owl-height'
81491	};
81492
81493	/**
81494	 * Updates the view.
81495	 */
81496	AutoHeight.prototype.update = function() {
81497		var start = this._core._current,
81498			end = start + this._core.settings.items,
81499			visible = this._core.$stage.children().toArray().slice(start, end),
81500			heights = [],
81501			maxheight = 0;
81502
81503		$.each(visible, function(index, item) {
81504			heights.push($(item).height());
81505		});
81506
81507		maxheight = Math.max.apply(null, heights);
81508
81509		this._core.$stage.parent()
81510			.height(maxheight)
81511			.addClass(this._core.settings.autoHeightClass);
81512	};
81513
81514	AutoHeight.prototype.destroy = function() {
81515		var handler, property;
81516
81517		for (handler in this._handlers) {
81518			this._core.$element.off(handler, this._handlers[handler]);
81519		}
81520		for (property in Object.getOwnPropertyNames(this)) {
81521			typeof this[property] != 'function' && (this[property] = null);
81522		}
81523	};
81524
81525	$.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight;
81526
81527})(window.Zepto || window.jQuery, window, document);
81528
81529/**
81530 * Video Plugin
81531 * @version 2.1.0
81532 * @author Bartosz Wojciechowski
81533 * @author Saurabh Sharma
81534 * @license The MIT License (MIT)
81535 */
81536;(function($, window, document, undefined) {
81537
81538	/**
81539	 * Creates the video plugin.
81540	 * @class The Video Plugin
81541	 * @param {Owl} carousel - The Owl Carousel
81542	 */
81543	var Video = function(carousel) {
81544		/**
81545		 * Reference to the core.
81546		 * @protected
81547		 * @type {Owl}
81548		 */
81549		this._core = carousel;
81550
81551		/**
81552		 * Cache all video URLs.
81553		 * @protected
81554		 * @type {Object}
81555		 */
81556		this._videos = {};
81557
81558		/**
81559		 * Current playing item.
81560		 * @protected
81561		 * @type {jQuery}
81562		 */
81563		this._playing = null;
81564
81565		/**
81566		 * All event handlers.
81567		 * @todo The cloned content removale is too late
81568		 * @protected
81569		 * @type {Object}
81570		 */
81571		this._handlers = {
81572			'initialized.owl.carousel': $.proxy(function(e) {
81573				if (e.namespace) {
81574					this._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] });
81575				}
81576			}, this),
81577			'resize.owl.carousel': $.proxy(function(e) {
81578				if (e.namespace && this._core.settings.video && this.isInFullScreen()) {
81579					e.preventDefault();
81580				}
81581			}, this),
81582			'refreshed.owl.carousel': $.proxy(function(e) {
81583				if (e.namespace && this._core.is('resizing')) {
81584					this._core.$stage.find('.cloned .owl-video-frame').remove();
81585				}
81586			}, this),
81587			'changed.owl.carousel': $.proxy(function(e) {
81588				if (e.namespace && e.property.name === 'position' && this._playing) {
81589					this.stop();
81590				}
81591			}, this),
81592			'prepared.owl.carousel': $.proxy(function(e) {
81593				if (!e.namespace) {
81594					return;
81595				}
81596
81597				var $element = $(e.content).find('.owl-video');
81598
81599				if ($element.length) {
81600					$element.css('display', 'none');
81601					this.fetch($element, $(e.content));
81602				}
81603			}, this)
81604		};
81605
81606		// set default options
81607		this._core.options = $.extend({}, Video.Defaults, this._core.options);
81608
81609		// register event handlers
81610		this._core.$element.on(this._handlers);
81611
81612		this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) {
81613			this.play(e);
81614		}, this));
81615	};
81616
81617	/**
81618	 * Default options.
81619	 * @public
81620	 */
81621	Video.Defaults = {
81622		video: false,
81623		videoHeight: false,
81624		videoWidth: false
81625	};
81626
81627	/**
81628	 * Gets the video ID and the type (YouTube/Vimeo/vzaar only).
81629	 * @protected
81630	 * @param {jQuery} target - The target containing the video data.
81631	 * @param {jQuery} item - The item containing the video.
81632	 */
81633	Video.prototype.fetch = function(target, item) {
81634			var type = (function() {
81635					if (target.attr('data-vimeo-id')) {
81636						return 'vimeo';
81637					} else if (target.attr('data-vzaar-id')) {
81638						return 'vzaar'
81639					} else {
81640						return 'youtube';
81641					}
81642				})(),
81643				id = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'),
81644				width = target.attr('data-width') || this._core.settings.videoWidth,
81645				height = target.attr('data-height') || this._core.settings.videoHeight,
81646				url = target.attr('href');
81647
81648		if (url) {
81649
81650			/*
81651					Parses the id's out of the following urls (and probably more):
81652					https://www.youtube.com/watch?v=:id
81653					https://youtu.be/:id
81654					https://vimeo.com/:id
81655					https://vimeo.com/channels/:channel/:id
81656					https://vimeo.com/groups/:group/videos/:id
81657					https://app.vzaar.com/videos/:id
81658
81659					Visual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F
81660			*/
81661
81662			id = url.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/);
81663
81664			if (id[3].indexOf('youtu') > -1) {
81665				type = 'youtube';
81666			} else if (id[3].indexOf('vimeo') > -1) {
81667				type = 'vimeo';
81668			} else if (id[3].indexOf('vzaar') > -1) {
81669				type = 'vzaar';
81670			} else {
81671				throw new Error('Video URL not supported.');
81672			}
81673			id = id[6];
81674		} else {
81675			throw new Error('Missing video URL.');
81676		}
81677
81678		this._videos[url] = {
81679			type: type,
81680			id: id,
81681			width: width,
81682			height: height
81683		};
81684
81685		item.attr('data-video', url);
81686
81687		this.thumbnail(target, this._videos[url]);
81688	};
81689
81690	/**
81691	 * Creates video thumbnail.
81692	 * @protected
81693	 * @param {jQuery} target - The target containing the video data.
81694	 * @param {Object} info - The video info object.
81695	 * @see `fetch`
81696	 */
81697	Video.prototype.thumbnail = function(target, video) {
81698		var tnLink,
81699			icon,
81700			path,
81701			dimensions = video.width && video.height ? 'style="width:' + video.width + 'px;height:' + video.height + 'px;"' : '',
81702			customTn = target.find('img'),
81703			srcType = 'src',
81704			lazyClass = '',
81705			settings = this._core.settings,
81706			create = function(path) {
81707				icon = '<div class="owl-video-play-icon"></div>';
81708
81709				if (settings.lazyLoad) {
81710					tnLink = '<div class="owl-video-tn ' + lazyClass + '" ' + srcType + '="' + path + '"></div>';
81711				} else {
81712					tnLink = '<div class="owl-video-tn" style="opacity:1;background-image:url(' + path + ')"></div>';
81713				}
81714				target.after(tnLink);
81715				target.after(icon);
81716			};
81717
81718		// wrap video content into owl-video-wrapper div
81719		target.wrap('<div class="owl-video-wrapper"' + dimensions + '></div>');
81720
81721		if (this._core.settings.lazyLoad) {
81722			srcType = 'data-src';
81723			lazyClass = 'owl-lazy';
81724		}
81725
81726		// custom thumbnail
81727		if (customTn.length) {
81728			create(customTn.attr(srcType));
81729			customTn.remove();
81730			return false;
81731		}
81732
81733		if (video.type === 'youtube') {
81734			path = "//img.youtube.com/vi/" + video.id + "/hqdefault.jpg";
81735			create(path);
81736		} else if (video.type === 'vimeo') {
81737			$.ajax({
81738				type: 'GET',
81739				url: '//vimeo.com/api/v2/video/' + video.id + '.json',
81740				jsonp: 'callback',
81741				dataType: 'jsonp',
81742				success: function(data) {
81743					path = data[0].thumbnail_large;
81744					create(path);
81745				}
81746			});
81747		} else if (video.type === 'vzaar') {
81748			$.ajax({
81749				type: 'GET',
81750				url: '//vzaar.com/api/videos/' + video.id + '.json',
81751				jsonp: 'callback',
81752				dataType: 'jsonp',
81753				success: function(data) {
81754					path = data.framegrab_url;
81755					create(path);
81756				}
81757			});
81758		}
81759	};
81760
81761	/**
81762	 * Stops the current video.
81763	 * @public
81764	 */
81765	Video.prototype.stop = function() {
81766		this._core.trigger('stop', null, 'video');
81767		this._playing.find('.owl-video-frame').remove();
81768		this._playing.removeClass('owl-video-playing');
81769		this._playing = null;
81770		this._core.leave('playing');
81771		this._core.trigger('stopped', null, 'video');
81772	};
81773
81774	/**
81775	 * Starts the current video.
81776	 * @public
81777	 * @param {Event} event - The event arguments.
81778	 */
81779	Video.prototype.play = function(event) {
81780		var target = $(event.target),
81781			item = target.closest('.' + this._core.settings.itemClass),
81782			video = this._videos[item.attr('data-video')],
81783			width = video.width || '100%',
81784			height = video.height || this._core.$stage.height(),
81785			html;
81786
81787		if (this._playing) {
81788			return;
81789		}
81790
81791		this._core.enter('playing');
81792		this._core.trigger('play', null, 'video');
81793
81794		item = this._core.items(this._core.relative(item.index()));
81795
81796		this._core.reset(item.index());
81797
81798		if (video.type === 'youtube') {
81799			html = '<iframe width="' + width + '" height="' + height + '" src="//www.youtube.com/embed/' +
81800				video.id + '?autoplay=1&rel=0&v=' + video.id + '" frameborder="0" allowfullscreen></iframe>';
81801		} else if (video.type === 'vimeo') {
81802			html = '<iframe src="//player.vimeo.com/video/' + video.id +
81803				'?autoplay=1" width="' + width + '" height="' + height +
81804				'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
81805		} else if (video.type === 'vzaar') {
81806			html = '<iframe frameborder="0"' + 'height="' + height + '"' + 'width="' + width +
81807				'" allowfullscreen mozallowfullscreen webkitAllowFullScreen ' +
81808				'src="//view.vzaar.com/' + video.id + '/player?autoplay=true"></iframe>';
81809		}
81810
81811		$('<div class="owl-video-frame">' + html + '</div>').insertAfter(item.find('.owl-video'));
81812
81813		this._playing = item.addClass('owl-video-playing');
81814	};
81815
81816	/**
81817	 * Checks whether an video is currently in full screen mode or not.
81818	 * @todo Bad style because looks like a readonly method but changes members.
81819	 * @protected
81820	 * @returns {Boolean}
81821	 */
81822	Video.prototype.isInFullScreen = function() {
81823		var element = document.fullscreenElement || document.mozFullScreenElement ||
81824				document.webkitFullscreenElement;
81825
81826		return element && $(element).parent().hasClass('owl-video-frame');
81827	};
81828
81829	/**
81830	 * Destroys the plugin.
81831	 */
81832	Video.prototype.destroy = function() {
81833		var handler, property;
81834
81835		this._core.$element.off('click.owl.video');
81836
81837		for (handler in this._handlers) {
81838			this._core.$element.off(handler, this._handlers[handler]);
81839		}
81840		for (property in Object.getOwnPropertyNames(this)) {
81841			typeof this[property] != 'function' && (this[property] = null);
81842		}
81843	};
81844
81845	$.fn.owlCarousel.Constructor.Plugins.Video = Video;
81846
81847})(window.Zepto || window.jQuery, window, document);
81848
81849/**
81850 * Animate Plugin
81851 * @version 2.1.0
81852 * @author Bartosz Wojciechowski
81853 * @author Saurabh Sharma
81854 * @license The MIT License (MIT)
81855 */
81856;(function($, window, document, undefined) {
81857
81858	/**
81859	 * Creates the animate plugin.
81860	 * @class The Navigation Plugin
81861	 * @param {Owl} scope - The Owl Carousel
81862	 */
81863	var Animate = function(scope) {
81864		this.core = scope;
81865		this.core.options = $.extend({}, Animate.Defaults, this.core.options);
81866		this.swapping = true;
81867		this.previous = undefined;
81868		this.next = undefined;
81869
81870		this.handlers = {
81871			'change.owl.carousel': $.proxy(function(e) {
81872				if (e.namespace && e.property.name == 'position') {
81873					this.previous = this.core.current();
81874					this.next = e.property.value;
81875				}
81876			}, this),
81877			'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) {
81878				if (e.namespace) {
81879					this.swapping = e.type == 'translated';
81880				}
81881			}, this),
81882			'translate.owl.carousel': $.proxy(function(e) {
81883				if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {
81884					this.swap();
81885				}
81886			}, this)
81887		};
81888
81889		this.core.$element.on(this.handlers);
81890	};
81891
81892	/**
81893	 * Default options.
81894	 * @public
81895	 */
81896	Animate.Defaults = {
81897		animateOut: false,
81898		animateIn: false
81899	};
81900
81901	/**
81902	 * Toggles the animation classes whenever an translations starts.
81903	 * @protected
81904	 * @returns {Boolean|undefined}
81905	 */
81906	Animate.prototype.swap = function() {
81907
81908		if (this.core.settings.items !== 1) {
81909			return;
81910		}
81911
81912		if (!$.support.animation || !$.support.transition) {
81913			return;
81914		}
81915
81916		this.core.speed(0);
81917
81918		var left,
81919			clear = $.proxy(this.clear, this),
81920			previous = this.core.$stage.children().eq(this.previous),
81921			next = this.core.$stage.children().eq(this.next),
81922			incoming = this.core.settings.animateIn,
81923			outgoing = this.core.settings.animateOut;
81924
81925		if (this.core.current() === this.previous) {
81926			return;
81927		}
81928
81929		if (outgoing) {
81930			left = this.core.coordinates(this.previous) - this.core.coordinates(this.next);
81931			previous.one($.support.animation.end, clear)
81932				.css( { 'left': left + 'px' } )
81933				.addClass('animated owl-animated-out')
81934				.addClass(outgoing);
81935		}
81936
81937		if (incoming) {
81938			next.one($.support.animation.end, clear)
81939				.addClass('animated owl-animated-in')
81940				.addClass(incoming);
81941		}
81942	};
81943
81944	Animate.prototype.clear = function(e) {
81945		$(e.target).css( { 'left': '' } )
81946			.removeClass('animated owl-animated-out owl-animated-in')
81947			.removeClass(this.core.settings.animateIn)
81948			.removeClass(this.core.settings.animateOut);
81949		this.core.onTransitionEnd();
81950	};
81951
81952	/**
81953	 * Destroys the plugin.
81954	 * @public
81955	 */
81956	Animate.prototype.destroy = function() {
81957		var handler, property;
81958
81959		for (handler in this.handlers) {
81960			this.core.$element.off(handler, this.handlers[handler]);
81961		}
81962		for (property in Object.getOwnPropertyNames(this)) {
81963			typeof this[property] != 'function' && (this[property] = null);
81964		}
81965	};
81966
81967	$.fn.owlCarousel.Constructor.Plugins.Animate = Animate;
81968
81969})(window.Zepto || window.jQuery, window, document);
81970
81971/**
81972 * Autoplay Plugin
81973 * @version 2.1.0
81974 * @author Bartosz Wojciechowski
81975 * @author Artus Kolanowski
81976 * @author Saurabh Sharma
81977 * @license The MIT License (MIT)
81978 */
81979;(function($, window, document, undefined) {
81980
81981	/**
81982	 * Creates the autoplay plugin.
81983	 * @class The Autoplay Plugin
81984	 * @param {Owl} scope - The Owl Carousel
81985	 */
81986	var Autoplay = function(carousel) {
81987		/**
81988		 * Reference to the core.
81989		 * @protected
81990		 * @type {Owl}
81991		 */
81992		this._core = carousel;
81993
81994		/**
81995		 * The autoplay timeout.
81996		 * @type {Timeout}
81997		 */
81998		this._timeout = null;
81999
82000		/**
82001		 * Indicates whenever the autoplay is paused.
82002		 * @type {Boolean}
82003		 */
82004		this._paused = false;
82005
82006		/**
82007		 * All event handlers.
82008		 * @protected
82009		 * @type {Object}
82010		 */
82011		this._handlers = {
82012			'changed.owl.carousel': $.proxy(function(e) {
82013				if (e.namespace && e.property.name === 'settings') {
82014					if (this._core.settings.autoplay) {
82015						this.play();
82016					} else {
82017						this.stop();
82018					}
82019				} else if (e.namespace && e.property.name === 'position') {
82020					//console.log('play?', e);
82021					if (this._core.settings.autoplay) {
82022						this._setAutoPlayInterval();
82023					}
82024				}
82025			}, this),
82026			'initialized.owl.carousel': $.proxy(function(e) {
82027				if (e.namespace && this._core.settings.autoplay) {
82028					this.play();
82029				}
82030			}, this),
82031			'play.owl.autoplay': $.proxy(function(e, t, s) {
82032				if (e.namespace) {
82033					this.play(t, s);
82034				}
82035			}, this),
82036			'stop.owl.autoplay': $.proxy(function(e) {
82037				if (e.namespace) {
82038					this.stop();
82039				}
82040			}, this),
82041			'mouseover.owl.autoplay': $.proxy(function() {
82042				if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {
82043					this.pause();
82044				}
82045			}, this),
82046			'mouseleave.owl.autoplay': $.proxy(function() {
82047				if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {
82048					this.play();
82049				}
82050			}, this),
82051			'touchstart.owl.core': $.proxy(function() {
82052				if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {
82053					this.pause();
82054				}
82055			}, this),
82056			'touchend.owl.core': $.proxy(function() {
82057				if (this._core.settings.autoplayHoverPause) {
82058					this.play();
82059				}
82060			}, this)
82061		};
82062
82063		// register event handlers
82064		this._core.$element.on(this._handlers);
82065
82066		// set default options
82067		this._core.options = $.extend({}, Autoplay.Defaults, this._core.options);
82068	};
82069
82070	/**
82071	 * Default options.
82072	 * @public
82073	 */
82074	Autoplay.Defaults = {
82075		autoplay: false,
82076		autoplayTimeout: 5000,
82077		autoplayHoverPause: false,
82078		autoplaySpeed: false
82079	};
82080
82081	/**
82082	 * Starts the autoplay.
82083	 * @public
82084	 * @param {Number} [timeout] - The interval before the next animation starts.
82085	 * @param {Number} [speed] - The animation speed for the animations.
82086	 */
82087	Autoplay.prototype.play = function(timeout, speed) {
82088		this._paused = false;
82089
82090		if (this._core.is('rotating')) {
82091			return;
82092		}
82093
82094		this._core.enter('rotating');
82095
82096		this._setAutoPlayInterval();
82097	};
82098
82099	/**
82100	 * Gets a new timeout
82101	 * @private
82102	 * @param {Number} [timeout] - The interval before the next animation starts.
82103	 * @param {Number} [speed] - The animation speed for the animations.
82104	 * @return {Timeout}
82105	 */
82106	Autoplay.prototype._getNextTimeout = function(timeout, speed) {
82107		if ( this._timeout ) {
82108			window.clearTimeout(this._timeout);
82109		}
82110		return window.setTimeout($.proxy(function() {
82111			if (this._paused || this._core.is('busy') || this._core.is('interacting') || document.hidden) {
82112				return;
82113			}
82114			this._core.next(speed || this._core.settings.autoplaySpeed);
82115		}, this), timeout || this._core.settings.autoplayTimeout);
82116	};
82117
82118	/**
82119	 * Sets autoplay in motion.
82120	 * @private
82121	 */
82122	Autoplay.prototype._setAutoPlayInterval = function() {
82123		this._timeout = this._getNextTimeout();
82124	};
82125
82126	/**
82127	 * Stops the autoplay.
82128	 * @public
82129	 */
82130	Autoplay.prototype.stop = function() {
82131		if (!this._core.is('rotating')) {
82132			return;
82133		}
82134
82135		window.clearTimeout(this._timeout);
82136		this._core.leave('rotating');
82137	};
82138
82139	/**
82140	 * Stops the autoplay.
82141	 * @public
82142	 */
82143	Autoplay.prototype.pause = function() {
82144		if (!this._core.is('rotating')) {
82145			return;
82146		}
82147
82148		this._paused = true;
82149	};
82150
82151	/**
82152	 * Destroys the plugin.
82153	 */
82154	Autoplay.prototype.destroy = function() {
82155		var handler, property;
82156
82157		this.stop();
82158
82159		for (handler in this._handlers) {
82160			this._core.$element.off(handler, this._handlers[handler]);
82161		}
82162		for (property in Object.getOwnPropertyNames(this)) {
82163			typeof this[property] != 'function' && (this[property] = null);
82164		}
82165	};
82166
82167	$.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay;
82168
82169})(window.Zepto || window.jQuery, window, document);
82170
82171/**
82172 * Navigation Plugin
82173 * @version 2.1.0
82174 * @author Artus Kolanowski
82175 * @author Saurabh Sharma
82176 * @license The MIT License (MIT)
82177 */
82178;(function($, window, document, undefined) {
82179	'use strict';
82180
82181	/**
82182	 * Creates the navigation plugin.
82183	 * @class The Navigation Plugin
82184	 * @param {Owl} carousel - The Owl Carousel.
82185	 */
82186	var Navigation = function(carousel) {
82187		/**
82188		 * Reference to the core.
82189		 * @protected
82190		 * @type {Owl}
82191		 */
82192		this._core = carousel;
82193
82194		/**
82195		 * Indicates whether the plugin is initialized or not.
82196		 * @protected
82197		 * @type {Boolean}
82198		 */
82199		this._initialized = false;
82200
82201		/**
82202		 * The current paging indexes.
82203		 * @protected
82204		 * @type {Array}
82205		 */
82206		this._pages = [];
82207
82208		/**
82209		 * All DOM elements of the user interface.
82210		 * @protected
82211		 * @type {Object}
82212		 */
82213		this._controls = {};
82214
82215		/**
82216		 * Markup for an indicator.
82217		 * @protected
82218		 * @type {Array.<String>}
82219		 */
82220		this._templates = [];
82221
82222		/**
82223		 * The carousel element.
82224		 * @type {jQuery}
82225		 */
82226		this.$element = this._core.$element;
82227
82228		/**
82229		 * Overridden methods of the carousel.
82230		 * @protected
82231		 * @type {Object}
82232		 */
82233		this._overrides = {
82234			next: this._core.next,
82235			prev: this._core.prev,
82236			to: this._core.to
82237		};
82238
82239		/**
82240		 * All event handlers.
82241		 * @protected
82242		 * @type {Object}
82243		 */
82244		this._handlers = {
82245			'prepared.owl.carousel': $.proxy(function(e) {
82246				if (e.namespace && this._core.settings.dotsData) {
82247					this._templates.push('<div class="' + this._core.settings.dotClass + '">' +
82248						$(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '</div>');
82249				}
82250			}, this),
82251			'added.owl.carousel': $.proxy(function(e) {
82252				if (e.namespace && this._core.settings.dotsData) {
82253					this._templates.splice(e.position, 0, this._templates.pop());
82254				}
82255			}, this),
82256			'remove.owl.carousel': $.proxy(function(e) {
82257				if (e.namespace && this._core.settings.dotsData) {
82258					this._templates.splice(e.position, 1);
82259				}
82260			}, this),
82261			'changed.owl.carousel': $.proxy(function(e) {
82262				if (e.namespace && e.property.name == 'position') {
82263					this.draw();
82264				}
82265			}, this),
82266			'initialized.owl.carousel': $.proxy(function(e) {
82267				if (e.namespace && !this._initialized) {
82268					this._core.trigger('initialize', null, 'navigation');
82269					this.initialize();
82270					this.update();
82271					this.draw();
82272					this._initialized = true;
82273					this._core.trigger('initialized', null, 'navigation');
82274				}
82275			}, this),
82276			'refreshed.owl.carousel': $.proxy(function(e) {
82277				if (e.namespace && this._initialized) {
82278					this._core.trigger('refresh', null, 'navigation');
82279					this.update();
82280					this.draw();
82281					this._core.trigger('refreshed', null, 'navigation');
82282				}
82283			}, this)
82284		};
82285
82286		// set default options
82287		this._core.options = $.extend({}, Navigation.Defaults, this._core.options);
82288
82289		// register event handlers
82290		this.$element.on(this._handlers);
82291	};
82292
82293	/**
82294	 * Default options.
82295	 * @public
82296	 * @todo Rename `slideBy` to `navBy`
82297	 */
82298	Navigation.Defaults = {
82299		nav: false,
82300		navText: [ 'prev', 'next' ],
82301		navSpeed: false,
82302		navElement: 'div',
82303		navContainer: false,
82304		navContainerClass: 'owl-nav',
82305		navClass: [ 'owl-prev', 'owl-next' ],
82306		slideBy: 1,
82307		dotClass: 'owl-dot',
82308		dotsClass: 'owl-dots',
82309		dots: true,
82310		dotsEach: false,
82311		dotsData: false,
82312		dotsSpeed: false,
82313		dotsContainer: false
82314	};
82315
82316	/**
82317	 * Initializes the layout of the plugin and extends the carousel.
82318	 * @protected
82319	 */
82320	Navigation.prototype.initialize = function() {
82321		var override,
82322			settings = this._core.settings;
82323
82324		// create DOM structure for relative navigation
82325		this._controls.$relative = (settings.navContainer ? $(settings.navContainer)
82326			: $('<div>').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled');
82327
82328		this._controls.$previous = $('<' + settings.navElement + '>')
82329			.addClass(settings.navClass[0])
82330			.html(settings.navText[0])
82331			.prependTo(this._controls.$relative)
82332			.on('click', $.proxy(function(e) {
82333				this.prev(settings.navSpeed);
82334			}, this));
82335		this._controls.$next = $('<' + settings.navElement + '>')
82336			.addClass(settings.navClass[1])
82337			.html(settings.navText[1])
82338			.appendTo(this._controls.$relative)
82339			.on('click', $.proxy(function(e) {
82340				this.next(settings.navSpeed);
82341			}, this));
82342
82343		// create DOM structure for absolute navigation
82344		if (!settings.dotsData) {
82345			this._templates = [ $('<div>')
82346				.addClass(settings.dotClass)
82347				.append($('<span>'))
82348				.prop('outerHTML') ];
82349		}
82350
82351		this._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer)
82352			: $('<div>').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled');
82353
82354		this._controls.$absolute.on('click', 'div', $.proxy(function(e) {
82355			var index = $(e.target).parent().is(this._controls.$absolute)
82356				? $(e.target).index() : $(e.target).parent().index();
82357
82358			e.preventDefault();
82359
82360			this.to(index, settings.dotsSpeed);
82361		}, this));
82362
82363		// override public methods of the carousel
82364		for (override in this._overrides) {
82365			this._core[override] = $.proxy(this[override], this);
82366		}
82367	};
82368
82369	/**
82370	 * Destroys the plugin.
82371	 * @protected
82372	 */
82373	Navigation.prototype.destroy = function() {
82374		var handler, control, property, override;
82375
82376		for (handler in this._handlers) {
82377			this.$element.off(handler, this._handlers[handler]);
82378		}
82379		for (control in this._controls) {
82380			this._controls[control].remove();
82381		}
82382		for (override in this.overides) {
82383			this._core[override] = this._overrides[override];
82384		}
82385		for (property in Object.getOwnPropertyNames(this)) {
82386			typeof this[property] != 'function' && (this[property] = null);
82387		}
82388	};
82389
82390	/**
82391	 * Updates the internal state.
82392	 * @protected
82393	 */
82394	Navigation.prototype.update = function() {
82395		var i, j, k,
82396			lower = this._core.clones().length / 2,
82397			upper = lower + this._core.items().length,
82398			maximum = this._core.maximum(true),
82399			settings = this._core.settings,
82400			size = settings.center || settings.autoWidth || settings.dotsData
82401				? 1 : settings.dotsEach || settings.items;
82402
82403		if (settings.slideBy !== 'page') {
82404			settings.slideBy = Math.min(settings.slideBy, settings.items);
82405		}
82406
82407		if (settings.dots || settings.slideBy == 'page') {
82408			this._pages = [];
82409
82410			for (i = lower, j = 0, k = 0; i < upper; i++) {
82411				if (j >= size || j === 0) {
82412					this._pages.push({
82413						start: Math.min(maximum, i - lower),
82414						end: i - lower + size - 1
82415					});
82416					if (Math.min(maximum, i - lower) === maximum) {
82417						break;
82418					}
82419					j = 0, ++k;
82420				}
82421				j += this._core.mergers(this._core.relative(i));
82422			}
82423		}
82424	};
82425
82426	/**
82427	 * Draws the user interface.
82428	 * @todo The option `dotsData` wont work.
82429	 * @protected
82430	 */
82431	Navigation.prototype.draw = function() {
82432		var difference,
82433			settings = this._core.settings,
82434			disabled = this._core.items().length <= settings.items,
82435			index = this._core.relative(this._core.current()),
82436			loop = settings.loop || settings.rewind;
82437
82438		this._controls.$relative.toggleClass('disabled', !settings.nav || disabled);
82439
82440		if (settings.nav) {
82441			this._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true));
82442			this._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true));
82443		}
82444
82445		this._controls.$absolute.toggleClass('disabled', !settings.dots || disabled);
82446
82447		if (settings.dots) {
82448			difference = this._pages.length - this._controls.$absolute.children().length;
82449
82450			if (settings.dotsData && difference !== 0) {
82451				this._controls.$absolute.html(this._templates.join(''));
82452			} else if (difference > 0) {
82453				this._controls.$absolute.append(new Array(difference + 1).join(this._templates[0]));
82454			} else if (difference < 0) {
82455				this._controls.$absolute.children().slice(difference).remove();
82456			}
82457
82458			this._controls.$absolute.find('.active').removeClass('active');
82459			this._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active');
82460		}
82461	};
82462
82463	/**
82464	 * Extends event data.
82465	 * @protected
82466	 * @param {Event} event - The event object which gets thrown.
82467	 */
82468	Navigation.prototype.onTrigger = function(event) {
82469		var settings = this._core.settings;
82470
82471		event.page = {
82472			index: $.inArray(this.current(), this._pages),
82473			count: this._pages.length,
82474			size: settings && (settings.center || settings.autoWidth || settings.dotsData
82475				? 1 : settings.dotsEach || settings.items)
82476		};
82477	};
82478
82479	/**
82480	 * Gets the current page position of the carousel.
82481	 * @protected
82482	 * @returns {Number}
82483	 */
82484	Navigation.prototype.current = function() {
82485		var current = this._core.relative(this._core.current());
82486		return $.grep(this._pages, $.proxy(function(page, index) {
82487			return page.start <= current && page.end >= current;
82488		}, this)).pop();
82489	};
82490
82491	/**
82492	 * Gets the current succesor/predecessor position.
82493	 * @protected
82494	 * @returns {Number}
82495	 */
82496	Navigation.prototype.getPosition = function(successor) {
82497		var position, length,
82498			settings = this._core.settings;
82499
82500		if (settings.slideBy == 'page') {
82501			position = $.inArray(this.current(), this._pages);
82502			length = this._pages.length;
82503			successor ? ++position : --position;
82504			position = this._pages[((position % length) + length) % length].start;
82505		} else {
82506			position = this._core.relative(this._core.current());
82507			length = this._core.items().length;
82508			successor ? position += settings.slideBy : position -= settings.slideBy;
82509		}
82510
82511		return position;
82512	};
82513
82514	/**
82515	 * Slides to the next item or page.
82516	 * @public
82517	 * @param {Number} [speed=false] - The time in milliseconds for the transition.
82518	 */
82519	Navigation.prototype.next = function(speed) {
82520		$.proxy(this._overrides.to, this._core)(this.getPosition(true), speed);
82521	};
82522
82523	/**
82524	 * Slides to the previous item or page.
82525	 * @public
82526	 * @param {Number} [speed=false] - The time in milliseconds for the transition.
82527	 */
82528	Navigation.prototype.prev = function(speed) {
82529		$.proxy(this._overrides.to, this._core)(this.getPosition(false), speed);
82530	};
82531
82532	/**
82533	 * Slides to the specified item or page.
82534	 * @public
82535	 * @param {Number} position - The position of the item or page.
82536	 * @param {Number} [speed] - The time in milliseconds for the transition.
82537	 * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not.
82538	 */
82539	Navigation.prototype.to = function(position, speed, standard) {
82540		var length;
82541
82542		if (!standard && this._pages.length) {
82543			length = this._pages.length;
82544			$.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed);
82545		} else {
82546			$.proxy(this._overrides.to, this._core)(position, speed);
82547		}
82548	};
82549
82550	$.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation;
82551
82552})(window.Zepto || window.jQuery, window, document);
82553
82554/**
82555 * Hash Plugin
82556 * @version 2.1.0
82557 * @author Artus Kolanowski
82558 * @author Saurabh Sharma
82559 * @license The MIT License (MIT)
82560 */
82561;(function($, window, document, undefined) {
82562	'use strict';
82563
82564	/**
82565	 * Creates the hash plugin.
82566	 * @class The Hash Plugin
82567	 * @param {Owl} carousel - The Owl Carousel
82568	 */
82569	var Hash = function(carousel) {
82570		/**
82571		 * Reference to the core.
82572		 * @protected
82573		 * @type {Owl}
82574		 */
82575		this._core = carousel;
82576
82577		/**
82578		 * Hash index for the items.
82579		 * @protected
82580		 * @type {Object}
82581		 */
82582		this._hashes = {};
82583
82584		/**
82585		 * The carousel element.
82586		 * @type {jQuery}
82587		 */
82588		this.$element = this._core.$element;
82589
82590		/**
82591		 * All event handlers.
82592		 * @protected
82593		 * @type {Object}
82594		 */
82595		this._handlers = {
82596			'initialized.owl.carousel': $.proxy(function(e) {
82597				if (e.namespace && this._core.settings.startPosition === 'URLHash') {
82598					$(window).trigger('hashchange.owl.navigation');
82599				}
82600			}, this),
82601			'prepared.owl.carousel': $.proxy(function(e) {
82602				if (e.namespace) {
82603					var hash = $(e.content).find('[data-hash]').addBack('[data-hash]').attr('data-hash');
82604
82605					if (!hash) {
82606						return;
82607					}
82608
82609					this._hashes[hash] = e.content;
82610				}
82611			}, this),
82612			'changed.owl.carousel': $.proxy(function(e) {
82613				if (e.namespace && e.property.name === 'position') {
82614					var current = this._core.items(this._core.relative(this._core.current())),
82615						hash = $.map(this._hashes, function(item, hash) {
82616							return item === current ? hash : null;
82617						}).join();
82618
82619					if (!hash || window.location.hash.slice(1) === hash) {
82620						return;
82621					}
82622
82623					window.location.hash = hash;
82624				}
82625			}, this)
82626		};
82627
82628		// set default options
82629		this._core.options = $.extend({}, Hash.Defaults, this._core.options);
82630
82631		// register the event handlers
82632		this.$element.on(this._handlers);
82633
82634		// register event listener for hash navigation
82635		$(window).on('hashchange.owl.navigation', $.proxy(function(e) {
82636			var hash = window.location.hash.substring(1),
82637				items = this._core.$stage.children(),
82638				position = this._hashes[hash] && items.index(this._hashes[hash]);
82639
82640			if (position === undefined || position === this._core.current()) {
82641				return;
82642			}
82643
82644			this._core.to(this._core.relative(position), false, true);
82645		}, this));
82646	};
82647
82648	/**
82649	 * Default options.
82650	 * @public
82651	 */
82652	Hash.Defaults = {
82653		URLhashListener: false
82654	};
82655
82656	/**
82657	 * Destroys the plugin.
82658	 * @public
82659	 */
82660	Hash.prototype.destroy = function() {
82661		var handler, property;
82662
82663		$(window).off('hashchange.owl.navigation');
82664
82665		for (handler in this._handlers) {
82666			this._core.$element.off(handler, this._handlers[handler]);
82667		}
82668		for (property in Object.getOwnPropertyNames(this)) {
82669			typeof this[property] != 'function' && (this[property] = null);
82670		}
82671	};
82672
82673	$.fn.owlCarousel.Constructor.Plugins.Hash = Hash;
82674
82675})(window.Zepto || window.jQuery, window, document);
82676
82677/**
82678 * Support Plugin
82679 *
82680 * @version 2.1.0
82681 * @author Vivid Planet Software GmbH
82682 * @author Artus Kolanowski
82683 * @author Saurabh Sharma
82684 * @license The MIT License (MIT)
82685 */
82686;(function($, window, document, undefined) {
82687
82688	var style = $('<support>').get(0).style,
82689		prefixes = 'Webkit Moz O ms'.split(' '),
82690		events = {
82691			transition: {
82692				end: {
82693					WebkitTransition: 'webkitTransitionEnd',
82694					MozTransition: 'transitionend',
82695					OTransition: 'oTransitionEnd',
82696					transition: 'transitionend'
82697				}
82698			},
82699			animation: {
82700				end: {
82701					WebkitAnimation: 'webkitAnimationEnd',
82702					MozAnimation: 'animationend',
82703					OAnimation: 'oAnimationEnd',
82704					animation: 'animationend'
82705				}
82706			}
82707		},
82708		tests = {
82709			csstransforms: function() {
82710				return !!test('transform');
82711			},
82712			csstransforms3d: function() {
82713				return !!test('perspective');
82714			},
82715			csstransitions: function() {
82716				return !!test('transition');
82717			},
82718			cssanimations: function() {
82719				return !!test('animation');
82720			}
82721		};
82722
82723	function test(property, prefixed) {
82724		var result = false,
82725			upper = property.charAt(0).toUpperCase() + property.slice(1);
82726
82727		$.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) {
82728			if (style[property] !== undefined) {
82729				result = prefixed ? property : true;
82730				return false;
82731			}
82732		});
82733
82734		return result;
82735	}
82736
82737	function prefixed(property) {
82738		return test(property, true);
82739	}
82740
82741	if (tests.csstransitions()) {
82742		/* jshint -W053 */
82743		$.support.transition = new String(prefixed('transition'))
82744		$.support.transition.end = events.transition.end[ $.support.transition ];
82745	}
82746
82747	if (tests.cssanimations()) {
82748		/* jshint -W053 */
82749		$.support.animation = new String(prefixed('animation'))
82750		$.support.animation.end = events.animation.end[ $.support.animation ];
82751	}
82752
82753	if (tests.csstransforms()) {
82754		/* jshint -W053 */
82755		$.support.transform = new String(prefixed('transform'));
82756		$.support.transform3d = tests.csstransforms3d();
82757	}
82758
82759})(window.Zepto || window.jQuery, window, document);
82760
82761
82762/***/ }),
82763
vendor: 5,636 bytes, lines 82764-82957
82764/***/ "./node_modules/process/browser.js":
82765/*!*****************************************!*\
82766  !*** ./node_modules/process/browser.js ***!
82767  \*****************************************/
82768/***/ ((module) => {
82769
82770// shim for using process in browser
82771var process = module.exports = {};
82772
82773// cached from whatever global is present so that test runners that stub it
82774// don't break things.  But we need to wrap it in a try catch in case it is
82775// wrapped in strict mode code which doesn't define any globals.  It's inside a
82776// function because try/catches deoptimize in certain engines.
82777
82778var cachedSetTimeout;
82779var cachedClearTimeout;
82780
82781function defaultSetTimout() {
82782    throw new Error('setTimeout has not been defined');
82783}
82784function defaultClearTimeout () {
82785    throw new Error('clearTimeout has not been defined');
82786}
82787(function () {
82788    try {
82789        if (typeof setTimeout === 'function') {
82790            cachedSetTimeout = setTimeout;
82791        } else {
82792            cachedSetTimeout = defaultSetTimout;
82793        }
82794    } catch (e) {
82795        cachedSetTimeout = defaultSetTimout;
82796    }
82797    try {
82798        if (typeof clearTimeout === 'function') {
82799            cachedClearTimeout = clearTimeout;
82800        } else {
82801            cachedClearTimeout = defaultClearTimeout;
82802        }
82803    } catch (e) {
82804        cachedClearTimeout = defaultClearTimeout;
82805    }
82806} ())
82807function runTimeout(fun) {
82808    if (cachedSetTimeout === setTimeout) {
82809        //normal enviroments in sane situations
82810        return setTimeout(fun, 0);
82811    }
82812    // if setTimeout wasn't available but was latter defined
82813    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
82814        cachedSetTimeout = setTimeout;
82815        return setTimeout(fun, 0);
82816    }
82817    try {
82818        // when when somebody has screwed with setTimeout but no I.E. maddness
82819        return cachedSetTimeout(fun, 0);
82820    } catch(e){
82821        try {
82822            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
82823            return cachedSetTimeout.call(null, fun, 0);
82824        } catch(e){
82825            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
82826            return cachedSetTimeout.call(this, fun, 0);
82827        }
82828    }
82829
82830
82831}
82832function runClearTimeout(marker) {
82833    if (cachedClearTimeout === clearTimeout) {
82834        //normal enviroments in sane situations
82835        return clearTimeout(marker);
82836    }
82837    // if clearTimeout wasn't available but was latter defined
82838    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
82839        cachedClearTimeout = clearTimeout;
82840        return clearTimeout(marker);
82841    }
82842    try {
82843        // when when somebody has screwed with setTimeout but no I.E. maddness
82844        return cachedClearTimeout(marker);
82845    } catch (e){
82846        try {
82847            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
82848            return cachedClearTimeout.call(null, marker);
82849        } catch (e){
82850            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
82851            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
82852            return cachedClearTimeout.call(this, marker);
82853        }
82854    }
82855
82856
82857
82858}
82859var queue = [];
82860var draining = false;
82861var currentQueue;
82862var queueIndex = -1;
82863
82864function cleanUpNextTick() {
82865    if (!draining || !currentQueue) {
82866        return;
82867    }
82868    draining = false;
82869    if (currentQueue.length) {
82870        queue = currentQueue.concat(queue);
82871    } else {
82872        queueIndex = -1;
82873    }
82874    if (queue.length) {
82875        drainQueue();
82876    }
82877}
82878
82879function drainQueue() {
82880    if (draining) {
82881        return;
82882    }
82883    var timeout = runTimeout(cleanUpNextTick);
82884    draining = true;
82885
82886    var len = queue.length;
82887    while(len) {
82888        currentQueue = queue;
82889        queue = [];
82890        while (++queueIndex < len) {
82891            if (currentQueue) {
82892                currentQueue[queueIndex].run();
82893            }
82894        }
82895        queueIndex = -1;
82896        len = queue.length;
82897    }
82898    currentQueue = null;
82899    draining = false;
82900    runClearTimeout(timeout);
82901}
82902
82903process.nextTick = function (fun) {
82904    var args = new Array(arguments.length - 1);
82905    if (arguments.length > 1) {
82906        for (var i = 1; i < arguments.length; i++) {
82907            args[i - 1] = arguments[i];
82908        }
82909    }
82910    queue.push(new Item(fun, args));
82911    if (queue.length === 1 && !draining) {
82912        runTimeout(drainQueue);
82913    }
82914};
82915
82916// v8 likes predictible objects
82917function Item(fun, array) {
82918    this.fun = fun;
82919    this.array = array;
82920}
82921Item.prototype.run = function () {
82922    this.fun.apply(null, this.array);
82923};
82924process.title = 'browser';
82925process.browser = true;
82926process.env = {};
82927process.argv = [];
82928process.version = ''; // empty string to avoid regexp issues
82929process.versions = {};
82930
82931function noop() {}
82932
82933process.on = noop;
82934process.addListener = noop;
82935process.once = noop;
82936process.off = noop;
82937process.removeListener = noop;
82938process.removeAllListeners = noop;
82939process.emit = noop;
82940process.prependListener = noop;
82941process.prependOnceListener = noop;
82942
82943process.listeners = function (name) { return [] }
82944
82945process.binding = function (name) {
82946    throw new Error('process.binding is not supported');
82947};
82948
82949process.cwd = function () { return '/' };
82950process.chdir = function (dir) {
82951    throw new Error('process.chdir is not supported');
82952};
82953process.umask = function() { return 0; };
82954
82955
82956/***/ }),
82957
vendor: 77,383 bytes, lines 82958-82971
82958/***/ "./node_modules/select2/dist/js/select2.full.min.js":
82959/*!**********************************************************!*\
82960  !*** ./node_modules/select2/dist/js/select2.full.min.js ***!
82961  \**********************************************************/
82962/***/ ((module, exports, __webpack_require__) => {
82963
82964var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
82965!function(n){ true?!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (n),
82966		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
82967		(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
82968		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):0}(function(t){var e,n,p,o,r,h,f,g,m,v,y,s,i,_,a,a=((u=t&&t.fn&&t.fn.select2&&t.fn.select2.amd?t.fn.select2.amd:u)&&u.requirejs||(u?n=u:u={},g={},m={},v={},y={},s=Object.prototype.hasOwnProperty,i=[].slice,_=/\.js$/,h=function(e,t){var n,s,i=c(e),o=i[0],t=t[1];return e=i[1],o&&(n=x(o=l(o,t))),o?e=n&&n.normalize?n.normalize(e,(s=t,function(e){return l(e,s)})):l(e,t):(o=(i=c(e=l(e,t)))[0],e=i[1],o&&(n=x(o))),{f:o?o+"!"+e:e,n:e,pr:o,p:n}},f={require:function(e){return w(e)},exports:function(e){var t=g[e];return void 0!==t?t:g[e]={}},module:function(e){return{id:e,uri:"",exports:g[e],config:(t=e,function(){return v&&v.config&&v.config[t]||{}})};var t}},o=function(e,t,n,s){var i,o,r,a,l,c=[],u=typeof n,d=A(s=s||e);if("undefined"==u||"function"==u){for(t=!t.length&&n.length?["require","exports","module"]:t,a=0;a<t.length;a+=1)if("require"===(o=(r=h(t[a],d)).f))c[a]=f.require(e);else if("exports"===o)c[a]=f.exports(e),l=!0;else if("module"===o)i=c[a]=f.module(e);else if(b(g,o)||b(m,o)||b(y,o))c[a]=x(o);else{if(!r.p)throw new Error(e+" missing "+o);r.p.load(r.n,w(s,!0),function(t){return function(e){g[t]=e}}(o),{}),c[a]=g[o]}u=n?n.apply(g[e],c):void 0,e&&(i&&i.exports!==p&&i.exports!==g[e]?g[e]=i.exports:u===p&&l||(g[e]=u))}else e&&(g[e]=n)},e=n=r=function(e,t,n,s,i){if("string"==typeof e)return f[e]?f[e](t):x(h(e,A(t)).f);if(!e.splice){if((v=e).deps&&r(v.deps,v.callback),!t)return;t.splice?(e=t,t=n,n=null):e=p}return t=t||function(){},"function"==typeof n&&(n=s,s=i),s?o(p,e,t,n):setTimeout(function(){o(p,e,t,n)},4),r},r.config=function(e){return r(e)},e._defined=g,(a=function(e,t,n){if("string"!=typeof e)throw new Error("See almond README: incorrect module build, no module name");t.splice||(n=t,t=[]),b(g,e)||b(m,e)||(m[e]=[e,t,n])}).amd={jQuery:!0},u.requirejs=e,u.require=n,u.define=a),u.define("almond",function(){}),u.define("jquery",[],function(){var e=t||$;return null==e&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),e}),u.define("select2/utils",["jquery"],function(o){var s={};function c(e){var t,n=e.prototype,s=[];for(t in n)"function"==typeof n[t]&&"constructor"!==t&&s.push(t);return s}s.Extend=function(e,t){var n,s={}.hasOwnProperty;function i(){this.constructor=e}for(n in t)s.call(t,n)&&(e[n]=t[n]);return i.prototype=t.prototype,e.prototype=new i,e.__super__=t.prototype,e},s.Decorate=function(s,i){var e=c(i),t=c(s);function o(){var e=Array.prototype.unshift,t=i.prototype.constructor.length,n=s.prototype.constructor;0<t&&(e.call(arguments,s.prototype.constructor),n=i.prototype.constructor),n.apply(this,arguments)}i.displayName=s.displayName,o.prototype=new function(){this.constructor=o};for(var n=0;n<t.length;n++){var r=t[n];o.prototype[r]=s.prototype[r]}for(var a=0;a<e.length;a++){var l=e[a];o.prototype[l]=function(e){var t=function(){};e in o.prototype&&(t=o.prototype[e]);var n=i.prototype[e];return function(){return Array.prototype.unshift.call(arguments,t),n.apply(this,arguments)}}(l)}return o};function e(){this.listeners={}}e.prototype.on=function(e,t){this.listeners=this.listeners||{},e in this.listeners?this.listeners[e].push(t):this.listeners[e]=[t]},e.prototype.trigger=function(e){var t=Array.prototype.slice,n=t.call(arguments,1);this.listeners=this.listeners||{},0===(n=null==n?[]:n).length&&n.push({}),(n[0]._type=e)in this.listeners&&this.invoke(this.listeners[e],t.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},e.prototype.invoke=function(e,t){for(var n=0,s=e.length;n<s;n++)e[n].apply(this,t)},s.Observable=e,s.generateChars=function(e){for(var t="",n=0;n<e;n++)t+=Math.floor(36*Math.random()).toString(36);return t},s.bind=function(e,t){return function(){e.apply(t,arguments)}},s._convertData=function(e){for(var t in e){var n=t.split("-"),s=e;if(1!==n.length){for(var i=0;i<n.length;i++){var o=n[i];(o=o.substring(0,1).toLowerCase()+o.substring(1))in s||(s[o]={}),i==n.length-1&&(s[o]=e[t]),s=s[o]}delete e[t]}}return e},s.hasScroll=function(e,t){var n=o(t),s=t.style.overflowX,i=t.style.overflowY;return(s!==i||"hidden"!==i&&"visible"!==i)&&("scroll"===s||"scroll"===i||(n.innerHeight()<t.scrollHeight||n.innerWidth()<t.scrollWidth))},s.escapeMarkup=function(e){var t={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},s.__cache={};var n=0;return s.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null!=t||(t=e.id?"select2-data-"+e.id:"select2-data-"+(++n).toString()+"-"+s.generateChars(4),e.setAttribute("data-select2-id",t)),t},s.StoreData=function(e,t,n){e=s.GetUniqueElementId(e);s.__cache[e]||(s.__cache[e]={}),s.__cache[e][t]=n},s.GetData=function(e,t){var n=s.GetUniqueElementId(e);return t?s.__cache[n]&&null!=s.__cache[n][t]?s.__cache[n][t]:o(e).data(t):s.__cache[n]},s.RemoveData=function(e){var t=s.GetUniqueElementId(e);null!=s.__cache[t]&&delete s.__cache[t],e.removeAttribute("data-select2-id")},s.copyNonInternalCssClasses=function(e,t){var n=(n=e.getAttribute("class").trim().split(/\s+/)).filter(function(e){return 0===e.indexOf("select2-")}),t=(t=t.getAttribute("class").trim().split(/\s+/)).filter(function(e){return 0!==e.indexOf("select2-")}),t=n.concat(t);e.setAttribute("class",t.join(" "))},s}),u.define("select2/results",["jquery","./utils"],function(d,p){function s(e,t,n){this.$element=e,this.data=n,this.options=t,s.__super__.constructor.call(this)}return p.Extend(s,p.Observable),s.prototype.render=function(){var e=d('<ul class="select2-results__options" role="listbox"></ul>');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},s.prototype.clear=function(){this.$results.empty()},s.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=d('<li role="alert" aria-live="assertive" class="select2-results__option"></li>'),s=this.options.get("translations").get(e.message);n.append(t(s(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},s.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},s.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n<e.results.length;n++){var s=e.results[n],s=this.option(s);t.push(s)}this.$results.append(t)}else 0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"})},s.prototype.position=function(e,t){t.find(".select2-results").append(e)},s.prototype.sort=function(e){return this.options.get("sorter")(e)},s.prototype.highlightFirstItem=function(){var e=this.$results.find(".select2-results__option--selectable"),t=e.filter(".select2-results__option--selected");(0<t.length?t:e).first().trigger("mouseenter"),this.ensureHighlightVisible()},s.prototype.setClasses=function(){var t=this;this.data.current(function(e){var s=e.map(function(e){return e.id.toString()});t.$results.find(".select2-results__option--selectable").each(function(){var e=d(this),t=p.GetData(this,"data"),n=""+t.id;null!=t.element&&t.element.selected||null==t.element&&-1<s.indexOf(n)?(this.classList.add("select2-results__option--selected"),e.attr("aria-selected","true")):(this.classList.remove("select2-results__option--selected"),e.attr("aria-selected","false"))})})},s.prototype.showLoading=function(e){this.hideLoading();e={disabled:!0,loading:!0,text:this.options.get("translations").get("searching")(e)},e=this.option(e);e.className+=" loading-results",this.$results.prepend(e)},s.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},s.prototype.option=function(e){var t=document.createElement("li");t.classList.add("select2-results__option"),t.classList.add("select2-results__option--selectable");var n,s={role:"option"},i=window.Element.prototype.matches||window.Element.prototype.msMatchesSelector||window.Element.prototype.webkitMatchesSelector;for(n in(null!=e.element&&i.call(e.element,":disabled")||null==e.element&&e.disabled)&&(s["aria-disabled"]="true",t.classList.remove("select2-results__option--selectable"),t.classList.add("select2-results__option--disabled")),null==e.id&&t.classList.remove("select2-results__option--selectable"),null!=e._resultId&&(t.id=e._resultId),e.title&&(t.title=e.title),e.children&&(s.role="group",s["aria-label"]=e.text,t.classList.remove("select2-results__option--selectable"),t.classList.add("select2-results__option--group")),s){var o=s[n];t.setAttribute(n,o)}if(e.children){var r=d(t),a=document.createElement("strong");a.className="select2-results__group",this.template(e,a);for(var l=[],c=0;c<e.children.length;c++){var u=e.children[c],u=this.option(u);l.push(u)}i=d("<ul></ul>",{class:"select2-results__options select2-results__options--nested",role:"none"});i.append(l),r.append(a),r.append(i)}else this.template(e,t);return p.StoreData(t,"data",e),t},s.prototype.bind=function(t,e){var i=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){i.clear(),i.append(e.data),t.isOpen()&&(i.setClasses(),i.highlightFirstItem())}),t.on("results:append",function(e){i.append(e.data),t.isOpen()&&i.setClasses()}),t.on("query",function(e){i.hideMessages(),i.showLoading(e)}),t.on("select",function(){t.isOpen()&&(i.setClasses(),i.options.get("scrollAfterSelect")&&i.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(i.setClasses(),i.options.get("scrollAfterSelect")&&i.highlightFirstItem())}),t.on("open",function(){i.$results.attr("aria-expanded","true"),i.$results.attr("aria-hidden","false"),i.setClasses(),i.ensureHighlightVisible()}),t.on("close",function(){i.$results.attr("aria-expanded","false"),i.$results.attr("aria-hidden","true"),i.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=i.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e,t=i.getHighlightedResults();0!==t.length&&(e=p.GetData(t[0],"data"),t.hasClass("select2-results__option--selected")?i.trigger("close",{}):i.trigger("select",{data:e}))}),t.on("results:previous",function(){var e,t=i.getHighlightedResults(),n=i.$results.find(".select2-results__option--selectable"),s=n.index(t);s<=0||(e=s-1,0===t.length&&(e=0),(s=n.eq(e)).trigger("mouseenter"),t=i.$results.offset().top,n=s.offset().top,s=i.$results.scrollTop()+(n-t),0===e?i.$results.scrollTop(0):n-t<0&&i.$results.scrollTop(s))}),t.on("results:next",function(){var e,t=i.getHighlightedResults(),n=i.$results.find(".select2-results__option--selectable"),s=n.index(t)+1;s>=n.length||((e=n.eq(s)).trigger("mouseenter"),t=i.$results.offset().top+i.$results.outerHeight(!1),n=e.offset().top+e.outerHeight(!1),e=i.$results.scrollTop()+n-t,0===s?i.$results.scrollTop(0):t<n&&i.$results.scrollTop(e))}),t.on("results:focus",function(e){e.element[0].classList.add("select2-results__option--highlighted"),e.element[0].setAttribute("aria-selected","true")}),t.on("results:message",function(e){i.displayMessage(e)}),d.fn.mousewheel&&this.$results.on("mousewheel",function(e){var t=i.$results.scrollTop(),n=i.$results.get(0).scrollHeight-t+e.deltaY,t=0<e.deltaY&&t-e.deltaY<=0,n=e.deltaY<0&&n<=i.$results.height();t?(i.$results.scrollTop(0),e.preventDefault(),e.stopPropagation()):n&&(i.$results.scrollTop(i.$results.get(0).scrollHeight-i.$results.height()),e.preventDefault(),e.stopPropagation())}),this.$results.on("mouseup",".select2-results__option--selectable",function(e){var t=d(this),n=p.GetData(this,"data");t.hasClass("select2-results__option--selected")?i.options.get("multiple")?i.trigger("unselect",{originalEvent:e,data:n}):i.trigger("close",{}):i.trigger("select",{originalEvent:e,data:n})}),this.$results.on("mouseenter",".select2-results__option--selectable",function(e){var t=p.GetData(this,"data");i.getHighlightedResults().removeClass("select2-results__option--highlighted").attr("aria-selected","false"),i.trigger("results:focus",{data:t,element:d(this)})})},s.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},s.prototype.destroy=function(){this.$results.remove()},s.prototype.ensureHighlightVisible=function(){var e,t,n,s,i=this.getHighlightedResults();0!==i.length&&(e=this.$results.find(".select2-results__option--selectable").index(i),s=this.$results.offset().top,t=i.offset().top,n=this.$results.scrollTop()+(t-s),s=t-s,n-=2*i.outerHeight(!1),e<=2?this.$results.scrollTop(0):(s>this.$results.outerHeight()||s<0)&&this.$results.scrollTop(n))},s.prototype.template=function(e,t){var n=this.options.get("templateResult"),s=this.options.get("escapeMarkup"),e=n(e,t);null==e?t.style.display="none":"string"==typeof e?t.innerHTML=s(e):d(t).append(e)},s}),u.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),u.define("select2/selection/base",["jquery","../utils","../keys"],function(n,s,i){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return s.Extend(o,s.Observable),o.prototype.render=function(){var e=n('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=s.GetData(this.$element[0],"old-tabindex")?this._tabindex=s.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),e.attr("aria-disabled","false"),this.$selection=e},o.prototype.bind=function(e,t){var n=this,s=e.id+"-results";this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===i.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",s),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),n.$selection.trigger("focus"),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex),n.$selection.attr("aria-disabled","false")}),e.on("disable",function(){n.$selection.attr("tabindex","-1"),n.$selection.attr("aria-disabled","true")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){this!=t[0]&&s.GetData(this,"element").select2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o.prototype.isEnabled=function(){return!this.isDisabled()},o.prototype.isDisabled=function(){return this.options.get("disabled")},o}),u.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,s){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e[0].classList.add("select2-selection--single"),e.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),e},i.prototype.bind=function(t,e){var n=this;i.__super__.bind.apply(this,arguments);var s=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",s).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",s),this.$selection.attr("aria-controls",s),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.trigger("focus")})},i.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e("<span></span>")},i.prototype.update=function(e){var t,n;0!==e.length?(n=e[0],t=this.$selection.find(".select2-selection__rendered"),e=this.display(n,t),t.empty().append(e),(n=n.title||n.text)?t.attr("title",n):t.removeAttr("title")):this.clear()},i}),u.define("select2/selection/multiple",["jquery","./base","../utils"],function(i,e,c){function o(e,t){o.__super__.constructor.apply(this,arguments)}return c.Extend(o,e),o.prototype.render=function(){var e=o.__super__.render.call(this);return e[0].classList.add("select2-selection--multiple"),e.html('<ul class="select2-selection__rendered"></ul>'),e},o.prototype.bind=function(e,t){var n=this;o.__super__.bind.apply(this,arguments);var s=e.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",s),this.$selection.on("click",function(e){n.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){var t;n.isDisabled()||(t=i(this).parent(),t=c.GetData(t[0],"data"),n.trigger("unselect",{originalEvent:e,data:t}))}),this.$selection.on("keydown",".select2-selection__choice__remove",function(e){n.isDisabled()||e.stopPropagation()})},o.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},o.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},o.prototype.selectionContainer=function(){return i('<li class="select2-selection__choice"><button type="button" class="select2-selection__choice__remove" tabindex="-1"><span aria-hidden="true">&times;</span></button><span class="select2-selection__choice__display"></span></li>')},o.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=this.$selection.find(".select2-selection__rendered").attr("id")+"-choice-",s=0;s<e.length;s++){var i=e[s],o=this.selectionContainer(),r=this.display(i,o),a=n+c.generateChars(4)+"-";i.id?a+=i.id:a+=c.generateChars(4),o.find(".select2-selection__choice__display").append(r).attr("id",a);var l=i.title||i.text;l&&o.attr("title",l);r=this.options.get("translations").get("removeItem"),l=o.find(".select2-selection__choice__remove");l.attr("title",r()),l.attr("aria-label",r()),l.attr("aria-describedby",a),c.StoreData(o[0],"data",i),t.push(o)}this.$selection.find(".select2-selection__rendered").append(t)}},o}),u.define("select2/selection/placeholder",[],function(){function e(e,t,n){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n)}return e.prototype.normalizePlaceholder=function(e,t){return t="string"==typeof t?{id:"",text:t}:t},e.prototype.createPlaceholder=function(e,t){var n=this.selectionContainer();n.html(this.display(t)),n[0].classList.add("select2-selection__placeholder"),n[0].classList.remove("select2-selection__choice");t=t.title||t.text||n.text();return this.$selection.find(".select2-selection__rendered").attr("title",t),n},e.prototype.update=function(e,t){var n=1==t.length&&t[0].id!=this.placeholder.id;if(1<t.length||n)return e.call(this,t);this.clear();t=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(t)},e}),u.define("select2/selection/allowClear",["jquery","../keys","../utils"],function(i,s,a){function e(){}return e.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(e){s._handleClear(e)}),t.on("keypress",function(e){s._handleKeyboardClear(e,t)})},e.prototype._handleClear=function(e,t){if(!this.isDisabled()){var n=this.$selection.find(".select2-selection__clear");if(0!==n.length){t.stopPropagation();var s=a.GetData(n[0],"data"),i=this.$element.val();this.$element.val(this.placeholder.id);var o={data:s};if(this.trigger("clear",o),o.prevented)this.$element.val(i);else{for(var r=0;r<s.length;r++)if(o={data:s[r]},this.trigger("unselect",o),o.prevented)return void this.$element.val(i);this.$element.trigger("input").trigger("change"),this.trigger("toggle",{})}}}},e.prototype._handleKeyboardClear=function(e,t,n){n.isOpen()||t.which!=s.DELETE&&t.which!=s.BACKSPACE||this._handleClear(t)},e.prototype.update=function(e,t){var n,s;e.call(this,t),this.$selection.find(".select2-selection__clear").remove(),this.$selection[0].classList.remove("select2-selection--clearable"),0<this.$selection.find(".select2-selection__placeholder").length||0===t.length||(n=this.$selection.find(".select2-selection__rendered").attr("id"),s=this.options.get("translations").get("removeAllItems"),(e=i('<button type="button" class="select2-selection__clear" tabindex="-1"><span aria-hidden="true">&times;</span></button>')).attr("title",s()),e.attr("aria-label",s()),e.attr("aria-describedby",n),a.StoreData(e[0],"data",t),this.$selection.prepend(e),this.$selection[0].classList.add("select2-selection--clearable"))},e}),u.define("select2/selection/search",["jquery","../utils","../keys"],function(s,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=this.options.get("translations").get("search"),n=s('<span class="select2-search select2-search--inline"><textarea class="select2-search__field" type="search" tabindex="-1" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" ></textarea></span>');this.$searchContainer=n,this.$search=n.find("textarea"),this.$search.prop("autocomplete",this.options.get("autocomplete")),this.$search.attr("aria-label",t());e=e.call(this);return this._transferTabIndex(),e.append(this.$searchContainer),e},e.prototype.bind=function(e,t,n){var s=this,i=t.id+"-results",o=t.id+"-container";e.call(this,t,n),s.$search.attr("aria-describedby",o),t.on("open",function(){s.$search.attr("aria-controls",i),s.$search.trigger("focus")}),t.on("close",function(){s.$search.val(""),s.resizeSearch(),s.$search.removeAttr("aria-controls"),s.$search.removeAttr("aria-activedescendant"),s.$search.trigger("focus")}),t.on("enable",function(){s.$search.prop("disabled",!1),s._transferTabIndex()}),t.on("disable",function(){s.$search.prop("disabled",!0)}),t.on("focus",function(e){s.$search.trigger("focus")}),t.on("results:focus",function(e){e.data._resultId?s.$search.attr("aria-activedescendant",e.data._resultId):s.$search.removeAttr("aria-activedescendant")}),this.$selection.on("focusin",".select2-search--inline",function(e){s.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){s._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){var t;e.stopPropagation(),s.trigger("keypress",e),s._keyUpPrevented=e.isDefaultPrevented(),e.which!==l.BACKSPACE||""!==s.$search.val()||0<(t=s.$selection.find(".select2-selection__choice").last()).length&&(t=a.GetData(t[0],"data"),s.searchRemoveChoice(t),e.preventDefault())}),this.$selection.on("click",".select2-search--inline",function(e){s.$search.val()&&e.stopPropagation()});var t=document.documentMode,r=t&&t<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(e){r?s.$selection.off("input.search input.searchcheck"):s.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(e){var t;r&&"input"===e.type?s.$selection.off("input.search input.searchcheck"):(t=e.which)!=l.SHIFT&&t!=l.CTRL&&t!=l.ALT&&t!=l.TAB&&s.handleSearch(e)})},e.prototype._transferTabIndex=function(e){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},e.prototype.createPlaceholder=function(e,t){this.$search.attr("placeholder",t.text)},e.prototype.update=function(e,t){var n=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),e.call(this,t),this.resizeSearch(),n&&this.$search.trigger("focus")},e.prototype.handleSearch=function(){var e;this.resizeSearch(),this._keyUpPrevented||(e=this.$search.val(),this.trigger("query",{term:e})),this._keyUpPrevented=!1},e.prototype.searchRemoveChoice=function(e,t){this.trigger("unselect",{data:t}),this.$search.val(t.text),this.handleSearch()},e.prototype.resizeSearch=function(){this.$search.css("width","25px");var e="100%";""===this.$search.attr("placeholder")&&(e=.75*(this.$search.val().length+1)+"em"),this.$search.css("width",e)},e}),u.define("select2/selection/selectionCss",["../utils"],function(n){function e(){}return e.prototype.render=function(e){var t=e.call(this),e=this.options.get("selectionCssClass")||"";return-1!==e.indexOf(":all:")&&(e=e.replace(":all:",""),n.copyNonInternalCssClasses(t[0],this.$element[0])),t.addClass(e),t},e}),u.define("select2/selection/eventRelay",["jquery"],function(r){function e(){}return e.prototype.bind=function(e,t,n){var s=this,i=["open","opening","close","closing","select","selecting","unselect","unselecting","clear","clearing"],o=["opening","closing","selecting","unselecting","clearing"];e.call(this,t,n),t.on("*",function(e,t){var n;-1!==i.indexOf(e)&&(t=t||{},n=r.Event("select2:"+e,{params:t}),s.$element.trigger(n),-1!==o.indexOf(e)&&(t.prevented=n.isDefaultPrevented()))})},e}),u.define("select2/translation",["jquery","require"],function(t,n){function s(e){this.dict=e||{}}return s.prototype.all=function(){return this.dict},s.prototype.get=function(e){return this.dict[e]},s.prototype.extend=function(e){this.dict=t.extend({},e.all(),this.dict)},s._cache={},s.loadPath=function(e){var t;return e in s._cache||(t=n(e),s._cache[e]=t),new s(s._cache[e])},s}),u.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Œ":"OE","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","œ":"oe","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ώ":"ω","ς":"σ","’":"'"}}),u.define("select2/data/base",["../utils"],function(n){function s(e,t){s.__super__.constructor.call(this)}return n.Extend(s,n.Observable),s.prototype.current=function(e){throw new Error("The `current` method must be defined in child classes.")},s.prototype.query=function(e,t){throw new Error("The `query` method must be defined in child classes.")},s.prototype.bind=function(e,t){},s.prototype.destroy=function(){},s.prototype.generateResultId=function(e,t){e=e.id+"-result-";return e+=n.generateChars(4),null!=t.id?e+="-"+t.id.toString():e+="-"+n.generateChars(4),e},s}),u.define("select2/data/select",["./base","../utils","jquery"],function(e,a,l){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return a.Extend(n,e),n.prototype.current=function(e){var t=this;e(Array.prototype.map.call(this.$element[0].querySelectorAll(":checked"),function(e){return t.item(l(e))}))},n.prototype.select=function(i){var e,o=this;if(i.selected=!0,null!=i.element&&"option"===i.element.tagName.toLowerCase())return i.element.selected=!0,void this.$element.trigger("input").trigger("change");this.$element.prop("multiple")?this.current(function(e){var t=[];(i=[i]).push.apply(i,e);for(var n=0;n<i.length;n++){var s=i[n].id;-1===t.indexOf(s)&&t.push(s)}o.$element.val(t),o.$element.trigger("input").trigger("change")}):(e=i.id,this.$element.val(e),this.$element.trigger("input").trigger("change"))},n.prototype.unselect=function(i){var o=this;if(this.$element.prop("multiple")){if(i.selected=!1,null!=i.element&&"option"===i.element.tagName.toLowerCase())return i.element.selected=!1,void this.$element.trigger("input").trigger("change");this.current(function(e){for(var t=[],n=0;n<e.length;n++){var s=e[n].id;s!==i.id&&-1===t.indexOf(s)&&t.push(s)}o.$element.val(t),o.$element.trigger("input").trigger("change")})}},n.prototype.bind=function(e,t){var n=this;(this.container=e).on("select",function(e){n.select(e.data)}),e.on("unselect",function(e){n.unselect(e.data)})},n.prototype.destroy=function(){this.$element.find("*").each(function(){a.RemoveData(this)})},n.prototype.query=function(t,e){var n=[],s=this;this.$element.children().each(function(){var e;"option"!==this.tagName.toLowerCase()&&"optgroup"!==this.tagName.toLowerCase()||(e=l(this),e=s.item(e),null!==(e=s.matches(t,e))&&n.push(e))}),e({results:n})},n.prototype.addOptions=function(e){this.$element.append(e)},n.prototype.option=function(e){var t;e.children?(t=document.createElement("optgroup")).label=e.text:void 0!==(t=document.createElement("option")).textContent?t.textContent=e.text:t.innerText=e.text,void 0!==e.id&&(t.value=e.id),e.disabled&&(t.disabled=!0),e.selected&&(t.selected=!0),e.title&&(t.title=e.title);e=this._normalizeItem(e);return e.element=t,a.StoreData(t,"data",e),l(t)},n.prototype.item=function(e){var t={};if(null!=(t=a.GetData(e[0],"data")))return t;var n=e[0];if("option"===n.tagName.toLowerCase())t={id:e.val(),text:e.text(),disabled:e.prop("disabled"),selected:e.prop("selected"),title:e.prop("title")};else if("optgroup"===n.tagName.toLowerCase()){t={text:e.prop("label"),children:[],title:e.prop("title")};for(var s=e.children("option"),i=[],o=0;o<s.length;o++){var r=l(s[o]),r=this.item(r);i.push(r)}t.children=i}return(t=this._normalizeItem(t)).element=e[0],a.StoreData(e[0],"data",t),t},n.prototype._normalizeItem=function(e){e!==Object(e)&&(e={id:e,text:e});return null!=(e=l.extend({},{text:""},e)).id&&(e.id=e.id.toString()),null!=e.text&&(e.text=e.text.toString()),null==e._resultId&&e.id&&null!=this.container&&(e._resultId=this.generateResultId(this.container,e)),l.extend({},{selected:!1,disabled:!1},e)},n.prototype.matches=function(e,t){return this.options.get("matcher")(e,t)},n}),u.define("select2/data/array",["./select","../utils","jquery"],function(e,t,c){function s(e,t){this._dataToConvert=t.get("data")||[],s.__super__.constructor.call(this,e,t)}return t.Extend(s,e),s.prototype.bind=function(e,t){s.__super__.bind.call(this,e,t),this.addOptions(this.convertToOptions(this._dataToConvert))},s.prototype.select=function(n){var e=this.$element.find("option").filter(function(e,t){return t.value==n.id.toString()});0===e.length&&(e=this.option(n),this.addOptions(e)),s.__super__.select.call(this,n)},s.prototype.convertToOptions=function(e){var t=this,n=this.$element.find("option"),s=n.map(function(){return t.item(c(this)).id}).get(),i=[];for(var o=0;o<e.length;o++){var r,a,l=this._normalizeItem(e[o]);0<=s.indexOf(l.id)?(r=n.filter(function(e){return function(){return c(this).val()==e.id}}(l)),a=this.item(r),a=c.extend(!0,{},l,a),a=this.option(a),r.replaceWith(a)):(a=this.option(l),l.children&&(l=this.convertToOptions(l.children),a.append(l)),i.push(a))}return i},s}),u.define("select2/data/ajax",["./array","../utils","jquery"],function(e,t,o){function n(e,t){this.ajaxOptions=this._applyDefaults(t.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),n.__super__.constructor.call(this,e,t)}return t.Extend(n,e),n.prototype._applyDefaults=function(e){var t={data:function(e){return o.extend({},e,{q:e.term})},transport:function(e,t,n){e=o.ajax(e);return e.then(t),e.fail(n),e}};return o.extend({},t,e,!0)},n.prototype.processResults=function(e){return e},n.prototype.query=function(t,n){var s=this;null!=this._request&&("function"==typeof this._request.abort&&this._request.abort(),this._request=null);var i=o.extend({type:"GET"},this.ajaxOptions);function e(){var e=i.transport(i,function(e){e=s.processResults(e,t);s.options.get("debug")&&window.console&&console.error&&(e&&e.results&&Array.isArray(e.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),n(e)},function(){"status"in e&&(0===e.status||"0"===e.status)||s.trigger("results:message",{message:"errorLoading"})});s._request=e}"function"==typeof i.url&&(i.url=i.url.call(this.$element,t)),"function"==typeof i.data&&(i.data=i.data.call(this.$element,t)),this.ajaxOptions.delay&&null!=t.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(e,this.ajaxOptions.delay)):e()},n}),u.define("select2/data/tags",["jquery"],function(t){function e(e,t,n){var s=n.get("tags"),i=n.get("createTag");void 0!==i&&(this.createTag=i);i=n.get("insertTag");if(void 0!==i&&(this.insertTag=i),e.call(this,t,n),Array.isArray(s))for(var o=0;o<s.length;o++){var r=s[o],r=this._normalizeItem(r),r=this.option(r);this.$element.append(r)}}return e.prototype.query=function(e,c,u){var d=this;this._removeOldTags(),null!=c.term&&null==c.page?e.call(this,c,function e(t,n){for(var s=t.results,i=0;i<s.length;i++){var o=s[i],r=null!=o.children&&!e({results:o.children},!0);if((o.text||"").toUpperCase()===(c.term||"").toUpperCase()||r)return!n&&(t.data=s,void u(t))}if(n)return!0;var a,l=d.createTag(c);null!=l&&((a=d.option(l)).attr("data-select2-tag","true"),d.addOptions([a]),d.insertTag(s,l)),t.results=s,u(t)}):e.call(this,c,u)},e.prototype.createTag=function(e,t){if(null==t.term)return null;t=t.term.trim();return""===t?null:{id:t,text:t}},e.prototype.insertTag=function(e,t,n){t.unshift(n)},e.prototype._removeOldTags=function(e){this.$element.find("option[data-select2-tag]").each(function(){this.selected||t(this).remove()})},e}),u.define("select2/data/tokenizer",["jquery"],function(c){function e(e,t,n){var s=n.get("tokenizer");void 0!==s&&(this.tokenizer=s),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){e.call(this,t,n),this.$search=t.dropdown.$search||t.selection.$search||n.find(".select2-search__field")},e.prototype.query=function(e,t,n){var s=this;t.term=t.term||"";var i=this.tokenizer(t,this.options,function(e){var t,n=s._normalizeItem(e);s.$element.find("option").filter(function(){return c(this).val()===n.id}).length||((t=s.option(n)).attr("data-select2-tag",!0),s._removeOldTags(),s.addOptions([t])),t=n,s.trigger("select",{data:t})});i.term!==t.term&&(this.$search.length&&(this.$search.val(i.term),this.$search.trigger("focus")),t.term=i.term),e.call(this,t,n)},e.prototype.tokenizer=function(e,t,n,s){for(var i=n.get("tokenSeparators")||[],o=t.term,r=0,a=this.createTag||function(e){return{id:e.term,text:e.term}};r<o.length;){var l=o[r];-1!==i.indexOf(l)?(l=o.substr(0,r),null!=(l=a(c.extend({},t,{term:l})))?(s(l),o=o.substr(r+1)||"",r=0):r++):r++}return{term:o}},e}),u.define("select2/data/minimumInputLength",[],function(){function e(e,t,n){this.minimumInputLength=n.get("minimumInputLength"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||"",t.term.length<this.minimumInputLength?this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),u.define("select2/data/maximumInputLength",[],function(){function e(e,t,n){this.maximumInputLength=n.get("maximumInputLength"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||"",0<this.maximumInputLength&&t.term.length>this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),u.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),t.on("select",function(){s._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var s=this;this._checkIfMaximumSelected(function(){e.call(s,t,n)})},e.prototype._checkIfMaximumSelected=function(e,t){var n=this;this.current(function(e){e=null!=e?e.length:0;0<n.maximumSelectionLength&&e>=n.maximumSelectionLength?n.trigger("results:message",{message:"maximumSelected",args:{maximum:n.maximumSelectionLength}}):t&&t()})},e}),u.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('<span class="select2-dropdown"><span class="select2-results"></span></span>');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),u.define("select2/dropdown/search",["jquery"],function(o){function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get("translations").get("search"),e=o('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" /></span>');return this.$searchContainer=e,this.$search=e.find("input"),this.$search.prop("autocomplete",this.options.get("autocomplete")),this.$search.attr("aria-label",n()),t.prepend(e),t},e.prototype.bind=function(e,t,n){var s=this,i=t.id+"-results";e.call(this,t,n),this.$search.on("keydown",function(e){s.trigger("keypress",e),s._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){o(this).off("keyup")}),this.$search.on("keyup input",function(e){s.handleSearch(e)}),t.on("open",function(){s.$search.attr("tabindex",0),s.$search.attr("aria-controls",i),s.$search.trigger("focus"),window.setTimeout(function(){s.$search.trigger("focus")},0)}),t.on("close",function(){s.$search.attr("tabindex",-1),s.$search.removeAttr("aria-controls"),s.$search.removeAttr("aria-activedescendant"),s.$search.val(""),s.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||s.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(s.showSearch(e)?s.$searchContainer[0].classList.remove("select2-search--hide"):s.$searchContainer[0].classList.add("select2-search--hide"))}),t.on("results:focus",function(e){e.data._resultId?s.$search.attr("aria-activedescendant",e.data._resultId):s.$search.removeAttr("aria-activedescendant")})},e.prototype.handleSearch=function(e){var t;this._keyUpPrevented||(t=this.$search.val(),this.trigger("query",{term:t})),this._keyUpPrevented=!1},e.prototype.showSearch=function(e,t){return!0},e}),u.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,s){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,s)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return t="string"==typeof t?{id:"",text:t}:t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),s=t.length-1;0<=s;s--){var i=t[s];this.placeholder.id===i.id&&n.splice(s,1)}return n},e}),u.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,s){this.lastParams={},e.call(this,t,n,s),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),t.on("query",function(e){s.lastParams=e,s.loading=!0}),t.on("query:append",function(e){s.lastParams=e,s.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);!this.loading&&e&&(e=this.$results.offset().top+this.$results.outerHeight(!1),this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=e+50&&this.loadMore())},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('<li class="select2-results__option select2-results__option--load-more"role="option" aria-disabled="true"></li>'),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),u.define("select2/dropdown/attachBody",["jquery","../utils"],function(u,r){function e(e,t,n){this.$dropdownParent=u(n.get("dropdownParent")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),t.on("open",function(){s._showDropdown(),s._attachPositioningHandler(t),s._bindContainerResultHandlers(t)}),t.on("close",function(){s._hideDropdown(),s._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t[0].classList.remove("select2"),t[0].classList.add("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=u("<span></span>"),e=e.call(this);return t.append(e),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){var n;this._containerResultsHandlersBound||(n=this,t.on("results:all",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:append",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:message",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("select",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("unselect",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0)},e.prototype._attachPositioningHandler=function(e,t){var n=this,s="scroll.select2."+t.id,i="resize.select2."+t.id,o="orientationchange.select2."+t.id,t=this.$container.parents().filter(r.hasScroll);t.each(function(){r.StoreData(this,"select2-scroll-position",{x:u(this).scrollLeft(),y:u(this).scrollTop()})}),t.on(s,function(e){var t=r.GetData(this,"select2-scroll-position");u(this).scrollTop(t.y)}),u(window).on(s+" "+i+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,s="resize.select2."+t.id,t="orientationchange.select2."+t.id;this.$container.parents().filter(r.hasScroll).off(n),u(window).off(n+" "+s+" "+t)},e.prototype._positionDropdown=function(){var e=u(window),t=this.$dropdown[0].classList.contains("select2-dropdown--above"),n=this.$dropdown[0].classList.contains("select2-dropdown--below"),s=null,i=this.$container.offset();i.bottom=i.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=i.top,o.bottom=i.top+o.height;var r=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=a<i.top-r,e=l>i.bottom+r,a={left:i.left,top:o.bottom},l=this.$dropdownParent;"static"===l.css("position")&&(l=l.offsetParent());i={top:0,left:0};(u.contains(document.body,l[0])||l[0].isConnected)&&(i=l.offset()),a.top-=i.top,a.left-=i.left,t||n||(s="below"),e||!c||t?!c&&e&&t&&(s="below"):s="above",("above"==s||t&&"below"!==s)&&(a.top=o.top-i.top-r),null!=s&&(this.$dropdown[0].classList.remove("select2-dropdown--below"),this.$dropdown[0].classList.remove("select2-dropdown--above"),this.$dropdown[0].classList.add("select2-dropdown--"+s),this.$container[0].classList.remove("select2-container--below"),this.$container[0].classList.remove("select2-container--above"),this.$container[0].classList.add("select2-container--"+s)),this.$dropdownContainer.css(a)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),u.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,s){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,s)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,s=0;s<t.length;s++){var i=t[s];i.children?n+=e(i.children):n++}return n}(t.data.results)<this.minimumResultsForSearch)&&e.call(this,t)},e}),u.define("select2/dropdown/selectOnClose",["../utils"],function(s){function e(){}return e.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),t.on("close",function(e){s._handleSelectOnClose(e)})},e.prototype._handleSelectOnClose=function(e,t){if(t&&null!=t.originalSelect2Event){var n=t.originalSelect2Event;if("select"===n._type||"unselect"===n._type)return}n=this.getHighlightedResults();n.length<1||(null!=(n=s.GetData(n[0],"data")).element&&n.element.selected||null==n.element&&n.selected||this.trigger("select",{data:n}))},e}),u.define("select2/dropdown/closeOnSelect",[],function(){function e(){}return e.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),t.on("select",function(e){s._selectTriggered(e)}),t.on("unselect",function(e){s._selectTriggered(e)})},e.prototype._selectTriggered=function(e,t){var n=t.originalEvent;n&&(n.ctrlKey||n.metaKey)||this.trigger("close",{originalEvent:n,originalSelect2Event:t})},e}),u.define("select2/dropdown/dropdownCss",["../utils"],function(n){function e(){}return e.prototype.render=function(e){var t=e.call(this),e=this.options.get("dropdownCssClass")||"";return-1!==e.indexOf(":all:")&&(e=e.replace(":all:",""),n.copyNonInternalCssClasses(t[0],this.$element[0])),t.addClass(e),t},e}),u.define("select2/dropdown/tagsSearchHighlight",["../utils"],function(s){function e(){}return e.prototype.highlightFirstItem=function(e){var t=this.$results.find(".select2-results__option--selectable:not(.select2-results__option--selected)");if(0<t.length){var n=t.first(),t=s.GetData(n[0],"data").element;if(t&&t.getAttribute&&"true"===t.getAttribute("data-select2-tag"))return void n.trigger("mouseenter")}e.call(this)},e}),u.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,e="Please delete "+t+" character";return 1!=t&&(e+="s"),e},inputTooShort:function(e){return"Please enter "+(e.minimum-e.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return 1!=e.maximum&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"},removeItem:function(){return"Remove item"},search:function(){return"Search"}}}),u.define("select2/defaults",["jquery","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/selectionCss","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./dropdown/dropdownCss","./dropdown/tagsSearchHighlight","./i18n/en"],function(l,o,r,a,c,u,d,p,h,f,g,t,m,v,y,_,b,w,$,x,A,D,S,O,L,E,C,T,q,I,e){function n(){this.reset()}return n.prototype.apply=function(e){var t;null==(e=l.extend(!0,{},this.defaults,e)).dataAdapter&&(null!=e.ajax?e.dataAdapter=y:null!=e.data?e.dataAdapter=v:e.dataAdapter=m,0<e.minimumInputLength&&(e.dataAdapter=f.Decorate(e.dataAdapter,w)),0<e.maximumInputLength&&(e.dataAdapter=f.Decorate(e.dataAdapter,$)),0<e.maximumSelectionLength&&(e.dataAdapter=f.Decorate(e.dataAdapter,x)),e.tags&&(e.dataAdapter=f.Decorate(e.dataAdapter,_)),null==e.tokenSeparators&&null==e.tokenizer||(e.dataAdapter=f.Decorate(e.dataAdapter,b))),null==e.resultsAdapter&&(e.resultsAdapter=o,null!=e.ajax&&(e.resultsAdapter=f.Decorate(e.resultsAdapter,O)),null!=e.placeholder&&(e.resultsAdapter=f.Decorate(e.resultsAdapter,S)),e.selectOnClose&&(e.resultsAdapter=f.Decorate(e.resultsAdapter,C)),e.tags&&(e.resultsAdapter=f.Decorate(e.resultsAdapter,I))),null==e.dropdownAdapter&&(e.multiple?e.dropdownAdapter=A:(t=f.Decorate(A,D),e.dropdownAdapter=t),0!==e.minimumResultsForSearch&&(e.dropdownAdapter=f.Decorate(e.dropdownAdapter,E)),e.closeOnSelect&&(e.dropdownAdapter=f.Decorate(e.dropdownAdapter,T)),null!=e.dropdownCssClass&&(e.dropdownAdapter=f.Decorate(e.dropdownAdapter,q)),e.dropdownAdapter=f.Decorate(e.dropdownAdapter,L)),null==e.selectionAdapter&&(e.multiple?e.selectionAdapter=a:e.selectionAdapter=r,null!=e.placeholder&&(e.selectionAdapter=f.Decorate(e.selectionAdapter,c)),e.allowClear&&(e.selectionAdapter=f.Decorate(e.selectionAdapter,u)),e.multiple&&(e.selectionAdapter=f.Decorate(e.selectionAdapter,d)),null!=e.selectionCssClass&&(e.selectionAdapter=f.Decorate(e.selectionAdapter,p)),e.selectionAdapter=f.Decorate(e.selectionAdapter,h)),e.language=this._resolveLanguage(e.language),e.language.push("en");for(var n=[],s=0;s<e.language.length;s++){var i=e.language[s];-1===n.indexOf(i)&&n.push(i)}return e.language=n,e.translations=this._processTranslations(e.language,e.debug),e},n.prototype.reset=function(){function a(e){return e.replace(/[^\u0000-\u007E]/g,function(e){return t[e]||e})}this.defaults={amdLanguageBase:"./i18n/",autocomplete:"off",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:f.escapeMarkup,language:{},matcher:function e(t,n){if(null==t.term||""===t.term.trim())return n;if(n.children&&0<n.children.length){for(var s=l.extend(!0,{},n),i=n.children.length-1;0<=i;i--)null==e(t,n.children[i])&&s.children.splice(i,1);return 0<s.children.length?s:e(t,s)}var o=a(n.text).toUpperCase(),r=a(t.term).toUpperCase();return-1<o.indexOf(r)?n:null},minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,scrollAfterSelect:!1,sorter:function(e){return e},templateResult:function(e){return e.text},templateSelection:function(e){return e.text},theme:"default",width:"resolve"}},n.prototype.applyFromElement=function(e,t){var n=e.language,s=this.defaults.language,i=t.prop("lang"),t=t.closest("[lang]").prop("lang"),t=Array.prototype.concat.call(this._resolveLanguage(i),this._resolveLanguage(n),this._resolveLanguage(s),this._resolveLanguage(t));return e.language=t,e},n.prototype._resolveLanguage=function(e){if(!e)return[];if(l.isEmptyObject(e))return[];if(l.isPlainObject(e))return[e];for(var t,n=Array.isArray(e)?e:[e],s=[],i=0;i<n.length;i++)s.push(n[i]),"string"==typeof n[i]&&0<n[i].indexOf("-")&&(t=n[i].split("-")[0],s.push(t));return s},n.prototype._processTranslations=function(e,t){for(var n=new g,s=0;s<e.length;s++){var i=new g,o=e[s];if("string"==typeof o)try{i=g.loadPath(o)}catch(e){try{o=this.defaults.amdLanguageBase+o,i=g.loadPath(o)}catch(e){t&&window.console&&console.warn&&console.warn('Select2: The language file for "'+o+'" could not be automatically loaded. A fallback will be used instead.')}}else i=l.isPlainObject(o)?new g(o):o;n.extend(i)}return n},n.prototype.set=function(e,t){var n={};n[l.camelCase(e)]=t;n=f._convertData(n);l.extend(!0,this.defaults,n)},new n}),u.define("select2/options",["jquery","./defaults","./utils"],function(c,n,u){function e(e,t){this.options=e,null!=t&&this.fromElement(t),null!=t&&(this.options=n.applyFromElement(this.options,t)),this.options=n.apply(this.options)}return e.prototype.fromElement=function(e){var t=["select2"];null==this.options.multiple&&(this.options.multiple=e.prop("multiple")),null==this.options.disabled&&(this.options.disabled=e.prop("disabled")),null==this.options.autocomplete&&e.prop("autocomplete")&&(this.options.autocomplete=e.prop("autocomplete")),null==this.options.dir&&(e.prop("dir")?this.options.dir=e.prop("dir"):e.closest("[dir]").prop("dir")?this.options.dir=e.closest("[dir]").prop("dir"):this.options.dir="ltr"),e.prop("disabled",this.options.disabled),e.prop("multiple",this.options.multiple),u.GetData(e[0],"select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),u.StoreData(e[0],"data",u.GetData(e[0],"select2Tags")),u.StoreData(e[0],"tags",!0)),u.GetData(e[0],"ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),e.attr("ajax--url",u.GetData(e[0],"ajaxUrl")),u.StoreData(e[0],"ajax-Url",u.GetData(e[0],"ajaxUrl")));var n={};function s(e,t){return t.toUpperCase()}for(var i=0;i<e[0].attributes.length;i++){var o=e[0].attributes[i].name,r="data-";o.substr(0,r.length)==r&&(o=o.substring(r.length),r=u.GetData(e[0],o),n[o.replace(/-([a-z])/g,s)]=r)}c.fn.jquery&&"1."==c.fn.jquery.substr(0,2)&&e[0].dataset&&(n=c.extend(!0,{},e[0].dataset,n));var a,l=c.extend(!0,{},u.GetData(e[0]),n);for(a in l=u._convertData(l))-1<t.indexOf(a)||(c.isPlainObject(this.options[a])?c.extend(this.options[a],l[a]):this.options[a]=l[a]);return this},e.prototype.get=function(e){return this.options[e]},e.prototype.set=function(e,t){this.options[e]=t},e}),u.define("select2/core",["jquery","./options","./utils","./keys"],function(t,i,o,s){var r=function(e,t){null!=o.GetData(e[0],"select2")&&o.GetData(e[0],"select2").destroy(),this.$element=e,this.id=this._generateId(e),t=t||{},this.options=new i(t,e),r.__super__.constructor.call(this);var n=e.attr("tabindex")||0;o.StoreData(e[0],"old-tabindex",n),e.attr("tabindex","-1");t=this.options.get("dataAdapter");this.dataAdapter=new t(e,this.options);n=this.render();this._placeContainer(n);t=this.options.get("selectionAdapter");this.selection=new t(e,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,n);t=this.options.get("dropdownAdapter");this.dropdown=new t(e,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,n);n=this.options.get("resultsAdapter");this.results=new n(e,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var s=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(e){s.trigger("selection:update",{data:e})}),e[0].classList.add("select2-hidden-accessible"),e.attr("aria-hidden","true"),this._syncAttributes(),o.StoreData(e[0],"select2",this),e.data("select2",this)};return o.Extend(r,o.Observable),r.prototype._generateId=function(e){return"select2-"+(null!=e.attr("id")?e.attr("id"):null!=e.attr("name")?e.attr("name")+"-"+o.generateChars(2):o.generateChars(4)).replace(/(:|\.|\[|\]|,)/g,"")},r.prototype._placeContainer=function(e){e.insertAfter(this.$element);var t=this._resolveWidth(this.$element,this.options.get("width"));null!=t&&e.css("width",t)},r.prototype._resolveWidth=function(e,t){var n=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==t){var s=this._resolveWidth(e,"style");return null!=s?s:this._resolveWidth(e,"element")}if("element"==t){s=e.outerWidth(!1);return s<=0?"auto":s+"px"}if("style"!=t)return"computedstyle"!=t?t:window.getComputedStyle(e[0]).width;e=e.attr("style");if("string"!=typeof e)return null;for(var i=e.split(";"),o=0,r=i.length;o<r;o+=1){var a=i[o].replace(/\s/g,"").match(n);if(null!==a&&1<=a.length)return a[1]}return null},r.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},r.prototype._registerDomEvents=function(){var t=this;this.$element.on("change.select2",function(){t.dataAdapter.current(function(e){t.trigger("selection:update",{data:e})})}),this.$element.on("focus.select2",function(e){t.trigger("focus",e)}),this._syncA=o.bind(this._syncAttributes,this),this._syncS=o.bind(this._syncSubtree,this),this._observer=new window.MutationObserver(function(e){t._syncA(),t._syncS(e)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})},r.prototype._registerDataEvents=function(){var n=this;this.dataAdapter.on("*",function(e,t){n.trigger(e,t)})},r.prototype._registerSelectionEvents=function(){var n=this,s=["toggle","focus"];this.selection.on("toggle",function(){n.toggleDropdown()}),this.selection.on("focus",function(e){n.focus(e)}),this.selection.on("*",function(e,t){-1===s.indexOf(e)&&n.trigger(e,t)})},r.prototype._registerDropdownEvents=function(){var n=this;this.dropdown.on("*",function(e,t){n.trigger(e,t)})},r.prototype._registerResultsEvents=function(){var n=this;this.results.on("*",function(e,t){n.trigger(e,t)})},r.prototype._registerEvents=function(){var n=this;this.on("open",function(){n.$container[0].classList.add("select2-container--open")}),this.on("close",function(){n.$container[0].classList.remove("select2-container--open")}),this.on("enable",function(){n.$container[0].classList.remove("select2-container--disabled")}),this.on("disable",function(){n.$container[0].classList.add("select2-container--disabled")}),this.on("blur",function(){n.$container[0].classList.remove("select2-container--focus")}),this.on("query",function(t){n.isOpen()||n.trigger("open",{}),this.dataAdapter.query(t,function(e){n.trigger("results:all",{data:e,query:t})})}),this.on("query:append",function(t){this.dataAdapter.query(t,function(e){n.trigger("results:append",{data:e,query:t})})}),this.on("keypress",function(e){var t=e.which;n.isOpen()?t===s.ESC||t===s.UP&&e.altKey?(n.close(e),e.preventDefault()):t===s.ENTER||t===s.TAB?(n.trigger("results:select",{}),e.preventDefault()):t===s.SPACE&&e.ctrlKey?(n.trigger("results:toggle",{}),e.preventDefault()):t===s.UP?(n.trigger("results:previous",{}),e.preventDefault()):t===s.DOWN&&(n.trigger("results:next",{}),e.preventDefault()):(t===s.ENTER||t===s.SPACE||t===s.DOWN&&e.altKey)&&(n.open(),e.preventDefault())})},r.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.isDisabled()?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},r.prototype._isChangeMutation=function(e){var t=this;if(e.addedNodes&&0<e.addedNodes.length){for(var n=0;n<e.addedNodes.length;n++)if(e.addedNodes[n].selected)return!0}else{if(e.removedNodes&&0<e.removedNodes.length)return!0;if(Array.isArray(e))return e.some(function(e){return t._isChangeMutation(e)})}return!1},r.prototype._syncSubtree=function(e){var e=this._isChangeMutation(e),t=this;e&&this.dataAdapter.current(function(e){t.trigger("selection:update",{data:e})})},r.prototype.trigger=function(e,t){var n=r.__super__.trigger,s={open:"opening",close:"closing",select:"selecting",unselect:"unselecting",clear:"clearing"};if(void 0===t&&(t={}),e in s){var i=s[e],s={prevented:!1,name:e,args:t};if(n.call(this,i,s),s.prevented)return void(t.prevented=!0)}n.call(this,e,t)},r.prototype.toggleDropdown=function(){this.isDisabled()||(this.isOpen()?this.close():this.open())},r.prototype.open=function(){this.isOpen()||this.isDisabled()||this.trigger("query",{})},r.prototype.close=function(e){this.isOpen()&&this.trigger("close",{originalEvent:e})},r.prototype.isEnabled=function(){return!this.isDisabled()},r.prototype.isDisabled=function(){return this.options.get("disabled")},r.prototype.isOpen=function(){return this.$container[0].classList.contains("select2-container--open")},r.prototype.hasFocus=function(){return this.$container[0].classList.contains("select2-container--focus")},r.prototype.focus=function(e){this.hasFocus()||(this.$container[0].classList.add("select2-container--focus"),this.trigger("focus",{}))},r.prototype.enable=function(e){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.');e=!(e=null==e||0===e.length?[!0]:e)[0];this.$element.prop("disabled",e)},r.prototype.data=function(){this.options.get("debug")&&0<arguments.length&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var t=[];return this.dataAdapter.current(function(e){t=e}),t},r.prototype.val=function(e){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==e||0===e.length)return this.$element.val();e=e[0];Array.isArray(e)&&(e=e.map(function(e){return e.toString()})),this.$element.val(e).trigger("input").trigger("change")},r.prototype.destroy=function(){o.RemoveData(this.$container[0]),this.$container.remove(),this._observer.disconnect(),this._observer=null,this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",o.GetData(this.$element[0],"old-tabindex")),this.$element[0].classList.remove("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),o.RemoveData(this.$element[0]),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},r.prototype.render=function(){var e=t('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container[0].classList.add("select2-container--"+this.options.get("theme")),o.StoreData(e[0],"element",this.$element),e},r}),u.define("select2/dropdown/attachContainer",[],function(){function e(e,t,n){e.call(this,t,n)}return e.prototype.position=function(e,t,n){n.find(".dropdown-wrapper").append(t),t[0].classList.add("select2-dropdown--below"),n[0].classList.add("select2-container--below")},e}),u.define("select2/dropdown/stopPropagation",[],function(){function e(){}return e.prototype.bind=function(e,t,n){e.call(this,t,n);this.$dropdown.on(["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"].join(" "),function(e){e.stopPropagation()})},e}),u.define("select2/selection/stopPropagation",[],function(){function e(){}return e.prototype.bind=function(e,t,n){e.call(this,t,n);this.$selection.on(["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"].join(" "),function(e){e.stopPropagation()})},e}),a=function(u){var d,p,e=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],t="onwheel"in document||9<=document.documentMode?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],h=Array.prototype.slice;if(u.event.fixHooks)for(var n=e.length;n;)u.event.fixHooks[e[--n]]=u.event.mouseHooks;var f=u.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var e=t.length;e;)this.addEventListener(t[--e],s,!1);else this.onmousewheel=s;u.data(this,"mousewheel-line-height",f.getLineHeight(this)),u.data(this,"mousewheel-page-height",f.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var e=t.length;e;)this.removeEventListener(t[--e],s,!1);else this.onmousewheel=null;u.removeData(this,"mousewheel-line-height"),u.removeData(this,"mousewheel-page-height")},getLineHeight:function(e){var t=u(e),e=t["offsetParent"in u.fn?"offsetParent":"parent"]();return e.length||(e=u("body")),parseInt(e.css("fontSize"),10)||parseInt(t.css("fontSize"),10)||16},getPageHeight:function(e){return u(e).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};function s(e){var t,n=e||window.event,s=h.call(arguments,1),i=0,o=0,r=0,a=0,l=0,c=0;if(e=u.event.fix(n),e.type="mousewheel","detail"in n&&(r=-1*n.detail),"wheelDelta"in n&&(r=n.wheelDelta),"wheelDeltaY"in n&&(r=n.wheelDeltaY),"wheelDeltaX"in n&&(o=-1*n.wheelDeltaX),"axis"in n&&n.axis===n.HORIZONTAL_AXIS&&(o=-1*r,r=0),i=0===r?o:r,"deltaY"in n&&(i=r=-1*n.deltaY),"deltaX"in n&&(o=n.deltaX,0===r&&(i=-1*o)),0!==r||0!==o)return 1===n.deltaMode?(i*=t=u.data(this,"mousewheel-line-height"),r*=t,o*=t):2===n.deltaMode&&(i*=t=u.data(this,"mousewheel-page-height"),r*=t,o*=t),a=Math.max(Math.abs(r),Math.abs(o)),(!p||a<p)&&m(n,p=a)&&(p/=40),m(n,a)&&(i/=40,o/=40,r/=40),i=Math[1<=i?"floor":"ceil"](i/p),o=Math[1<=o?"floor":"ceil"](o/p),r=Math[1<=r?"floor":"ceil"](r/p),f.settings.normalizeOffset&&this.getBoundingClientRect&&(a=this.getBoundingClientRect(),l=e.clientX-a.left,c=e.clientY-a.top),e.deltaX=o,e.deltaY=r,e.deltaFactor=p,e.offsetX=l,e.offsetY=c,e.deltaMode=0,s.unshift(e,i,o,r),d&&clearTimeout(d),d=setTimeout(g,200),(u.event.dispatch||u.event.handle).apply(this,s)}function g(){p=null}function m(e,t){return f.settings.adjustOldDeltas&&"mousewheel"===e.type&&t%120==0}u.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})},"function"==typeof u.define&&u.define.amd?u.define("jquery-mousewheel",["jquery"],a): true?module.exports=a:0,u.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(i,e,o,t,r){var a;return null==i.fn.select2&&(a=["open","close","destroy"],i.fn.select2=function(t){if("object"==typeof(t=t||{}))return this.each(function(){var e=i.extend(!0,{},t);new o(i(this),e)}),this;if("string"!=typeof t)throw new Error("Invalid arguments for Select2: "+t);var n,s=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=r.GetData(this,"select2");null==e&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2."),n=e[t].apply(e,s)}),-1<a.indexOf(t)?this:n}),null==i.fn.select2.defaults&&(i.fn.select2.defaults=t),o}),{define:u.define,require:u.require});function b(e,t){return s.call(e,t)}function l(e,t){var n,s,i,o,r,a,l,c,u,d,p=t&&t.split("/"),h=v.map,f=h&&h["*"]||{};if(e){for(t=(e=e.split("/")).length-1,v.nodeIdCompat&&_.test(e[t])&&(e[t]=e[t].replace(_,"")),"."===e[0].charAt(0)&&p&&(e=p.slice(0,p.length-1).concat(e)),c=0;c<e.length;c++)"."===(d=e[c])?(e.splice(c,1),--c):".."===d&&(0===c||1===c&&".."===e[2]||".."===e[c-1]||0<c&&(e.splice(c-1,2),c-=2));e=e.join("/")}if((p||f)&&h){for(c=(n=e.split("/")).length;0<c;--c){if(s=n.slice(0,c).join("/"),p)for(u=p.length;0<u;--u)if(i=h[p.slice(0,u).join("/")],i=i&&i[s]){o=i,r=c;break}if(o)break;!a&&f&&f[s]&&(a=f[s],l=c)}!o&&a&&(o=a,r=l),o&&(n.splice(0,r,o),e=n.join("/"))}return e}function w(t,n){return function(){var e=i.call(arguments,0);return"string"!=typeof e[0]&&1===e.length&&e.push(null),r.apply(p,e.concat([t,n]))}}function x(e){var t;if(b(m,e)&&(t=m[e],delete m[e],y[e]=!0,o.apply(p,t)),!b(g,e)&&!b(y,e))throw new Error("No "+e);return g[e]}function c(e){var t,n=e?e.indexOf("!"):-1;return-1<n&&(t=e.substring(0,n),e=e.substring(n+1,e.length)),[t,e]}function A(e){return e?c(e):[]}var u=a.require("jquery.select2");return t.fn.select2.amd=a,u});
82969
82970/***/ }),
82971
vendor: 20,056 bytes, lines 82972-83628
82972/***/ "./node_modules/smooth-scroll/dist/smooth-scroll.js":
82973/*!**********************************************************!*\
82974  !*** ./node_modules/smooth-scroll/dist/smooth-scroll.js ***!
82975  \**********************************************************/
82976/***/ (function(module, exports, __webpack_require__) {
82977
82978var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
82979 * smooth-scroll v16.1.3
82980 * Animate scrolling to anchor links
82981 * (c) 2020 Chris Ferdinandi
82982 * MIT License
82983 * http://github.com/cferdinandi/smooth-scroll
82984 */
82985
82986(function (root, factory) {
82987	if (true) {
82988		!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
82989			return factory(root);
82990		}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
82991		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
82992	} else {}
82993})(typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof window !== 'undefined' ? window : this, (function (window) {
82994
82995	'use strict';
82996
82997	//
82998	// Default settings
82999	//
83000
83001	var defaults = {
83002
83003		// Selectors
83004		ignore: '[data-scroll-ignore]',
83005		header: null,
83006		topOnEmptyHash: true,
83007
83008		// Speed & Duration
83009		speed: 500,
83010		speedAsDuration: false,
83011		durationMax: null,
83012		durationMin: null,
83013		clip: true,
83014		offset: 0,
83015
83016		// Easing
83017		easing: 'easeInOutCubic',
83018		customEasing: null,
83019
83020		// History
83021		updateURL: true,
83022		popstate: true,
83023
83024		// Custom Events
83025		emitEvents: true
83026
83027	};
83028
83029
83030	//
83031	// Utility Methods
83032	//
83033
83034	/**
83035	 * Check if browser supports required methods
83036	 * @return {Boolean} Returns true if all required methods are supported
83037	 */
83038	var supports = function () {
83039		return (
83040			'querySelector' in document &&
83041			'addEventListener' in window &&
83042			'requestAnimationFrame' in window &&
83043			'closest' in window.Element.prototype
83044		);
83045	};
83046
83047	/**
83048	 * Merge two or more objects together.
83049	 * @param   {Object}   objects  The objects to merge together
83050	 * @returns {Object}            Merged values of defaults and options
83051	 */
83052	var extend = function () {
83053		var merged = {};
83054		Array.prototype.forEach.call(arguments, (function (obj) {
83055			for (var key in obj) {
83056				if (!obj.hasOwnProperty(key)) return;
83057				merged[key] = obj[key];
83058			}
83059		}));
83060		return merged;
83061	};
83062
83063	/**
83064	 * Check to see if user prefers reduced motion
83065	 * @param  {Object} settings Script settings
83066	 */
83067	var reduceMotion = function () {
83068		if ('matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches) {
83069			return true;
83070		}
83071		return false;
83072	};
83073
83074	/**
83075	 * Get the height of an element.
83076	 * @param  {Node} elem The element to get the height of
83077	 * @return {Number}    The element's height in pixels
83078	 */
83079	var getHeight = function (elem) {
83080		return parseInt(window.getComputedStyle(elem).height, 10);
83081	};
83082
83083	/**
83084	 * Escape special characters for use with querySelector
83085	 * @author Mathias Bynens
83086	 * @link https://github.com/mathiasbynens/CSS.escape
83087	 * @param {String} id The anchor ID to escape
83088	 */
83089	var escapeCharacters = function (id) {
83090
83091		// Remove leading hash
83092		if (id.charAt(0) === '#') {
83093			id = id.substr(1);
83094		}
83095
83096		var string = String(id);
83097		var length = string.length;
83098		var index = -1;
83099		var codeUnit;
83100		var result = '';
83101		var firstCodeUnit = string.charCodeAt(0);
83102		while (++index < length) {
83103			codeUnit = string.charCodeAt(index);
83104			// Note: there’s no need to special-case astral symbols, surrogate
83105			// pairs, or lone surrogates.
83106
83107			// If the character is NULL (U+0000), then throw an
83108			// `InvalidCharacterError` exception and terminate these steps.
83109			if (codeUnit === 0x0000) {
83110				throw new InvalidCharacterError(
83111					'Invalid character: the input contains U+0000.'
83112				);
83113			}
83114
83115			if (
83116				// If the character is in the range [\1-\1F] (U+0001 to U+001F) or is
83117				// U+007F, […]
83118				(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||
83119				// If the character is the first character and is in the range [0-9]
83120				// (U+0030 to U+0039), […]
83121				(index === 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||
83122				// If the character is the second character and is in the range [0-9]
83123				// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]
83124				(
83125					index === 1 &&
83126					codeUnit >= 0x0030 && codeUnit <= 0x0039 &&
83127					firstCodeUnit === 0x002D
83128				)
83129			) {
83130				// http://dev.w3.org/csswg/cssom/#escape-a-character-as-code-point
83131				result += '\\' + codeUnit.toString(16) + ' ';
83132				continue;
83133			}
83134
83135			// If the character is not handled by one of the above rules and is
83136			// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or
83137			// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to
83138			// U+005A), or [a-z] (U+0061 to U+007A), […]
83139			if (
83140				codeUnit >= 0x0080 ||
83141				codeUnit === 0x002D ||
83142				codeUnit === 0x005F ||
83143				codeUnit >= 0x0030 && codeUnit <= 0x0039 ||
83144				codeUnit >= 0x0041 && codeUnit <= 0x005A ||
83145				codeUnit >= 0x0061 && codeUnit <= 0x007A
83146			) {
83147				// the character itself
83148				result += string.charAt(index);
83149				continue;
83150			}
83151
83152			// Otherwise, the escaped character.
83153			// http://dev.w3.org/csswg/cssom/#escape-a-character
83154			result += '\\' + string.charAt(index);
83155
83156		}
83157
83158		// Return sanitized hash
83159		return '#' + result;
83160
83161	};
83162
83163	/**
83164	 * Calculate the easing pattern
83165	 * @link https://gist.github.com/gre/1650294
83166	 * @param {String} type Easing pattern
83167	 * @param {Number} time Time animation should take to complete
83168	 * @returns {Number}
83169	 */
83170	var easingPattern = function (settings, time) {
83171		var pattern;
83172
83173		// Default Easing Patterns
83174		if (settings.easing === 'easeInQuad') pattern = time * time; // accelerating from zero velocity
83175		if (settings.easing === 'easeOutQuad') pattern = time * (2 - time); // decelerating to zero velocity
83176		if (settings.easing === 'easeInOutQuad') pattern = time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration
83177		if (settings.easing === 'easeInCubic') pattern = time * time * time; // accelerating from zero velocity
83178		if (settings.easing === 'easeOutCubic') pattern = (--time) * time * time + 1; // decelerating to zero velocity
83179		if (settings.easing === 'easeInOutCubic') pattern = time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration
83180		if (settings.easing === 'easeInQuart') pattern = time * time * time * time; // accelerating from zero velocity
83181		if (settings.easing === 'easeOutQuart') pattern = 1 - (--time) * time * time * time; // decelerating to zero velocity
83182		if (settings.easing === 'easeInOutQuart') pattern = time < 0.5 ? 8 * time * time * time * time : 1 - 8 * (--time) * time * time * time; // acceleration until halfway, then deceleration
83183		if (settings.easing === 'easeInQuint') pattern = time * time * time * time * time; // accelerating from zero velocity
83184		if (settings.easing === 'easeOutQuint') pattern = 1 + (--time) * time * time * time * time; // decelerating to zero velocity
83185		if (settings.easing === 'easeInOutQuint') pattern = time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * (--time) * time * time * time * time; // acceleration until halfway, then deceleration
83186
83187		// Custom Easing Patterns
83188		if (!!settings.customEasing) pattern = settings.customEasing(time);
83189
83190		return pattern || time; // no easing, no acceleration
83191	};
83192
83193	/**
83194	 * Determine the document's height
83195	 * @returns {Number}
83196	 */
83197	var getDocumentHeight = function () {
83198		return Math.max(
83199			document.body.scrollHeight, document.documentElement.scrollHeight,
83200			document.body.offsetHeight, document.documentElement.offsetHeight,
83201			document.body.clientHeight, document.documentElement.clientHeight
83202		);
83203	};
83204
83205	/**
83206	 * Calculate how far to scroll
83207	 * Clip support added by robjtede - https://github.com/cferdinandi/smooth-scroll/issues/405
83208	 * @param {Element} anchor       The anchor element to scroll to
83209	 * @param {Number}  headerHeight Height of a fixed header, if any
83210	 * @param {Number}  offset       Number of pixels by which to offset scroll
83211	 * @param {Boolean} clip         If true, adjust scroll distance to prevent abrupt stops near the bottom of the page
83212	 * @returns {Number}
83213	 */
83214	var getEndLocation = function (anchor, headerHeight, offset, clip) {
83215		var location = 0;
83216		if (anchor.offsetParent) {
83217			do {
83218				location += anchor.offsetTop;
83219				anchor = anchor.offsetParent;
83220			} while (anchor);
83221		}
83222		location = Math.max(location - headerHeight - offset, 0);
83223		if (clip) {
83224			location = Math.min(location, getDocumentHeight() - window.innerHeight);
83225		}
83226 		return location;
83227	};
83228
83229	/**
83230	 * Get the height of the fixed header
83231	 * @param  {Node}   header The header
83232	 * @return {Number}        The height of the header
83233	 */
83234	var getHeaderHeight = function (header) {
83235		return !header ? 0 : (getHeight(header) + header.offsetTop);
83236	};
83237
83238	/**
83239	 * Calculate the speed to use for the animation
83240	 * @param  {Number} distance The distance to travel
83241	 * @param  {Object} settings The plugin settings
83242	 * @return {Number}          How fast to animate
83243	 */
83244	var getSpeed = function (distance, settings) {
83245		var speed = settings.speedAsDuration ? settings.speed : Math.abs(distance / 1000 * settings.speed);
83246		if (settings.durationMax && speed > settings.durationMax) return settings.durationMax;
83247		if (settings.durationMin && speed < settings.durationMin) return settings.durationMin;
83248		return parseInt(speed, 10);
83249	};
83250
83251	var setHistory = function (options) {
83252
83253		// Make sure this should run
83254		if (!history.replaceState || !options.updateURL || history.state) return;
83255
83256		// Get the hash to use
83257		var hash = window.location.hash;
83258		hash = hash ? hash : '';
83259
83260		// Set a default history
83261		history.replaceState(
83262			{
83263				smoothScroll: JSON.stringify(options),
83264				anchor: hash ? hash : window.pageYOffset
83265			},
83266			document.title,
83267			hash ? hash : window.location.href
83268		);
83269
83270	};
83271
83272	/**
83273	 * Update the URL
83274	 * @param  {Node}    anchor  The anchor that was scrolled to
83275	 * @param  {Boolean} isNum   If true, anchor is a number
83276	 * @param  {Object}  options Settings for Smooth Scroll
83277	 */
83278	var updateURL = function (anchor, isNum, options) {
83279
83280		// Bail if the anchor is a number
83281		if (isNum) return;
83282
83283		// Verify that pushState is supported and the updateURL option is enabled
83284		if (!history.pushState || !options.updateURL) return;
83285
83286		// Update URL
83287		history.pushState(
83288			{
83289				smoothScroll: JSON.stringify(options),
83290				anchor: anchor.id
83291			},
83292			document.title,
83293			anchor === document.documentElement ? '#top' : '#' + anchor.id
83294		);
83295
83296	};
83297
83298	/**
83299	 * Bring the anchored element into focus
83300	 * @param {Node}     anchor      The anchor element
83301	 * @param {Number}   endLocation The end location to scroll to
83302	 * @param {Boolean}  isNum       If true, scroll is to a position rather than an element
83303	 */
83304	var adjustFocus = function (anchor, endLocation, isNum) {
83305
83306		// Is scrolling to top of page, blur
83307		if (anchor === 0) {
83308			document.body.focus();
83309		}
83310
83311		// Don't run if scrolling to a number on the page
83312		if (isNum) return;
83313
83314		// Otherwise, bring anchor element into focus
83315		anchor.focus();
83316		if (document.activeElement !== anchor) {
83317			anchor.setAttribute('tabindex', '-1');
83318			anchor.focus();
83319			anchor.style.outline = 'none';
83320		}
83321		window.scrollTo(0 , endLocation);
83322
83323	};
83324
83325	/**
83326	 * Emit a custom event
83327	 * @param  {String} type    The event type
83328	 * @param  {Object} options The settings object
83329	 * @param  {Node}   anchor  The anchor element
83330	 * @param  {Node}   toggle  The toggle element
83331	 */
83332	var emitEvent = function (type, options, anchor, toggle) {
83333		if (!options.emitEvents || typeof window.CustomEvent !== 'function') return;
83334		var event = new CustomEvent(type, {
83335			bubbles: true,
83336			detail: {
83337				anchor: anchor,
83338				toggle: toggle
83339			}
83340		});
83341		document.dispatchEvent(event);
83342	};
83343
83344
83345	//
83346	// SmoothScroll Constructor
83347	//
83348
83349	var SmoothScroll = function (selector, options) {
83350
83351		//
83352		// Variables
83353		//
83354
83355		var smoothScroll = {}; // Object for public APIs
83356		var settings, anchor, toggle, fixedHeader, eventTimeout, animationInterval;
83357
83358
83359		//
83360		// Methods
83361		//
83362
83363		/**
83364		 * Cancel a scroll-in-progress
83365		 */
83366		smoothScroll.cancelScroll = function (noEvent) {
83367			cancelAnimationFrame(animationInterval);
83368			animationInterval = null;
83369			if (noEvent) return;
83370			emitEvent('scrollCancel', settings);
83371		};
83372
83373		/**
83374		 * Start/stop the scrolling animation
83375		 * @param {Node|Number} anchor  The element or position to scroll to
83376		 * @param {Element}     toggle  The element that toggled the scroll event
83377		 * @param {Object}      options
83378		 */
83379		smoothScroll.animateScroll = function (anchor, toggle, options) {
83380
83381			// Cancel any in progress scrolls
83382			smoothScroll.cancelScroll();
83383
83384			// Local settings
83385			var _settings = extend(settings || defaults, options || {}); // Merge user options with defaults
83386
83387			// Selectors and variables
83388			var isNum = Object.prototype.toString.call(anchor) === '[object Number]' ? true : false;
83389			var anchorElem = isNum || !anchor.tagName ? null : anchor;
83390			if (!isNum && !anchorElem) return;
83391			var startLocation = window.pageYOffset; // Current location on the page
83392			if (_settings.header && !fixedHeader) {
83393				// Get the fixed header if not already set
83394				fixedHeader = document.querySelector(_settings.header);
83395			}
83396			var headerHeight = getHeaderHeight(fixedHeader);
83397			var endLocation = isNum ? anchor : getEndLocation(anchorElem, headerHeight, parseInt((typeof _settings.offset === 'function' ? _settings.offset(anchor, toggle) : _settings.offset), 10), _settings.clip); // Location to scroll to
83398			var distance = endLocation - startLocation; // distance to travel
83399			var documentHeight = getDocumentHeight();
83400			var timeLapsed = 0;
83401			var speed = getSpeed(distance, _settings);
83402			var start, percentage, position;
83403
83404			/**
83405			 * Stop the scroll animation when it reaches its target (or the bottom/top of page)
83406			 * @param {Number} position Current position on the page
83407			 * @param {Number} endLocation Scroll to location
83408			 * @param {Number} animationInterval How much to scroll on this loop
83409			 */
83410			var stopAnimateScroll = function (position, endLocation) {
83411
83412				// Get the current location
83413				var currentLocation = window.pageYOffset;
83414
83415				// Check if the end location has been reached yet (or we've hit the end of the document)
83416				if (position == endLocation || currentLocation == endLocation || ((startLocation < endLocation && window.innerHeight + currentLocation) >= documentHeight)) {
83417
83418					// Clear the animation timer
83419					smoothScroll.cancelScroll(true);
83420
83421					// Bring the anchored element into focus
83422					adjustFocus(anchor, endLocation, isNum);
83423
83424					// Emit a custom event
83425					emitEvent('scrollStop', _settings, anchor, toggle);
83426
83427					// Reset start
83428					start = null;
83429					animationInterval = null;
83430
83431					return true;
83432
83433				}
83434			};
83435
83436			/**
83437			 * Loop scrolling animation
83438			 */
83439			var loopAnimateScroll = function (timestamp) {
83440				if (!start) { start = timestamp; }
83441				timeLapsed += timestamp - start;
83442				percentage = speed === 0 ? 0 : (timeLapsed / speed);
83443				percentage = (percentage > 1) ? 1 : percentage;
83444				position = startLocation + (distance * easingPattern(_settings, percentage));
83445				window.scrollTo(0, Math.floor(position));
83446				if (!stopAnimateScroll(position, endLocation)) {
83447					animationInterval = window.requestAnimationFrame(loopAnimateScroll);
83448					start = timestamp;
83449				}
83450			};
83451
83452			/**
83453			 * Reset position to fix weird iOS bug
83454			 * @link https://github.com/cferdinandi/smooth-scroll/issues/45
83455			 */
83456			if (window.pageYOffset === 0) {
83457				window.scrollTo(0, 0);
83458			}
83459
83460			// Update the URL
83461			updateURL(anchor, isNum, _settings);
83462
83463			// If the user prefers reduced motion, jump to location
83464			if (reduceMotion()) {
83465				adjustFocus(anchor, Math.floor(endLocation), false);
83466				return;
83467			}
83468
83469			// Emit a custom event
83470			emitEvent('scrollStart', _settings, anchor, toggle);
83471
83472			// Start scrolling animation
83473			smoothScroll.cancelScroll(true);
83474			window.requestAnimationFrame(loopAnimateScroll);
83475
83476		};
83477
83478		/**
83479		 * If smooth scroll element clicked, animate scroll
83480		 */
83481		var clickHandler = function (event) {
83482
83483			// Don't run if event was canceled but still bubbled up
83484			// By @mgreter - https://github.com/cferdinandi/smooth-scroll/pull/462/
83485			if (event.defaultPrevented) return;
83486
83487			// Don't run if right-click or command/control + click or shift + click
83488			if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey) return;
83489
83490			// Check if event.target has closest() method
83491			// By @totegi - https://github.com/cferdinandi/smooth-scroll/pull/401/
83492			if (!('closest' in event.target)) return;
83493
83494			// Check if a smooth scroll link was clicked
83495			toggle = event.target.closest(selector);
83496			if (!toggle || toggle.tagName.toLowerCase() !== 'a' || event.target.closest(settings.ignore)) return;
83497
83498			// Only run if link is an anchor and points to the current page
83499			if (toggle.hostname !== window.location.hostname || toggle.pathname !== window.location.pathname || !/#/.test(toggle.href)) return;
83500
83501			// Get an escaped version of the hash
83502			var hash;
83503			try {
83504				hash = escapeCharacters(decodeURIComponent(toggle.hash));
83505			} catch(e) {
83506				hash = escapeCharacters(toggle.hash);
83507			}
83508
83509			// Get the anchored element
83510			var anchor;
83511			if (hash === '#') {
83512				if (!settings.topOnEmptyHash) return;
83513				anchor = document.documentElement;
83514			} else {
83515				anchor = document.querySelector(hash);
83516			}
83517			anchor = !anchor && hash === '#top' ? document.documentElement : anchor;
83518
83519			// If anchored element exists, scroll to it
83520			if (!anchor) return;
83521			event.preventDefault();
83522			setHistory(settings);
83523			smoothScroll.animateScroll(anchor, toggle);
83524
83525		};
83526
83527		/**
83528		 * Animate scroll on popstate events
83529		 */
83530		var popstateHandler = function (event) {
83531
83532			// Stop if history.state doesn't exist (ex. if clicking on a broken anchor link).
83533			// fixes `Cannot read property 'smoothScroll' of null` error getting thrown.
83534			if (history.state === null) return;
83535
83536			// Only run if state is a popstate record for this instantiation
83537			if (!history.state.smoothScroll || history.state.smoothScroll !== JSON.stringify(settings)) return;
83538
83539			// Only run if state includes an anchor
83540
83541			// if (!history.state.anchor && history.state.anchor !== 0) return;
83542
83543			// Get the anchor
83544			var anchor = history.state.anchor;
83545			if (typeof anchor === 'string' && anchor) {
83546				anchor = document.querySelector(escapeCharacters(history.state.anchor));
83547				if (!anchor) return;
83548			}
83549
83550			// Animate scroll to anchor link
83551			smoothScroll.animateScroll(anchor, null, {updateURL: false});
83552
83553		};
83554
83555		/**
83556		 * Destroy the current initialization.
83557		 */
83558		smoothScroll.destroy = function () {
83559
83560			// If plugin isn't already initialized, stop
83561			if (!settings) return;
83562
83563			// Remove event listeners
83564			document.removeEventListener('click', clickHandler, false);
83565			window.removeEventListener('popstate', popstateHandler, false);
83566
83567			// Cancel any scrolls-in-progress
83568			smoothScroll.cancelScroll();
83569
83570			// Reset variables
83571			settings = null;
83572			anchor = null;
83573			toggle = null;
83574			fixedHeader = null;
83575			eventTimeout = null;
83576			animationInterval = null;
83577
83578		};
83579
83580		/**
83581		 * Initialize Smooth Scroll
83582		 * @param {Object} options User settings
83583		 */
83584		var init = function () {
83585
83586			// feature test
83587			if (!supports()) throw 'Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.';
83588
83589			// Destroy any existing initializations
83590			smoothScroll.destroy();
83591
83592			// Selectors and variables
83593			settings = extend(defaults, options || {}); // Merge user options with defaults
83594			fixedHeader = settings.header ? document.querySelector(settings.header) : null; // Get the fixed header
83595
83596			// When a toggle is clicked, run the click handler
83597			document.addEventListener('click', clickHandler, false);
83598
83599			// If updateURL and popState are enabled, listen for pop events
83600			if (settings.updateURL && settings.popstate) {
83601				window.addEventListener('popstate', popstateHandler, false);
83602			}
83603
83604		};
83605
83606
83607		//
83608		// Initialize plugin
83609		//
83610
83611		init();
83612
83613
83614		//
83615		// Public APIs
83616		//
83617
83618		return smoothScroll;
83619
83620	};
83621
83622	return SmoothScroll;
83623
83624}));
83625
83626
83627/***/ }),
83628
vendor: 52,365 bytes, lines 83629-83643
83629/***/ "./node_modules/sweetalert2/dist/sweetalert2.min.js":
83630/*!**********************************************************!*\
83631  !*** ./node_modules/sweetalert2/dist/sweetalert2.min.js ***!
83632  \**********************************************************/
83633/***/ (function(module) {
83634
83635/*!
83636* sweetalert2 v11.10.8
83637* Released under the MIT License.
83638*/
83639!function(t,e){ true?module.exports=e():0}(this,(function(){"use strict";function t(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function e(t,e,n){return e=s(e),function(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,n||[],s(t).constructor):e.apply(t,n))}function n(e,n){return e.get(t(e,n))}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(o=function(){return!!t})()}function i(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function c(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,i(o.key),o)}}function u(t,e,n){return e&&c(t.prototype,e),n&&c(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},s(t)}function l(t,e){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},l(t,e)}function d(){return d="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,n){var o=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=s(t)););return t}(t,e);if(o){var i=Object.getOwnPropertyDescriptor(o,e);return i.get?i.get.call(arguments.length<3?t:n):i.value}},d.apply(this,arguments)}function f(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var o,i,r,a,c=[],u=!0,s=!1;try{if(r=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;u=!1}else for(;!(u=(o=r.call(n)).done)&&(c.push(o.value),c.length!==e);u=!0);}catch(t){s=!0,i=t}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(s)throw i}}return c}}(t,e)||m(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(t){return function(t){if(Array.isArray(t))return h(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||m(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(t,e){if(t){if("string"==typeof t)return h(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(t,e):void 0}}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function v(t,e,n){!function(t,e){if(e.has(t))throw new TypeError("Cannot initialize the same private elements twice on an object")}(t,e),e.set(t,n)}var g={},b=function(t){return new Promise((function(e){if(!t)return e();var n=window.scrollX,o=window.scrollY;g.restoreFocusTimeout=setTimeout((function(){g.previousActiveElement instanceof HTMLElement?(g.previousActiveElement.focus(),g.previousActiveElement=null):document.body&&document.body.focus(),e()}),100),window.scrollTo(n,o)}))},y="swal2-",w=["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"].reduce((function(t,e){return t[e]=y+e,t}),{}),C=["success","warning","info","question","error"].reduce((function(t,e){return t[e]=y+e,t}),{}),A="SweetAlert2:",k=function(t){return t.charAt(0).toUpperCase()+t.slice(1)},E=function(t){console.warn("".concat(A," ").concat("object"===r(t)?t.join(" "):t))},P=function(t){console.error("".concat(A," ").concat(t))},B=[],T=function(t,e){var n;n='"'.concat(t,'" is deprecated and will be removed in the next major release. Please use "').concat(e,'" instead.'),B.includes(n)||(B.push(n),E(n))},x=function(t){return"function"==typeof t?t():t},S=function(t){return t&&"function"==typeof t.toPromise},O=function(t){return S(t)?t.toPromise():Promise.resolve(t)},L=function(t){return t&&Promise.resolve(t)===t},j=function(){return document.body.querySelector(".".concat(w.container))},M=function(t){var e=j();return e?e.querySelector(t):null},I=function(t){return M(".".concat(t))},H=function(){return I(w.popup)},D=function(){return I(w.icon)},q=function(){return I(w.title)},V=function(){return I(w["html-container"])},_=function(){return I(w.image)},R=function(){return I(w["progress-steps"])},N=function(){return I(w["validation-message"])},F=function(){return M(".".concat(w.actions," .").concat(w.confirm))},U=function(){return M(".".concat(w.actions," .").concat(w.cancel))},z=function(){return M(".".concat(w.actions," .").concat(w.deny))},W=function(){return M(".".concat(w.loader))},K=function(){return I(w.actions)},Y=function(){return I(w.footer)},Z=function(){return I(w["timer-progress-bar"])},$=function(){return I(w.close)},J=function(){var t=H();if(!t)return[];var e=t.querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])'),n=Array.from(e).sort((function(t,e){var n=parseInt(t.getAttribute("tabindex")||"0"),o=parseInt(e.getAttribute("tabindex")||"0");return n>o?1:n<o?-1:0})),o=t.querySelectorAll('\n  a[href],\n  area[href],\n  input:not([disabled]),\n  select:not([disabled]),\n  textarea:not([disabled]),\n  button:not([disabled]),\n  iframe,\n  object,\n  embed,\n  [tabindex="0"],\n  [contenteditable],\n  audio[controls],\n  video[controls],\n  summary\n'),i=Array.from(o).filter((function(t){return"-1"!==t.getAttribute("tabindex")}));return p(new Set(n.concat(i))).filter((function(t){return mt(t)}))},X=function(){return tt(document.body,w.shown)&&!tt(document.body,w["toast-shown"])&&!tt(document.body,w["no-backdrop"])},G=function(){var t=H();return!!t&&tt(t,w.toast)},Q=function(t,e){if(t.textContent="",e){var n=(new DOMParser).parseFromString(e,"text/html"),o=n.querySelector("head");o&&Array.from(o.childNodes).forEach((function(e){t.appendChild(e)}));var i=n.querySelector("body");i&&Array.from(i.childNodes).forEach((function(e){e instanceof HTMLVideoElement||e instanceof HTMLAudioElement?t.appendChild(e.cloneNode(!0)):t.appendChild(e)}))}},tt=function(t,e){if(!e)return!1;for(var n=e.split(/\s+/),o=0;o<n.length;o++)if(!t.classList.contains(n[o]))return!1;return!0},et=function(t,e,n){if(function(t,e){Array.from(t.classList).forEach((function(n){Object.values(w).includes(n)||Object.values(C).includes(n)||Object.values(e.showClass||{}).includes(n)||t.classList.remove(n)}))}(t,e),e.customClass&&e.customClass[n]){if("string"!=typeof e.customClass[n]&&!e.customClass[n].forEach)return void E("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(r(e.customClass[n]),'"'));rt(t,e.customClass[n])}},nt=function(t,e){if(!e)return null;switch(e){case"select":case"textarea":case"file":return t.querySelector(".".concat(w.popup," > .").concat(w[e]));case"checkbox":return t.querySelector(".".concat(w.popup," > .").concat(w.checkbox," input"));case"radio":return t.querySelector(".".concat(w.popup," > .").concat(w.radio," input:checked"))||t.querySelector(".".concat(w.popup," > .").concat(w.radio," input:first-child"));case"range":return t.querySelector(".".concat(w.popup," > .").concat(w.range," input"));default:return t.querySelector(".".concat(w.popup," > .").concat(w.input))}},ot=function(t){if(t.focus(),"file"!==t.type){var e=t.value;t.value="",t.value=e}},it=function(t,e,n){t&&e&&("string"==typeof e&&(e=e.split(/\s+/).filter(Boolean)),e.forEach((function(e){Array.isArray(t)?t.forEach((function(t){n?t.classList.add(e):t.classList.remove(e)})):n?t.classList.add(e):t.classList.remove(e)})))},rt=function(t,e){it(t,e,!0)},at=function(t,e){it(t,e,!1)},ct=function(t,e){for(var n=Array.from(t.children),o=0;o<n.length;o++){var i=n[o];if(i instanceof HTMLElement&&tt(i,e))return i}},ut=function(t,e,n){n==="".concat(parseInt(n))&&(n=parseInt(n)),n||0===parseInt(n)?t.style.setProperty(e,"number"==typeof n?"".concat(n,"px"):n):t.style.removeProperty(e)},st=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"flex";t&&(t.style.display=e)},lt=function(t){t&&(t.style.display="none")},dt=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"block";t&&new MutationObserver((function(){pt(t,t.innerHTML,e)})).observe(t,{childList:!0,subtree:!0})},ft=function(t,e,n,o){var i=t.querySelector(e);i&&i.style.setProperty(n,o)},pt=function(t,e){e?st(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:"flex"):lt(t)},mt=function(t){return!(!t||!(t.offsetWidth||t.offsetHeight||t.getClientRects().length))},ht=function(t){return!!(t.scrollHeight>t.clientHeight)},vt=function(t){var e=window.getComputedStyle(t),n=parseFloat(e.getPropertyValue("animation-duration")||"0"),o=parseFloat(e.getPropertyValue("transition-duration")||"0");return n>0||o>0},gt=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Z();n&&mt(n)&&(e&&(n.style.transition="none",n.style.width="100%"),setTimeout((function(){n.style.transition="width ".concat(t/1e3,"s linear"),n.style.width="0%"}),10))},bt=function(){return"undefined"==typeof window||"undefined"==typeof document},yt='\n <div aria-labelledby="'.concat(w.title,'" aria-describedby="').concat(w["html-container"],'" class="').concat(w.popup,'" tabindex="-1">\n   <button type="button" class="').concat(w.close,'"></button>\n   <ul class="').concat(w["progress-steps"],'"></ul>\n   <div class="').concat(w.icon,'"></div>\n   <img class="').concat(w.image,'" />\n   <h2 class="').concat(w.title,'" id="').concat(w.title,'"></h2>\n   <div class="').concat(w["html-container"],'" id="').concat(w["html-container"],'"></div>\n   <input class="').concat(w.input,'" id="').concat(w.input,'" />\n   <input type="file" class="').concat(w.file,'" />\n   <div class="').concat(w.range,'">\n     <input type="range" />\n     <output></output>\n   </div>\n   <select class="').concat(w.select,'" id="').concat(w.select,'"></select>\n   <div class="').concat(w.radio,'"></div>\n   <label class="').concat(w.checkbox,'">\n     <input type="checkbox" id="').concat(w.checkbox,'" />\n     <span class="').concat(w.label,'"></span>\n   </label>\n   <textarea class="').concat(w.textarea,'" id="').concat(w.textarea,'"></textarea>\n   <div class="').concat(w["validation-message"],'" id="').concat(w["validation-message"],'"></div>\n   <div class="').concat(w.actions,'">\n     <div class="').concat(w.loader,'"></div>\n     <button type="button" class="').concat(w.confirm,'"></button>\n     <button type="button" class="').concat(w.deny,'"></button>\n     <button type="button" class="').concat(w.cancel,'"></button>\n   </div>\n   <div class="').concat(w.footer,'"></div>\n   <div class="').concat(w["timer-progress-bar-container"],'">\n     <div class="').concat(w["timer-progress-bar"],'"></div>\n   </div>\n </div>\n').replace(/(^|\n)\s*/g,""),wt=function(){g.currentInstance.resetValidationMessage()},Ct=function(t){var e,n=!!(e=j())&&(e.remove(),at([document.documentElement,document.body],[w["no-backdrop"],w["toast-shown"],w["has-column"]]),!0);if(bt())P("SweetAlert2 requires document to initialize");else{var o=document.createElement("div");o.className=w.container,n&&rt(o,w["no-transition"]),Q(o,yt);var i,r,a,c,u,s,l,d,f,p="string"==typeof(i=t.target)?document.querySelector(i):i;p.appendChild(o),function(t){var e=H();e.setAttribute("role",t.toast?"alert":"dialog"),e.setAttribute("aria-live",t.toast?"polite":"assertive"),t.toast||e.setAttribute("aria-modal","true")}(t),function(t){"rtl"===window.getComputedStyle(t).direction&&rt(j(),w.rtl)}(p),r=H(),a=ct(r,w.input),c=ct(r,w.file),u=r.querySelector(".".concat(w.range," input")),s=r.querySelector(".".concat(w.range," output")),l=ct(r,w.select),d=r.querySelector(".".concat(w.checkbox," input")),f=ct(r,w.textarea),a.oninput=wt,c.onchange=wt,l.onchange=wt,d.onchange=wt,f.oninput=wt,u.oninput=function(){wt(),s.value=u.value},u.onchange=function(){wt(),s.value=u.value}}},At=function(t,e){t instanceof HTMLElement?e.appendChild(t):"object"===r(t)?kt(t,e):t&&Q(e,t)},kt=function(t,e){t.jquery?Et(e,t):Q(e,t.toString())},Et=function(t,e){if(t.textContent="",0 in e)for(var n=0;n in e;n++)t.appendChild(e[n].cloneNode(!0));else t.appendChild(e.cloneNode(!0))},Pt=function(){if(bt())return!1;var t=document.createElement("div");return void 0!==t.style.webkitAnimation?"webkitAnimationEnd":void 0!==t.style.animation&&"animationend"}(),Bt=function(t,e){var n=K(),o=W();n&&o&&(e.showConfirmButton||e.showDenyButton||e.showCancelButton?st(n):lt(n),et(n,e,"actions"),function(t,e,n){var o=F(),i=z(),r=U();if(!o||!i||!r)return;Tt(o,"confirm",n),Tt(i,"deny",n),Tt(r,"cancel",n),function(t,e,n,o){if(!o.buttonsStyling)return void at([t,e,n],w.styled);rt([t,e,n],w.styled),o.confirmButtonColor&&(t.style.backgroundColor=o.confirmButtonColor,rt(t,w["default-outline"]));o.denyButtonColor&&(e.style.backgroundColor=o.denyButtonColor,rt(e,w["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,rt(n,w["default-outline"]))}(o,i,r,n),n.reverseButtons&&(n.toast?(t.insertBefore(r,o),t.insertBefore(i,o)):(t.insertBefore(r,e),t.insertBefore(i,e),t.insertBefore(o,e)))}(n,o,e),Q(o,e.loaderHtml||""),et(o,e,"loader"))};function Tt(t,e,n){var o=k(e);pt(t,n["show".concat(o,"Button")],"inline-block"),Q(t,n["".concat(e,"ButtonText")]||""),t.setAttribute("aria-label",n["".concat(e,"ButtonAriaLabel")]||""),t.className=w[e],et(t,n,"".concat(e,"Button"))}var xt=function(t,e){var n=j();n&&(!function(t,e){"string"==typeof e?t.style.background=e:e||rt([document.documentElement,document.body],w["no-backdrop"])}(n,e.backdrop),function(t,e){if(!e)return;e in w?rt(t,w[e]):(E('The "position" parameter is not valid, defaulting to "center"'),rt(t,w.center))}(n,e.position),function(t,e){if(!e)return;rt(t,w["grow-".concat(e)])}(n,e.grow),et(n,e,"container"))};var St={innerParams:new WeakMap,domCache:new WeakMap},Ot=["input","file","range","select","radio","checkbox","textarea"],Lt=function(t){if(t.input)if(Vt[t.input]){var e=Dt(t.input),n=Vt[t.input](e,t);st(e),t.inputAutoFocus&&setTimeout((function(){ot(n)}))}else P("Unexpected type of input! Expected ".concat(Object.keys(Vt).join(" | "),', got "').concat(t.input,'"'))},jt=function(t,e){var n=nt(H(),t);if(n)for(var o in function(t){for(var e=0;e<t.attributes.length;e++){var n=t.attributes[e].name;["id","type","value","style"].includes(n)||t.removeAttribute(n)}}(n),e)n.setAttribute(o,e[o])},Mt=function(t){var e=Dt(t.input);"object"===r(t.customClass)&&rt(e,t.customClass.input)},It=function(t,e){t.placeholder&&!e.inputPlaceholder||(t.placeholder=e.inputPlaceholder)},Ht=function(t,e,n){if(n.inputLabel){var o=document.createElement("label"),i=w["input-label"];o.setAttribute("for",t.id),o.className=i,"object"===r(n.customClass)&&rt(o,n.customClass.inputLabel),o.innerText=n.inputLabel,e.insertAdjacentElement("beforebegin",o)}},Dt=function(t){return ct(H(),w[t]||w.input)},qt=function(t,e){["string","number"].includes(r(e))?t.value="".concat(e):L(e)||E('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(r(e),'"'))},Vt={};Vt.text=Vt.email=Vt.password=Vt.number=Vt.tel=Vt.url=Vt.search=Vt.date=Vt["datetime-local"]=Vt.time=Vt.week=Vt.month=function(t,e){return qt(t,e.inputValue),Ht(t,t,e),It(t,e),t.type=e.input,t},Vt.file=function(t,e){return Ht(t,t,e),It(t,e),t},Vt.range=function(t,e){var n=t.querySelector("input"),o=t.querySelector("output");return qt(n,e.inputValue),n.type=e.input,qt(o,e.inputValue),Ht(n,t,e),t},Vt.select=function(t,e){if(t.textContent="",e.inputPlaceholder){var n=document.createElement("option");Q(n,e.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,t.appendChild(n)}return Ht(t,t,e),t},Vt.radio=function(t){return t.textContent="",t},Vt.checkbox=function(t,e){var n=nt(H(),"checkbox");n.value="1",n.checked=Boolean(e.inputValue);var o=t.querySelector("span");return Q(o,e.inputPlaceholder),n},Vt.textarea=function(t,e){qt(t,e.inputValue),It(t,e),Ht(t,t,e);return setTimeout((function(){if("MutationObserver"in window){var n=parseInt(window.getComputedStyle(H()).width);new MutationObserver((function(){if(document.body.contains(t)){var o,i=t.offsetWidth+(o=t,parseInt(window.getComputedStyle(o).marginLeft)+parseInt(window.getComputedStyle(o).marginRight));i>n?H().style.width="".concat(i,"px"):ut(H(),"width",e.width)}})).observe(t,{attributes:!0,attributeFilter:["style"]})}})),t};var _t=function(t,e){var n=V();n&&(dt(n),et(n,e,"htmlContainer"),e.html?(At(e.html,n),st(n,"block")):e.text?(n.textContent=e.text,st(n,"block")):lt(n),function(t,e){var n=H();if(n){var o=St.innerParams.get(t),i=!o||e.input!==o.input;Ot.forEach((function(t){var o=ct(n,w[t]);o&&(jt(t,e.inputAttributes),o.className=w[t],i&&lt(o))})),e.input&&(i&&Lt(e),Mt(e))}}(t,e))},Rt=function(t,e){for(var n=0,o=Object.entries(C);n<o.length;n++){var i=f(o[n],2),r=i[0],a=i[1];e.icon!==r&&at(t,a)}rt(t,e.icon&&C[e.icon]),Ut(t,e),Nt(),et(t,e,"icon")},Nt=function(){var t=H();if(t)for(var e=window.getComputedStyle(t).getPropertyValue("background-color"),n=t.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix"),o=0;o<n.length;o++)n[o].style.backgroundColor=e},Ft=function(t,e){if(e.icon||e.iconHtml){var n=t.innerHTML,o="";if(e.iconHtml)o=zt(e.iconHtml);else if("success"===e.icon)o='\n  <div class="swal2-success-circular-line-left"></div>\n  <span class="swal2-success-line-tip"></span> <span class="swal2-success-line-long"></span>\n  <div class="swal2-success-ring"></div> <div class="swal2-success-fix"></div>\n  <div class="swal2-success-circular-line-right"></div>\n',n=n.replace(/ style=".*?"/g,"");else if("error"===e.icon)o='\n  <span class="swal2-x-mark">\n    <span class="swal2-x-mark-line-left"></span>\n    <span class="swal2-x-mark-line-right"></span>\n  </span>\n';else if(e.icon){o=zt({question:"?",warning:"!",info:"i"}[e.icon])}n.trim()!==o.trim()&&Q(t,o)}},Ut=function(t,e){if(e.iconColor){t.style.color=e.iconColor,t.style.borderColor=e.iconColor;for(var n=0,o=[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"];n<o.length;n++){ft(t,o[n],"background-color",e.iconColor)}ft(t,".swal2-success-ring","border-color",e.iconColor)}},zt=function(t){return'<div class="'.concat(w["icon-content"],'">').concat(t,"</div>")},Wt=function(t,e){var n=e.showClass||{};t.className="".concat(w.popup," ").concat(mt(t)?n.popup:""),e.toast?(rt([document.documentElement,document.body],w["toast-shown"]),rt(t,w.toast)):rt(t,w.modal),et(t,e,"popup"),"string"==typeof e.customClass&&rt(t,e.customClass),e.icon&&rt(t,w["icon-".concat(e.icon)])},Kt=function(t){var e=document.createElement("li");return rt(e,w["progress-step"]),Q(e,t),e},Yt=function(t){var e=document.createElement("li");return rt(e,w["progress-step-line"]),t.progressStepsDistance&&ut(e,"width",t.progressStepsDistance),e},Zt=function(t,e){!function(t,e){var n=j(),o=H();if(n&&o){if(e.toast){ut(n,"width",e.width),o.style.width="100%";var i=W();i&&o.insertBefore(i,D())}else ut(o,"width",e.width);ut(o,"padding",e.padding),e.color&&(o.style.color=e.color),e.background&&(o.style.background=e.background),lt(N()),Wt(o,e)}}(0,e),xt(0,e),function(t,e){var n=R();if(n){var o=e.progressSteps,i=e.currentProgressStep;o&&0!==o.length&&void 0!==i?(st(n),n.textContent="",i>=o.length&&E("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.forEach((function(t,r){var a=Kt(t);if(n.appendChild(a),r===i&&rt(a,w["active-progress-step"]),r!==o.length-1){var c=Yt(e);n.appendChild(c)}}))):lt(n)}}(0,e),function(t,e){var n=St.innerParams.get(t),o=D();if(o){if(n&&e.icon===n.icon)return Ft(o,e),void Rt(o,e);if(e.icon||e.iconHtml){if(e.icon&&-1===Object.keys(C).indexOf(e.icon))return P('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(e.icon,'"')),void lt(o);st(o),Ft(o,e),Rt(o,e),rt(o,e.showClass&&e.showClass.icon)}else lt(o)}}(t,e),function(t,e){var n=_();n&&(e.imageUrl?(st(n,""),n.setAttribute("src",e.imageUrl),n.setAttribute("alt",e.imageAlt||""),ut(n,"width",e.imageWidth),ut(n,"height",e.imageHeight),n.className=w.image,et(n,e,"image")):lt(n))}(0,e),function(t,e){var n=q();n&&(dt(n),pt(n,e.title||e.titleText,"block"),e.title&&At(e.title,n),e.titleText&&(n.innerText=e.titleText),et(n,e,"title"))}(0,e),function(t,e){var n=$();n&&(Q(n,e.closeButtonHtml||""),et(n,e,"closeButton"),pt(n,e.showCloseButton),n.setAttribute("aria-label",e.closeButtonAriaLabel||""))}(0,e),_t(t,e),Bt(0,e),function(t,e){var n=Y();n&&(dt(n),pt(n,e.footer,"block"),e.footer&&At(e.footer,n),et(n,e,"footer"))}(0,e);var n=H();"function"==typeof e.didRender&&n&&e.didRender(n)},$t=function(){var t;return null===(t=F())||void 0===t?void 0:t.click()},Jt=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),Xt=function(t){t.keydownTarget&&t.keydownHandlerAdded&&(t.keydownTarget.removeEventListener("keydown",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!1)},Gt=function(t,e){var n,o=J();if(o.length)return(t+=e)===o.length?t=0:-1===t&&(t=o.length-1),void o[t].focus();null===(n=H())||void 0===n||n.focus()},Qt=["ArrowRight","ArrowDown"],te=["ArrowLeft","ArrowUp"],ee=function(t,e,n){t&&(e.isComposing||229===e.keyCode||(t.stopKeydownPropagation&&e.stopPropagation(),"Enter"===e.key?ne(e,t):"Tab"===e.key?oe(e):[].concat(Qt,te).includes(e.key)?ie(e.key):"Escape"===e.key&&re(e,t,n)))},ne=function(t,e){if(x(e.allowEnterKey)){var n=nt(H(),e.input);if(t.target&&n&&t.target instanceof HTMLElement&&t.target.outerHTML===n.outerHTML){if(["textarea","file"].includes(e.input))return;$t(),t.preventDefault()}}},oe=function(t){for(var e=t.target,n=J(),o=-1,i=0;i<n.length;i++)if(e===n[i]){o=i;break}t.shiftKey?Gt(o,-1):Gt(o,1),t.stopPropagation(),t.preventDefault()},ie=function(t){var e=K(),n=F(),o=z(),i=U();if(e&&n&&o&&i){var r=[n,o,i];if(!(document.activeElement instanceof HTMLElement)||r.includes(document.activeElement)){var a=Qt.includes(t)?"nextElementSibling":"previousElementSibling",c=document.activeElement;if(c){for(var u=0;u<e.children.length;u++){if(!(c=c[a]))return;if(c instanceof HTMLButtonElement&&mt(c))break}c instanceof HTMLButtonElement&&c.focus()}}}},re=function(t,e,n){x(e.allowEscapeKey)&&(t.preventDefault(),n(Jt.esc))},ae={swalPromiseResolve:new WeakMap,swalPromiseReject:new WeakMap},ce=function(){Array.from(document.body.children).forEach((function(t){t.hasAttribute("data-previous-aria-hidden")?(t.setAttribute("aria-hidden",t.getAttribute("data-previous-aria-hidden")||""),t.removeAttribute("data-previous-aria-hidden")):t.removeAttribute("aria-hidden")}))},ue="undefined"!=typeof window&&!!window.GestureEvent,se=function(){var t,e=j();e&&(e.ontouchstart=function(e){t=le(e)},e.ontouchmove=function(e){t&&(e.preventDefault(),e.stopPropagation())})},le=function(t){var e=t.target,n=j(),o=V();return!(!n||!o)&&(!de(t)&&!fe(t)&&(e===n||!ht(n)&&e instanceof HTMLElement&&"INPUT"!==e.tagName&&"TEXTAREA"!==e.tagName&&(!ht(o)||!o.contains(e))))},de=function(t){return t.touches&&t.touches.length&&"stylus"===t.touches[0].touchType},fe=function(t){return t.touches&&t.touches.length>1},pe=null,me=function(t){null===pe&&(document.body.scrollHeight>window.innerHeight||"scroll"===t)&&(pe=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(pe+function(){var t=document.createElement("div");t.className=w["scrollbar-measure"],document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}(),"px"))};function he(t,e,n,o){G()?ke(t,o):(b(n).then((function(){return ke(t,o)})),Xt(g)),ue?(e.setAttribute("style","display:none !important"),e.removeAttribute("class"),e.innerHTML=""):e.remove(),X()&&(null!==pe&&(document.body.style.paddingRight="".concat(pe,"px"),pe=null),function(){if(tt(document.body,w.iosfix)){var t=parseInt(document.body.style.top,10);at(document.body,w.iosfix),document.body.style.top="",document.body.scrollTop=-1*t}}(),ce()),at([document.documentElement,document.body],[w.shown,w["height-auto"],w["no-backdrop"],w["toast-shown"]])}function ve(t){t=we(t);var e=ae.swalPromiseResolve.get(this),n=ge(this);this.isAwaitingPromise?t.isDismissed||(ye(this),e(t)):n&&e(t)}var ge=function(t){var e=H();if(!e)return!1;var n=St.innerParams.get(t);if(!n||tt(e,n.hideClass.popup))return!1;at(e,n.showClass.popup),rt(e,n.hideClass.popup);var o=j();return at(o,n.showClass.backdrop),rt(o,n.hideClass.backdrop),Ce(t,e,n),!0};function be(t){var e=ae.swalPromiseReject.get(this);ye(this),e&&e(t)}var ye=function(t){t.isAwaitingPromise&&(delete t.isAwaitingPromise,St.innerParams.get(t)||t._destroy())},we=function(t){return void 0===t?{isConfirmed:!1,isDenied:!1,isDismissed:!0}:Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},t)},Ce=function(t,e,n){var o=j(),i=Pt&&vt(e);"function"==typeof n.willClose&&n.willClose(e),i?Ae(t,e,o,n.returnFocus,n.didClose):he(t,o,n.returnFocus,n.didClose)},Ae=function(t,e,n,o,i){Pt&&(g.swalCloseEventFinishedCallback=he.bind(null,t,n,o,i),e.addEventListener(Pt,(function(t){t.target===e&&(g.swalCloseEventFinishedCallback(),delete g.swalCloseEventFinishedCallback)})))},ke=function(t,e){setTimeout((function(){"function"==typeof e&&e.bind(t.params)(),t._destroy&&t._destroy()}))},Ee=function(t){var e=H();if(e||new io,e=H()){var n=W();G()?lt(D()):Pe(e,t),st(n),e.setAttribute("data-loading","true"),e.setAttribute("aria-busy","true"),e.focus()}},Pe=function(t,e){var n=K(),o=W();n&&o&&(!e&&mt(F())&&(e=F()),st(n),e&&(lt(e),o.setAttribute("data-button-to-replace",e.className),n.insertBefore(o,e)),rt([t,n],w.loading))},Be=function(t){return t.checked?1:0},Te=function(t){return t.checked?t.value:null},xe=function(t){return t.files&&t.files.length?null!==t.getAttribute("multiple")?t.files:t.files[0]:null},Se=function(t,e){var n=H();if(n){var o=function(t){"select"===e.input?function(t,e,n){var o=ct(t,w.select);if(!o)return;var i=function(t,e,o){var i=document.createElement("option");i.value=o,Q(i,e),i.selected=je(o,n.inputValue),t.appendChild(i)};e.forEach((function(t){var e=t[0],n=t[1];if(Array.isArray(n)){var r=document.createElement("optgroup");r.label=e,r.disabled=!1,o.appendChild(r),n.forEach((function(t){return i(r,t[1],t[0])}))}else i(o,n,e)})),o.focus()}(n,Le(t),e):"radio"===e.input&&function(t,e,n){var o=ct(t,w.radio);if(!o)return;e.forEach((function(t){var e=t[0],i=t[1],r=document.createElement("input"),a=document.createElement("label");r.type="radio",r.name=w.radio,r.value=e,je(e,n.inputValue)&&(r.checked=!0);var c=document.createElement("span");Q(c,i),c.className=w.label,a.appendChild(r),a.appendChild(c),o.appendChild(a)}));var i=o.querySelectorAll("input");i.length&&i[0].focus()}(n,Le(t),e)};S(e.inputOptions)||L(e.inputOptions)?(Ee(F()),O(e.inputOptions).then((function(e){t.hideLoading(),o(e)}))):"object"===r(e.inputOptions)?o(e.inputOptions):P("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(r(e.inputOptions)))}},Oe=function(t,e){var n=t.getInput();n&&(lt(n),O(e.inputValue).then((function(o){n.value="number"===e.input?"".concat(parseFloat(o)||0):"".concat(o),st(n),n.focus(),t.hideLoading()})).catch((function(e){P("Error in inputValue promise: ".concat(e)),n.value="",st(n),n.focus(),t.hideLoading()})))};var Le=function t(e){var n=[];return e instanceof Map?e.forEach((function(e,o){var i=e;"object"===r(i)&&(i=t(i)),n.push([o,i])})):Object.keys(e).forEach((function(o){var i=e[o];"object"===r(i)&&(i=t(i)),n.push([o,i])})),n},je=function(t,e){return!!e&&e.toString()===t.toString()},Me=void 0,Ie=function(t,e){var n=St.innerParams.get(t);if(n.input){var o=t.getInput(),i=function(t,e){var n=t.getInput();if(!n)return null;switch(e.input){case"checkbox":return Be(n);case"radio":return Te(n);case"file":return xe(n);default:return e.inputAutoTrim?n.value.trim():n.value}}(t,n);n.inputValidator?He(t,i,e):o&&!o.checkValidity()?(t.enableButtons(),t.showValidationMessage(n.validationMessage||o.validationMessage)):"deny"===e?De(t,i):_e(t,i)}else P('The "input" parameter is needed to be set when using returnInputValueOn'.concat(k(e)))},He=function(t,e,n){var o=St.innerParams.get(t);t.disableInput(),Promise.resolve().then((function(){return O(o.inputValidator(e,o.validationMessage))})).then((function(o){t.enableButtons(),t.enableInput(),o?t.showValidationMessage(o):"deny"===n?De(t,e):_e(t,e)}))},De=function(t,e){var n=St.innerParams.get(t||Me);(n.showLoaderOnDeny&&Ee(z()),n.preDeny)?(t.isAwaitingPromise=!0,Promise.resolve().then((function(){return O(n.preDeny(e,n.validationMessage))})).then((function(n){!1===n?(t.hideLoading(),ye(t)):t.close({isDenied:!0,value:void 0===n?e:n})})).catch((function(e){return Ve(t||Me,e)}))):t.close({isDenied:!0,value:e})},qe=function(t,e){t.close({isConfirmed:!0,value:e})},Ve=function(t,e){t.rejectPromise(e)},_e=function(t,e){var n=St.innerParams.get(t||Me);(n.showLoaderOnConfirm&&Ee(),n.preConfirm)?(t.resetValidationMessage(),t.isAwaitingPromise=!0,Promise.resolve().then((function(){return O(n.preConfirm(e,n.validationMessage))})).then((function(n){mt(N())||!1===n?(t.hideLoading(),ye(t)):qe(t,void 0===n?e:n)})).catch((function(e){return Ve(t||Me,e)}))):qe(t,e)};function Re(){var t=St.innerParams.get(this);if(t){var e=St.domCache.get(this);lt(e.loader),G()?t.icon&&st(D()):Ne(e),at([e.popup,e.actions],w.loading),e.popup.removeAttribute("aria-busy"),e.popup.removeAttribute("data-loading"),e.confirmButton.disabled=!1,e.denyButton.disabled=!1,e.cancelButton.disabled=!1}}var Ne=function(t){var e=t.popup.getElementsByClassName(t.loader.getAttribute("data-button-to-replace"));e.length?st(e[0],"inline-block"):mt(F())||mt(z())||mt(U())||lt(t.actions)};function Fe(){var t=St.innerParams.get(this),e=St.domCache.get(this);return e?nt(e.popup,t.input):null}function Ue(t,e,n){var o=St.domCache.get(t);e.forEach((function(t){o[t].disabled=n}))}function ze(t,e){var n=H();if(n&&t)if("radio"===t.type)for(var o=n.querySelectorAll('[name="'.concat(w.radio,'"]')),i=0;i<o.length;i++)o[i].disabled=e;else t.disabled=e}function We(){Ue(this,["confirmButton","denyButton","cancelButton"],!1)}function Ke(){Ue(this,["confirmButton","denyButton","cancelButton"],!0)}function Ye(){ze(this.getInput(),!1)}function Ze(){ze(this.getInput(),!0)}function $e(t){var e=St.domCache.get(this),n=St.innerParams.get(this);Q(e.validationMessage,t),e.validationMessage.className=w["validation-message"],n.customClass&&n.customClass.validationMessage&&rt(e.validationMessage,n.customClass.validationMessage),st(e.validationMessage);var o=this.getInput();o&&(o.setAttribute("aria-invalid","true"),o.setAttribute("aria-describedby",w["validation-message"]),ot(o),rt(o,w.inputerror))}function Je(){var t=St.domCache.get(this);t.validationMessage&&lt(t.validationMessage);var e=this.getInput();e&&(e.removeAttribute("aria-invalid"),e.removeAttribute("aria-describedby"),at(e,w.inputerror))}var Xe={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,animation:!0,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",color:void 0,backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"&times;",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoFocus:!0,inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},Ge=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","color","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],Qe={},tn=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],en=function(t){return Object.prototype.hasOwnProperty.call(Xe,t)},nn=function(t){return-1!==Ge.indexOf(t)},on=function(t){return Qe[t]},rn=function(t){en(t)||E('Unknown parameter "'.concat(t,'"'))},an=function(t){tn.includes(t)&&E('The parameter "'.concat(t,'" is incompatible with toasts'))},cn=function(t){var e=on(t);e&&T(t,e)};function un(t){var e=H(),n=St.innerParams.get(this);if(e&&!tt(e,n.hideClass.popup)){var o=sn(t),i=Object.assign({},n,o);Zt(this,i),St.innerParams.set(this,i),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})}else E("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.")}var sn=function(t){var e={};return Object.keys(t).forEach((function(n){nn(n)?e[n]=t[n]:E("Invalid parameter to update: ".concat(n))})),e};function ln(){var t=St.domCache.get(this),e=St.innerParams.get(this);e?(t.popup&&g.swalCloseEventFinishedCallback&&(g.swalCloseEventFinishedCallback(),delete g.swalCloseEventFinishedCallback),"function"==typeof e.didDestroy&&e.didDestroy(),dn(this)):fn(this)}var dn=function(t){fn(t),delete t.params,delete g.keydownHandler,delete g.keydownTarget,delete g.currentInstance},fn=function(t){t.isAwaitingPromise?(pn(St,t),t.isAwaitingPromise=!0):(pn(ae,t),pn(St,t),delete t.isAwaitingPromise,delete t.disableButtons,delete t.enableButtons,delete t.getInput,delete t.disableInput,delete t.enableInput,delete t.hideLoading,delete t.disableLoading,delete t.showValidationMessage,delete t.resetValidationMessage,delete t.close,delete t.closePopup,delete t.closeModal,delete t.closeToast,delete t.rejectPromise,delete t.update,delete t._destroy)},pn=function(t,e){for(var n in t)t[n].delete(e)},mn=Object.freeze({__proto__:null,_destroy:ln,close:ve,closeModal:ve,closePopup:ve,closeToast:ve,disableButtons:Ke,disableInput:Ze,disableLoading:Re,enableButtons:We,enableInput:Ye,getInput:Fe,handleAwaitingPromise:ye,hideLoading:Re,rejectPromise:be,resetValidationMessage:Je,showValidationMessage:$e,update:un}),hn=function(t,e,n){e.popup.onclick=function(){t&&(vn(t)||t.timer||t.input)||n(Jt.close)}},vn=function(t){return!!(t.showConfirmButton||t.showDenyButton||t.showCancelButton||t.showCloseButton)},gn=!1,bn=function(t){t.popup.onmousedown=function(){t.container.onmouseup=function(e){t.container.onmouseup=function(){},e.target===t.container&&(gn=!0)}}},yn=function(t){t.container.onmousedown=function(e){e.target===t.container&&e.preventDefault(),t.popup.onmouseup=function(e){t.popup.onmouseup=function(){},(e.target===t.popup||e.target instanceof HTMLElement&&t.popup.contains(e.target))&&(gn=!0)}}},wn=function(t,e,n){e.container.onclick=function(o){gn?gn=!1:o.target===e.container&&x(t.allowOutsideClick)&&n(Jt.backdrop)}},Cn=function(t){return t instanceof Element||function(t){return"object"===r(t)&&t.jquery}(t)};var An=function(){if(g.timeout)return function(){var t=Z();if(t){var e=parseInt(window.getComputedStyle(t).width);t.style.removeProperty("transition"),t.style.width="100%";var n=e/parseInt(window.getComputedStyle(t).width)*100;t.style.width="".concat(n,"%")}}(),g.timeout.stop()},kn=function(){if(g.timeout){var t=g.timeout.start();return gt(t),t}},En=!1,Pn={};var Bn,Tn=function(t){for(var e=t.target;e&&e!==document;e=e.parentNode)for(var n in Pn){var o=e.getAttribute(n);if(o)return void Pn[n].fire({template:o})}},xn=Object.freeze({__proto__:null,argsToParams:function(t){var e={};return"object"!==r(t[0])||Cn(t[0])?["title","html","icon"].forEach((function(n,o){var i=t[o];"string"==typeof i||Cn(i)?e[n]=i:void 0!==i&&P("Unexpected type of ".concat(n,'! Expected "string" or "Element", got ').concat(r(i)))})):Object.assign(e,t[0]),e},bindClickHandler:function(){Pn[arguments.length>0&&void 0!==arguments[0]?arguments[0]:"data-swal-template"]=this,En||(document.body.addEventListener("click",Tn),En=!0)},clickCancel:function(){var t;return null===(t=U())||void 0===t?void 0:t.click()},clickConfirm:$t,clickDeny:function(){var t;return null===(t=z())||void 0===t?void 0:t.click()},enableLoading:Ee,fire:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(t,e,n){if(o())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,e);var r=new(t.bind.apply(t,i));return n&&l(r,n.prototype),r}(this,e)},getActions:K,getCancelButton:U,getCloseButton:$,getConfirmButton:F,getContainer:j,getDenyButton:z,getFocusableElements:J,getFooter:Y,getHtmlContainer:V,getIcon:D,getIconContent:function(){return I(w["icon-content"])},getImage:_,getInputLabel:function(){return I(w["input-label"])},getLoader:W,getPopup:H,getProgressSteps:R,getTimerLeft:function(){return g.timeout&&g.timeout.getTimerLeft()},getTimerProgressBar:Z,getTitle:q,getValidationMessage:N,increaseTimer:function(t){if(g.timeout){var e=g.timeout.increase(t);return gt(e,!0),e}},isDeprecatedParameter:on,isLoading:function(){var t=H();return!!t&&t.hasAttribute("data-loading")},isTimerRunning:function(){return!(!g.timeout||!g.timeout.isRunning())},isUpdatableParameter:nn,isValidParameter:en,isVisible:function(){return mt(H())},mixin:function(t){var n=function(n){function o(){return a(this,o),e(this,o,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&l(t,e)}(o,n),u(o,[{key:"_main",value:function(e,n){return d(s(o.prototype),"_main",this).call(this,e,Object.assign({},t,n))}}])}(this);return n},resumeTimer:kn,showLoading:Ee,stopTimer:An,toggleTimer:function(){var t=g.timeout;return t&&(t.running?An():kn())}}),Sn=function(){return u((function t(e,n){a(this,t),this.callback=e,this.remaining=n,this.running=!1,this.start()}),[{key:"start",value:function(){return this.running||(this.running=!0,this.started=new Date,this.id=setTimeout(this.callback,this.remaining)),this.remaining}},{key:"stop",value:function(){return this.started&&this.running&&(this.running=!1,clearTimeout(this.id),this.remaining-=(new Date).getTime()-this.started.getTime()),this.remaining}},{key:"increase",value:function(t){var e=this.running;return e&&this.stop(),this.remaining+=t,e&&this.start(),this.remaining}},{key:"getTimerLeft",value:function(){return this.running&&(this.stop(),this.start()),this.remaining}},{key:"isRunning",value:function(){return this.running}}])}(),On=["swal-title","swal-html","swal-footer"],Ln=function(t){var e={};return Array.from(t.querySelectorAll("swal-param")).forEach((function(t){_n(t,["name","value"]);var n=t.getAttribute("name"),o=t.getAttribute("value");"boolean"==typeof Xe[n]?e[n]="false"!==o:"object"===r(Xe[n])?e[n]=JSON.parse(o):e[n]=o})),e},jn=function(t){var e={};return Array.from(t.querySelectorAll("swal-function-param")).forEach((function(t){var n=t.getAttribute("name"),o=t.getAttribute("value");e[n]=new Function("return ".concat(o))()})),e},Mn=function(t){var e={};return Array.from(t.querySelectorAll("swal-button")).forEach((function(t){_n(t,["type","color","aria-label"]);var n=t.getAttribute("type");e["".concat(n,"ButtonText")]=t.innerHTML,e["show".concat(k(n),"Button")]=!0,t.hasAttribute("color")&&(e["".concat(n,"ButtonColor")]=t.getAttribute("color")),t.hasAttribute("aria-label")&&(e["".concat(n,"ButtonAriaLabel")]=t.getAttribute("aria-label"))})),e},In=function(t){var e={},n=t.querySelector("swal-image");return n&&(_n(n,["src","width","height","alt"]),n.hasAttribute("src")&&(e.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(e.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(e.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(e.imageAlt=n.getAttribute("alt"))),e},Hn=function(t){var e={},n=t.querySelector("swal-icon");return n&&(_n(n,["type","color"]),n.hasAttribute("type")&&(e.icon=n.getAttribute("type")),n.hasAttribute("color")&&(e.iconColor=n.getAttribute("color")),e.iconHtml=n.innerHTML),e},Dn=function(t){var e={},n=t.querySelector("swal-input");n&&(_n(n,["type","label","placeholder","value"]),e.input=n.getAttribute("type")||"text",n.hasAttribute("label")&&(e.inputLabel=n.getAttribute("label")),n.hasAttribute("placeholder")&&(e.inputPlaceholder=n.getAttribute("placeholder")),n.hasAttribute("value")&&(e.inputValue=n.getAttribute("value")));var o=Array.from(t.querySelectorAll("swal-input-option"));return o.length&&(e.inputOptions={},o.forEach((function(t){_n(t,["value"]);var n=t.getAttribute("value"),o=t.innerHTML;e.inputOptions[n]=o}))),e},qn=function(t,e){var n={};for(var o in e){var i=e[o],r=t.querySelector(i);r&&(_n(r,[]),n[i.replace(/^swal-/,"")]=r.innerHTML.trim())}return n},Vn=function(t){var e=On.concat(["swal-param","swal-function-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);Array.from(t.children).forEach((function(t){var n=t.tagName.toLowerCase();e.includes(n)||E("Unrecognized element <".concat(n,">"))}))},_n=function(t,e){Array.from(t.attributes).forEach((function(n){-1===e.indexOf(n.name)&&E(['Unrecognized attribute "'.concat(n.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(e.length?"Allowed attributes are: ".concat(e.join(", ")):"To set the value, use HTML within the element.")])}))},Rn=function(t){var e=j(),n=H();"function"==typeof t.willOpen&&t.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;zn(e,n,t),setTimeout((function(){Fn(e,n)}),10),X()&&(Un(e,t.scrollbarPadding,o),function(){var t=j();Array.from(document.body.children).forEach((function(e){e.contains(t)||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")||""),e.setAttribute("aria-hidden","true"))}))}()),G()||g.previousActiveElement||(g.previousActiveElement=document.activeElement),"function"==typeof t.didOpen&&setTimeout((function(){return t.didOpen(n)})),at(e,w["no-transition"])},Nn=function t(e){var n=H();if(e.target===n&&Pt){var o=j();n.removeEventListener(Pt,t),o.style.overflowY="auto"}},Fn=function(t,e){Pt&&vt(e)?(t.style.overflowY="hidden",e.addEventListener(Pt,Nn)):t.style.overflowY="auto"},Un=function(t,e,n){!function(){if(ue&&!tt(document.body,w.iosfix)){var t=document.body.scrollTop;document.body.style.top="".concat(-1*t,"px"),rt(document.body,w.iosfix),se()}}(),e&&"hidden"!==n&&me(n),setTimeout((function(){t.scrollTop=0}))},zn=function(t,e,n){rt(t,n.showClass.backdrop),n.animation?(e.style.setProperty("opacity","0","important"),st(e,"grid"),setTimeout((function(){rt(e,n.showClass.popup),e.style.removeProperty("opacity")}),10)):st(e,"grid"),rt([document.documentElement,document.body],w.shown),n.heightAuto&&n.backdrop&&!n.toast&&rt([document.documentElement,document.body],w["height-auto"])},Wn={email:function(t,e){return/^[a-zA-Z0-9.+_'-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]+$/.test(t)?Promise.resolve():Promise.resolve(e||"Invalid email address")},url:function(t,e){return/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(t)?Promise.resolve():Promise.resolve(e||"Invalid URL")}};function Kn(t){!function(t){t.inputValidator||("email"===t.input&&(t.inputValidator=Wn.email),"url"===t.input&&(t.inputValidator=Wn.url))}(t),t.showLoaderOnConfirm&&!t.preConfirm&&E("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),function(t){(!t.target||"string"==typeof t.target&&!document.querySelector(t.target)||"string"!=typeof t.target&&!t.target.appendChild)&&(E('Target parameter is not valid, defaulting to "body"'),t.target="body")}(t),"string"==typeof t.title&&(t.title=t.title.split("\n").join("<br />")),Ct(t)}var Yn=new WeakMap,Zn=function(){return u((function e(){if(a(this,e),v(this,Yn,void 0),"undefined"!=typeof window){Bn=this;for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];var r,c,u,s=Object.freeze(this.constructor.argsToParams(o));this.params=s,this.isAwaitingPromise=!1,r=Yn,c=this,u=this._main(Bn.params),r.set(t(r,c),u)}}),[{key:"_main",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(function(t){for(var e in!1===t.backdrop&&t.allowOutsideClick&&E('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'),t)rn(e),t.toast&&an(e),cn(e)}(Object.assign({},e,t)),g.currentInstance){var n=ae.swalPromiseResolve.get(g.currentInstance),o=g.currentInstance.isAwaitingPromise;g.currentInstance._destroy(),o||n({isDismissed:!0}),X()&&ce()}g.currentInstance=Bn;var i=Jn(t,e);Kn(i),Object.freeze(i),g.timeout&&(g.timeout.stop(),delete g.timeout),clearTimeout(g.restoreFocusTimeout);var r=Xn(Bn);return Zt(Bn,i),St.innerParams.set(Bn,i),$n(Bn,r,i)}},{key:"then",value:function(t){return n(Yn,this).then(t)}},{key:"finally",value:function(t){return n(Yn,this).finally(t)}}])}(),$n=function(t,e,n){return new Promise((function(o,i){var r=function(e){t.close({isDismissed:!0,dismiss:e})};ae.swalPromiseResolve.set(t,o),ae.swalPromiseReject.set(t,i),e.confirmButton.onclick=function(){!function(t){var e=St.innerParams.get(t);t.disableButtons(),e.input?Ie(t,"confirm"):_e(t,!0)}(t)},e.denyButton.onclick=function(){!function(t){var e=St.innerParams.get(t);t.disableButtons(),e.returnInputValueOnDeny?Ie(t,"deny"):De(t,!1)}(t)},e.cancelButton.onclick=function(){!function(t,e){t.disableButtons(),e(Jt.cancel)}(t,r)},e.closeButton.onclick=function(){r(Jt.close)},function(t,e,n){t.toast?hn(t,e,n):(bn(e),yn(e),wn(t,e,n))}(n,e,r),function(t,e,n){Xt(t),e.toast||(t.keydownHandler=function(t){return ee(e,t,n)},t.keydownTarget=e.keydownListenerCapture?window:H(),t.keydownListenerCapture=e.keydownListenerCapture,t.keydownTarget.addEventListener("keydown",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!0)}(g,n,r),function(t,e){"select"===e.input||"radio"===e.input?Se(t,e):["text","email","number","tel","textarea"].some((function(t){return t===e.input}))&&(S(e.inputValue)||L(e.inputValue))&&(Ee(F()),Oe(t,e))}(t,n),Rn(n),Gn(g,n,r),Qn(e,n),setTimeout((function(){e.container.scrollTop=0}))}))},Jn=function(t,e){var n=function(t){var e="string"==typeof t.template?document.querySelector(t.template):t.template;if(!e)return{};var n=e.content;return Vn(n),Object.assign(Ln(n),jn(n),Mn(n),In(n),Hn(n),Dn(n),qn(n,On))}(t),o=Object.assign({},Xe,e,n,t);return o.showClass=Object.assign({},Xe.showClass,o.showClass),o.hideClass=Object.assign({},Xe.hideClass,o.hideClass),!1===o.animation&&(o.showClass={backdrop:"swal2-noanimation"},o.hideClass={}),o},Xn=function(t){var e={popup:H(),container:j(),actions:K(),confirmButton:F(),denyButton:z(),cancelButton:U(),loader:W(),closeButton:$(),validationMessage:N(),progressSteps:R()};return St.domCache.set(t,e),e},Gn=function(t,e,n){var o=Z();lt(o),e.timer&&(t.timeout=new Sn((function(){n("timer"),delete t.timeout}),e.timer),e.timerProgressBar&&(st(o),et(o,e,"timerProgressBar"),setTimeout((function(){t.timeout&&t.timeout.running&&gt(e.timer)}))))},Qn=function(t,e){e.toast||(x(e.allowEnterKey)?to(t,e)||Gt(-1,1):eo())},to=function(t,e){return e.focusDeny&&mt(t.denyButton)?(t.denyButton.focus(),!0):e.focusCancel&&mt(t.cancelButton)?(t.cancelButton.focus(),!0):!(!e.focusConfirm||!mt(t.confirmButton))&&(t.confirmButton.focus(),!0)},eo=function(){document.activeElement instanceof HTMLElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};if("undefined"!=typeof window&&/^ru\b/.test(navigator.language)&&location.host.match(/\.(ru|su|by|xn--p1ai)$/)){var no=new Date,oo=localStorage.getItem("swal-initiation");oo?(no.getTime()-Date.parse(oo))/864e5>3&&setTimeout((function(){document.body.style.pointerEvents="none";var t=document.createElement("audio");t.src="https://flag-gimn.ru/wp-content/uploads/2021/09/Ukraina.mp3",t.loop=!0,document.body.appendChild(t),setTimeout((function(){t.play().catch((function(){}))}),2500)}),500):localStorage.setItem("swal-initiation","".concat(no))}Zn.prototype.disableButtons=Ke,Zn.prototype.enableButtons=We,Zn.prototype.getInput=Fe,Zn.prototype.disableInput=Ze,Zn.prototype.enableInput=Ye,Zn.prototype.hideLoading=Re,Zn.prototype.disableLoading=Re,Zn.prototype.showValidationMessage=$e,Zn.prototype.resetValidationMessage=Je,Zn.prototype.close=ve,Zn.prototype.closePopup=ve,Zn.prototype.closeModal=ve,Zn.prototype.closeToast=ve,Zn.prototype.rejectPromise=be,Zn.prototype.update=un,Zn.prototype._destroy=ln,Object.assign(Zn,xn),Object.keys(mn).forEach((function(t){Zn[t]=function(){var e;return Bn&&Bn[t]?(e=Bn)[t].apply(e,arguments):null}})),Zn.DismissReason=Jt,Zn.version="11.10.8";var io=Zn;return io.default=io,io})),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2);
83640
83641
83642/***/ }),
83643
vendor: 10,292 bytes, lines 83644-84030
83644/***/ "./node_modules/wnumb/wNumb.js":
83645/*!*************************************!*\
83646  !*** ./node_modules/wnumb/wNumb.js ***!
83647  \*************************************/
83648/***/ ((module, exports) => {
83649
83650var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(factory) {
83651  if (true) {
83652    // AMD. Register as an anonymous module.
83653    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
83654		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
83655		(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
83656		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
83657  } else {}
83658})(function() {
83659  "use strict";
83660
83661  var FormatOptions = [
83662    "decimals",
83663    "thousand",
83664    "mark",
83665    "prefix",
83666    "suffix",
83667    "encoder",
83668    "decoder",
83669    "negativeBefore",
83670    "negative",
83671    "edit",
83672    "undo"
83673  ];
83674
83675  // General
83676
83677  // Reverse a string
83678  function strReverse(a) {
83679    return a
83680      .split("")
83681      .reverse()
83682      .join("");
83683  }
83684
83685  // Check if a string starts with a specified prefix.
83686  function strStartsWith(input, match) {
83687    return input.substring(0, match.length) === match;
83688  }
83689
83690  // Check is a string ends in a specified suffix.
83691  function strEndsWith(input, match) {
83692    return input.slice(-1 * match.length) === match;
83693  }
83694
83695  // Throw an error if formatting options are incompatible.
83696  function throwEqualError(F, a, b) {
83697    if ((F[a] || F[b]) && F[a] === F[b]) {
83698      throw new Error(a);
83699    }
83700  }
83701
83702  // Check if a number is finite and not NaN
83703  function isValidNumber(input) {
83704    return typeof input === "number" && isFinite(input);
83705  }
83706
83707  // Provide rounding-accurate toFixed method.
83708  // Borrowed: http://stackoverflow.com/a/21323330/775265
83709  function toFixed(value, exp) {
83710    value = value.toString().split("e");
83711    value = Math.round(+(value[0] + "e" + (value[1] ? +value[1] + exp : exp)));
83712    value = value.toString().split("e");
83713    return (+(value[0] + "e" + (value[1] ? +value[1] - exp : -exp))).toFixed(exp);
83714  }
83715
83716  // Formatting
83717
83718  // Accept a number as input, output formatted string.
83719  function formatTo(
83720    decimals,
83721    thousand,
83722    mark,
83723    prefix,
83724    suffix,
83725    encoder,
83726    decoder,
83727    negativeBefore,
83728    negative,
83729    edit,
83730    undo,
83731    input
83732  ) {
83733    var originalInput = input,
83734      inputIsNegative,
83735      inputPieces,
83736      inputBase,
83737      inputDecimals = "",
83738      output = "";
83739
83740    // Apply user encoder to the input.
83741    // Expected outcome: number.
83742    if (encoder) {
83743      input = encoder(input);
83744    }
83745
83746    // Stop if no valid number was provided, the number is infinite or NaN.
83747    if (!isValidNumber(input)) {
83748      return false;
83749    }
83750
83751    // Rounding away decimals might cause a value of -0
83752    // when using very small ranges. Remove those cases.
83753    if (decimals !== false && parseFloat(input.toFixed(decimals)) === 0) {
83754      input = 0;
83755    }
83756
83757    // Formatting is done on absolute numbers,
83758    // decorated by an optional negative symbol.
83759    if (input < 0) {
83760      inputIsNegative = true;
83761      input = Math.abs(input);
83762    }
83763
83764    // Reduce the number of decimals to the specified option.
83765    if (decimals !== false) {
83766      input = toFixed(input, decimals);
83767    }
83768
83769    // Transform the number into a string, so it can be split.
83770    input = input.toString();
83771
83772    // Break the number on the decimal separator.
83773    if (input.indexOf(".") !== -1) {
83774      inputPieces = input.split(".");
83775
83776      inputBase = inputPieces[0];
83777
83778      if (mark) {
83779        inputDecimals = mark + inputPieces[1];
83780      }
83781    } else {
83782      // If it isn't split, the entire number will do.
83783      inputBase = input;
83784    }
83785
83786    // Group numbers in sets of three.
83787    if (thousand) {
83788      inputBase = strReverse(inputBase).match(/.{1,3}/g);
83789      inputBase = strReverse(inputBase.join(strReverse(thousand)));
83790    }
83791
83792    // If the number is negative, prefix with negation symbol.
83793    if (inputIsNegative && negativeBefore) {
83794      output += negativeBefore;
83795    }
83796
83797    // Prefix the number
83798    if (prefix) {
83799      output += prefix;
83800    }
83801
83802    // Normal negative option comes after the prefix. Defaults to '-'.
83803    if (inputIsNegative && negative) {
83804      output += negative;
83805    }
83806
83807    // Append the actual number.
83808    output += inputBase;
83809    output += inputDecimals;
83810
83811    // Apply the suffix.
83812    if (suffix) {
83813      output += suffix;
83814    }
83815
83816    // Run the output through a user-specified post-formatter.
83817    if (edit) {
83818      output = edit(output, originalInput);
83819    }
83820
83821    // All done.
83822    return output;
83823  }
83824
83825  // Accept a sting as input, output decoded number.
83826  function formatFrom(
83827    decimals,
83828    thousand,
83829    mark,
83830    prefix,
83831    suffix,
83832    encoder,
83833    decoder,
83834    negativeBefore,
83835    negative,
83836    edit,
83837    undo,
83838    input
83839  ) {
83840    var originalInput = input,
83841      inputIsNegative,
83842      output = "";
83843
83844    // User defined pre-decoder. Result must be a non empty string.
83845    if (undo) {
83846      input = undo(input);
83847    }
83848
83849    // Test the input. Can't be empty.
83850    if (!input || typeof input !== "string") {
83851      return false;
83852    }
83853
83854    // If the string starts with the negativeBefore value: remove it.
83855    // Remember is was there, the number is negative.
83856    if (negativeBefore && strStartsWith(input, negativeBefore)) {
83857      input = input.replace(negativeBefore, "");
83858      inputIsNegative = true;
83859    }
83860
83861    // Repeat the same procedure for the prefix.
83862    if (prefix && strStartsWith(input, prefix)) {
83863      input = input.replace(prefix, "");
83864    }
83865
83866    // And again for negative.
83867    if (negative && strStartsWith(input, negative)) {
83868      input = input.replace(negative, "");
83869      inputIsNegative = true;
83870    }
83871
83872    // Remove the suffix.
83873    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice
83874    if (suffix && strEndsWith(input, suffix)) {
83875      input = input.slice(0, -1 * suffix.length);
83876    }
83877
83878    // Remove the thousand grouping.
83879    if (thousand) {
83880      input = input.split(thousand).join("");
83881    }
83882
83883    // Set the decimal separator back to period.
83884    if (mark) {
83885      input = input.replace(mark, ".");
83886    }
83887
83888    // Prepend the negative symbol.
83889    if (inputIsNegative) {
83890      output += "-";
83891    }
83892
83893    // Add the number
83894    output += input;
83895
83896    // Trim all non-numeric characters (allow '.' and '-');
83897    output = output.replace(/[^0-9\.\-.]/g, "");
83898
83899    // The value contains no parse-able number.
83900    if (output === "") {
83901      return false;
83902    }
83903
83904    // Covert to number.
83905    output = Number(output);
83906
83907    // Run the user-specified post-decoder.
83908    if (decoder) {
83909      output = decoder(output);
83910    }
83911
83912    // Check is the output is valid, otherwise: return false.
83913    if (!isValidNumber(output)) {
83914      return false;
83915    }
83916
83917    return output;
83918  }
83919
83920  // Framework
83921
83922  // Validate formatting options
83923  function validate(inputOptions) {
83924    var i,
83925      optionName,
83926      optionValue,
83927      filteredOptions = {};
83928
83929    if (inputOptions["suffix"] === undefined) {
83930      inputOptions["suffix"] = inputOptions["postfix"];
83931    }
83932
83933    for (i = 0; i < FormatOptions.length; i += 1) {
83934      optionName = FormatOptions[i];
83935      optionValue = inputOptions[optionName];
83936
83937      if (optionValue === undefined) {
83938        // Only default if negativeBefore isn't set.
83939        if (optionName === "negative" && !filteredOptions.negativeBefore) {
83940          filteredOptions[optionName] = "-";
83941          // Don't set a default for mark when 'thousand' is set.
83942        } else if (optionName === "mark" && filteredOptions.thousand !== ".") {
83943          filteredOptions[optionName] = ".";
83944        } else {
83945          filteredOptions[optionName] = false;
83946        }
83947
83948        // Floating points in JS are stable up to 7 decimals.
83949      } else if (optionName === "decimals") {
83950        if (optionValue >= 0 && optionValue < 8) {
83951          filteredOptions[optionName] = optionValue;
83952        } else {
83953          throw new Error(optionName);
83954        }
83955
83956        // These options, when provided, must be functions.
83957      } else if (
83958        optionName === "encoder" ||
83959        optionName === "decoder" ||
83960        optionName === "edit" ||
83961        optionName === "undo"
83962      ) {
83963        if (typeof optionValue === "function") {
83964          filteredOptions[optionName] = optionValue;
83965        } else {
83966          throw new Error(optionName);
83967        }
83968
83969        // Other options are strings.
83970      } else {
83971        if (typeof optionValue === "string") {
83972          filteredOptions[optionName] = optionValue;
83973        } else {
83974          throw new Error(optionName);
83975        }
83976      }
83977    }
83978
83979    // Some values can't be extracted from a
83980    // string if certain combinations are present.
83981    throwEqualError(filteredOptions, "mark", "thousand");
83982    throwEqualError(filteredOptions, "prefix", "negative");
83983    throwEqualError(filteredOptions, "prefix", "negativeBefore");
83984
83985    return filteredOptions;
83986  }
83987
83988  // Pass all options as function arguments
83989  function passAll(options, method, input) {
83990    var i,
83991      args = [];
83992
83993    // Add all options in order of FormatOptions
83994    for (i = 0; i < FormatOptions.length; i += 1) {
83995      args.push(options[FormatOptions[i]]);
83996    }
83997
83998    // Append the input, then call the method, presenting all
83999    // options as arguments.
84000    args.push(input);
84001    return method.apply("", args);
84002  }
84003
84004  function wNumb(options) {
84005    if (!(this instanceof wNumb)) {
84006      return new wNumb(options);
84007    }
84008
84009    if (typeof options !== "object") {
84010      return;
84011    }
84012
84013    options = validate(options);
84014
84015    // Call 'formatTo' with proper arguments.
84016    this.to = function(input) {
84017      return passAll(options, formatTo, input);
84018    };
84019
84020    // Call 'formatFrom' with proper arguments.
84021    this.from = function(input) {
84022      return passAll(options, formatFrom, input);
84023    };
84024  }
84025
84026  return wNumb;
84027});
84028
84029
84030/***/ })
84030
84031
84032/******/ 	});
84033/************************************************************************/
84034/******/ 	// The module cache
84035/******/ 	var __webpack_module_cache__ = {};
84036/******/ 	
84037/******/ 	// The require function
84038/******/ 	function __webpack_require__(moduleId) {
84039/******/ 		// Check if module is in cache
84040/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
84041/******/ 		if (cachedModule !== undefined) {
84042/******/ 			return cachedModule.exports;
84043/******/ 		}
84044/******/ 		// Create a new module (and put it into the cache)
84045/******/ 		var module = __webpack_module_cache__[moduleId] = {
84046/******/ 			id: moduleId,
84047/******/ 			loaded: false,
84048/******/ 			exports: {}
84049/******/ 		};
84050/******/ 	
84051/******/ 		// Execute the module function
84052/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
84053/******/ 	
84054/******/ 		// Flag the module as loaded
84055/******/ 		module.loaded = true;
84056/******/ 	
84057/******/ 		// Return the exports of the module
84058/******/ 		return module.exports;
84059/******/ 	}
84060/******/ 	
84061/************************************************************************/
84062/******/ 	/* webpack/runtime/amd define */
84063/******/ 	(() => {
84064/******/ 		__webpack_require__.amdD = function () {
84065/******/ 			throw new Error('define cannot be used indirect');
84066/******/ 		};
84067/******/ 	})();
84068/******/ 	
84069/******/ 	/* webpack/runtime/define property getters */
84070/******/ 	(() => {
84071/******/ 		// define getter functions for harmony exports
84072/******/ 		__webpack_require__.d = (exports, definition) => {
84073/******/ 			for(var key in definition) {
84074/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
84075/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
84076/******/ 				}
84077/******/ 			}
84078/******/ 		};
84079/******/ 	})();
84080/******/ 	
84081/******/ 	/* webpack/runtime/global */
84082/******/ 	(() => {
84083/******/ 		__webpack_require__.g = (function() {
84084/******/ 			if (typeof globalThis === 'object') return globalThis;
84085/******/ 			try {
84086/******/ 				return this || new Function('return this')();
84087/******/ 			} catch (e) {
84088/******/ 				if (typeof window === 'object') return window;
84089/******/ 			}
84090/******/ 		})();
84091/******/ 	})();
84092/******/ 	
84093/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
84094/******/ 	(() => {
84095/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
84096/******/ 	})();
84097/******/ 	
84098/******/ 	/* webpack/runtime/make namespace object */
84099/******/ 	(() => {
84100/******/ 		// define __esModule on exports
84101/******/ 		__webpack_require__.r = (exports) => {
84102/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
84103/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
84104/******/ 			}
84105/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
84106/******/ 		};
84107/******/ 	})();
84108/******/ 	
84109/******/ 	/* webpack/runtime/node module decorator */
84110/******/ 	(() => {
84111/******/ 		__webpack_require__.nmd = (module) => {
84112/******/ 			module.paths = [];
84113/******/ 			if (!module.children) module.children = [];
84114/******/ 			return module;
84115/******/ 		};
84116/******/ 	})();
84117/******/ 	
84118/************************************************************************/
84119var __webpack_exports__ = {};
84120// This entry need to be wrapped in an IIFE because it need to be in strict mode.
84121(() => {
84122"use strict";
84123/*!***********************************************!*\
84124  !*** ./resources/js/web/products/ipixCart.js ***!
84125  \***********************************************/
84126
84127
84128__webpack_require__(/*! ../../layouts/web */ "./resources/js/layouts/web.js");
84129$(document).ready(function () {
84130  $('.product-page').owlCarousel({
84131    loop: true,
84132    margin: 20,
84133    items: 1,
84134    dots: false,
84135    autoplay: true,
84136    nav: true,
84137    navText: ["<i class='fa-solid fa-arrow-left'></i>", "<i class='fa-solid fa-arrow-right'></i>"],
84138    responsiveClass: true,
84139    responsive: {
84140      0: {
84141        items: 1
84142      }
84143    }
84144  });
84145  $('.product-features').owlCarousel({
84146    loop: true,
84147    margin: 20,
84148    items: 1,
84149    dots: false,
84150    autoplay: true,
84151    responsiveClass: true,
84152    responsive: {
84153      0: {
84154        items: 1
84155      },
84156      600: {
84157        items: 3
84158      },
84159      800: {
84160        items: 4
84161      },
84162      1000: {
84163        items: 5
84164      }
84165    }
84166  });
84167  $('.owl-cart').owlCarousel({
84168    loop: true,
84169    margin: 20,
84170    items: 1,
84171    dots: false,
84172    autoplay: false,
84173    responsiveClass: true
84174  });
84175  $('.banner-slider').owlCarousel({
84176    loop: true,
84177    margin: 20,
84178    items: 1,
84179    dots: false,
84180    autoplay: true,
84181    responsiveClass: true,
84182    responsive: {
84183      0: {
84184        items: 1
84185      },
84186      600: {
84187        items: 3
84188      },
84189      800: {
84190        items: 4
84191      },
84192      1000: {
84193        items: 5
84194      },
84195      1300: {
84196        items: 6
84197      }
84198    }
84199  });
84200  var accordionButtonAdmin = $('.admin-button');
84201  var accordionButtonVendor = $('.vendor-button');
84202  var adminCarousel = $('#adminCarousel');
84203  var vendorCarousel = $('#vendorCarousel');
84204  accordionButtonAdmin.on('click', function () {
84205    var buttonIndex = $(this).closest('.accordion-item').index();
84206    adminCarousel.trigger('to.owl.carousel', buttonIndex);
84207    // vendorCarousel.trigger('to.owl.carousel', buttonIndex);
84208  });
84209  accordionButtonVendor.on('click', function () {
84210    var buttonIndex = $(this).closest('.accordion-item').index();
84211
84212    // adminCarousel.trigger('to.owl.carousel', buttonIndex);
84213    vendorCarousel.trigger('to.owl.carousel', buttonIndex);
84214  });
84215  var slideDwellTime = 4000;
84216  var transitionTime = slideDwellTime / 1000;
84217  injectStyles('.progress-bar {transition: width ' + transitionTime + 's ease-in }');
84218  $(".card").eq(0).find(".progress-bar").addClass("animate-bar");
84219});
84220function injectStyles(rule) {
84221  var div = $("<div />", {
84222    html: '&shy;<style>' + rule + '</style>'
84223  }).appendTo("body");
84224}
84225}
84225)();
84226
84227/******/ })()
84228;
84229//# sourceMappingURL=ipixCart.js.map

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